summaryrefslogtreecommitdiff
path: root/Build/extra/djgpp/xstat.h
diff options
context:
space:
mode:
Diffstat (limited to 'Build/extra/djgpp/xstat.h')
-rw-r--r--Build/extra/djgpp/xstat.h71
1 files changed, 71 insertions, 0 deletions
diff --git a/Build/extra/djgpp/xstat.h b/Build/extra/djgpp/xstat.h
new file mode 100644
index 00000000000..5e10bb8ca1f
--- /dev/null
+++ b/Build/extra/djgpp/xstat.h
@@ -0,0 +1,71 @@
+/* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */
+/*
+ * Header for internal stat()/fstat() assist functions.
+ *
+ */
+
+#ifndef __XSTAT_H
+#define __XSTAT_H
+
+#include <stdio.h>
+#include <time.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <dpmi.h>
+
+/* Some errno.h headers do not define EFAULT. Here the value is
+ taken from POSIX IEEE 1003.1. */
+#include <errno.h>
+#ifndef EFAULT
+#define EFAULT 14
+#endif
+
+/* Under MS-DOS, file access permissions are shared by all, except for
+ Write permission. */
+#define READ_ACCESS (S_IRUSR | S_IRGRP | S_IROTH)
+#define WRITE_ACCESS S_IWUSR
+#define EXEC_ACCESS (S_IXUSR | S_IXGRP | S_IXOTH)
+
+/* Macro to convert a segment and an offset to a "far offset" suitable
+ for _farxxx() functions of DJGPP. */
+#ifndef MK_FOFF
+#define MK_FOFF(s,o) ((int)((((unsigned long)(s)) << 4) + (unsigned short)(o)))
+#endif
+
+#define MAX_TRUE_NAME FILENAME_MAX
+
+extern unsigned short _osmajor, _osminor;
+extern const char * _os_flavor;
+
+/* Bits to flag f?stat() failed to use individual undocumented features. */
+#define _STFAIL_SDA 1 /* Get SDA call failed */
+#define _STFAIL_OSVER 2 /* Unsupported DOS version */
+#define _STFAIL_BADSDA 4 /* Bad pointer to SDA */
+#define _STFAIL_TRUENAME 8 /* _truename() failed */
+#define _STFAIL_HASH 0x10 /* inode defaults to hashing */
+#define _STFAIL_LABEL 0x20 /* Root dir, but no volume label */
+#define _STFAIL_DCOUNT 0x40 /* dirent_count ridiculously large */
+#define _STFAIL_WRITEBIT 0x80 /* fstat() failed to get write access bit */
+#define _STFAIL_DEVNO 0x100 /* fstat() failed to get device number */
+#define _STFAIL_BADSFT 0x200 /* SFT entry found, but can't be trusted */
+#define _STFAIL_SFTIDX 0x400 /* bad SFT index in JFT */
+#define _STFAIL_SFTNF 0x800 /* file entry not found in SFT array */
+
+extern unsigned short _djstat_fail_bits;
+
+extern unsigned short _djstat_flags;
+
+extern time_t _file_time_stamp(unsigned int);
+extern ino_t _invent_inode(const char *, unsigned, unsigned long);
+extern unsigned short _get_magic(const char *, int);
+extern unsigned short _get_dos_version(int);
+extern char * _truename(const char *, char *);
+extern int _is_remote_drive(int);
+extern int _is_executable(const char *, int, const char *);
+extern short _get_dev_info(int);
+extern long __filelength(int);
+extern int _is_remote_handle(int);
+extern void _djstat_describe_lossage(FILE *);
+extern int _getftime(int, unsigned int *);
+
+#endif /* __XSTAT_H */