summaryrefslogtreecommitdiff
path: root/m4/chdir-long.m4
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2005-01-18 21:58:11 +0000
committerPaul Eggert <eggert@cs.ucla.edu>2005-01-18 21:58:11 +0000
commitd9203c96c70e64ae24a2f2d36e1ba80d79628dc5 (patch)
treee2234134cab629269d9b9d004cf167e40775f09b /m4/chdir-long.m4
parent79fedf129cbfc69a04861c64e58ddff9f05d47e1 (diff)
downloadgnulib-d9203c96c70e64ae24a2f2d36e1ba80d79628dc5.tar.gz
* modules/chdir-long, modules/openat: New files.
* modules/save-cwd (Depends-on): Depend on chdir-long. (Makefile.am): Remove lib_SOURCES; now handled by AC_LIBSOURCES. * lib/save-cwd.c: Include "save-cwd.h" before other include files. (O_DIRECTORY): Remove; not needed here, since "." must be a directory. All uses removed. (save_cwd): Use __sgi || __sun, not sun || __sun. __sun is universal on Suns, and we also need to test for IRIX. Revamp code to use 'if' rather than '#if'. Avoid unnecessary comparison of cwd->desc to 0. Change the name of the robust chdir function from chdir to chdir_long. * lib/save-cwd.c: Include chdir-long.h rather than chdir.h. (restore_cwd): Use chdir_long, not chdir. * lib/chdir-long.c: Renamed from chdir.c. * lib/chdir-long.h: Renamed from chdir.h. [!defined PATH_MAX]: Define chdir_long to chdir on systems like the Hurd. * m4/chdir-long.m4, openat.m4: New files. * m4/save-cwd.m4 (gl_SAVE_CWD): Add AC_LIBSOURCES for save-cwd.c, save-cwd.h. Add AC_LIBOBJ for save-cwd.
Diffstat (limited to 'm4/chdir-long.m4')
-rw-r--r--m4/chdir-long.m441
1 files changed, 41 insertions, 0 deletions
diff --git a/m4/chdir-long.m4 b/m4/chdir-long.m4
new file mode 100644
index 0000000000..eef75d7677
--- /dev/null
+++ b/m4/chdir-long.m4
@@ -0,0 +1,41 @@
+#serial 4
+
+# Use Gnulib's robust chdir function.
+# It can handle arbitrarily long directory names, which means
+# that when it is given the name of an existing directory, it
+# never fails with ENAMETOOLONG.
+# Arrange to compile chdir-long.c only on systems that define PATH_MAX.
+
+dnl Copyright (C) 2004 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Written by Jim Meyering.
+
+AC_DEFUN([gl_FUNC_CHDIR_LONG],
+[
+ AC_LIBSOURCES([chdir-long.c, chdir-long.h])
+ AC_CACHE_CHECK([whether this system has a definition of PATH_MAX],
+ gl_have_path_max_definition,
+ [AC_EGREP_CPP([have_path_max_definition],
+ [#include <unistd.h>
+#include <limits.h>
+#ifdef PATH_MAX
+have_path_max_definition
+#endif],
+ gl_have_path_max_definition=yes,
+ gl_have_path_max_definition=no)])
+
+ if test $gl_have_path_max_definition; then
+ AC_LIBOBJ([chdir-long])
+ gl_PREREQ_CHDIR_LONG
+ fi
+])
+
+AC_DEFUN([gl_PREREQ_CHDIR_LONG],
+[
+ AM_STDBOOL_H
+ gl_FUNC_MEMPCPY
+ gl_FUNC_OPENAT
+])