xref: /original-bsd/sys/sys/stat.h (revision eafa6506)
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.10 (Berkeley) 02/22/91
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 
73 					/* 0666 */
74 #define	DEFFILEMODE	(S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)
75 #endif
76 
77 #define	S_ISDIR(m)	((m & 0170000) == 0040000)	/* directory */
78 #define	S_ISCHR(m)	((m & 0170000) == 0020000)	/* char special */
79 #define	S_ISBLK(m)	((m & 0170000) == 0060000)	/* block special */
80 #define	S_ISREG(m)	((m & 0170000) == 0100000)	/* regular file */
81 #define	S_ISFIFO(m)	((m & 0170000) == 0010000)	/* fifo */
82 #ifndef _POSIX_SOURCE
83 #define	S_ISLNK(m)	((m & 0170000) == 0120000)	/* symbolic link */
84 #define	S_ISSOCK(m)	((m & 0170000) == 0140000)	/* socket */
85 #endif
86 
87 #ifndef KERNEL
88 #include <sys/cdefs.h>
89 
90 __BEGIN_DECLS
91 mode_t	umask __P((mode_t));
92 int	chmod __P((const char *, mode_t));
93 int	fstat __P((int, struct stat *));
94 int	mkdir __P((const char *, mode_t));
95 int	mkfifo __P((const char *, mode_t));
96 int	stat __P((const char *, struct stat *));
97 #ifndef _POSIX_SOURCE
98 int	lstat __P((const char *, struct stat *));
99 #endif /* not POSIX */
100 __END_DECLS
101 #endif
102