diff options
author | Tom Tromey <tom@tromey.com> | 2019-01-24 06:43:45 -0700 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2019-03-06 16:04:31 -0700 |
commit | 6cceac94147f6026e93dcfc0a0df03555b571a12 (patch) | |
tree | ae45737eb987a1c699bc1d05ae7c4366b821c716 | |
parent | 724127627fef458ed330d027cf0b3d17580af615 (diff) | |
download | gdb-6cceac94147f6026e93dcfc0a0df03555b571a12.zip gdb-6cceac94147f6026e93dcfc0a0df03555b571a12.tar.gz gdb-6cceac94147f6026e93dcfc0a0df03555b571a12.tar.bz2 |
Remove last cleanup from linux-namespaces.c
This removes the last cleanup from linux-namespaces.c, replacing it
with a use of SCOPE_EXIT.
2019-03-06 Tom Tromey <tom@tromey.com>
* nat/linux-namespaces.c (linux_mntns_access_fs): Use SCOPE_EXIT.
* common/filestuff.h (make_cleanup_close): Don't declare.
* common/filestuff.c (do_close_cleanup, make_cleanup_close):
Remove.
-rw-r--r-- | gdb/ChangeLog | 7 | ||||
-rw-r--r-- | gdb/common/filestuff.c | 21 | ||||
-rw-r--r-- | gdb/common/filestuff.h | 4 | ||||
-rw-r--r-- | gdb/nat/linux-namespaces.c | 41 |
4 files changed, 22 insertions, 51 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 0dc54e7..e4f7b86 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,12 @@ 2019-03-06 Tom Tromey <tom@tromey.com> + * nat/linux-namespaces.c (linux_mntns_access_fs): Use SCOPE_EXIT. + * common/filestuff.h (make_cleanup_close): Don't declare. + * common/filestuff.c (do_close_cleanup, make_cleanup_close): + Remove. + +2019-03-06 Tom Tromey <tom@tromey.com> + * solib-aix.c: Use make_scope_exit. 2019-03-06 Tom Tromey <tom@tromey.com> diff --git a/gdb/common/filestuff.c b/gdb/common/filestuff.c index 0d2fa8d..1ca6248 100644 --- a/gdb/common/filestuff.c +++ b/gdb/common/filestuff.c @@ -426,27 +426,6 @@ gdb_pipe_cloexec (int filedes[2]) return result; } -/* Helper function which does the work for make_cleanup_close. */ - -static void -do_close_cleanup (void *arg) -{ - int *fd = (int *) arg; - - close (*fd); -} - -/* See filestuff.h. */ - -struct cleanup * -make_cleanup_close (int fd) -{ - int *saved_fd = XNEW (int); - - *saved_fd = fd; - return make_cleanup_dtor (do_close_cleanup, saved_fd, xfree); -} - /* See common/filestuff.h. */ bool diff --git a/gdb/common/filestuff.h b/gdb/common/filestuff.h index 7e95b9c..c50781d 100644 --- a/gdb/common/filestuff.h +++ b/gdb/common/filestuff.h @@ -112,10 +112,6 @@ extern int gdb_socket_cloexec (int domain, int style, int protocol); extern int gdb_pipe_cloexec (int filedes[2]); -/* Return a new cleanup that closes FD. */ - -extern struct cleanup *make_cleanup_close (int fd); - struct gdb_dir_deleter { void operator() (DIR *dir) const diff --git a/gdb/nat/linux-namespaces.c b/gdb/nat/linux-namespaces.c index 812f8c1..c0f326b 100644 --- a/gdb/nat/linux-namespaces.c +++ b/gdb/nat/linux-namespaces.c @@ -28,6 +28,7 @@ #include "common/gdb_wait.h" #include <signal.h> #include <sched.h> +#include "common/scope-exit.h" /* See nat/linux-namespaces.h. */ int debug_linux_namespaces; @@ -887,12 +888,11 @@ enum mnsh_fs_code static enum mnsh_fs_code linux_mntns_access_fs (pid_t pid) { - struct cleanup *old_chain; struct linux_ns *ns; struct stat sb; struct linux_mnsh *helper; ssize_t size; - int fd, saved_errno; + int fd; if (pid == getpid ()) return MNSH_FS_DIRECT; @@ -901,27 +901,26 @@ linux_mntns_access_fs (pid_t pid) if (ns == NULL) return MNSH_FS_DIRECT; - old_chain = make_cleanup (null_cleanup, NULL); - fd = gdb_open_cloexec (linux_ns_filename (ns, pid), O_RDONLY, 0); if (fd < 0) - goto error; + return MNSH_FS_ERROR; - make_cleanup_close (fd); + SCOPE_EXIT + { + int save_errno = errno; + close (fd); + errno = save_errno; + }; if (fstat (fd, &sb) != 0) - goto error; + return MNSH_FS_ERROR; if (sb.st_ino == ns->id) - { - do_cleanups (old_chain); - - return MNSH_FS_DIRECT; - } + return MNSH_FS_DIRECT; helper = linux_mntns_get_helper (); if (helper == NULL) - goto error; + return MNSH_FS_ERROR; if (sb.st_ino != helper->nsid) { @@ -929,10 +928,10 @@ linux_mntns_access_fs (pid_t pid) size = mnsh_send_setns (helper, fd, 0); if (size < 0) - goto error; + return MNSH_FS_ERROR; if (mnsh_recv_int (helper, &result, &error) != 0) - goto error; + return MNSH_FS_ERROR; if (result != 0) { @@ -945,23 +944,13 @@ linux_mntns_access_fs (pid_t pid) error = ENOTSUP; errno = error; - goto error; + return MNSH_FS_ERROR; } helper->nsid = sb.st_ino; } - do_cleanups (old_chain); - return MNSH_FS_HELPER; - -error: - saved_errno = errno; - - do_cleanups (old_chain); - - errno = saved_errno; - return MNSH_FS_ERROR; } /* See nat/linux-namespaces.h. */ |