Commit Diff


commit - b043307bfaa7ea801d19677c0cdb5d4074c0c234
commit + 788d4a19ed0ddf9df069f9a6d5a8ecd9ebf932ee
blob - 66d66fa67062d2fcd2b01b19223762ec2e13efab
blob + 5b6177b6a11ae192f3557adf2123f4900a55dc4a
--- got/got.c
+++ got/got.c
@@ -5323,6 +5323,11 @@ cmd_status(int argc, char *argv[])
 		case 'I':
 			no_ignores = 1;
 			break;
+		case 'S':
+			if (st.status_codes != NULL && st.suppress == 0)
+				option_conflict('S', 's');
+			st.suppress = 1;
+			/* fallthrough */
 		case 's':
 			for (i = 0; i < strlen(optarg); i++) {
 				switch (optarg[i]) {
@@ -5341,16 +5346,10 @@ cmd_status(int argc, char *argv[])
 					    optarg[i]);
 				}
 			}
-			if (st.suppress)
+			if (ch == 's' && st.suppress)
 				option_conflict('s', 'S');
 			st.status_codes = optarg;
 			break;
-		case 'S':
-			if (st.status_codes != NULL && st.suppress == 0)
-				option_conflict('S', 's');
-			st.status_codes = optarg;
-			st.suppress = 1;
-			break;
 		default:
 			usage_status();
 			/* NOTREACHED */