File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / libiconv / srclib / pathmax.h
Revision 1.1.1.3 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Mar 17 13:38:46 2021 UTC (3 years, 3 months ago) by misho
Branches: libiconv, MAIN
CVS tags: v1_16p0, HEAD
libiconv 1.16

    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>