From ed24d0bd4c5e1ab8e506783a05402c4433be1737 Mon Sep 17 00:00:00 2001 From: o9000 Date: Mon, 3 Aug 2015 18:34:12 +0200 Subject: [PATCH] Fix command line argument processing (issue #516) --- src/tint.c | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/src/tint.c b/src/tint.c index 181f9ad..c2f3dfc 100644 --- a/src/tint.c +++ b/src/tint.c @@ -123,23 +123,35 @@ void init (int argc, char *argv[]) // read options for (i = 1; i < argc; ++i) { - if (!strcmp(argv[i], "-h") || !strcmp(argv[i], "--help")) { - printf("Usage: tint2 [-c] \n"); + int error = 0; + if (strcmp(argv[i], "-h") == 0 || strcmp(argv[i], "--help") == 0) { + printf("Usage: tint2 [[-c] ]\n"); exit(0); - } - if (!strcmp(argv[i], "-v") || !strcmp(argv[i], "--version")) { + } else if (strcmp(argv[i], "-v") == 0 || strcmp(argv[i], "--version") == 0) { printf("tint2 version %s\n", VERSION_STRING); exit(0); - } - if (!strcmp(argv[i], "-c")) { - i++; - if (i < argc) + } else if (strcmp(argv[i], "-c") == 0) { + if (i+1 < argc) { + i++; config_path = strdup(argv[i]); - } - if (!strcmp(argv[i], "-s")) { - i++; - if (i < argc) + } else { + error = 1; + } + } else if (strcmp(argv[i], "-s") == 0) { + if (i+1 < argc) { + i++; snapshot_path = strdup(argv[i]); + } else { + error = 1; + } + } else if (i+1 == argc) { + config_path = strdup(argv[i]); + } else { + error = 1; + } + if (error) { + printf("Usage: tint2 [[-c] ]\n"); + exit(1); } } // Set signal handler