summaryrefslogtreecommitdiff
path: root/src/test_demo.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/test_demo.cc')
-rw-r--r--src/test_demo.cc37
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