From c5e5927aceb9293312b2b4b5cf98e84c769f8c99 Mon Sep 17 00:00:00 2001 From: Christian Neukirchen Date: Fri, 23 Oct 2015 12:16:05 +0200 Subject: mtime is %T like in find, add %m %M --- lr.c | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) (limited to 'lr.c') diff --git a/lr.c b/lr.c index 91974e7..3863603 100644 --- a/lr.c +++ b/lr.c @@ -609,6 +609,24 @@ intlen(int i) return s; } +void +print_mode(int mode) +{ + putchar("0pcCd?bB-?l?s???"[(mode >> 12) & 0x0f]); + putchar(mode & 00400 ? 'r' : '-'); + putchar(mode & 00200 ? 'w' : '-'); + putchar(mode & 04000 ? (mode & 00100 ? 's' : 'S') + : (mode & 00100 ? 'x' : '-')); + putchar(mode & 00040 ? 'r' : '-'); + putchar(mode & 00020 ? 'w' : '-'); + putchar(mode & 02000 ? (mode & 00010 ? 's' : 'S') + : (mode & 00010 ? 'x' : '-')); + putchar(mode & 00004 ? 'r' : '-'); + putchar(mode & 00002 ? 'w' : '-'); + putchar(mode & 01000 ? (mode & 00001 ? 'T' : 't') + : (mode & 00001 ? 'x' : '-')); +} + void print(const void *nodep, const VISIT which, const int depth) { @@ -666,7 +684,7 @@ print(const void *nodep, const VISIT which, const int depth) case 'f': printf("%s", basenam(fi->fpath)); break; case 'A': case 'C': - case 'M': + case 'T': { char tfmt[3] = "%\0\0"; char buf[256]; @@ -682,6 +700,13 @@ print(const void *nodep, const VISIT which, const int depth) break; } + case 'm': + printf("%04o", fi->sb.st_mode & 07777); + break; + case 'M': + print_mode(fi->sb.st_mode); + break; + case 'g': { char *s = groupname(fi->sb.st_gid); @@ -859,7 +884,7 @@ main(int argc, char *argv[]) case 'l': lflag++; // "%M %2n %u %g %9s %TY-%Tm-%Td %TH:%TM %p%F\n"; break; - format = "%M %n %u %g %s %MY-%Mm-%Md %MH:%MM %p%F%l\n"; break; + format = "%M %n %u %g %s %TY-%Tm-%Td %TH:%TM %p%F%l\n"; break; case 'F': format = "%p%F\\n"; break; default: fprintf(stderr, "Usage: %s [-oxL] PATH...\n", argv[0]); -- cgit 1.4.1