From 6f75a91408459b3093eedb23f4db130595da565f Mon Sep 17 00:00:00 2001 From: Syndamia Date: Sun, 8 Nov 2026 19:12:34 +0200 Subject: fix(chwrite): Correct argument parsing Make it conform strictly to the help message --- chwrite/chwrite.c | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) (limited to 'chwrite') diff --git a/chwrite/chwrite.c b/chwrite/chwrite.c index 6be8ec8..395cf91 100644 --- a/chwrite/chwrite.c +++ b/chwrite/chwrite.c @@ -4,6 +4,7 @@ #include #include #include +#include static void help_message(void) { @@ -25,14 +26,31 @@ main(int argc, char *argv[]) { help_message(); return 0; } + for (i = 1; i < argc; ++i) { + if (!strcmp(argv[i], "-h") || !strcmp(argv[i], "--help")) { + help_message(); + return 0; + } + } - operation = argv[1][0]; - - if (operation != '+' && operation != '-') { + if (!strcmp(argv[1], "+") || !strcmp(argv[1], "+w")) { + operation = '+'; + } + else if (!strcmp(argv[1], "-") || !strcmp(argv[1], "-w")) { + operation = '-'; + } + else { + printf("Invalid argument '%s'!\n", argv[1]); help_message(); return 1; } + if (argc == 2) { + printf("Not enough arguments!\n"); + help_message(); + return 2; + } + for (i = 2; i < argc; ++i) { f = open(argv[i], 0); if (f == -1) -- cgit v1.3.1-23-gd82d