X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fpathmax.h;h=5793e46d7decdec5219f8158a5a110c0fe1c3b37;hb=533101a268dc5015a140ff4695d8eeb04fbe57b6;hp=48ba92a700ebd91060fff387d0715f27cc46eca2;hpb=267a39bafd249d7eb9c37df06dc6defcf41cb343;p=gnulib.git
diff --git a/lib/pathmax.h b/lib/pathmax.h
index 48ba92a70..5793e46d7 100644
--- a/lib/pathmax.h
+++ b/lib/pathmax.h
@@ -1,5 +1,6 @@
/* Define PATH_MAX somehow. Requires sys/types.h.
- Copyright (C) 1992, 1999, 2001, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1992, 1999, 2001, 2003, 2005, 2009-2013 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
@@ -12,30 +13,38 @@
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software Foundation,
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+ along with this program; if not, see . */
#ifndef _PATHMAX_H
# define _PATHMAX_H
-# if HAVE_UNISTD_H
-# include
-# endif
+/* POSIX:2008 defines PATH_MAX to be the maximum number of bytes in a filename,
+ including the terminating NUL byte.
+
+ PATH_MAX is not defined on systems which have no limit on filename length,
+ such as GNU/Hurd.
-/* Non-POSIX BSD systems might have gcc's limits.h, which doesn't define
- PATH_MAX but might cause redefinition warnings when sys/param.h is
- later included (as on MORE/BSD 4.3). */
-# if defined _POSIX_VERSION || !defined __GNUC__
-# include
-# endif
+ This file does *not* define PATH_MAX always. Programs that use this file
+ can handle the GNU/Hurd case in several ways:
+ - Either with a package-wide handling, or with a per-file handling,
+ - Either through a
+ #ifdef PATH_MAX
+ or through a fallback like
+ #ifndef PATH_MAX
+ # define PATH_MAX 8192
+ #endif
+ or through a fallback like
+ #ifndef PATH_MAX
+ # define PATH_MAX pathconf ("/", _PC_PATH_MAX)
+ #endif
+ */
-# ifndef _POSIX_PATH_MAX
-# define _POSIX_PATH_MAX 255
-# endif
+# include
-# if !defined PATH_MAX && defined _PC_PATH_MAX
-# define PATH_MAX (pathconf ("/", _PC_PATH_MAX) < 1 ? 1024 \
- : pathconf ("/", _PC_PATH_MAX))
+# include
+
+# ifndef _POSIX_PATH_MAX
+# define _POSIX_PATH_MAX 256
# endif
/* Don't include sys/param.h if it already has been. */
@@ -47,8 +56,28 @@
# define PATH_MAX MAXPATHLEN
# endif
-# ifndef PATH_MAX
-# define PATH_MAX _POSIX_PATH_MAX
+# ifdef __hpux
+/* On HP-UX, PATH_MAX designates the maximum number of bytes in a filename,
+ *not* including the terminating NUL byte, and is set to 1023.
+ Additionally, when _XOPEN_SOURCE is defined to 500 or more, PATH_MAX is
+ not defined at all any more. */
+# undef PATH_MAX
+# define PATH_MAX 1024
+# endif
+
+# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+/* The page "Naming Files, Paths, and Namespaces" on msdn.microsoft.com,
+ section "Maximum Path Length Limitation",
+
+ explains that the maximum size of a filename, including the terminating
+ NUL byte, is 260 = 3 + 256 + 1.
+ This is the same value as
+ - FILENAME_MAX in ,
+ - _MAX_PATH in ,
+ - MAX_PATH in .
+ Undefine the original value, because mingw's gets it wrong. */
+# undef PATH_MAX
+# define PATH_MAX 260
# endif
#endif /* _PATHMAX_H */