diff options
author | Josh Poimboeuf | 2015-12-15 09:39:33 -0600 |
---|---|---|
committer | Arnaldo Carvalho de Melo | 2015-12-16 16:09:39 -0300 |
commit | ce99091730c92bf560712baa0696ea5a461b1fe8 (patch) | |
tree | 98730b87cc0131c5d213625d67fe8ba6f58f492a /tools/lib | |
parent | 1925459b4d92d92e62d67ddc763cda650d2aa79c (diff) |
perf tools: Move strlcpy() from perf to tools/lib/string.c
strlcpy() will be needed by the subcmd library. Move it to the shared
tools/lib/string.c file which can be used by other tools.
Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/71e2804b973bf39ad3d3b9be10f99f2ea630be46.1450193761.git.jpoimboe@redhat.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/lib')
-rw-r--r-- | tools/lib/string.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/tools/lib/string.c b/tools/lib/string.c index 065e54f42d8f..bd239bc1d557 100644 --- a/tools/lib/string.c +++ b/tools/lib/string.c @@ -16,6 +16,7 @@ #include <string.h> #include <errno.h> #include <linux/string.h> +#include <linux/compiler.h> /** * memdup - duplicate region of memory @@ -60,3 +61,29 @@ int strtobool(const char *s, bool *res) } return 0; } + +/** + * strlcpy - Copy a C-string into a sized buffer + * @dest: Where to copy the string to + * @src: Where to copy the string from + * @size: size of destination buffer + * + * Compatible with *BSD: the result is always a valid + * NUL-terminated string that fits in the buffer (unless, + * of course, the buffer size is zero). It does not pad + * out the result like strncpy() does. + * + * If libc has strlcpy() then that version will override this + * implementation: + */ +size_t __weak strlcpy(char *dest, const char *src, size_t size) +{ + size_t ret = strlen(src); + + if (size) { + size_t len = (ret >= size) ? size - 1 : ret; + memcpy(dest, src, len); + dest[len] = '\0'; + } + return ret; +} |