aboutsummaryrefslogtreecommitdiff
path: root/lib/sys/stat.h
blob: 02bdc485f9ca5770dc704524ba97eafadfb181f7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#ifndef STAT_H
#define STAT_H

#include "sizes.h"
#include "time.h"
#include "syscalls.h"

#define S_IFMT     0170000
#define S_IFSOCK   0140000
#define S_IFLNK    0120000
#define S_IFREG    0100000
#define S_IFBLK    0060000
#define S_IFDIR    0040000
#define S_IFCHR    0020000
#define S_IFIFO    0010000

#define S_ISUID     04000
#define S_ISGID     02000
#define S_ISVTX     01000

#define S_IRWXU     00700

#define S_IRUSR     00400
#define S_IWUSR     00200
#define S_IXUSR     00100

#define S_IRWXG     00070

#define S_IRGRP     00040
#define S_IWGRP     00020
#define S_IXGRP     00010

#define S_IRWXO     00007

#define S_IROTH     00004
#define S_IWOTH     00002
#define S_IXOTH     00001

struct stat {
	i64 dev;
	i64 ino;
	u64 nlink;
	u32 mode;
	u32 uid;
	u32 gid;
	u64 rdev;
	u64 size;
	u64 blksize;
	i64 blocks;

	struct timespec atime;
	struct timespec mtime;
	struct timespec ctime;

	u64 __[3];
};

static int stat(const char * filename, struct stat * statbuf) {
	return syscall(STAT, filename, statbuf);
}

#endif