diff options
author | Christian Neukirchen <chneukirchen@gmail.com> | 2015-10-23 12:16:05 +0200 |
---|---|---|
committer | Christian Neukirchen <chneukirchen@gmail.com> | 2015-10-23 12:16:05 +0200 |
commit | c5e5927aceb9293312b2b4b5cf98e84c769f8c99 (patch) | |
tree | 0c1c13d8e6894ec71f94ad6d32691519551fa6c5 /lr.c | |
parent | 965dd233a23347d6fcdc7a582509470343f64c04 (diff) | |
download | lr-c5e5927aceb9293312b2b4b5cf98e84c769f8c99.tar.gz lr-c5e5927aceb9293312b2b4b5cf98e84c769f8c99.tar.xz lr-c5e5927aceb9293312b2b4b5cf98e84c769f8c99.zip |
mtime is %T like in find, add %m %M
Diffstat (limited to 'lr.c')
-rw-r--r-- | lr.c | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/lr.c b/lr.c index 91974e7..3863603 100644 --- a/lr.c +++ b/lr.c @@ -610,6 +610,24 @@ intlen(int i) } 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) { if (which == postorder || which == leaf) { @@ -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]); |