X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=lib%2Fsavewd.c;h=c5aec365ec40fd3b54e537d0ed2f6cce3d874e74;hb=5e3f9fb1457299215f1777603ef9d3e2f81986ff;hp=dfb33b7ea3264ea750842f20f3b8d204b873d066;hpb=441aa3044f43e5572f58c354f01e6bc070acd5c7;p=gnulib.git diff --git a/lib/savewd.c b/lib/savewd.c index dfb33b7ea..c5aec365e 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, 2007, 2009 Free Software Foundation, Inc. + Copyright (C) 2006-2007, 2009-2012 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 @@ -31,7 +31,7 @@ #include #include -#include "dirname.h" +#include "dosname.h" #include "fcntl-safer.h" /* Save the working directory into *WD, if it hasn't been saved @@ -45,7 +45,7 @@ savewd_save (struct savewd *wd) case INITIAL_STATE: /* Save the working directory, or prepare to fall back if possible. */ { - int fd = open_safer (".", O_RDONLY); + int fd = open_safer (".", O_SEARCH); if (0 <= fd) { wd->state = FD_STATE; @@ -105,7 +105,7 @@ savewd_chdir (struct savewd *wd, char const *dir, int options, || (options & (HAVE_WORKING_O_NOFOLLOW ? SAVEWD_CHDIR_NOFOLLOW : 0))) { fd = open (dir, - (O_RDONLY | O_DIRECTORY | O_NOCTTY | O_NONBLOCK + (O_SEARCH | O_DIRECTORY | O_NOCTTY | O_NONBLOCK | (options & SAVEWD_CHDIR_NOFOLLOW ? O_NOFOLLOW : 0))); if (open_result)