X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fsave-cwd.c;h=b77edb339203c50c3cf1b7d24eed68b66682a7ba;hb=849fd64d09fc75159fba14585d66fa4ac3e817bc;hp=292bb6809c71ffc571a5ef837677007e70200fd4;hpb=d1c1bc7e08105746e0e599e4a3627025de4afd3f;p=gnulib.git diff --git a/lib/save-cwd.c b/lib/save-cwd.c index 292bb6809..b77edb339 100644 --- a/lib/save-cwd.c +++ b/lib/save-cwd.c @@ -1,5 +1,5 @@ /* save-cwd.c -- Save and restore current working directory. - Copyright (C) 1995, 1997 Free Software Foundation, Inc. + Copyright (C) 1995, 1997, 1998 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 @@ -17,7 +17,7 @@ /* Written by Jim Meyering . */ -#ifdef HAVE_CONFIG_H +#if HAVE_CONFIG_H # include "config.h" #endif @@ -27,11 +27,11 @@ # include #endif -#ifdef HAVE_UNISTD_H +#if HAVE_UNISTD_H # include #endif -#ifdef HAVE_FCNTL_H +#if HAVE_FCNTL_H # include #else # include @@ -42,10 +42,14 @@ extern int errno; #endif +#ifndef O_DIRECTORY +# define O_DIRECTORY 0 +#endif + #include "save-cwd.h" #include "error.h" -char *xgetcwd __P((void)); +char *xgetcwd PARAMS ((void)); /* Record the location of the current working directory in CWD so that the program may change to other directories and later use restore_cwd @@ -57,8 +61,7 @@ char *xgetcwd __P((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; @@ -67,8 +70,8 @@ save_cwd (cwd) if (have_working_fchdir) { -#ifdef HAVE_FCHDIR - cwd->desc = open (".", O_RDONLY); +#if HAVE_FCHDIR + 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);