commit bbf3b5ac85988abb5899c952107f3156101d4a69
Author: Hiltjo Posthuma <[email protected]>
Date: Fri Apr 4 19:00:47 2014 +0200
stat: implement -t (terse mode)
mostly compatible with coreutils and busybox. file mode is intentionally
not compatible though.
Signed-off-by: Hiltjo Posthuma <[email protected]>
diff --git a/stat.c b/stat.c
index a4e4a67..8bbb504 100644
--- a/stat.c
+++ b/stat.c
@@ -12,11 +12,12 @@
#include "util.h"
static void show_stat(const char *file, struct stat *st);
+static void show_stat_terse(const char *file, struct stat *st);
static void
usage(void)
{
- eprintf("usage: %s [-L] [file...]
", argv0);
+ eprintf("usage: %s [-L] [-t] [file...]
", argv0);
}
int
@@ -33,6 +34,9 @@ main(int argc, char *argv[])
fn = stat;
fnname = "stat";
break;
+ case 't':
+ showstat = show_stat_terse;
+ break;
default:
usage();
} ARGEND;
@@ -57,6 +61,20 @@ main(int argc, char *argv[])
}
static void
+show_stat_terse(const char *file, struct stat *st)
+{
+ printf("%s ", file);
+ printf("%lu %lu ", (unsigned long)st->st_size,
+ (unsigned long)st->st_blocks);
+ printf("%04o %u %u ", st->st_mode & 0777, st->st_uid, st->st_gid);
+ printf("%llx ", (unsigned long long)st->st_dev);
+ printf("%lu %lu ", (unsigned long)st->st_ino, (unsigned
long)st->st_nlink);
+ printf("%d %d ", major(st->st_rdev), minor(st->st_rdev));
+ printf("%ld %ld %ld ", st->st_atime, st->st_mtime, st->st_ctime);
+ printf("%lu
", (unsigned long)st->st_blksize);
+}
+
+static void
show_stat(const char *file, struct stat *st)
{
char buf[100];