Messages in this thread Patch in this message | | | From | Josh Poimboeuf <> | Subject | [PATCH v2 12/14] perf tools: Move strlcpy() to tools/lib/string.c | Date | Mon, 7 Dec 2015 22:21:50 -0600 |
| |
Move strlcpy() to tools/lib/string.c so it can be used by other tools, namely abspath.c which is getting moved to a library.
Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com> --- tools/include/linux/string.h | 5 +++++ tools/lib/string.c | 19 +++++++++++++++++++ tools/perf/util/path.c | 18 ------------------ tools/perf/util/path.h | 5 ----- tools/perf/util/util.h | 1 + 5 files changed, 25 insertions(+), 23 deletions(-)
diff --git a/tools/include/linux/string.h b/tools/include/linux/string.h index 2e2f736..eae1d87 100644 --- a/tools/include/linux/string.h +++ b/tools/include/linux/string.h @@ -8,4 +8,9 @@ void *memdup(const void *src, size_t len); int strtobool(const char *s, bool *res); +#ifndef __UCLIBC__ +/* Matches the libc/libbsd function attribute so we declare this unconditionally: */ +extern size_t strlcpy(char *dest, const char *src, size_t size); +#endif + #endif /* _LINUX_STRING_H_ */ diff --git a/tools/lib/string.c b/tools/lib/string.c index 065e54f..3366582 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,21 @@ int strtobool(const char *s, bool *res) } return 0; } + +/* + * 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; +} diff --git a/tools/perf/util/path.c b/tools/perf/util/path.c index 1e22ac0..416fe7d 100644 --- a/tools/perf/util/path.c +++ b/tools/perf/util/path.c @@ -22,24 +22,6 @@ static const char *get_perf_dir(void) return "."; } -/* - * 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; -} - static char *get_pathname(void) { static char pathname_array[4][PATH_MAX]; diff --git a/tools/perf/util/path.h b/tools/perf/util/path.h index 3604e82f..1df12e7 100644 --- a/tools/perf/util/path.h +++ b/tools/perf/util/path.h @@ -9,9 +9,4 @@ extern char *perf_path(const char *fmt, ...) __attribute__((format (printf, 1, 2 extern char *perf_pathdup(const char *fmt, ...) __attribute__((format (printf, 1, 2))); -#ifndef __UCLIBC__ -/* Matches the libc/libbsd function attribute so we declare this unconditionally: */ -extern size_t strlcpy(char *dest, const char *src, size_t size); -#endif - #endif /* __PERF_PATH_H */ diff --git a/tools/perf/util/util.h b/tools/perf/util/util.h index c7b50d5..2c6db35 100644 --- a/tools/perf/util/util.h +++ b/tools/perf/util/util.h @@ -3,6 +3,7 @@ #include "compat-util.h" +#include <linux/string.h> #include "../perf.h" #include "abspath.h" #include "alias.h" -- 2.4.3
| |