From a41627f25402a38eae2e71a80cae143172dd8e0b Mon Sep 17 00:00:00 2001
From: Quentin Rameau <quinq@quinq.eu.org>
Date: Sat, 18 Apr 2015 23:57:17 +0200
Subject: [PATCH 1/4] ls: fix -f flag

Corrected handling of other options when -f is passed
Also updated usage()
---
 ls.c | 23 +++++++++++++++--------
 1 file changed, 15 insertions(+), 8 deletions(-)

diff --git a/ls.c b/ls.c
index 45de1fe..d211342 100644
--- a/ls.c
+++ b/ls.c
@@ -276,7 +276,7 @@ ls(const struct entry *ent, int recurse)
 static void
 usage(void)
 {
-	eprintf("usage: %s [-1AacdFHhiLlqRrtUu] [file ...]\n", argv0);
+	eprintf("usage: %s [-1AacdFfHhiLlpqRrStUu] [file ...]\n", argv0);
 }
 
 int
@@ -302,13 +302,16 @@ main(int argc, char *argv[])
 	case 'd':
 		dflag = 1;
 		break;
+	case 'F':
+		Fflag = 1;
+		break;
 	case 'f':
 		aflag = 1;
 		fflag = 1;
 		Uflag = 1;
-		break;
-	case 'F':
-		Fflag = 1;
+		rflag = 0;
+		Sflag = 0;
+		tflag = 0;
 		break;
 	case 'H':
 		Hflag = 1;
@@ -343,12 +346,16 @@ main(int argc, char *argv[])
 			rflag = 1;
 		break;
 	case 'S':
-		Sflag = 1;
-		tflag = 0;
+		if (!fflag) {
+			Sflag = 1;
+			tflag = 0;
+		}
 		break;
 	case 't':
-		Sflag = 0;
-		tflag = 1;
+		if (!fflag) {
+			Sflag = 0;
+			tflag = 1;
+		}
 		break;
 	case 'U':
 		Uflag = 1;
-- 
2.3.5

