History

tools lib: Update copy of strtobool from the kernel sources

Getting support for "on", "off" introduced in a81a5a17d44b ("lib: add "on"/"off" support to kstrtobool") and making it check for NULL, introduced in ef951599074b ("lib: move strtobool() to kstrtobool()").

Arnaldo Carvalho de Melo committed 9 years ago

Commit b99e4851 parent 8e99b6d1 file · +25 −7Browse files

Showing the changes to tools/lib/string.c (1 of 1 file). Show all

Unified · Split

tools/lib/string.c+25−7
@@ -39,27 +39,45 @@ void *memdup(const void *src, size_t len) · 38 unmodified lines
39 * @s: input string39 * @s: input string
40 * @res: result40 * @res: result
41 *41 *
42 * This routine returns 0 iff the first character is one of 'Yy1Nn0'.42 * This routine returns 0 iff the first character is one of 'Yy1Nn0', or
43 * Otherwise it will return -EINVAL. Value pointed to by res is43 * [oO][NnFf] for "on" and "off". Otherwise it will return -EINVAL. Value
44 * updated upon finding a match.44 * pointed to by res is updated upon finding a match.
45 */45 */
46int strtobool(const char *s, bool *res)46int strtobool(const char *s, bool *res)
47{47{
48 if (!s)
49 return -EINVAL;
50
48 switch (s[0]) {51 switch (s[0]) {
49 case 'y':52 case 'y':
50 case 'Y':53 case 'Y':
51 case '1':54 case '1':
52 *res = true;55 *res = true;
53 break;56 return 0;
54 case 'n':57 case 'n':
55 case 'N':58 case 'N':
56 case '0':59 case '0':
57 *res = false;60 *res = false;
58 break;61 return 0;
62 case 'o':
63 case 'O':
64 switch (s[1]) {
65 case 'n':
66 case 'N':
67 *res = true;
68 return 0;
69 case 'f':
70 case 'F':
71 *res = false;
72 return 0;
73 default:
74 break;
75 }
59 default:76 default:
60 return -EINVAL;77 break;
61 }78 }
62 return 0;79
80 return -EINVAL;
63}81}
64 82
65/**83/**