aboutsummaryrefslogtreecommitdiffstats
path: root/tools/lib/string.c
diff options
context:
space:
mode:
authorWang Nan <wangnan0@huawei.com>2015-11-16 09:42:05 -0500
committerArnaldo Carvalho de Melo <acme@redhat.com>2015-11-18 15:51:02 -0500
commit7d85c434214ea0b3416f7a62f76a0785b00d8797 (patch)
tree7a3e5b7e1bc693d7e7c1bef590c34f861f653da9 /tools/lib/string.c
parent4ddd32741da87657113d964588ce13ee64b34820 (diff)
tools: Clone the kernel's strtobool function
Copying it to tools/lib/string.c, the counterpart to the kernel's lib/string.c. This is preparation for enhancing BPF program configuration, which will allow config string like 'inlines=yes'. Signed-off-by: Wang Nan <wangnan0@huawei.com> Cc: Alexei Starovoitov <ast@kernel.org> Cc: Jonathan Cameron <jic23@cam.ac.uk> Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> Cc: Zefan Li <lizefan@huawei.com> Cc: pi3orama@163.com Link: http://lkml.kernel.org/r/1447675815-166222-6-git-send-email-wangnan0@huawei.com [ Copied it to tools/lib/string.c instead, to make it usable by other tools/ ] Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/lib/string.c')
-rw-r--r--tools/lib/string.c43
1 files changed, 43 insertions, 0 deletions
diff --git a/tools/lib/string.c b/tools/lib/string.c
index ecfd43a9b24e..065e54f42d8f 100644
--- a/tools/lib/string.c
+++ b/tools/lib/string.c
@@ -1,5 +1,20 @@
1/*
2 * linux/tools/lib/string.c
3 *
4 * Copied from linux/lib/string.c, where it is:
5 *
6 * Copyright (C) 1991, 1992 Linus Torvalds
7 *
8 * More specifically, the first copied function was strtobool, which
9 * was introduced by:
10 *
11 * d0f1fed29e6e ("Add a strtobool function matching semantics of existing in kernel equivalents")
12 * Author: Jonathan Cameron <jic23@cam.ac.uk>
13 */
14
1#include <stdlib.h> 15#include <stdlib.h>
2#include <string.h> 16#include <string.h>
17#include <errno.h>
3#include <linux/string.h> 18#include <linux/string.h>
4 19
5/** 20/**
@@ -17,3 +32,31 @@ void *memdup(const void *src, size_t len)
17 32
18 return p; 33 return p;
19} 34}
35
36/**
37 * strtobool - convert common user inputs into boolean values
38 * @s: input string
39 * @res: result
40 *
41 * This routine returns 0 iff the first character is one of 'Yy1Nn0'.
42 * Otherwise it will return -EINVAL. Value pointed to by res is
43 * updated upon finding a match.
44 */
45int strtobool(const char *s, bool *res)
46{
47 switch (s[0]) {
48 case 'y':
49 case 'Y':
50 case '1':
51 *res = true;
52 break;
53 case 'n':
54 case 'N':
55 case '0':
56 *res = false;
57 break;
58 default:
59 return -EINVAL;
60 }
61 return 0;
62}