]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
lib/strutils: return end pointer by isdigit_string()
authorKarel Zak <kzak@redhat.com>
Sat, 28 Jan 2017 11:39:30 +0000 (12:39 +0100)
committerKarel Zak <kzak@redhat.com>
Tue, 21 Feb 2017 12:12:31 +0000 (13:12 +0100)
Signed-off-by: Karel Zak <kzak@redhat.com>
include/strutils.h
lib/strutils.c

index 51d9c9ff3553d4bf407fe5ac9862d72e5fb76789..65d86b2d000e7626997f9522ea3b944584c2c73a 100644 (file)
@@ -36,8 +36,12 @@ extern unsigned long strtoul_or_err(const char *str, const char *errmesg);
 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, ...);
 
index d3b998f023bfed3d031165eaa684572186fb23ca..53705d7b280060db46e745e1ead5305c86ffd864 100644 (file)
@@ -174,21 +174,26 @@ int strtosize(const char *str, uintmax_t *res)
        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;
 }