/* Copyright (C) 1986-1994 by Digital Mars. $Revision: 1.1.1.1 $ */ #if __SC__ || __RCC__ #pragma once #endif #ifndef __SYS_STAT_H #define __SYS_STAT_H 1 #if __cplusplus extern "C" { #endif /* Define _CRTAPI1 (for compatibility with the NT SDK) */ #ifndef _CRTAPI1 #define _CRTAPI1 __cdecl #endif /* Define _CRTAPI2 (for compatibility with the NT SDK) */ #ifndef _CRTAPI2 #define _CRTAPI2 __cdecl #endif /* Define CRTIMP */ #ifndef _CRTIMP #if defined(_WIN32) && defined(_DLL) #define _CRTIMP __declspec(dllimport) #else #define _CRTIMP #endif #endif #ifndef __STDC__ #if !defined(_WCHAR_T_DEFINED) typedef unsigned short wchar_t; #define _WCHAR_T_DEFINED 1 #endif #endif #define _S_IFMT 0xF000 #define _S_IFDIR 0x4000 #define _S_IFCHR 0x2000 #define _S_IFIFO 0x1000 #define _S_IFREG 0x8000 #define _S_IREAD 0x0100 #define _S_IWRITE 0x0080 #define _S_IEXEC 0x0040 #ifndef __STDC__ #define S_IFMT _S_IFMT #define S_IFDIR _S_IFDIR #define S_IFCHR _S_IFCHR #define S_IFREG _S_IFREG #define S_IREAD _S_IREAD #define S_IWRITE _S_IWRITE #define S_IEXEC _S_IEXEC #define S_IFBLK 0x6000 #define S_IFNAM 0x5000 #endif #define S_ISREG(m) (((m)&(S_IFMT))==S_IFREG) #define S_ISBLK(m) (((m)&(S_IFMT))==S_IFBLK) #define S_ISNAM(m) (((m)&(S_IFMT))==S_IFNAM) #define S_ISDIR(m) (((m)&(S_IFMT))==S_IFDIR) #define S_ISCHR(m) (((m)&(S_IFMT))==S_IFCHR) #if M_UNIX || M_XENIX #define S_IFIFO 0x1000 #define S_ISFIFO(m) (((m)&(S_IFMT))==S_IFIFO) #define S_IXOTH 0x0001 #define S_IWOTH 0x0002 #define S_IROTH 0x0004 #define S_IRWXO 0x0007 #define S_INSEM 0x0001 #define S_INSHD 0x0002 #define S_ISUID 0x0800 #define S_ISGID 0x0400 #define S_ISVTX 0x0200 #define S_ENFMT 0x0400 #define S_IRWXU 0x01C0 #define S_IRUSR 0x0100 #define S_IWUSR 0x0080 #define S_IXUSR 0x0040 #define S_IRWXG 0x0038 #define S_IRGRP 0x0020 #define S_IWGRP 0x0010 #define S_IXGRP 0x0008 #if !defined(_POSIX_SOURCE) #define S_IFLNK 0xA000 #define S_IFSOCK 0xC000 #endif #include #include #ifndef _STYPES #if !defined(M_ELF) #define _STYPES 1 #endif #endif #if !defined(_STYPES) #define _ST_FSTYPSZ 16 /* SVR4 stat */ struct stat { dev_t st_dev; long st_pad1[3]; ino_t st_ino; mode_t st_mode; nlink_t st_nlink; uid_t st_uid; gid_t st_gid; dev_t st_rdev; long st_pad2[2]; off_t st_size; long st_pad3; union { time_t st__sec; timestruc_t st__tim; } st_atim, st_mtim, st_ctim; long st_blksize; long st_blocks; char st_fstype[_ST_FSTYPSZ]; int st_aclcnt; level_t st_level; ulong_t st_flags; lid_t st_cmwlevel; long st_pad4[4]; }; #define st_atime st_atim.st__sec #define st_mtime st_mtim.st__sec #define st_ctime st_ctim.st__sec #else /* !defined(_STYPES) */ /* SVID 2 stat */ struct stat { o_dev_t st_dev; o_ino_t st_ino; o_mode_t st_mode; o_nlink_t st_nlink; o_uid_t st_uid; o_gid_t st_gid; o_dev_t st_rdev; off_t st_size; time_t st_atime; time_t st_mtime; time_t st_ctime; }; int __cdecl stat(const char *,struct stat *); int __cdecl fstat(int,struct stat *); #if !defined(_POSIX_SOURCE) int __cdecl lstat(const char *, struct stat *); int __cdecl mknod(const char *, mode_t, dev_t); #endif #endif /* !defined(_STYPES) */ #if defined(M_ELF) int __cdecl _fxstat(const int, int, struct stat *); int __cdecl _xstat(const int, const char *, struct stat *); #if !defined(_POSIX_SOURCE) int __cdecl _lxstat(const int, const char *, struct stat *); int __cdecl _xmknod(const int, const char *, mode_t, dev_t); #endif #if !defined(_STYPES) #define _MKNOD_VER 2 #define _STAT_VER 2 /* Map to SVR4 functions */ #define fstat(fd,buf) _fxstat(_STAT_VER, fd, buf) #if !defined(_POSIX_SOURCE) #define lstat(path,buf) _lxstat(_STAT_VER, path, buf) #define mknod(path, mode, dev) _xmknod(_MKNOD_VER, path, mode, dev) #endif static int __cdecl stat( const char *path, struct stat *buf) { return _xstat(_STAT_VER, path, buf); } #endif /* !defined(_STYPES) */ #endif /* M_ELF */ int __cdecl chmod(const char *, mode_t); int __cdecl mkdir(const char *, mode_t); int __cdecl mkfifo(const char *, mode_t); /* mode_t __cdecl umask(mode_t); defined in io.h */ int __cdecl fchmod(int, mode_t); #else /* M_UNIX || M_XENIX */ #pragma pack (2) struct stat { short st_dev; unsigned short st_ino; unsigned short st_mode; short st_nlink; unsigned short st_uid; unsigned short st_gid; short st_rdev; #if __INTSIZE == 4 short dummy; /* for alignment */ #endif long st_size; long st_atime; long st_mtime; long st_ctime; }; #pragma pack () #define _stat stat int __cdecl stat(const char *,struct stat *); int __cdecl fstat(int,struct stat *); #define _fstat fstat int __cdecl _stat(const char *,struct stat *); #endif /* M_UNIX || M_XENIX */ /* For MicroSoft and Borland compatibility */ #define _S_IFMT 0xF000 #define _S_IFREG 0x8000 #define _S_IFBLK 0x6000 #define _S_IFNAM 0x5000 #define _S_IFDIR 0x4000 #define _S_IFCHR 0x2000 #define _S_IREAD 0x0100 #define _S_IWRITE 0x0080 #define _S_IEXEC 0x0040 #ifdef __NT__ #ifndef __STDC__ int __cdecl _wstat(const wchar_t *, struct stat *); #endif #endif #if __cplusplus } #endif #endif