Replaced with <unistd.h>.
[gnulib.git] / lib / savewd.c
index c9af955..58e0b61 100644 (file)
@@ -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
 #include <assert.h>
 #include <errno.h>
 #include <fcntl.h>
+#include <signal.h>
 #include <stdbool.h>
+#include <stdlib.h>
 #include <sys/types.h>
 #include <sys/wait.h>
 #include <unistd.h>
 
-#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;