extern void strtotimeval_or_err(const char *str, struct timeval *tv,
const char *errmesg);
-extern int isdigit_string(const char *str);
-extern int isxdigit_string(const char *str);
+extern int isdigit_strend(const char *str, const char **end);
+#define isdigit_string(_s) isdigit_strend(_s, NULL)
+
+extern int isxdigit_strend(const char *str, const char **end);
+#define isxdigit_string(_s) isxdigit_strend(_s, NULL)
+
extern int parse_switch(const char *arg, const char *errmesg, ...);
return parse_size(str, res, NULL);
}
-int isdigit_string(const char *str)
+int isdigit_strend(const char *str, const char **end)
{
const char *p;
for (p = str; p && *p && isdigit((unsigned char) *p); p++);
+ if (end)
+ *end = p;
return p && p > str && !*p;
}
-int isxdigit_string(const char *str)
+int isxdigit_strend(const char *str, const char **end)
{
const char *p;
for (p = str; p && *p && isxdigit((unsigned char) *p); p++);
+ if (end)
+ *end = p;
+
return p && p > str && !*p;
}