[Toybox] Patch stat supports %T format

Hyejin Kim hj8296 at gmail.com
Thu May 7 03:59:26 PDT 2015


Hi.

As need internally, added %T format to print filesystem type as human
readable form.
Plz, have a look.

smackfs currently commented but will support later.



diff --git a/toys/other/stat.c b/toys/other/stat.c
index a96c1de..a9f4685 100644
--- a/toys/other/stat.c
+++ b/toys/other/stat.c
@@ -29,7 +29,7 @@ config STAT
     %a  Available blocks    |%b  Total blocks       |%c  Total inodes
     %d  Free inodes         |%f  Free blocks        |%i  File system ID
     %l  Max filename length |%n  File name          |%s  Fragment size
-    %S  Best transfer size  |%t  File system type
+    %S  Best transfer size  |%t  File system type   |%T  Type in human
readable form
 */

 #define FOR_stat
@@ -46,6 +46,35 @@ GLOBALS(
   struct group *group_name;
 )

+static char* ftype_to_string(uint64_t ftype)
+{
+  switch (ftype) {
+    case 0xADFF: return "affs";
+    case 0x5346544e: return "ntfs";
+ case 0x1Cd1: return "devpts";
+    case 0x137D: return "ext";
+    case 0xEF51: return "ext2";
+    case 0xEF53: return "ext2/ext3";
+    case 0x1BADFACE: return "bfs";
+    case 0x9123683E: return "btrfs";
+    case 0x28cd3d45: return "cramfs";
+    case 0x3153464a: return "jfs";
+    case 0x7275: return "romfs";
+ case 0x01021994: return "tmpfs";
+ case 0x3434: return "nilfs";
+ case 0x6969: return "nfs";
+ case 0x9fa0: return "proc";
+ case 0x534F434B: return "sockfs";
+ case 0x62656572: return "sysfs";
+ case 0x517B: return "smb";
+ case 0x4d44: return "msdos";
+ case 0x4006: return "fat";
+    //case 0x43415d53: return "smackfs";
+    case 0x73717368: return "squashfs";
+    default: return "unknown";
+  }
+}
+

 // Note: the atime, mtime, and ctime fields in struct stat are the start
 // of embedded struct timespec, but posix won't let them use that
@@ -113,6 +142,7 @@ static void print_statfs(char type) {
   else if (type == 'f') xprintf("%llu", statfs->f_bfree);
   else if (type == 'l') xprintf("%ld", statfs->f_namelen);
   else if (type == 't') xprintf("%lx", statfs->f_type);
+  else if (type == 'T') xprintf("%s", ftype_to_string(statfs->f_type));
   else if (type == 'i')
     xprintf("%08x%08x", statfs->f_fsid.__val[0], statfs->f_fsid.__val[1]);
   else if (type == 's') xprintf("%d", statfs->f_frsize);
@@ -124,7 +154,7 @@ void stat_main(void)
 {
   int flagf = toys.optflags & FLAG_f;
   char *format = flagf
-    ? "  File: \"%n\"\n    ID: %i Namelen: %l    Type: %t\n"
+    ? "  File: \"%n\"\n    ID: %i Namelen: %l    Type: %T\n"
       "Block Size: %s    Fundamental block size: %S\n"
       "Blocks: Total: %b\tFree: %f\tAvailable: %a\n"
       "Inodes: Total: %c\tFree: %d"
--
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.landley.net/pipermail/toybox-landley.net/attachments/20150507/f3f02f9b/attachment-0003.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-stat-add-T-format.patch
Type: application/octet-stream
Size: 2760 bytes
Desc: not available
URL: <http://lists.landley.net/pipermail/toybox-landley.net/attachments/20150507/f3f02f9b/attachment-0004.obj>


More information about the Toybox mailing list