|
|
1.1 root 1: /* (-lgl
2: * COHERENT Version 4.1.0
3: * Copyright (c) 1982, 1993 by Mark Williams Company.
4: * All rights reserved. May not be copied without permission.
5: -lgl) */
6: /*
7: * /usr/include/sys/stat.h
8: * Stat.
9: */
10:
11: #ifndef __SYS_STAT_H__
12: #define __SYS_STAT_H__
13:
14: #include <sys/types.h>
15:
16: /*
17: * Structure returned by stat and fstat system calls.
18: */
19: struct stat {
20: dev_t st_dev; /* Device */
21: ino_t st_ino; /* Inode number */
22: unsigned short st_mode; /* Mode */
23: short st_nlink; /* Link count */
24: short st_uid; /* User id */
25: short st_gid; /* Group id */
26: dev_t st_rdev; /* Real device */
27: fsize_t st_size; /* Size */
28: time_t st_atime; /* Access time */
29: time_t st_mtime; /* Modify time */
30: time_t st_ctime; /* Change time */
31: };
32:
33: /*
34: * Modes.
35: */
36: #define S_IFMT 0xF000 /* Type */
37: #define S_IFDIR 0x4000 /* Directory */
38: #define S_IFCHR 0x2000 /* Character special */
39: #define S_IFPIP 0x1000 /* Pipe */
40: #define S_IFIFO S_IFPIP /* Pipe */
41: #define S_IFBLK 0x6000 /* Block special */
42: #define S_IFREG 0x8000 /* Regular */
43: #define S_IFSOCK 0xC000 /* Socket -- UNIMPLEMENTED */
44: #define S_IFMPC 0x3000 /* Multiplexed character special */
45: #define S_IFMPB 0x7000 /* Multiplexed block special */
46:
47: #define S_ISUID 0x0800 /* Set user id on execution */
48: #define S_ISGID 0x0400 /* Set group id on execution */
49: #define S_ISVTX 0x0200 /* Save swapped text even after use */
50:
51: #define S_IREAD 0400 /* Read permission, owner */
52: #define S_IWRITE 0200 /* Write permission, owner */
53: #define S_IEXEC 0100 /* Execute/search permission, owner */
54: #define S_IRWXU 0700 /* RWX permission, owner */
55: #define S_IRUSR S_IREAD /* Read permission, owner */
56: #define S_IWUSR S_IWRITE /* Write permission, owner */
57: #define S_IXUSR S_IEXEC /* Execute/search permission, owner */
58: #define S_IRWXG 0070 /* RWX permission, group */
59: #define S_IRGRP 0040 /* Read permission, group */
60: #define S_IWGRP 0020 /* Write permission, group */
61: #define S_IXGRP 0010 /* Execute/search permission, group */
62: #define S_IRWXO 0007 /* RWX permission, other */
63: #define S_IROTH 0004 /* Read permission, other */
64: #define S_IWOTH 0002 /* Write permission, other */
65: #define S_IXOTH 0001 /* Execute/search permission, other */
66:
67: /* Mode test macros. */
68: #define S_ISFIFO(mode) (((mode)&S_IFMT) == S_IFIFO)
69: #define S_ISCHR(mode) (((mode)&S_IFMT) == S_IFCHR)
70: #define S_ISDIR(mode) (((mode)&S_IFMT) == S_IFDIR)
71: #define S_ISBLK(mode) (((mode)&S_IFMT) == S_IFBLK)
72: #define S_ISREG(mode) (((mode)&S_IFMT) == S_IFREG)
73: #define S_ISSOCK(mode) (((mode)&S_IFMT) == S_IFSOCK)
74:
75: /*
76: * Nonexistent device.
77: * Must compare correctly with dev_t, which is an unsigned short.
78: */
79: #define NODEV ((dev_t)-1)
80:
81: /*
82: * Functions.
83: */
84: #define major(dev) ((dev>>8) & 0xFF)
85: #define minor(dev) (dev & 0xFF)
86: #define makedev(m1, m2) ((m1<<8)|m2)
87:
88: #endif
89:
90: /* end of sys/stat.h */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.