diff options
| author | Stefan Monnier | 2012-03-25 16:37:21 -0400 |
|---|---|---|
| committer | Stefan Monnier | 2012-03-25 16:37:21 -0400 |
| commit | 699c782b7668c44d0fa4446331b0590a6d5dac82 (patch) | |
| tree | 5dcce364741d0761920a3d274b0fc8aba4103d45 /lib/pathmax.h | |
| parent | 98fb480ee31bf74cf554044f60f21df16566dd7f (diff) | |
| parent | e99a9b8bdccadded1f6fae88ee7a2a93dfd4eacf (diff) | |
| download | emacs-pending.tar.gz emacs-pending.zip | |
Merge from trunkpending
Diffstat (limited to 'lib/pathmax.h')
| -rw-r--r-- | lib/pathmax.h | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/lib/pathmax.h b/lib/pathmax.h new file mode 100644 index 00000000000..c47618a1b6a --- /dev/null +++ b/lib/pathmax.h | |||
| @@ -0,0 +1,84 @@ | |||
| 1 | /* Define PATH_MAX somehow. Requires sys/types.h. | ||
| 2 | Copyright (C) 1992, 1999, 2001, 2003, 2005, 2009-2011 Free Software | ||
| 3 | Foundation, Inc. | ||
| 4 | |||
| 5 | This program is free software; you can redistribute it and/or modify | ||
| 6 | it under the terms of the GNU General Public License as published by | ||
| 7 | the Free Software Foundation; either version 3, or (at your option) | ||
| 8 | any later version. | ||
| 9 | |||
| 10 | This program is distributed in the hope that it will be useful, | ||
| 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 13 | GNU General Public License for more details. | ||
| 14 | |||
| 15 | You should have received a copy of the GNU General Public License | ||
| 16 | along with this program; if not, write to the Free Software Foundation, | ||
| 17 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ | ||
| 18 | |||
| 19 | #ifndef _PATHMAX_H | ||
| 20 | # define _PATHMAX_H | ||
| 21 | |||
| 22 | /* POSIX:2008 defines PATH_MAX to be the maximum number of bytes in a filename, | ||
| 23 | including the terminating NUL byte. | ||
| 24 | <http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html> | ||
| 25 | PATH_MAX is not defined on systems which have no limit on filename length, | ||
| 26 | such as GNU/Hurd. | ||
| 27 | |||
| 28 | This file does *not* define PATH_MAX always. Programs that use this file | ||
| 29 | can handle the GNU/Hurd case in several ways: | ||
| 30 | - Either with a package-wide handling, or with a per-file handling, | ||
| 31 | - Either through a | ||
| 32 | #ifdef PATH_MAX | ||
| 33 | or through a fallback like | ||
| 34 | #ifndef PATH_MAX | ||
| 35 | # define PATH_MAX 8192 | ||
| 36 | #endif | ||
| 37 | or through a fallback like | ||
| 38 | #ifndef PATH_MAX | ||
| 39 | # define PATH_MAX pathconf ("/", _PC_PATH_MAX) | ||
| 40 | #endif | ||
| 41 | */ | ||
| 42 | |||
| 43 | # include <unistd.h> | ||
| 44 | |||
| 45 | # include <limits.h> | ||
| 46 | |||
| 47 | # ifndef _POSIX_PATH_MAX | ||
| 48 | # define _POSIX_PATH_MAX 256 | ||
| 49 | # endif | ||
| 50 | |||
| 51 | /* Don't include sys/param.h if it already has been. */ | ||
| 52 | # if defined HAVE_SYS_PARAM_H && !defined PATH_MAX && !defined MAXPATHLEN | ||
| 53 | # include <sys/param.h> | ||
| 54 | # endif | ||
| 55 | |||
| 56 | # if !defined PATH_MAX && defined MAXPATHLEN | ||
| 57 | # define PATH_MAX MAXPATHLEN | ||
| 58 | # endif | ||
| 59 | |||
| 60 | # ifdef __hpux | ||
| 61 | /* On HP-UX, PATH_MAX designates the maximum number of bytes in a filename, | ||
| 62 | *not* including the terminating NUL byte, and is set to 1023. | ||
| 63 | Additionally, when _XOPEN_SOURCE is defined to 500 or more, PATH_MAX is | ||
| 64 | not defined at all any more. */ | ||
| 65 | # undef PATH_MAX | ||
| 66 | # define PATH_MAX 1024 | ||
| 67 | # endif | ||
| 68 | |||
| 69 | # if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ | ||
| 70 | /* The page "Naming Files, Paths, and Namespaces" on msdn.microsoft.com, | ||
| 71 | section "Maximum Path Length Limitation", | ||
| 72 | <http://msdn.microsoft.com/en-us/library/aa365247(v=vs.85).aspx#maxpath> | ||
| 73 | explains that the maximum size of a filename, including the terminating | ||
| 74 | NUL byte, is 260 = 3 + 256 + 1. | ||
| 75 | This is the same value as | ||
| 76 | - FILENAME_MAX in <stdio.h>, | ||
| 77 | - _MAX_PATH in <stdlib.h>, | ||
| 78 | - MAX_PATH in <windef.h>. | ||
| 79 | Undefine the original value, because mingw's <limits.h> gets it wrong. */ | ||
| 80 | # undef PATH_MAX | ||
| 81 | # define PATH_MAX 260 | ||
| 82 | # endif | ||
| 83 | |||
| 84 | #endif /* _PATHMAX_H */ | ||