Code

Gracefully ignore negative values given to options in ~/.tigrc
authorJonas Fonseca <fonseca@diku.dk>
Wed, 23 Jul 2008 17:23:12 +0000 (19:23 +0200)
committerJonas Fonseca <fonseca@diku.dk>
Wed, 23 Jul 2008 17:23:12 +0000 (19:23 +0200)
tig.c

diff --git a/tig.c b/tig.c
index 8679025a83aa2b8e4a9c7b1b5a43d83475f18317..5b7b1ea0cf74f865096d8c46cb087cf21faa9a43 100644 (file)
--- a/tig.c
+++ b/tig.c
@@ -1101,6 +1101,14 @@ static bool parse_bool(const char *s)
                !strcmp(s, "yes")) ? TRUE : FALSE;
 }
 
+static int
+parse_int(const char *s, int default_value, int min, int max)
+{
+       int value = atoi(s);
+
+       return (value < min || value > max) ? default_value : value;
+}
+
 /* Wants: name = value */
 static int
 option_set_command(int argc, char *argv[])
@@ -1146,17 +1154,17 @@ option_set_command(int argc, char *argv[])
        }
 
        if (!strcmp(argv[0], "line-number-interval")) {
-               opt_num_interval = atoi(argv[2]);
+               opt_num_interval = parse_int(argv[2], opt_num_interval, 1, 1024);
                return OK;
        }
 
        if (!strcmp(argv[0], "author-width")) {
-               opt_author_cols = atoi(argv[2]);
+               opt_author_cols = parse_int(argv[2], opt_author_cols, 0, 1024);
                return OK;
        }
 
        if (!strcmp(argv[0], "tab-size")) {
-               opt_tab_size = atoi(argv[2]);
+               opt_tab_size = parse_int(argv[2], opt_tab_size, 1, 1024);
                return OK;
        }