diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2014-08-10 13:40:57 -0700 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2014-08-10 13:40:57 -0700 |
commit | f22bc725a1c8294fc042f6a9541be01a177755f6 (patch) | |
tree | c54be44171d43157177e8879d5ec3d583edfe5a1 /lib/save-cwd.h | |
parent | d5f2feb5818b9da8323bda683983fa7e637c47fd (diff) | |
download | emacs-f22bc725a1c8294fc042f6a9541be01a177755f6.tar.gz |
Don't prevent random file systems from being unmounted.
This fix relies on having the 'fchdir' function, and on having
"." be searchable (or at least readable, on platforms lacking O_SEARCH),
but that's good enough to handle the vast majority of cases and the
remaining folks can just live with the annoyance of file systems
that occasionally can't be unmounted.
* configure.ac (fchdir): New function to check for.
* lib/save-cwd.c: Copy from gnulib, except omit the part that
allocates memory, since that can cause problems in Emacs.
* lib/save-cwd.h: Copy from gnulib.
Fixes: debbugs:18232
Diffstat (limited to 'lib/save-cwd.h')
-rw-r--r-- | lib/save-cwd.h | 40 |
1 files changed, 14 insertions, 26 deletions
diff --git a/lib/save-cwd.h b/lib/save-cwd.h index 9a1eb3519c8..6b84e4601d3 100644 --- a/lib/save-cwd.h +++ b/lib/save-cwd.h @@ -1,6 +1,7 @@ -/* Do not save and restore the current working directory. +/* Save and restore current working directory. - Copyright 2013-2014 Free Software Foundation, Inc. + Copyright (C) 1995, 1997-1998, 2003, 2009-2014 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 @@ -15,32 +16,19 @@ You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ -/* Gnulib needs to save and restore the current working directory to - fully emulate functions like fstatat. But Emacs doesn't care what - the current working directory is; it always uses absolute file - names. This module replaces the Gnulib module by omitting the code - that Emacs does not need. */ +/* Written by Jim Meyering. */ #ifndef SAVE_CWD_H -#define SAVE_CWD_H 1 +# define SAVE_CWD_H 1 -_GL_INLINE_HEADER_BEGIN -#ifndef SAVE_CWD_INLINE -# define SAVE_CWD_INLINE _GL_INLINE -#endif +struct saved_cwd + { + int desc; + char *name; + }; -struct saved_cwd { int desc; }; +int save_cwd (struct saved_cwd *cwd); +int restore_cwd (const struct saved_cwd *cwd); +void free_cwd (struct saved_cwd *cwd); -SAVE_CWD_INLINE int -save_cwd (struct saved_cwd *cwd) -{ - cwd->desc = -1; - return 0; -} - -SAVE_CWD_INLINE int restore_cwd (struct saved_cwd const *cwd) { return 0; } -SAVE_CWD_INLINE void free_cwd (struct saved_cwd *cwd) { } - -_GL_INLINE_HEADER_END - -#endif +#endif /* SAVE_CWD_H */ |