xref: /original-bsd/sys/sys/stat.h (revision 9f9a0d6d)
1 /*-
2  * Copyright (c) 1982, 1986, 1989 The Regents of the University of California.
3  * All rights reserved.
4  *
5  * %sccs.include.redist.c%
6  *
7  *	@(#)stat.h	7.6 (Berkeley) 05/29/90
8  */
9 
10 struct stat
11 {
12 	dev_t	st_dev;			/* inode's device */
13 	ino_t	st_ino;			/* inode's number */
14 	mode_t	st_mode;		/* inode protection mode */
15 	nlink_t	st_nlink;		/* number of hard links */
16 	uid_t	st_uid;			/* user ID of the file's owner */
17 	gid_t	st_gid;			/* group ID of the file's group */
18 	dev_t	st_rdev;		/* device type */
19 	off_t	st_size;		/* file size, in bytes */
20 	time_t	st_atime;		/* time of last access */
21 	long	st_spare1;
22 	time_t	st_mtime;		/* time of last data modification */
23 	long	st_spare2;
24 	time_t	st_ctime;		/* time of last file status change */
25 	long	st_spare3;
26 	long	st_blksize;		/* optimal blocksize for I/O */
27 	long	st_blocks;		/* blocks allocated for file */
28 	u_long	st_flags;		/* user defined flags for file */
29 	u_long	st_gen;			/* file generation number */
30 };
31 
32 #define	S_ISUID	0004000			/* set user id on execution */
33 #define	S_ISGID	0002000			/* set group id on execution */
34 #ifndef _POSIX_SOURCE
35 #define	S_ISTXT	0001000			/* sticky bit */
36 #endif
37 
38 #define	S_IRWXU	0000700			/* RWX mask for owner */
39 #define	S_IRUSR	0000400			/* R for owner */
40 #define	S_IWUSR	0000200			/* W for owner */
41 #define	S_IXUSR	0000100			/* X for owner */
42 
43 #ifndef _POSIX_SOURCE
44 #define	S_IREAD		S_IRUSR
45 #define	S_IWRITE	S_IWUSR
46 #define	S_IEXEC		S_IXUSR
47 #endif
48 
49 #define	S_IRWXG	0000070			/* RWX mask for group */
50 #define	S_IRGRP	0000040			/* R for group */
51 #define	S_IWGRP	0000020			/* W for group */
52 #define	S_IXGRP	0000010			/* X for group */
53 
54 #define	S_IRWXO	0000007			/* RWX mask for other */
55 #define	S_IROTH	0000004			/* R for other */
56 #define	S_IWOTH	0000002			/* W for other */
57 #define	S_IXOTH	0000001			/* X for other */
58 
59 #ifndef _POSIX_SOURCE
60 #define	S_IFMT	 0170000		/* type of file */
61 #define	S_IFIFO	 0010000		/* named pipe (fifo) */
62 #define	S_IFCHR	 0020000		/* character special */
63 #define	S_IFDIR	 0040000		/* directory */
64 #define	S_IFBLK	 0060000		/* block special */
65 #define	S_IFREG	 0100000		/* regular */
66 #define	S_IFLNK	 0120000		/* symbolic link */
67 #define	S_IFSOCK 0140000		/* socket */
68 
69 #define	S_ISVTX	 0001000		/* save swapped text even after use */
70 
71 #define S_BLKSIZE	512	/* block size used in the stat struct */
72 #endif
73 
74 #define	S_ISDIR(m)	((m & 0170000) == 0040000)	/* directory */
75 #define	S_ISCHR(m)	((m & 0170000) == 0020000)	/* char special */
76 #define	S_ISBLK(m)	((m & 0170000) == 0060000)	/* block special */
77 #define	S_ISREG(m)	((m & 0170000) == 0100000)	/* regular file */
78 #define	S_ISFIFO(m)	((m & 0170000) == 0010000)	/* fifo */
79 #ifndef _POSIX_SOURCE
80 #define	S_ISLNK(m)	((m & 0170000) == 0120000)	/* symbolic link */
81 #define	S_ISSOCK(m)	((m & 0170000) == 0140000)	/* socket */
82 #endif
83 
84 #if __STDC__ || c_plusplus
85 mode_t umask(mode_t);
86 int mkdir(const char *, mode_t);
87 int mkfifo(const char *, mode_t);
88 int stat(const char *, struct stat *);
89 int fstat(int, struct stat *);
90 int chmod(const char *, mode_t);
91 #else
92 mode_t umask();
93 int mkdir();
94 int mkfifo();
95 int stat();
96 int fstat();
97 int chmod();
98 #endif
99