X-Git-Url: https://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fsave-cwd.c;h=b77edb339203c50c3cf1b7d24eed68b66682a7ba;hb=9a3aebb793224b17196fc77d6cb203a41a5c1905;hp=40bd70b0d25a714eb9aea3db420470fcaebb347d;hpb=67f394c1d2be473276ccd5e071f986511a13e212;p=gnulib.git diff --git a/lib/save-cwd.c b/lib/save-cwd.c index 40bd70b0d..b77edb339 100644 --- a/lib/save-cwd.c +++ b/lib/save-cwd.c @@ -42,6 +42,10 @@ extern int errno; #endif +#ifndef O_DIRECTORY +# define O_DIRECTORY 0 +#endif + #include "save-cwd.h" #include "error.h" @@ -57,8 +61,7 @@ char *xgetcwd PARAMS ((void)); called, but doing so is ok. Otherwise, return zero. */ int -save_cwd (cwd) - struct saved_cwd *cwd; +save_cwd (struct saved_cwd *cwd) { static int have_working_fchdir = 1; @@ -68,7 +71,7 @@ save_cwd (cwd) if (have_working_fchdir) { #if HAVE_FCHDIR - cwd->desc = open (".", O_RDONLY); + cwd->desc = open (".", O_RDONLY | O_DIRECTORY); if (cwd->desc < 0) { error (0, errno, "cannot open current directory"); @@ -118,10 +121,7 @@ save_cwd (cwd) */ int -restore_cwd (cwd, dest, from) - const struct saved_cwd *cwd; - const char *dest; - const char *from; +restore_cwd (const struct saved_cwd *cwd, const char *dest, const char *from) { int fail = 0; if (cwd->desc >= 0) @@ -144,8 +144,7 @@ restore_cwd (cwd, dest, from) } void -free_cwd (cwd) - struct saved_cwd *cwd; +free_cwd (struct saved_cwd *cwd) { if (cwd->desc >= 0) close (cwd->desc);