/***************************************************************************** * * * sys/stat.h * * * * Freely redistributable and modifiable. Use at your own risk. * * * * Copyright 1994 The Downhill Project * * * *****************************************************************************/ /* * HISTORY * Add definitions for mkdir, fstat, and stat * [1997/06/27 08:47:33 gpilz] * * Allow selection of macro definitions only. * That is, provide a compatibility layer that requires no library * functions only macro definitions. This is enabled by defining the * macro DOWNHILL_NO_FUNCTIONS. * [1997/06/23 12:12:36 tbartley] */ #if !defined(_DOWNHILL_SYS_STAT_H) #define _DOWNHILL_SYS_STAT_H /* Include stuff *************************************************************/ #include "DOWNHILL/DH_INC.H" #include "DOWNHILL/DH_POSIX.H" #include _DOWNHILL_INCLUDE_DIR/sys/stat.h> #include #include #ifdef __cplusplus extern "C" { #endif /* Struct stuff **************************************************************/ struct Downhill_File_Stat { dev_t st_dev; ino_t st_ino; mode_t st_mode; nlink_t st_nlink; uid_t st_uid; gid_t st_gid; dev_t st_rdev; off_t st_size; time_t st_atime; time_t st_mtime; time_t st_ctime; #if (_DOWNHILL_POSIX_SOURCE == 0) long st_blksize; #endif }; /* Define stuff **************************************************************/ #if defined(_MSC_VER) && !defined(_NTSDK) # define chmod _chmod #endif /* Permission stuff ======================================================== */ #define S_IRUSR _S_IREAD #define S_IWUSR _S_IWRITE #define S_IXUSR _S_IEXEC #define S_IRWXU S_IRUSR|S_IWUSR|S_IXUSR #define S_IRGRP _S_IREAD #define S_IWGRP _S_IWRITE #define S_IXGRP _S_IEXEC #define S_IRWXG S_IRGRP|S_IWGRP|S_IXGRP #define S_IROTH _S_IREAD #define S_IWOTH _S_IWRITE #define S_IXOTH _S_IEXEC #define S_IRWXO S_IROTH|S_IWOTH|S_IXOTH /* Macro stuff ============================================================= */ #define S_ISDIR(file_Mode) ((file_Mode&_S_IFDIR) == _S_IFDIR) #define S_ISCHR(file_Mode) ((file_Mode&_S_IFCHR) == _S_IFCHR) #define S_ISREG(file_Mode) ((file_Mode&_S_IFREG) == _S_IFREG) #define S_ISBLK(file_Mode) ((file_Mode&_S_IFBLK) == _S_IFBLK) #define S_ISREG(file_Mode) ((file_Mode&_S_IFREG) == _S_IFREG) #define S_ISFIFO(file_Mode) ((file_Mode&_S_IFFIFO) == _S_IFFIFO) #define S_ISUID(file_Mode) (1) #define S_ISGID(file_Mode) (1) #ifndef DOWNHILL_NO_FUNCTIONS /* Re-definition stuff ===================================================== */ #undef mkdir #define mkdir(dir_Name,dir_Permissions) \ Downhill_Directory_Make(dir_Name,dir_Permissions) #undef stat #define stat Downhill_File_Stat #undef fstat #define fstat Downhill_File_StatFd /* Prototype stuff ***********************************************************/ int Downhill_Directory_Make(char *, mode_t); int Downhill_File_Stat(const char *, struct Downhill_File_Stat *); int Downhill_File_StatFd(int, struct Downhill_File_Stat *); int lstat(const char *, struct stat *); #else /* * If we're not using the Downhill functions just define functions to * their MSVC++ equivalents. */ #define mkdir _mkdir #define stat _stat #define fstat _fstat #endif /* DOWNHILL_NO_FUNCTIONS */ #ifdef __cplusplus } /* extern "C" */ #endif #endif /* _DOWNHILL_SYS_STAT_H */