]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
Added xstrtol_ll and xstrtol_ull convenience functions
authorDaniel P. Berrange <berrange@redhat.com>
Sun, 20 Jan 2008 16:11:25 +0000 (16:11 +0000)
committerDaniel P. Berrange <berrange@redhat.com>
Sun, 20 Jan 2008 16:11:25 +0000 (16:11 +0000)
ChangeLog
src/internal.h

index d333abe730c837b257a7e3507548d2062d0e5592..504e991cceed2236b1d31cdaa13329a0ea34759f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Sun Jan 20 11:01:22 EST 2008 Daniel P. Berrange <berrange@redhat.com>
+
+       * src/internal.h: Add xstrtol_ull, xstrtol_ll convenience
+       functions
+
 Sun Jan 20 10:54:22 EST 2008 Daniel P. Berrange <berrange@redhat.com>
 
        * src/xend_internal.c: Fix nodeinfo compat with Xen 3.2.0 and
index b30b874126fa285ce6c56ec32dfcc416c6d01daa..0082022c95bf0f6da318cc6d99431da7760903ee 100644 (file)
@@ -308,6 +308,42 @@ xstrtol_ui(char const *s, char **end_ptr, int base, unsigned int *result)
     return 0;
 }
 
+static inline int
+xstrtol_ll(char const *s, char **end_ptr, int base, long long *result)
+{
+    long long val;
+    char *p;
+    int err;
+
+    errno = 0;
+    val = strtoll(s, &p, base);
+    err = (errno || (!end_ptr && *p) || p == s || (long long) val != val);
+    if (end_ptr)
+        *end_ptr = p;
+    if (err)
+        return -1;
+    *result = val;
+    return 0;
+}
+
+/* Just like xstrtol_i, above, but produce an "unsigned long long" value.  */
+static inline int
+xstrtol_ull(char const *s, char **end_ptr, int base, unsigned long long *result)
+{
+    unsigned long long val;
+    char *p;
+    int err;
+
+    errno = 0;
+    val = strtoull(s, &p, base);
+    err = (errno || (!end_ptr && *p) || p == s || (unsigned long long) val != val);
+    if (end_ptr)
+        *end_ptr = p;
+    if (err)
+        return -1;
+    *result = val;
+    return 0;
+}
 #ifdef __cplusplus
 }
 #endif                          /* __cplusplus */