diff --git a/src/client/client_cli.c b/src/client/client_cli.c index 191cc07..81e30d5 100644 --- a/src/client/client_cli.c +++ b/src/client/client_cli.c @@ -361,6 +361,12 @@ int parse_args(Config* config, int argc, char* argv[], int* positional_args, log_message(LOG_LEVEL_ERROR, "--compress-level must be between 1 and 22"); return -1; } + } else if (opt_is(argv[i], "--del", NULL)) { + fprintf(stderr, "--del is an alias for --delete-during, which is not implemented\n"); + return -1; + } else if (opt_is(argv[i], "--delete-during", NULL)) { + fprintf(stderr, "--delete-during is not implemented\n"); + return -1; } else if (argv[i][0] == '-') { fprintf(stderr, "Unknown option: %s\n", argv[i]); print_usage(); diff --git a/src/client/usage.c b/src/client/usage.c index 2f800af..b5e905a 100644 --- a/src/client/usage.c +++ b/src/client/usage.c @@ -21,6 +21,7 @@ void print_usage(void) { printf(" -p SSH port (default: 22)\n"); printf(" --progress Show transfer progress\n"); printf(" --delete Delete files on receiver not in source\n"); + printf(" --del Alias for --delete-during (not implemented)\n"); printf(" --exclude Exclude files matching pattern\n"); printf(" --include Only include files matching pattern\n"); printf(" --exclude-from Read exclude patterns from file\n"); diff --git a/tests/test_client_cli.c b/tests/test_client_cli.c index 656fd40..ef9400a 100644 --- a/tests/test_client_cli.c +++ b/tests/test_client_cli.c @@ -260,6 +260,22 @@ static void test_parse_args_unknown_option() { config_delete(cfg); } +/* --del is recognized as the rsync alias, but its timing mode is not implemented. */ +static void test_parse_args_delete_during_alias_unimplemented() { + static const char* const options[] = {"--del", "--delete-during"}; + + for (size_t i = 0; i < sizeof(options) / sizeof(options[0]); i++) { + Config* cfg = config_create(); + char* argv[] = {"fastsync", (char*)options[i], "/src", "/dst"}; + int positional_args[2]; + int positional_count = 0; + + EXPECT_EQ_INT(parse_args(cfg, 4, argv, positional_args, &positional_count), -1); + EXPECT_FALSE(cfg->use_delete); + config_delete(cfg); + } +} + /* Parsed-but-unimplemented options must fail instead of being silently accepted. */ static void test_parse_args_rejects_unimplemented_options() { static const char* const options[] = {"-q", @@ -358,6 +374,7 @@ void test_client_cli() { test_parse_args_invalid_compression_level(); test_parse_args_valid_compression_level(); test_parse_args_unknown_option(); + test_parse_args_delete_during_alias_unimplemented(); test_parse_args_rejects_unimplemented_options(); test_parse_args_archive(); }