summaryrefslogtreecommitdiffstats
path: root/lib/fs.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/fs.h')
-rw-r--r--lib/fs.h124
1 files changed, 124 insertions, 0 deletions
diff --git a/lib/fs.h b/lib/fs.h
new file mode 100644
index 0000000..40d29f4
--- /dev/null
+++ b/lib/fs.h
@@ -0,0 +1,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