This shortens the code and avoids the old code's careless truncation
from unsigned long to int.

Signed-off-by: Michael Haggerty <mhag...@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

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to