diff options
-rw-r--r-- | README.md | 3 | ||||
-rw-r--r-- | lr.c | 6 |
2 files changed, 6 insertions, 3 deletions
diff --git a/README.md b/README.md index c35391f..c542b28 100644 --- a/README.md +++ b/README.md @@ -32,11 +32,12 @@ Over ls: ## Usage: - lr [-0|-F|-l|-f FMT] [-D] [-H|-L] [-1AQdhsx] [-U|-o ORD] [-t TEST]* PATH... + lr [-0|-F|-l|-S|-f FMT] [-D] [-H|-L] [-1AQdhsx] [-U|-o ORD] [-t TEST]* PATH... * `-0`: output filenames seperated by NUL bytes (implies `-Q`). * `-F`: output filenames and an indicator of their file type (`*/=>@|`). * `-l`: long output ala `ls -l`. +* `-S`: BSD stat(2)-inspired output. * `-f FMT`: custom formatting, see below. * `-D`: depth first traversal. `prune` does not work, but `entries` and `total` is computed. diff --git a/lr.c b/lr.c index 8a20bfe..816357e 100644 --- a/lr.c +++ b/lr.c @@ -78,6 +78,7 @@ static char default_format[] = "%p\\n"; static char type_format[] = "%p%F\\n"; static char long_format[] = "%M %n %u %g %s %TY-%Tm-%Td %TH:%TM %p%F%l\n"; static char zero_format[] = "%p\\0"; +static char stat_format[] = "%D %i %M %n %u %g %R %s \"%Ab %Ad %AT %AY\" \"%Tb %Td %TT %TY\" \"%Cb %Cd %CT %CY\" %b %p\n"; static void *users; static void *groups; @@ -1257,7 +1258,7 @@ main(int argc, char *argv[]) ordering = default_ordering; argv0 = argv[0]; - while ((c = getopt(argc, argv, "01ADFHLQUdf:lho:st:x")) != -1) + while ((c = getopt(argc, argv, "01ADFHLQSUdf:lho:st:x")) != -1) switch(c) { case '0': format = zero_format; Qflag++; break; case '1': expr = chain(expr, EXPR_AND, parse_expr("depth == 0 || prune")); break; @@ -1267,6 +1268,7 @@ main(int argc, char *argv[]) case 'H': Hflag++; break; case 'L': Lflag++; break; case 'Q': Qflag++; break; + case 'S': format = stat_format; break; case 'U': Uflag++; break; case 'd': expr = chain(expr, EXPR_AND, parse_expr("type == d && prune || print")); break; case 'f': format = optarg; break; @@ -1277,7 +1279,7 @@ main(int argc, char *argv[]) case 't': expr = chain(expr, EXPR_AND, parse_expr(optarg)); break; case 'x': xflag++; break; default: - fprintf(stderr, "Usage: %s [-0|-F|-l|-f FMT] [-D] [-H|-L] [-1AQdhsx] [-U|-o ORD] [-t TEST]* PATH...\n", argv0); + fprintf(stderr, "Usage: %s [-0|-F|-l|-S|-f FMT] [-D] [-H|-L] [-1AQdhsx] [-U|-o ORD] [-t TEST]* PATH...\n", argv0); exit(2); } |