dhcpd-pools  3.0
ISC dhcpd lease usage analyser
pathmax.h
Go to the documentation of this file.
1 /* Define PATH_MAX somehow. Requires sys/types.h.
2  Copyright (C) 1992, 1999, 2001, 2003, 2005, 2009-2017 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 __WIN32__) && ! defined __CYGWIN__
69 /* The page "Naming Files, Paths, and Namespaces" on msdn.microsoft.com,
70  section "Maximum Path Length Limitation",
71  <https://msdn.microsoft.com/en-us/library/aa365247.aspx#maxpath>
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 */