Mercurial > emacs
changeset 109314:b7a866c9460c
* callproc.c (relocate_fd): Use F_DUPFD if defined.
author | Andreas Schwab <schwab@linux-m68k.org> |
---|---|
date | Sun, 11 Jul 2010 11:49:44 +0200 |
parents | e856a274549b |
children | 8f3464b85afb |
files | src/ChangeLog src/callproc.c |
diffstat | 2 files changed, 12 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/ChangeLog Sun Jul 11 11:27:13 2010 +0200 +++ b/src/ChangeLog Sun Jul 11 11:49:44 2010 +0200 @@ -1,5 +1,7 @@ 2010-07-11 Andreas Schwab <schwab@linux-m68k.org> + * callproc.c (relocate_fd): Use F_DUPFD if defined. + * alloc.c (pending_malloc_warning, malloc_warning): Add const. * callproc.c (relocate_fd, getenv_internal_1, getenv_internal) (egetenv): Likewise.
--- a/src/callproc.c Sun Jul 11 11:27:13 2010 +0200 +++ b/src/callproc.c Sun Jul 11 11:49:44 2010 +0200 @@ -1288,7 +1288,16 @@ return fd; else { - int new = dup (fd); + int new; +#ifdef F_DUPFD + new = fcntl (fd, F_DUPFD, minfd); +#else + new = dup (fd); + if (new != -1) + /* Note that we hold the original FD open while we recurse, + to guarantee we'll get a new FD if we need it. */ + new = relocate_fd (new, minfd); +#endif if (new == -1) { const char *message1 = "Error while setting up child: "; @@ -1299,9 +1308,6 @@ emacs_write (2, message2, strlen (message2)); _exit (1); } - /* Note that we hold the original FD open while we recurse, - to guarantee we'll get a new FD if we need it. */ - new = relocate_fd (new, minfd); emacs_close (fd); return new; }