about summary refs log tree commit diff
path: root/lr.c
diff options
context:
space:
mode:
authorChristian Neukirchen <chneukirchen@gmail.com>2015-10-23 12:27:12 +0200
committerChristian Neukirchen <chneukirchen@gmail.com>2015-10-23 12:27:12 +0200
commit486fc4ce9d82ef435f8a74076f34a369f1903be1 (patch)
tree450291240d291b281c8edc99974096a8c0bd26e7 /lr.c
parent4081de3bf15a401236b0f3badfe24db67244de4f (diff)
downloadlr-486fc4ce9d82ef435f8a74076f34a369f1903be1.tar.gz
lr-486fc4ce9d82ef435f8a74076f34a369f1903be1.tar.xz
lr-486fc4ce9d82ef435f8a74076f34a369f1903be1.zip
-s to strip leading ./
Diffstat (limited to 'lr.c')
-rw-r--r--lr.c19
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);