stat: implement -t (terse mode)
mostly compatible with coreutils and busybox. file mode is intentionally not compatible though. Signed-off-by: Hiltjo Posthuma <hiltjo@codemadness.org>
This commit is contained in:
parent
139522b45e
commit
bbf3b5ac85
20
stat.c
20
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...]\n", argv0);
|
||||
eprintf("usage: %s [-L] [-t] [file...]\n", 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;
|
||||
@ -56,6 +60,20 @@ main(int argc, char *argv[])
|
||||
return ret;
|
||||
}
|
||||
|
||||
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\n", (unsigned long)st->st_blksize);
|
||||
}
|
||||
|
||||
static void
|
||||
show_stat(const char *file, struct stat *st)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user