[PATCH v2 12/14] perf tools: Move strlcpy() to tools/lib/string.c

From: Josh Poimboeuf
Date: Mon Dec 07 2015 - 23:24:12 EST


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@xxxxxxxxxx>
---
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

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/