]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - lib/vsprintf.c
kstrto*: converting strings to integers done (hopefully) right
[mirror_ubuntu-artful-kernel.git] / lib / vsprintf.c
index ac444ff016585f935395f32718f8ed0f9b1b9be2..02bcdd5feac43aca15528252cc6bfba7ea8a7a4f 100644 (file)
@@ -120,147 +120,6 @@ long long simple_strtoll(const char *cp, char **endp, unsigned int base)
 }
 EXPORT_SYMBOL(simple_strtoll);
 
-/**
- * strict_strtoul - convert a string to an unsigned long strictly
- * @cp: The string to be converted
- * @base: The number base to use
- * @res: The converted result value
- *
- * strict_strtoul converts a string to an unsigned long only if the
- * string is really an unsigned long string, any string containing
- * any invalid char at the tail will be rejected and -EINVAL is returned,
- * only a newline char at the tail is acceptible because people generally
- * change a module parameter in the following way:
- *
- *     echo 1024 > /sys/module/e1000/parameters/copybreak
- *
- * echo will append a newline to the tail.
- *
- * It returns 0 if conversion is successful and *res is set to the converted
- * value, otherwise it returns -EINVAL and *res is set to 0.
- *
- * simple_strtoul just ignores the successive invalid characters and
- * return the converted value of prefix part of the string.
- */
-int strict_strtoul(const char *cp, unsigned int base, unsigned long *res)
-{
-       char *tail;
-       unsigned long val;
-
-       *res = 0;
-       if (!*cp)
-               return -EINVAL;
-
-       val = simple_strtoul(cp, &tail, base);
-       if (tail == cp)
-               return -EINVAL;
-
-       if ((tail[0] == '\0') || (tail[0] == '\n' && tail[1] == '\0')) {
-               *res = val;
-               return 0;
-       }
-
-       return -EINVAL;
-}
-EXPORT_SYMBOL(strict_strtoul);
-
-/**
- * strict_strtol - convert a string to a long strictly
- * @cp: The string to be converted
- * @base: The number base to use
- * @res: The converted result value
- *
- * strict_strtol is similiar to strict_strtoul, but it allows the first
- * character of a string is '-'.
- *
- * It returns 0 if conversion is successful and *res is set to the converted
- * value, otherwise it returns -EINVAL and *res is set to 0.
- */
-int strict_strtol(const char *cp, unsigned int base, long *res)
-{
-       int ret;
-       if (*cp == '-') {
-               ret = strict_strtoul(cp + 1, base, (unsigned long *)res);
-               if (!ret)
-                       *res = -(*res);
-       } else {
-               ret = strict_strtoul(cp, base, (unsigned long *)res);
-       }
-
-       return ret;
-}
-EXPORT_SYMBOL(strict_strtol);
-
-/**
- * strict_strtoull - convert a string to an unsigned long long strictly
- * @cp: The string to be converted
- * @base: The number base to use
- * @res: The converted result value
- *
- * strict_strtoull converts a string to an unsigned long long only if the
- * string is really an unsigned long long string, any string containing
- * any invalid char at the tail will be rejected and -EINVAL is returned,
- * only a newline char at the tail is acceptible because people generally
- * change a module parameter in the following way:
- *
- *     echo 1024 > /sys/module/e1000/parameters/copybreak
- *
- * echo will append a newline to the tail of the string.
- *
- * It returns 0 if conversion is successful and *res is set to the converted
- * value, otherwise it returns -EINVAL and *res is set to 0.
- *
- * simple_strtoull just ignores the successive invalid characters and
- * return the converted value of prefix part of the string.
- */
-int strict_strtoull(const char *cp, unsigned int base, unsigned long long *res)
-{
-       char *tail;
-       unsigned long long val;
-
-       *res = 0;
-       if (!*cp)
-               return -EINVAL;
-
-       val = simple_strtoull(cp, &tail, base);
-       if (tail == cp)
-               return -EINVAL;
-       if ((tail[0] == '\0') || (tail[0] == '\n' && tail[1] == '\0')) {
-               *res = val;
-               return 0;
-       }
-
-       return -EINVAL;
-}
-EXPORT_SYMBOL(strict_strtoull);
-
-/**
- * strict_strtoll - convert a string to a long long strictly
- * @cp: The string to be converted
- * @base: The number base to use
- * @res: The converted result value
- *
- * strict_strtoll is similiar to strict_strtoull, but it allows the first
- * character of a string is '-'.
- *
- * It returns 0 if conversion is successful and *res is set to the converted
- * value, otherwise it returns -EINVAL and *res is set to 0.
- */
-int strict_strtoll(const char *cp, unsigned int base, long long *res)
-{
-       int ret;
-       if (*cp == '-') {
-               ret = strict_strtoull(cp + 1, base, (unsigned long long *)res);
-               if (!ret)
-                       *res = -(*res);
-       } else {
-               ret = strict_strtoull(cp, base, (unsigned long long *)res);
-       }
-
-       return ret;
-}
-EXPORT_SYMBOL(strict_strtoll);
-
 static noinline_for_stack
 int skip_atoi(const char **s)
 {