mescc: Support binutils-2.20.1a: header tweaks.
[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 <time.h>
30 #include <sys/types.h>
31
32 #ifndef __MES_MODE_T
33 #define __MES_MODE_T
34 typedef int mode_t;
35 #endif
36
37 struct stat
38 {
39   unsigned long  st_dev;
40   unsigned long  st_ino;
41   unsigned short st_mode;
42   unsigned short st_nlink;
43   unsigned short st_uid;
44   unsigned short st_gid;
45   unsigned long  st_rdev;
46   long           st_size;
47   unsigned int   st_blksize;
48   unsigned int   st_blocks;
49   time_t         st_atime;
50   unsigned long  st_atime_usec;
51   time_t         st_mtime;
52   unsigned long  st_mtime_usec;
53   time_t         st_ctime;
54   unsigned long  st_ctime_usec;
55   unsigned int   __foo0;
56   unsigned int   __foo1;
57 };
58
59 int chmod (char const *file_name, mode_t mode);
60 int mkdir (char const *file_name, mode_t mode);
61 int chown (char const *file_name, uid_t owner, gid_t group);
62 int rmdir (char const *file_name);
63 int stat (char const *file_name, struct stat *buf);
64
65 #define S_IFCHR 0020000
66 #define S_IFDIR 0040000
67 #define S_IFBLK 0060000
68 #define S_IFREG 0100000
69 #define S_IFLNK 0120000
70 #define S_IFMT  0170000
71
72 #define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
73 #define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
74
75 #define S_IRWXU 00700
76 #define S_IXUSR 00100
77 #define S_IWUSR 00200
78 #define S_IRUSR 00400
79
80 #endif // ! WITH_GLIBC
81
82 #endif // __MES_SYS_STAT_H