X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=lib%2Fsave-cwd.c;h=93b1fe85ca8817227da174accf5eed327b513ce7;hb=68126b9700a6cefbfe0f578fa7dbe71829c52e8f;hp=17d077db890d0b766d9d045f74c53d045c94b36d;hpb=1f6297a30c109108ac3ae505a8f051a9dff5529e;p=gnulib.git diff --git a/lib/save-cwd.c b/lib/save-cwd.c index 17d077db8..93b1fe85c 100644 --- a/lib/save-cwd.c +++ b/lib/save-cwd.c @@ -21,6 +21,7 @@ # include "config.h" #endif +#include #include #include @@ -35,9 +36,6 @@ #endif #include -#ifndef errno -extern int errno; -#endif #ifndef O_DIRECTORY # define O_DIRECTORY 0 @@ -66,7 +64,7 @@ extern int errno; int save_cwd (struct saved_cwd *cwd) { - static int have_working_fchdir = 1; + static bool have_working_fchdir = true; cwd->desc = -1; cwd->name = NULL; @@ -80,7 +78,7 @@ save_cwd (struct saved_cwd *cwd) if (cwd->desc < 0) { cwd->name = xgetcwd (); - return cwd->name == NULL; + return cwd->name ? 0 : -1; } # if __sun__ || sun @@ -92,7 +90,7 @@ save_cwd (struct saved_cwd *cwd) { close (cwd->desc); cwd->desc = -1; - have_working_fchdir = 0; + have_working_fchdir = false; } else { @@ -100,13 +98,13 @@ save_cwd (struct saved_cwd *cwd) close (cwd->desc); cwd->desc = -1; errno = saved_errno; - return 1; + return -1; } } # endif /* __sun__ || sun */ #else # define fchdir(x) (abort (), 0) - have_working_fchdir = 0; + have_working_fchdir = false; #endif } @@ -114,22 +112,22 @@ save_cwd (struct saved_cwd *cwd) { cwd->name = xgetcwd (); if (cwd->name == NULL) - return 1; + return -1; } return 0; } /* Change to recorded location, CWD, in directory hierarchy. - Upon failure, return nonzero (errno is set by chdir or fchdir). + Upon failure, return -1 (errno is set by chdir or fchdir). Upon success, return zero. */ int restore_cwd (const struct saved_cwd *cwd) { if (0 <= cwd->desc) - return fchdir (cwd->desc) < 0; + return fchdir (cwd->desc); else - return chdir (cwd->name) < 0; + return chdir (cwd->name); } void