From: Michael Haggerty Date: Tue, 17 Mar 2015 16:00:12 GMT Subject: [PATCH 10/14] opt_arg(): use convert_i() in implementation Message-ID: <1426608016-2978-11-git-send-email-mhagger@alum.mit.edu> In-Reply-To: <1426608016-2978-1-git-send-email-mhagger@alum.mit.edu> This shortens the code and avoids the old code's careless truncation from unsigned long to int. Signed-off-by: Michael Haggerty --- diff.c | 28 ++++++++-------------------- 1 file changed, 8 insertions(+), 20 deletions(-) diff --git a/diff.c b/diff.c index 6e3f498..77c7acb 100644 --- a/diff.c +++ b/diff.c @@ -3366,16 +3366,10 @@ static int opt_arg(const char *arg, int arg_short, const char *arg_long, int *va if (c == arg_short) { c = *++arg; if (!c) - return 1; - if (isdigit(c)) { - char *end; - int n = strtoul(arg, &end, 10); - if (*end) - return 0; - *val = n; - return 1; - } - return 0; + return 1; /* optional argument was missing */ + if (convert_i(arg, 10, val)) + return 0; + return 1; } if (c != '-') return 0; @@ -3384,16 +3378,10 @@ static int opt_arg(const char *arg, int arg_short, const char *arg_long, int *va len = eq - arg; if (!len || strncmp(arg, arg_long, len)) return 0; - if (*eq) { - int n; - char *end; - if (!isdigit(*++eq)) - return 0; - n = strtoul(eq, &end, 10); - if (*end) - return 0; - *val = n; - } + if (!*eq) + return 1; /* '=' and optional argument were missing */ + if (convert_i(eq + 1, 10, val)) + return 0; return 1; } -- 2.1.4