1: /* Define PATH_MAX somehow. Requires sys/types.h.
2: Copyright (C) 1992, 1999, 2001, 2003, 2005, 2009-2019 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, see <https://www.gnu.org/licenses/>. */
17:
18: #ifndef _PATHMAX_H
19: # define _PATHMAX_H
20:
21: /* POSIX:2008 defines PATH_MAX to be the maximum number of bytes in a filename,
22: including the terminating NUL byte.
23: <http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html>
24: PATH_MAX is not defined on systems which have no limit on filename length,
25: such as GNU/Hurd.
26:
27: This file does *not* define PATH_MAX always. Programs that use this file
28: can handle the GNU/Hurd case in several ways:
29: - Either with a package-wide handling, or with a per-file handling,
30: - Either through a
31: #ifdef PATH_MAX
32: or through a fallback like
33: #ifndef PATH_MAX
34: # define PATH_MAX 8192
35: #endif
36: or through a fallback like
37: #ifndef PATH_MAX
38: # define PATH_MAX pathconf ("/", _PC_PATH_MAX)
39: #endif
40: */
41:
42: # include <unistd.h>
43:
44: # include <limits.h>
45:
46: # ifndef _POSIX_PATH_MAX
47: # define _POSIX_PATH_MAX 256
48: # endif
49:
50: /* Don't include sys/param.h if it already has been. */
51: # if defined HAVE_SYS_PARAM_H && !defined PATH_MAX && !defined MAXPATHLEN
52: # include <sys/param.h>
53: # endif
54:
55: # if !defined PATH_MAX && defined MAXPATHLEN
56: # define PATH_MAX MAXPATHLEN
57: # endif
58:
59: # ifdef __hpux
60: /* On HP-UX, PATH_MAX designates the maximum number of bytes in a filename,
61: *not* including the terminating NUL byte, and is set to 1023.
62: Additionally, when _XOPEN_SOURCE is defined to 500 or more, PATH_MAX is
63: not defined at all any more. */
64: # undef PATH_MAX
65: # define PATH_MAX 1024
66: # endif
67:
68: # if defined _WIN32 && ! defined __CYGWIN__
69: /* The page "Naming Files, Paths, and Namespaces" on msdn.microsoft.com,
70: section "Maximum Path Length Limitation",
71: <https://docs.microsoft.com/en-us/windows/desktop/FileIO/naming-a-file#maximum-path-length-limitation>
72: explains that the maximum size of a filename, including the terminating
73: NUL byte, is 260 = 3 + 256 + 1.
74: This is the same value as
75: - FILENAME_MAX in <stdio.h>,
76: - _MAX_PATH in <stdlib.h>,
77: - MAX_PATH in <windef.h>.
78: Undefine the original value, because mingw's <limits.h> gets it wrong. */
79: # undef PATH_MAX
80: # define PATH_MAX 260
81: # endif
82:
83: #endif /* _PATHMAX_H */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>