summaryrefslogtreecommitdiffstats
path: root/lib/fs.h
blob: 40d29f4a3542b6bc4d8ef5ff970abc7412893020 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
/** \file fs.h
 *  \brief Header: fs compatibility definitions
 */

/* Include file to use opendir/closedir/readdir */

#ifndef MC_FS_H
#define MC_FS_H

#include <sys/types.h>
#include <unistd.h>
#include <sys/stat.h>
#include <dirent.h>

/*** typedefs(not structures) and defined constants **********************************************/

#ifdef S_ISREG
#define HAVE_S_ISREG 1
#else
#define HAVE_S_ISREG 0
#define S_ISREG(x) 0
#endif

#ifdef S_ISDIR
#define HAVE_S_ISDIR 1
#else
#define HAVE_S_ISDIR 0
#define S_ISDIR(x) 0
#endif

/* Replacement for permission bits missing in sys/stat.h */
#ifdef S_ISLNK
#define HAVE_S_ISLNK 1
#else
#define HAVE_S_ISLNK 0
#define S_ISLNK(x) 0
#endif

#ifdef S_ISSOCK
#define HAVE_S_ISSOCK 1
#else
#define HAVE_S_ISSOCK 0
#define S_ISSOCK(x) 0
#endif

#ifdef S_ISFIFO
#define HAVE_S_ISFIFO 1
#else
#define HAVE_S_ISFIFO 0
#define S_ISFIFO(x) 0
#endif

#ifdef S_ISCHR
#define HAVE_S_ISCHR 1
#else
#define HAVE_S_ISCHR 0
#define S_ISCHR(x) 0
#endif

#ifdef S_ISBLK
#define HAVE_S_ISBLK 1
#else
#define HAVE_S_ISBLK 0
#define S_ISBLK(x) 0
#endif

/* Door is something that only exists on Solaris */
#ifdef S_ISDOOR
#define HAVE_S_ISDOOR 1
#else
#define HAVE_S_ISDOOR 0
#define S_ISDOOR(x) 0
#endif

/* Special named files are widely used in QNX6 */
#ifdef S_ISNAM
#define HAVE_S_ISNAM 1
#else
#define HAVE_S_ISNAM 0
#define S_ISNAM(x) 0
#endif

#ifndef PATH_MAX
#ifdef _POSIX_VERSION
#define PATH_MAX _POSIX_PATH_MAX
#else
#ifdef MAXPATHLEN
#define PATH_MAX MAXPATHLEN
#else
#define PATH_MAX 1024
#endif
#endif
#endif

#ifndef MAXPATHLEN
#define MC_MAXPATHLEN 4096
#else
#define MC_MAXPATHLEN MAXPATHLEN
#endif

/* unistd.h defines _POSIX_VERSION on POSIX.1 systems. */
#define NLENGTH(dirent) (strlen ((dirent)->d_name))

/* DragonFlyBSD doesn't provide MAXNAMLEN macro */
#ifndef MAXNAMLEN
#define MAXNAMLEN NAME_MAX
#endif

#define MC_MAXFILENAMELEN MAXNAMLEN

#define DIR_IS_DOT(x) ((x)[0] == '.' && (x)[1] == '\0')
#define DIR_IS_DOTDOT(x) ((x)[0] == '.' && (x)[1] == '.' && (x)[2] == '\0')

/*** enums ***************************************************************************************/

/*** structures declarations (and typedefs of structures)*****************************************/

/*** global variables defined in .c file *********************************************************/

/*** declarations of public functions ************************************************************/

/*** inline functions ****************************************************************************/

#endif