diff options
author | Christian Neukirchen <chneukirchen@gmail.com> | 2015-10-23 12:27:12 +0200 |
---|---|---|
committer | Christian Neukirchen <chneukirchen@gmail.com> | 2015-10-23 12:27:12 +0200 |
commit | 486fc4ce9d82ef435f8a74076f34a369f1903be1 (patch) | |
tree | 450291240d291b281c8edc99974096a8c0bd26e7 | |
parent | 4081de3bf15a401236b0f3badfe24db67244de4f (diff) | |
download | lr-486fc4ce9d82ef435f8a74076f34a369f1903be1.tar.gz lr-486fc4ce9d82ef435f8a74076f34a369f1903be1.tar.xz lr-486fc4ce9d82ef435f8a74076f34a369f1903be1.zip |
-s to strip leading ./
-rw-r--r-- | lr.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/lr.c b/lr.c index 1655b06..626ec43 100644 --- a/lr.c +++ b/lr.c @@ -9,7 +9,6 @@ TODO: - error handling? keep going - avoid stat in recurse - multiple -t -- don't default to ./ prefix */ #define _GNU_SOURCE @@ -37,6 +36,7 @@ int Lflag = 0; int xflag = 0; int Uflag = 0; int lflag = 0; +int sflag = 0; char *format; char *ordering; @@ -656,7 +656,10 @@ print(const void *nodep, const VISIT which, const int depth) case 'd': printf("%d", fi->depth); break; case 'D': printf("%ld", fi->sb.st_dev); break; case 'i': printf("%ld", fi->sb.st_ino); break; - case 'p': printf("%s", fi->fpath); break; + case 'p': printf("%s", + sflag && strncmp(fi->fpath, "./", 2) == 0 ? + fi->fpath+2 : fi->fpath); + break; case 'l': if (S_ISLNK(fi->sb.st_mode)) printf("%s", readlin(fi->fpath, "")); @@ -870,7 +873,7 @@ main(int argc, char *argv[]) format = "%p\\n"; ordering = "n"; - while ((c = getopt(argc, argv, "df:t:o:xLFHUl0")) != -1) + while ((c = getopt(argc, argv, "df:t:o:xLFHUl0s")) != -1) switch(c) { case 'd': dflag++; break; case 'f': format = optarg; break; @@ -881,6 +884,7 @@ main(int argc, char *argv[]) case 'L': Lflag++; break; case 'U': Uflag++; break; case '0': format = "%p\\0"; break; + case 's': sflag++; break; case 'l': lflag++; // "%M %2n %u %g %9s %TY-%Tm-%Td %TH:%TM %p%F\n"; break; @@ -891,10 +895,13 @@ main(int argc, char *argv[]) exit(2); } - if (optind == argc) + if (optind == argc) { + sflag++; traverse("."); - for (i = optind; i < argc; i++) - traverse(argv[i]); + } else { + for (i = optind; i < argc; i++) + traverse(argv[i]); + } if (!Uflag) twalk(root, print); |