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>
This commit is contained in:
Родитель
4ddd32741d
Коммит
7d85c43421
|
@ -6,4 +6,6 @@
|
||||||
|
|
||||||
void *memdup(const void *src, size_t len);
|
void *memdup(const void *src, size_t len);
|
||||||
|
|
||||||
|
int strtobool(const char *s, bool *res);
|
||||||
|
|
||||||
#endif /* _LINUX_STRING_H_ */
|
#endif /* _LINUX_STRING_H_ */
|
||||||
|
|
|
@ -1,5 +1,20 @@
|
||||||
|
/*
|
||||||
|
* linux/tools/lib/string.c
|
||||||
|
*
|
||||||
|
* Copied from linux/lib/string.c, where it is:
|
||||||
|
*
|
||||||
|
* Copyright (C) 1991, 1992 Linus Torvalds
|
||||||
|
*
|
||||||
|
* More specifically, the first copied function was strtobool, which
|
||||||
|
* was introduced by:
|
||||||
|
*
|
||||||
|
* d0f1fed29e6e ("Add a strtobool function matching semantics of existing in kernel equivalents")
|
||||||
|
* Author: Jonathan Cameron <jic23@cam.ac.uk>
|
||||||
|
*/
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <errno.h>
|
||||||
#include <linux/string.h>
|
#include <linux/string.h>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -17,3 +32,31 @@ void *memdup(const void *src, size_t len)
|
||||||
|
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* strtobool - convert common user inputs into boolean values
|
||||||
|
* @s: input string
|
||||||
|
* @res: result
|
||||||
|
*
|
||||||
|
* This routine returns 0 iff the first character is one of 'Yy1Nn0'.
|
||||||
|
* Otherwise it will return -EINVAL. Value pointed to by res is
|
||||||
|
* updated upon finding a match.
|
||||||
|
*/
|
||||||
|
int strtobool(const char *s, bool *res)
|
||||||
|
{
|
||||||
|
switch (s[0]) {
|
||||||
|
case 'y':
|
||||||
|
case 'Y':
|
||||||
|
case '1':
|
||||||
|
*res = true;
|
||||||
|
break;
|
||||||
|
case 'n':
|
||||||
|
case 'N':
|
||||||
|
case '0':
|
||||||
|
*res = false;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче