parser: add unsigned int parser
[linux-2.6-block.git] / lib / parser.c
index f5b3e5d7a7f9528394f950dcef5ff851ad3a1203..7785e41fa5eb0adce5391955d503c33bcdbfba03 100644 (file)
@@ -188,6 +188,28 @@ int match_int(substring_t *s, int *result)
 }
 EXPORT_SYMBOL(match_int);
 
+/*
+ * match_uint - scan a decimal representation of an integer from a substring_t
+ * @s: substring_t to be scanned
+ * @result: resulting integer on success
+ *
+ * Description: Attempts to parse the &substring_t @s as a decimal integer. On
+ * success, sets @result to the integer represented by the string and returns 0.
+ * Returns -ENOMEM, -EINVAL, or -ERANGE on failure.
+ */
+int match_uint(substring_t *s, unsigned int *result)
+{
+       int err = -ENOMEM;
+       char *buf = match_strdup(s);
+
+       if (buf) {
+               err = kstrtouint(buf, 10, result);
+               kfree(buf);
+       }
+       return err;
+}
+EXPORT_SYMBOL(match_uint);
+
 /**
  * match_u64: - scan a decimal representation of a u64 from
  *                  a substring_t