3162fabff6a5bf3cc86f235e3b640da506b32b5e
[platform/upstream/groff.git] / src / libs / libgroff / maxfilename.cpp
1 // -*- C++ -*-
2 /* Copyright (C) 1992-2014  Free Software Foundation, Inc.
3      Written by James Clark (jjc@jclark.com)
4
5 This file is part of groff.
6
7 groff is free software; you can redistribute it and/or modify it under
8 the terms of the GNU General Public License as published by the Free
9 Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
11
12 groff is distributed in the hope that it will be useful, but WITHOUT ANY
13 WARRANTY; without even the implied warranty of MERCHANTABILITY or
14 FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
15 for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
19
20 /* file_name_max(dir) does the same as pathconf(dir, _PC_NAME_MAX) */
21
22 #include "lib.h"
23
24 #include <sys/types.h>
25
26 #ifdef HAVE_UNISTD_H
27 #include <unistd.h>
28 #endif /* HAVE_UNISTD_H */
29
30 #ifdef _POSIX_VERSION
31
32 size_t file_name_max(const char *fname)
33 {
34   return pathconf(fname, _PC_NAME_MAX);
35 }
36
37 #else /* not _POSIX_VERSION */
38
39 #ifdef HAVE_DIRENT_H
40 #include <dirent.h>
41 #else /* not HAVE_DIRENT_H */
42 #ifdef HAVE_SYS_DIR_H
43 #include <sys/dir.h>
44 #endif /* HAVE_SYS_DIR_H */
45 #endif /* not HAVE_DIRENT_H */
46
47 #ifndef NAME_MAX
48 #ifdef MAXNAMLEN
49 #define NAME_MAX MAXNAMLEN
50 #else /* !MAXNAMLEN */
51 #ifdef MAXNAMELEN
52 #define NAME_MAX MAXNAMELEN
53 #else /* !MAXNAMELEN */
54 #define NAME_MAX 14
55 #endif /* !MAXNAMELEN */
56 #endif /* !MAXNAMLEN */
57 #endif /* !NAME_MAX */
58
59 size_t file_name_max(const char *)
60 {
61   return NAME_MAX;
62 }
63
64 #endif /* not _POSIX_VERSION */