diff options
author | Tom Tromey <tom@tromey.com> | 2017-04-26 21:39:46 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2017-08-03 07:58:52 -0600 |
commit | d419f42dd3f3635fc036413258ed530676998191 (patch) | |
tree | 63b46767bc2a7a0211eb9923b6e07a9fc95c7594 /gdb/common | |
parent | 4a2b031d5452226cf7894f313b3aac603f7ec5fb (diff) | |
download | gdb-d419f42dd3f3635fc036413258ed530676998191.zip gdb-d419f42dd3f3635fc036413258ed530676998191.tar.gz gdb-d419f42dd3f3635fc036413258ed530676998191.tar.bz2 |
Introduce and use gdb_file_up
This introduces gdb_file_up, a unique pointer holding a FILE*, and
then changes some code in gdb to use it. In particular
gdb_fopen_cloexec now returns a gdb_file_up. This allow removing some
cleanups.
ChangeLog
2017-08-03 Tom Tromey <tom@tromey.com>
* xml-support.c (xml_fetch_content_from_file): Update.
* ui-file.c (stdio_file::open): Update.
* tracefile-tfile.c (tfile_start): Update.
* remote.c (remote_file_put, remote_file_get): Update.
* nat/linux-procfs.c (linux_proc_get_int)
(linux_proc_pid_get_state, linux_proc_tid_get_name): Update.
* nat/linux-osdata.c (linux_common_core_of_thread): Update.
(command_from_pid, commandline_from_pid, linux_xfer_osdata_cpus)
(print_sockets, linux_xfer_osdata_shm, linux_xfer_osdata_sem)
(linux_xfer_osdata_msg, linux_xfer_osdata_modules): Update.
* nat/linux-btrace.c (linux_determine_kernel_start): Update.
* linux-nat.c (linux_proc_pending_signals): Update.
* dwarf2read.c (write_psymtabs_to_index): Use gdb_file_up.
(file_closer): Remove.
* compile/compile.c (compile_to_object): Update.
* common/filestuff.h (struct gdb_file_deleter): New.
(gdb_file_up): New typedef.
(gdb_fopen_cloexec): Change return type.
* common/filestuff.c (gdb_fopen_cloexec): Return gdb_file_up.
* cli/cli-dump.c (fopen_with_cleanup): Remove.
(dump_binary_file, restore_binary_file): Update.
* auto-load.c (auto_load_objfile_script_1): Update.
Diffstat (limited to 'gdb/common')
-rw-r--r-- | gdb/common/filestuff.c | 4 | ||||
-rw-r--r-- | gdb/common/filestuff.h | 15 |
2 files changed, 16 insertions, 3 deletions
diff --git a/gdb/common/filestuff.c b/gdb/common/filestuff.c index 725fb92..4b05884 100644 --- a/gdb/common/filestuff.c +++ b/gdb/common/filestuff.c @@ -300,7 +300,7 @@ gdb_open_cloexec (const char *filename, int flags, unsigned long mode) /* See filestuff.h. */ -FILE * +gdb_file_up gdb_fopen_cloexec (const char *filename, const char *opentype) { FILE *result; @@ -336,7 +336,7 @@ gdb_fopen_cloexec (const char *filename, const char *opentype) if (result != NULL) maybe_mark_cloexec (fileno (result)); - return result; + return gdb_file_up (result); } #ifdef HAVE_SOCKETS diff --git a/gdb/common/filestuff.h b/gdb/common/filestuff.h index b0a811b..3cf2df6 100644 --- a/gdb/common/filestuff.h +++ b/gdb/common/filestuff.h @@ -46,10 +46,23 @@ extern void close_most_fds (void); extern int gdb_open_cloexec (const char *filename, int flags, /* mode_t */ unsigned long mode); +struct gdb_file_deleter +{ + void operator() (FILE *file) const + { + fclose (file); + } +}; + +/* A unique pointer to a FILE. */ + +typedef std::unique_ptr<FILE, gdb_file_deleter> gdb_file_up; + /* Like 'fopen', but ensures that the returned file descriptor has the close-on-exec flag set. */ -extern FILE *gdb_fopen_cloexec (const char *filename, const char *opentype); +extern gdb_file_up gdb_fopen_cloexec (const char *filename, + const char *opentype); /* Like 'socketpair', but ensures that the returned file descriptors have the close-on-exec flag set. */ |