[git commit] touch: prevent usage of -r and -t at once

Denys Vlasenko vda.linux at googlemail.com
Tue Apr 13 12:48:24 UTC 2021


commit: https://git.busybox.net/busybox/commit/?id=e3c6a0973c8a4fe17d2510093738ef5ae052523e
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

coreutils forbids this combination.

Signed-off-by: Xabier Oneca <xoneca at gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 coreutils/touch.c | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/coreutils/touch.c b/coreutils/touch.c
index 8d3f8dbbe..189428a79 100644
--- a/coreutils/touch.c
+++ b/coreutils/touch.c
@@ -120,14 +120,18 @@ int touch_main(int argc UNUSED_PARAM, char **argv)
 	 * accepted data format differs a bit between -d and -t.
 	 * We accept the same formats for both
 	 */
-	opts = getopt32long(argv, "c" IF_FEATURE_TOUCH_NODEREF("h")
-				IF_FEATURE_TOUCH_SUSV3("r:d:t:am")
-				/*ignored:*/ "f" IF_NOT_FEATURE_TOUCH_SUSV3("am"),
-				touch_longopts
+	opts = getopt32long(argv, "^"
+		"c" IF_FEATURE_TOUCH_NODEREF("h")
+		IF_FEATURE_TOUCH_SUSV3("r:d:t:am")
+		/*ignored:*/ "f" IF_NOT_FEATURE_TOUCH_SUSV3("am")
+		"\0" /* opt_complementary: */
+		/* coreutils forbids -r and -t at once: */ IF_FEATURE_TOUCH_SUSV3("r--t:t--r")
+		/* but allows these combinations: "r--d:d--r:t--d:d--t" */,
+		touch_longopts
 #if ENABLE_FEATURE_TOUCH_SUSV3
-				, &reference_file
-				, &date_str
-				, &date_str
+		, &reference_file
+		, &date_str
+		, &date_str
 #endif
 	);
 


More information about the busybox-cvs mailing list