summaryrefslogtreecommitdiff
path: root/lib/save-cwd.h
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2014-08-10 13:40:57 -0700
committerPaul Eggert <eggert@cs.ucla.edu>2014-08-10 13:40:57 -0700
commitf22bc725a1c8294fc042f6a9541be01a177755f6 (patch)
treec54be44171d43157177e8879d5ec3d583edfe5a1 /lib/save-cwd.h
parentd5f2feb5818b9da8323bda683983fa7e637c47fd (diff)
downloademacs-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.h40
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 */