diff options
Diffstat (limited to 'src/test_demo.cc')
| -rw-r--r-- | src/test_demo.cc | 37 |
1 files changed, 29 insertions, 8 deletions
diff --git a/src/test_demo.cc b/src/test_demo.cc index 4d2d60b..a93b0b1 100644 --- a/src/test_demo.cc +++ b/src/test_demo.cc @@ -53,6 +53,7 @@ int main(int argc, char** argv) { bool log_peaks_fine = false; #if !defined(STRIP_ALL) + // Early exit for invalid options for (int i = 1; i < argc; ++i) { if (strcmp(argv[i], "--help") == 0) { print_usage(argv[0]); @@ -61,17 +62,37 @@ int main(int argc, char** argv) { fullscreen_enabled = true; } else if (strcmp(argv[i], "--tempo") == 0) { tempo_test_enabled = true; - } else if (strcmp(argv[i], "--resolution") == 0 && i + 1 < argc) { - const char* res_str = argv[++i]; - int w, h; - if (sscanf(res_str, "%dx%d", &w, &h) == 2) { - width = w; - height = h; + } else if (strcmp(argv[i], "--resolution") == 0) { + if (i + 1 < argc) { + const char* res_str = argv[++i]; + int w, h; + if (sscanf(res_str, "%dx%d", &w, &h) == 2) { + width = w; + height = h; + } else { + fprintf(stderr, "Error: Invalid resolution format '%s' (expected WxH, e.g., 1024x768)\n\n", res_str); + print_usage(argv[0]); + return 1; + } + } else { + fprintf(stderr, "Error: --resolution requires an argument (e.g., 1024x768)\n\n"); + print_usage(argv[0]); + return 1; + } + } else if (strcmp(argv[i], "--log-peaks") == 0) { + if (i + 1 < argc) { + log_peaks_file = argv[++i]; + } else { + fprintf(stderr, "Error: --log-peaks requires a filename argument\n\n"); + print_usage(argv[0]); + return 1; } - } else if (strcmp(argv[i], "--log-peaks") == 0 && i + 1 < argc) { - log_peaks_file = argv[++i]; } else if (strcmp(argv[i], "--log-peaks-fine") == 0) { log_peaks_fine = true; + } else { + fprintf(stderr, "Error: Unknown option '%s'\n\n", argv[i]); + print_usage(argv[0]); + return 1; } } #else |
