X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fsavewd.c;h=58e0b613bdac7125c6b156c0b48e7a23a6462a42;hb=2354d5ead305b61c925e53bcfb73d47de7c53162;hp=c9af955d6c8bd7313c49eb9e7c44a693dbbb2bfe;hpb=52034676ffeda4137d247a91c9c05366b1142686;p=gnulib.git diff --git a/lib/savewd.c b/lib/savewd.c index c9af955d6..58e0b613b 100644 --- a/lib/savewd.c +++ b/lib/savewd.c @@ -1,6 +1,6 @@ /* Save and restore the working directory, possibly using a child process. - Copyright (C) 2006 Free Software Foundation, Inc. + Copyright (C) 2006, 2007 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -25,12 +25,13 @@ #include #include #include +#include #include +#include #include #include #include -#include "exit.h" #include "dirname.h" #include "fcntl-safer.h" @@ -102,7 +103,8 @@ savewd_chdir (struct savewd *wd, char const *dir, int options, /* Open the directory if requested, or if avoiding a race condition is requested and possible. */ - if (open_result || (options & (O_NOFOLLOW ? SAVEWD_CHDIR_NOFOLLOW : 0))) + if (open_result + || (options & (HAVE_WORKING_O_NOFOLLOW ? SAVEWD_CHDIR_NOFOLLOW : 0))) { fd = open (dir, (O_RDONLY | O_DIRECTORY | O_NOCTTY | O_NONBLOCK @@ -201,13 +203,13 @@ savewd_restore (struct savewd *wd, int status) _exit (status); if (0 < child) { - int status; - while (waitpid (child, &status, 0) < 0) + int child_status; + while (waitpid (child, &child_status, 0) < 0) assert (errno == EINTR); wd->val.child = -1; - if (! WIFEXITED (status)) - raise (WTERMSIG (status)); - return WEXITSTATUS (status); + if (! WIFEXITED (child_status)) + raise (WTERMSIG (child_status)); + return WEXITSTATUS (child_status); } } break;