]> 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>
Sat, 28 Jan 2017 11:39:30 +0000 (12:39 +0100)
Signed-off-by: Karel Zak <kzak@redhat.com>
include/strutils.h
lib/strutils.c

index aa31fc984c7520ffe1604242d4c950a86c3056d1..28c1b5e5d6f1d0da1ba50abbf57c6f6c5d1d2f1f 100644 (file)
@@ -39,8 +39,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 d3daa369dee293bc7c5df7a74b0f9bfa37cd984a..74c850bce7b1d64e9021dea01e7b7c53c54fe586 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;
 }