Blame gnulib/lib/pathmax.h

Packit Service 51e54d
/* Define PATH_MAX somehow.  Requires sys/types.h.
Packit Service 51e54d
   Copyright (C) 1992, 1999, 2001, 2003, 2005, 2009-2014 Free Software
Packit Service 51e54d
   Foundation, Inc.
Packit Service 51e54d
Packit Service 51e54d
   This program is free software; you can redistribute it and/or modify
Packit Service 51e54d
   it under the terms of the GNU General Public License as published by
Packit Service 51e54d
   the Free Software Foundation; either version 3, or (at your option)
Packit Service 51e54d
   any later version.
Packit Service 51e54d
Packit Service 51e54d
   This program is distributed in the hope that it will be useful,
Packit Service 51e54d
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 51e54d
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit Service 51e54d
   GNU General Public License for more details.
Packit Service 51e54d
Packit Service 51e54d
   You should have received a copy of the GNU General Public License
Packit Service 51e54d
   along with this program; if not, see <http://www.gnu.org/licenses/>.  */
Packit Service 51e54d
Packit Service 51e54d
#ifndef _PATHMAX_H
Packit Service 51e54d
# define _PATHMAX_H
Packit Service 51e54d
Packit Service 51e54d
/* POSIX:2008 defines PATH_MAX to be the maximum number of bytes in a filename,
Packit Service 51e54d
   including the terminating NUL byte.
Packit Service 51e54d
   <http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html>
Packit Service 51e54d
   PATH_MAX is not defined on systems which have no limit on filename length,
Packit Service 51e54d
   such as GNU/Hurd.
Packit Service 51e54d
Packit Service 51e54d
   This file does *not* define PATH_MAX always.  Programs that use this file
Packit Service 51e54d
   can handle the GNU/Hurd case in several ways:
Packit Service 51e54d
     - Either with a package-wide handling, or with a per-file handling,
Packit Service 51e54d
     - Either through a
Packit Service 51e54d
         #ifdef PATH_MAX
Packit Service 51e54d
       or through a fallback like
Packit Service 51e54d
         #ifndef PATH_MAX
Packit Service 51e54d
         # define PATH_MAX 8192
Packit Service 51e54d
         #endif
Packit Service 51e54d
       or through a fallback like
Packit Service 51e54d
         #ifndef PATH_MAX
Packit Service 51e54d
         # define PATH_MAX pathconf ("/", _PC_PATH_MAX)
Packit Service 51e54d
         #endif
Packit Service 51e54d
 */
Packit Service 51e54d
Packit Service 51e54d
# include <unistd.h>
Packit Service 51e54d
Packit Service 51e54d
# include <limits.h>
Packit Service 51e54d
Packit Service 51e54d
# ifndef _POSIX_PATH_MAX
Packit Service 51e54d
#  define _POSIX_PATH_MAX 256
Packit Service 51e54d
# endif
Packit Service 51e54d
Packit Service 51e54d
/* Don't include sys/param.h if it already has been.  */
Packit Service 51e54d
# if defined HAVE_SYS_PARAM_H && !defined PATH_MAX && !defined MAXPATHLEN
Packit Service 51e54d
#  include <sys/param.h>
Packit Service 51e54d
# endif
Packit Service 51e54d
Packit Service 51e54d
# if !defined PATH_MAX && defined MAXPATHLEN
Packit Service 51e54d
#  define PATH_MAX MAXPATHLEN
Packit Service 51e54d
# endif
Packit Service 51e54d
Packit Service 51e54d
# ifdef __hpux
Packit Service 51e54d
/* On HP-UX, PATH_MAX designates the maximum number of bytes in a filename,
Packit Service 51e54d
   *not* including the terminating NUL byte, and is set to 1023.
Packit Service 51e54d
   Additionally, when _XOPEN_SOURCE is defined to 500 or more, PATH_MAX is
Packit Service 51e54d
   not defined at all any more.  */
Packit Service 51e54d
#  undef PATH_MAX
Packit Service 51e54d
#  define PATH_MAX 1024
Packit Service 51e54d
# endif
Packit Service 51e54d
Packit Service 51e54d
# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
Packit Service 51e54d
/* The page "Naming Files, Paths, and Namespaces" on msdn.microsoft.com,
Packit Service 51e54d
   section "Maximum Path Length Limitation",
Packit Service 51e54d
   <http://msdn.microsoft.com/en-us/library/aa365247(v=vs.85).aspx#maxpath>
Packit Service 51e54d
   explains that the maximum size of a filename, including the terminating
Packit Service 51e54d
   NUL byte, is 260 = 3 + 256 + 1.
Packit Service 51e54d
   This is the same value as
Packit Service 51e54d
     - FILENAME_MAX in <stdio.h>,
Packit Service 51e54d
     - _MAX_PATH in <stdlib.h>,
Packit Service 51e54d
     - MAX_PATH in <windef.h>.
Packit Service 51e54d
   Undefine the original value, because mingw's <limits.h> gets it wrong.  */
Packit Service 51e54d
#  undef PATH_MAX
Packit Service 51e54d
#  define PATH_MAX 260
Packit Service 51e54d
# endif
Packit Service 51e54d
Packit Service 51e54d
#endif /* _PATHMAX_H */