Framework for exporting system header to user space (#59)
[lunaix-os.git] / lunaix-os / usr / stat.c
index ea402000553e3273fe3d060205e623784f269b7d..3e782e96a428dd658304efaf6418c3c23f32661e 100644 (file)
@@ -2,6 +2,7 @@
 #include <fcntl.h>
 #include <stdio.h>
 #include <unistd.h>
+#include <sys/types.h>
 
 static char buf[256];
 
@@ -28,7 +29,7 @@ main(int argc, char* argv[])
     printf("File: %s ", argv[1]);
 
     char* ftype = "directory";
-    int mode = stat.mode;
+    int mode = stat.st_mode >> 16;
     if ((mode & F_DEV)) {
         ftype = "mappable (sequential) device";
 
@@ -53,16 +54,25 @@ main(int argc, char* argv[])
            stat.st_blocks,
            stat.st_blksize,
            stat.st_ioblksize);
-    printf("Inode: %d;  ", stat.st_ino);
 
     dev_t* dev;
-    if (!(stat.mode & F_DEV)) {
+    if (!(mode & F_DEV)) {
         dev = &stat.st_dev;
     } else {
         dev = &stat.st_rdev;
     }
+    printf("Device: %xh:%xh@%d;  Inode: %d;  Links: %d\n", 
+           dev->meta, dev->unique, dev->index,
+           stat.st_ino, stat.st_nlink);
 
-    printf("Device: %xh:%xh@%d;\n", dev->meta, dev->unique, dev->index);
+    printf("Access: 0%o;  Uid: %d;  Gid: %d\n",
+           stat.st_mode & 0xffff,
+           stat.st_uid,
+           stat.st_gid);
+
+    printf("Access: %lu\n", stat.st_atim);
+    printf("Modify: %lu\n", stat.st_mtim);
+    printf("Create: %lu\n", stat.st_ctim);
 
     close(fd);
     return 0;