1 /* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */ 2 /* 3 * Header for internal stat()/fstat() assist functions. 4 * 5 */ 6 7 #ifndef __XSTAT_H 8 #define __XSTAT_H 9 10 #include <stdio.h> 11 #include <time.h> 12 #include <sys/types.h> 13 #include <sys/stat.h> 14 #include <dpmi.h> 15 16 /* Some errno.h headers do not define EFAULT. Here the value is 17 taken from POSIX IEEE 1003.1. */ 18 #include <errno.h> 19 #ifndef EFAULT 20 #define EFAULT 14 21 #endif 22 23 /* Under MS-DOS, file access permissions are shared by all, except for 24 Write permission. */ 25 #define READ_ACCESS (S_IRUSR | S_IRGRP | S_IROTH) 26 #define WRITE_ACCESS S_IWUSR 27 #define EXEC_ACCESS (S_IXUSR | S_IXGRP | S_IXOTH) 28 29 /* Macro to convert a segment and an offset to a "far offset" suitable 30 for _farxxx() functions of DJGPP. */ 31 #ifndef MK_FOFF 32 #define MK_FOFF(s,o) ((int)((((unsigned long)(s)) << 4) + (unsigned short)(o))) 33 #endif 34 35 #define MAX_TRUE_NAME FILENAME_MAX 36 37 extern unsigned short _osmajor, _osminor; 38 extern const char * _os_flavor; 39 40 /* Bits to flag f?stat() failed to use individual undocumented features. */ 41 #define _STFAIL_SDA 1 /* Get SDA call failed */ 42 #define _STFAIL_OSVER 2 /* Unsupported DOS version */ 43 #define _STFAIL_BADSDA 4 /* Bad pointer to SDA */ 44 #define _STFAIL_TRUENAME 8 /* _truename() failed */ 45 #define _STFAIL_HASH 0x10 /* inode defaults to hashing */ 46 #define _STFAIL_LABEL 0x20 /* Root dir, but no volume label */ 47 #define _STFAIL_DCOUNT 0x40 /* dirent_count ridiculously large */ 48 #define _STFAIL_WRITEBIT 0x80 /* fstat() failed to get write access bit */ 49 #define _STFAIL_DEVNO 0x100 /* fstat() failed to get device number */ 50 #define _STFAIL_BADSFT 0x200 /* SFT entry found, but can't be trusted */ 51 #define _STFAIL_SFTIDX 0x400 /* bad SFT index in JFT */ 52 #define _STFAIL_SFTNF 0x800 /* file entry not found in SFT array */ 53 54 extern unsigned short _djstat_fail_bits; 55 56 extern unsigned short _djstat_flags; 57 58 extern time_t _file_time_stamp(unsigned int); 59 extern ino_t _invent_inode(const char *, unsigned, unsigned long); 60 extern unsigned short _get_magic(const char *, int); 61 extern unsigned short _get_dos_version(int); 62 extern char * _truename(const char *, char *); 63 extern int _is_remote_drive(int); 64 extern int _is_executable(const char *, int, const char *); 65 extern short _get_dev_info(int); 66 extern long __filelength(int); 67 extern int _is_remote_handle(int); 68 extern void _djstat_describe_lossage(FILE *); 69 extern int _getftime(int, unsigned int *); 70 71 #endif /* __XSTAT_H */ 72