782201f11a6a3341f8b753404cbac8bd0e1eef5d
[mes.git] / include / sys / stat.h
1 /* -*-comment-start: "//";comment-end:""-*-
2  * Mes --- Maxwell Equations of Software
3  * Copyright © 2017 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
4  *
5  * This file is part of Mes.
6  *
7  * Mes is free software; you can redistribute it and/or modify it
8  * under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 3 of the License, or (at
10  * your option) any later version.
11  *
12  * Mes is distributed in the hope that it will be useful, but
13  * WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with Mes.  If not, see <http://www.gnu.org/licenses/>.
19  */
20 #ifndef __MES_SYS_STAT_H
21 #define __MES_SYS_STAT_H 1lei
22
23 #if WITH_GLIBC
24 #undef __MES_SYS_STAT_H
25 #include_next <sys/stat.h>
26
27 #else // ! WITH_GLIBC
28
29 #include <sys/types.h>
30
31 #ifndef __MES_MODE_T
32 #define __MES_MODE_T
33 typedef int mode_t;
34 #endif
35
36 struct stat
37 {
38   unsigned long  st_dev;
39   unsigned long  st_ino;
40   unsigned short st_mode;
41   unsigned short st_nlink;
42   unsigned short st_uid;
43   unsigned short st_gid;
44   unsigned long  st_rdev;
45   long           st_size;
46   unsigned int   st_blksize;
47   unsigned int   st_blocks;
48   long           st_atime;
49   unsigned long  st_atime_usec;
50   long           st_mtime;
51   unsigned long  st_mtime_usec;
52   long           st_ctime;
53   unsigned long  st_ctime_usec;
54   unsigned int   __foo0;
55   unsigned int   __foo1;
56 };
57
58 int chmod (char const *file_name, mode_t mode);
59 int mkdir (char const *file_name, mode_t mode);
60 int chown (char const *file_name, uid_t owner, gid_t group);
61 int rmdir (char const *file_name);
62
63 #define S_IFMT  0170000
64 #define S_IFDIR 0040000
65 #define S_IFREG 0100000
66 #define S_IFLNK 0120000
67
68 #define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
69 #define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
70
71 #define S_IRWXU 00700
72 #define S_IXUSR 00100
73 #define S_IWUSR 00200
74 #define S_IRUSR 00400
75
76 #endif // ! WITH_GLIBC
77
78 #endif // __MES_SYS_STAT_H