]> xenbits.xensource.com Git - libvirt.git/commitdiff
util: Add virStringTrimOptionalNewline
authorMartin Kletzander <mkletzan@redhat.com>
Wed, 29 Mar 2017 11:48:22 +0000 (13:48 +0200)
committerMartin Kletzander <mkletzan@redhat.com>
Fri, 7 Apr 2017 06:49:34 +0000 (08:49 +0200)
And use it in virFileRead*

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
src/util/virfile.c
src/util/virhostcpu.c
src/util/virstring.h
src/util/virsysfs.c

index c0f448d3437d80b70f3bb2dfb38785ccd17449e6..cbfa3849d79319692f0c8313e88bf0797e10f71d 100644 (file)
@@ -3811,7 +3811,6 @@ int
 virFileReadValueInt(const char *path, int *value)
 {
     char *str = NULL;
-    char *endp = NULL;
 
     if (!virFileExists(path))
         return -2;
@@ -3819,8 +3818,9 @@ virFileReadValueInt(const char *path, int *value)
     if (virFileReadAll(path, INT_STRLEN_BOUND(*value), &str) < 0)
         return -1;
 
-    if (virStrToLong_i(str, &endp, 10, value) < 0 ||
-        (endp && !c_isspace(*endp))) {
+    virStringTrimOptionalNewline(str);
+
+    if (virStrToLong_i(str, NULL, 10, value) < 0) {
         virReportError(VIR_ERR_INTERNAL_ERROR,
                        _("Invalid integer value '%s' in file '%s'"),
                        str, path);
@@ -3847,7 +3847,6 @@ int
 virFileReadValueUint(const char *path, unsigned int *value)
 {
     char *str = NULL;
-    char *endp = NULL;
 
     if (!virFileExists(path))
         return -2;
@@ -3855,8 +3854,9 @@ virFileReadValueUint(const char *path, unsigned int *value)
     if (virFileReadAll(path, INT_STRLEN_BOUND(*value), &str) < 0)
         return -1;
 
-    if (virStrToLong_uip(str, &endp, 10, value) < 0 ||
-        (endp && !c_isspace(*endp))) {
+    virStringTrimOptionalNewline(str);
+
+    if (virStrToLong_uip(str, NULL, 10, value)) {
         virReportError(VIR_ERR_INTERNAL_ERROR,
                        _("Invalid unsigned integer value '%s' in file '%s'"),
                        str, path);
@@ -3886,7 +3886,6 @@ virFileReadValueBitmap(const char *path,
 {
     char *buf = NULL;
     int ret = -1;
-    char *tmp = NULL;
 
     if (!virFileExists(path))
         return -2;
@@ -3894,10 +3893,7 @@ virFileReadValueBitmap(const char *path,
     if (virFileReadAll(path, maxlen, &buf) < 0)
         goto cleanup;
 
-    /* trim optinoal newline at the end */
-    tmp = buf + strlen(buf) - 1;
-    if (*tmp == '\n')
-        *tmp = '\0';
+    virStringTrimOptionalNewline(buf);
 
     *value = virBitmapParseUnlimited(buf);
     if (!*value)
index 02b9fc8eb94f1ac95f58b18d1a01725c3abd3de7..a660e3f4dbe5e4b89c79283ea9592ed7ec467eb6 100644 (file)
@@ -847,13 +847,13 @@ virHostCPUParseCountLinux(void)
     tmp = str;
     do {
         if (virStrToLong_i(tmp, &tmp, 10, &ret) < 0 ||
-            !strchr(",-\n", *tmp)) {
+            !strchr(",-", *tmp)) {
             virReportError(VIR_ERR_NO_SUPPORT,
                            _("failed to parse %s"), str);
             ret = -1;
             goto cleanup;
         }
-    } while (*tmp++ != '\n');
+    } while (*tmp++ && *tmp);
     ret++;
 
  cleanup:
index a5550e30d2e2d7b8d117daaa5b1a3e5db4a802dd..603650aa15886029f7b316857213957a57368677 100644 (file)
@@ -288,4 +288,12 @@ bool virStringBufferIsPrintable(const uint8_t *buf, size_t buflen);
 
 char *virStringEncodeBase64(const uint8_t *buf, size_t buflen);
 
+static inline void
+virStringTrimOptionalNewline(char *str)
+{
+    char *tmp = str + strlen(str) - 1;
+    if (*tmp == '\n')
+        *tmp = '\0';
+}
+
 #endif /* __VIR_STRING_H__ */
index 7a98b488e0ff8a1cffd90f0abc8cc65db947f839..6df45a0e36d9966931cb7cf3105aa89f9fb962c5 100644 (file)
@@ -89,6 +89,8 @@ virSysfsGetValueString(const char *file,
     if (virFileReadAll(path, VIR_SYSFS_VALUE_MAXLEN, value) < 0)
         goto cleanup;
 
+    virStringTrimOptionalNewline(*value);
+
     ret = 0;
  cleanup:
     VIR_FREE(path);