From ca09583623ab77362186a9fd1ae260c38dcab470 Mon Sep 17 00:00:00 2001 From: Gary Benson Date: Wed, 10 Jun 2015 14:28:43 +0100 Subject: [PATCH] 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. --- gdb/ChangeLog | 9 +++++++++ gdb/common/filestuff.c | 21 +++++++++++++++++++++ gdb/common/filestuff.h | 4 ++++ gdb/utils.c | 17 ----------------- gdb/utils.h | 2 +- 5 files changed, 35 insertions(+), 18 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index c9f527c..d6ef5c1 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,12 @@ +2015-06-10 Gary Benson + + * 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. + 2015-06-03 Jon Turney * windows-nat.c (thread_rec): Also ignore ERROR_INVALID_HANDLE 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 */ diff --git a/gdb/utils.c b/gdb/utils.c index aaaf9c5..1c1ced4 100644 --- a/gdb/utils.c +++ b/gdb/utils.c @@ -191,23 +191,6 @@ make_cleanup_bfd_unref (bfd *abfd) return make_cleanup (do_bfd_close_cleanup, abfd); } -static void -do_close_cleanup (void *arg) -{ - int *fd = arg; - - close (*fd); -} - -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); -} - /* Helper function which does the work for make_cleanup_fclose. */ static void diff --git a/gdb/utils.h b/gdb/utils.h index cae1ac0..0e93ead 100644 --- a/gdb/utils.h +++ b/gdb/utils.h @@ -80,7 +80,7 @@ struct section_addr_info; extern struct cleanup *(make_cleanup_free_section_addr_info (struct section_addr_info *)); -extern struct cleanup *make_cleanup_close (int fd); +/* For make_cleanup_close see common/filestuff.h. */ extern struct cleanup *make_cleanup_fclose (FILE *file); -- 2.7.4