home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
rtsi.com
/
2014.01.www.rtsi.com.tar
/
www.rtsi.com
/
OS9
/
OSK
/
LIB
/
stat.lzh
/
STAT
/
stat.h
< prev
next >
Wrap
Text File
|
1993-04-26
|
3KB
|
100 lines
/*
stat and fstat functions for OS/9
header file
by Richard W.M. Jones
*/
#ifndef __STAT__
#define __STAT__
#ifndef ctime
#include <time.h>
#endif
/* strange types used by Convex unix */
typedef unsigned short ushort_t;
typedef unsigned long ulong_t;
typedef ushort_t nlink_t;
typedef ulong_t ino_t;
typedef int dev_t;
typedef ushort_t uid_t;
typedef ushort_t gid_t;
typedef ushort_t mode_t;
typedef long off_t;
/* struct stat as defined in Convex unix r8.1 */
struct stat {
dev_t st_dev; /* device on which inode resides */
ino_t st_ino; /* inode number */
mode_t st_mode; /* protection bits (extended+OS/9) */
nlink_t st_nlink; /* number of hard links to the file */
uid_t st_uid; /* user id of owner */
gid_t st_gid; /* group id of owner */
off_t st_size; /* total size of file */
time_t st_atime; /* last access time of file */
time_t st_mtime; /* last modify time of file */
time_t st_ctime; /* last change time of file */
};
/* prototypes for stat, fstat */
int stat(), fstat();
/* ANSI prototypes
int stat(char *,struct stat *);
int fstat(int,struct stat *);
*/
/* macros used to query st_mode */
#define S_ISDIR(n) ( ((n)&S_IFMT) == S_IFDIR )
#define S_ISCHR(n) ( ((n)&S_IFMT) == S_IFCHR )
#define S_ISBLK(n) ( ((n)&S_IFMT) == S_IFBLK )
#define S_ISREG(n) ( ((n)&S_IFMT) == S_IFREG )
#define S_ISFIFO(n) ( ((n)&S_IFMT) == S_IFIFO )
/* masks for st_mode permissions; unix applications may fail if they
rely on the RWX bit order (the order is XWR in OS/9) */
#define S_IRWXU 00007
#define S_IRWXG 00070
#define S_IRWXO 00070
#define S_ISUID 00000 /* no setuid in OS/9 */
#define S_ISGID 00000 /* no setgid in OS/9 */
/* old masks for st_mode (ought to be replaced by macros above) */
#ifdef S_IFMT
#undef S_IFMT
#undef S_IFDIR
#endif
#define S_IFMT 0x0F80
#define S_IFDIR 0x0080
#define S_IFIFO 0x0100 /* extended mode attribute */
#define S_IFCHR 0x0200 /* extended mode attribute */
#define S_IFBLK 0x0400 /* extended mode attribute */
#define S_IFREG 0x0800 /* extended mode attribute */
#define S_IFSOCK 0x1000 /* extended mode attribute */
#define S_IFLNK 0xFFFF /* no symbolic links in OS/9 */
#define S_ISVTX 0x0000 /* no sticky bit in OS/9 */
#define S_IFNOSHAR 0x0040 /* not sharable (special OS/9 bit) */
/* these are probably Convex extensions, but they're included anyway */
#define S_IRUSR S_IREAD /* user permissions */
#define S_IWUSR S_IWRITE
#define S_IXUSR S_IEXEC
#define S_IRGRP (S_IREAD<<3) /* group and world permissions */
#define S_IWGRP (S_IWRITE<<3)
#define S_IXGRP (S_IEXEC<<3)
#define S_IROTH S_IRGRP
#define S_IWOTH S_IWGRP
#define S_IXOTH S_IXGRP
#endif /* __STAT__ */