Merge branch '3729_vfs_date_fixes'
[midnight-commander.git] / lib / fs.h
blob40d29f4a3542b6bc4d8ef5ff970abc7412893020
1 /** \file fs.h
2 * \brief Header: fs compatibility definitions
3 */
5 /* Include file to use opendir/closedir/readdir */
7 #ifndef MC_FS_H
8 #define MC_FS_H
10 #include <sys/types.h>
11 #include <unistd.h>
12 #include <sys/stat.h>
13 #include <dirent.h>
15 /*** typedefs(not structures) and defined constants **********************************************/
17 #ifdef S_ISREG
18 #define HAVE_S_ISREG 1
19 #else
20 #define HAVE_S_ISREG 0
21 #define S_ISREG(x) 0
22 #endif
24 #ifdef S_ISDIR
25 #define HAVE_S_ISDIR 1
26 #else
27 #define HAVE_S_ISDIR 0
28 #define S_ISDIR(x) 0
29 #endif
31 /* Replacement for permission bits missing in sys/stat.h */
32 #ifdef S_ISLNK
33 #define HAVE_S_ISLNK 1
34 #else
35 #define HAVE_S_ISLNK 0
36 #define S_ISLNK(x) 0
37 #endif
39 #ifdef S_ISSOCK
40 #define HAVE_S_ISSOCK 1
41 #else
42 #define HAVE_S_ISSOCK 0
43 #define S_ISSOCK(x) 0
44 #endif
46 #ifdef S_ISFIFO
47 #define HAVE_S_ISFIFO 1
48 #else
49 #define HAVE_S_ISFIFO 0
50 #define S_ISFIFO(x) 0
51 #endif
53 #ifdef S_ISCHR
54 #define HAVE_S_ISCHR 1
55 #else
56 #define HAVE_S_ISCHR 0
57 #define S_ISCHR(x) 0
58 #endif
60 #ifdef S_ISBLK
61 #define HAVE_S_ISBLK 1
62 #else
63 #define HAVE_S_ISBLK 0
64 #define S_ISBLK(x) 0
65 #endif
67 /* Door is something that only exists on Solaris */
68 #ifdef S_ISDOOR
69 #define HAVE_S_ISDOOR 1
70 #else
71 #define HAVE_S_ISDOOR 0
72 #define S_ISDOOR(x) 0
73 #endif
75 /* Special named files are widely used in QNX6 */
76 #ifdef S_ISNAM
77 #define HAVE_S_ISNAM 1
78 #else
79 #define HAVE_S_ISNAM 0
80 #define S_ISNAM(x) 0
81 #endif
83 #ifndef PATH_MAX
84 #ifdef _POSIX_VERSION
85 #define PATH_MAX _POSIX_PATH_MAX
86 #else
87 #ifdef MAXPATHLEN
88 #define PATH_MAX MAXPATHLEN
89 #else
90 #define PATH_MAX 1024
91 #endif
92 #endif
93 #endif
95 #ifndef MAXPATHLEN
96 #define MC_MAXPATHLEN 4096
97 #else
98 #define MC_MAXPATHLEN MAXPATHLEN
99 #endif
101 /* unistd.h defines _POSIX_VERSION on POSIX.1 systems. */
102 #define NLENGTH(dirent) (strlen ((dirent)->d_name))
104 /* DragonFlyBSD doesn't provide MAXNAMLEN macro */
105 #ifndef MAXNAMLEN
106 #define MAXNAMLEN NAME_MAX
107 #endif
109 #define MC_MAXFILENAMELEN MAXNAMLEN
111 #define DIR_IS_DOT(x) ((x)[0] == '.' && (x)[1] == '\0')
112 #define DIR_IS_DOTDOT(x) ((x)[0] == '.' && (x)[1] == '.' && (x)[2] == '\0')
114 /*** enums ***************************************************************************************/
116 /*** structures declarations (and typedefs of structures)*****************************************/
118 /*** global variables defined in .c file *********************************************************/
120 /*** declarations of public functions ************************************************************/
122 /*** inline functions ****************************************************************************/
124 #endif