diff options
author | Josh Poimboeuf <jpoimboe@redhat.com> | 2015-12-15 10:39:33 -0500 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2015-12-16 14:09:39 -0500 |
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 @@ | |||
16 | #include <string.h> | 16 | #include <string.h> |
17 | #include <errno.h> | 17 | #include <errno.h> |
18 | #include <linux/string.h> | 18 | #include <linux/string.h> |
19 | #include <linux/compiler.h> | ||
19 | 20 | ||
20 | /** | 21 | /** |
21 | * memdup - duplicate region of memory | 22 | * memdup - duplicate region of memory |
@@ -60,3 +61,29 @@ int strtobool(const char *s, bool *res) | |||
60 | } | 61 | } |
61 | return 0; | 62 | return 0; |
62 | } | 63 | } |
64 | |||
65 | /** | ||
66 | * strlcpy - Copy a C-string into a sized buffer | ||
67 | * @dest: Where to copy the string to | ||
68 | * @src: Where to copy the string from | ||
69 | * @size: size of destination buffer | ||
70 | * | ||
71 | * Compatible with *BSD: the result is always a valid | ||
72 | * NUL-terminated string that fits in the buffer (unless, | ||
73 | * of course, the buffer size is zero). It does not pad | ||
74 | * out the result like strncpy() does. | ||
75 | * | ||
76 | * If libc has strlcpy() then that version will override this | ||
77 | * implementation: | ||
78 | */ | ||
79 | size_t __weak strlcpy(char *dest, const char *src, size_t size) | ||
80 | { | ||
81 | size_t ret = strlen(src); | ||
82 | |||
83 | if (size) { | ||
84 | size_t len = (ret >= size) ? size - 1 : ret; | ||
85 | memcpy(dest, src, len); | ||
86 | dest[len] = '\0'; | ||
87 | } | ||
88 | return ret; | ||
89 | } | ||