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 | } | ||
