Multiuser, Capabilities and Access Controls (#54)
[lunaix-os.git] / lunaix-os / includes / usr / lunaix / fcntl_defs.h
index 7659a3200c9c879e5f6c1fd68f52e1b5e2d2ac3c..36af62e74467fe38dda4297286299a412f9ffad5 100644 (file)
@@ -4,12 +4,13 @@
 #include "fstypes.h"
 #include "types.h"
 
-#define FO_CREATE 0x1
-#define FO_APPEND 0x2
-#define FO_DIRECT 0x4
-#define FO_WRONLY 0x8
-#define FO_RDONLY 0x10
-#define FO_RDWR 0x20
+#define FO_CREATE   0x1
+#define FO_APPEND   0x2
+#define FO_DIRECT   0x4
+#define FO_WRONLY   0x8
+#define FO_RDONLY   0x10
+#define FO_RDWR     0x20
+#define FO_TRUNC    0x40
 
 #define FO_NOFOLLOW 0x10000
 
 #define O_WRONLY FO_WRONLY
 #define O_RDONLY FO_RDONLY
 #define O_RDWR FO_RDWR
+#define O_TRUNC FO_TRUNC
 
-#define MNT_RO 0x1
+#define AT_SYMLINK_FOLLOW       0b0000
+#define AT_SYMLINK_NOFOLLOW     0b0001
+#define AT_FDCWD                0b0010
+#define AT_EACCESS              0b0100
+
+#define R_OK                    0b100100100
+#define W_OK                    0b010010010
+#define X_OK                    0b001001001
+#define F_OK                    0b111111111
+
+/* Mount with read-only flag */
+#define MNT_RO (1 << 0)
+
+/* Mount with block-cache-disabled flag */
+#define MNT_NC (1 << 1)
+
+typedef unsigned int mode_t;
+typedef unsigned int nlink_t;
 
 struct file_stat
 {
-    dev_t st_dev;
-    ino_t st_ino;
-    unsigned int mode;
-    dev_t st_rdev;
-    off_t st_size;
-    size_t st_blksize;
-    size_t st_ioblksize;
-    size_t st_blocks;
+    dev_t   st_dev;
+    ino_t   st_ino;
+    mode_t  st_mode;
+    nlink_t st_nlink;
+    uid_t   st_uid;
+    gid_t   st_gid;
+    dev_t   st_rdev;
+    off_t   st_size;
+    size_t  st_blksize;
+    size_t  st_blocks;
+
+    unsigned long st_atim;
+    unsigned long st_ctim;
+    unsigned long st_mtim;
+
+    size_t  st_ioblksize;
 };
 
 #endif /* __LUNAIX_FNCTL_DEFS_H */