args.c: fix range check in int/uint

this also clears the remaining -Wshorten-64-to-32 warnings in this file.
the previous patch ported from libvpx was incomplete due to:
d3a7576fb Add compiler flag -Wsign-compare

Change-Id: I105fa2342073dfa8bd0619b4282435fb6568f5c9
diff --git a/args.c b/args.c
index 1772c00..5711035 100644
--- a/args.c
+++ b/args.c
@@ -120,15 +120,13 @@
 }
 
 unsigned int arg_parse_uint(const struct arg *arg) {
-  uint32_t rawval;
   char *endptr;
-
-  rawval = strtoul(arg->val, &endptr, 10);
+  const unsigned long rawval = strtoul(arg->val, &endptr, 10);  // NOLINT
 
   if (arg->val[0] != '\0' && endptr[0] == '\0') {
     if (rawval <= UINT_MAX) return (unsigned int)rawval;
 
-    die("Option %s: Value %ld out of range for unsigned int\n", arg->name,
+    die("Option %s: Value %lu out of range for unsigned int\n", arg->name,
         rawval);
   }
 
@@ -137,10 +135,8 @@
 }
 
 int arg_parse_int(const struct arg *arg) {
-  int32_t rawval;
   char *endptr;
-
-  rawval = strtol(arg->val, &endptr, 10);
+  const long rawval = strtol(arg->val, &endptr, 10);  // NOLINT
 
   if (arg->val[0] != '\0' && endptr[0] == '\0') {
     if (rawval >= INT_MIN && rawval <= INT_MAX) return (int)rawval;