aboutsummaryrefslogtreecommitdiff
path: root/gdb/nat
diff options
context:
space:
mode:
authorSimon Marchi <simon.marchi@polymtl.ca>2021-07-22 11:56:33 -0400
committerSimon Marchi <simon.marchi@polymtl.ca>2021-09-30 15:21:48 -0400
commit13084383e8955c2ff7017ac8839301688a9ee34d (patch)
treeffc4d5429e7315de53715fe7fce7bd26abd958b8 /gdb/nat
parente6e51c9c4b402cd46595790b26087ebf2fead8c1 (diff)
downloadgdb-13084383e8955c2ff7017ac8839301688a9ee34d.zip
gdb-13084383e8955c2ff7017ac8839301688a9ee34d.tar.gz
gdb-13084383e8955c2ff7017ac8839301688a9ee34d.tar.bz2
gdbsupport: make gdb_open_cloexec return scoped_fd
Make gdb_open_cloexec return a scoped_fd, to encourage using automatic management of the file descriptor closing. Except in the most trivial cases, I changed the callers to just release the fd, which retains their existing behavior. That will allow the transition to using scoped_fd more to go gradually, one caller at a time. Change-Id: Ife022b403f96e71d5ebb4f1056ef6251b30fe554
Diffstat (limited to 'gdb/nat')
-rw-r--r--gdb/nat/linux-namespaces.c13
1 files changed, 4 insertions, 9 deletions
diff --git a/gdb/nat/linux-namespaces.c b/gdb/nat/linux-namespaces.c
index 0c4fadd..c5d5eb4 100644
--- a/gdb/nat/linux-namespaces.c
+++ b/gdb/nat/linux-namespaces.c
@@ -520,13 +520,8 @@ static ssize_t
mnsh_handle_open (int sock, const char *filename,
int flags, mode_t mode)
{
- int fd = gdb_open_cloexec (filename, flags, mode);
- ssize_t result = mnsh_return_fd (sock, fd, errno);
-
- if (fd >= 0)
- close (fd);
-
- return result;
+ scoped_fd fd = gdb_open_cloexec (filename, flags, mode);
+ return mnsh_return_fd (sock, fd.get (), errno);
}
/* Handle a MNSH_REQ_UNLINK message. Must be async-signal-safe. */
@@ -901,7 +896,7 @@ linux_mntns_access_fs (pid_t pid)
if (ns == NULL)
return MNSH_FS_DIRECT;
- fd = gdb_open_cloexec (linux_ns_filename (ns, pid), O_RDONLY, 0);
+ fd = gdb_open_cloexec (linux_ns_filename (ns, pid), O_RDONLY, 0).release ();
if (fd < 0)
return MNSH_FS_ERROR;
@@ -968,7 +963,7 @@ linux_mntns_open_cloexec (pid_t pid, const char *filename,
return -1;
if (access == MNSH_FS_DIRECT)
- return gdb_open_cloexec (filename, flags, mode);
+ return gdb_open_cloexec (filename, flags, mode).release ();
gdb_assert (access == MNSH_FS_HELPER);