[PATCH 10/14] opt_arg(): use convert_i() in implementation
- From
Michael Haggerty <mhagger@alum.mit.edu>
- Date
- Mar 17, 2015, 16:00 UTC
- 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 <mhagger@alum.mit.edu> --- 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