diff options
author | Gary Benson <gbenson@redhat.com> | 2015-06-10 14:28:43 +0100 |
---|---|---|
committer | Gary Benson <gbenson@redhat.com> | 2015-06-10 14:28:43 +0100 |
commit | ca09583623ab77362186a9fd1ae260c38dcab470 (patch) | |
tree | 17f292e5f5d0ff93490f5b5ebbd2da663520d672 /gdb/common | |
parent | 5d9c55d355c8e5c688caa3fe43c0d95d538daf35 (diff) | |
download | gdb-ca09583623ab77362186a9fd1ae260c38dcab470.zip gdb-ca09583623ab77362186a9fd1ae260c38dcab470.tar.gz gdb-ca09583623ab77362186a9fd1ae260c38dcab470.tar.bz2 |
Move make_cleanup_close to common code
This commit moves the function make_cleanup_close from gdb/utils.[ch]
to gdb/common/filestuff.[ch] to make it usable from common code.
gdb/ChangeLog:
* utils.h (make_cleanup_close): Moved to common/filestuff.h.
* utils.c (do_close_cleanup): Moved to common/filestuff.c.
(make_cleanup_close): Likewise.
* common/filestuff.h (make_cleanup_close): Moved from utils.h.
* common/filestuff.c (do_close_cleanup): Moved from utils.c.
(make_cleanup_close): Likewise.
Diffstat (limited to 'gdb/common')
-rw-r--r-- | gdb/common/filestuff.c | 21 | ||||
-rw-r--r-- | gdb/common/filestuff.h | 4 |
2 files changed, 25 insertions, 0 deletions
diff --git a/gdb/common/filestuff.c b/gdb/common/filestuff.c index 14d6324..25ea8fa 100644 --- a/gdb/common/filestuff.c +++ b/gdb/common/filestuff.c @@ -404,3 +404,24 @@ 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 = arg; + + close (*fd); +} + +/* See cleanup-utils.h. */ + +struct cleanup * +make_cleanup_close (int fd) +{ + int *saved_fd = xmalloc (sizeof (fd)); + + *saved_fd = fd; + return make_cleanup_dtor (do_close_cleanup, saved_fd, xfree); +} diff --git a/gdb/common/filestuff.h b/gdb/common/filestuff.h index 98522a6..e997ecc 100644 --- a/gdb/common/filestuff.h +++ b/gdb/common/filestuff.h @@ -67,4 +67,8 @@ 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); + #endif /* FILESTUFF_H */ |