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>
This commit is contained in:
parent
1925459b4d
commit
ce99091730
@ -8,4 +8,8 @@ void *memdup(const void *src, size_t len);
|
|||||||
|
|
||||||
int strtobool(const char *s, bool *res);
|
int strtobool(const char *s, bool *res);
|
||||||
|
|
||||||
|
#ifndef __UCLIBC__
|
||||||
|
extern size_t strlcpy(char *dest, const char *src, size_t size);
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* _LINUX_STRING_H_ */
|
#endif /* _LINUX_STRING_H_ */
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <linux/string.h>
|
#include <linux/string.h>
|
||||||
|
#include <linux/compiler.h>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* memdup - duplicate region of memory
|
* memdup - duplicate region of memory
|
||||||
@ -60,3 +61,29 @@ int strtobool(const char *s, bool *res)
|
|||||||
}
|
}
|
||||||
return 0;
|
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;
|
||||||
|
}
|
||||||
|
@ -8,6 +8,8 @@
|
|||||||
#include "../perf.h"
|
#include "../perf.h"
|
||||||
#include "../ui/ui.h"
|
#include "../ui/ui.h"
|
||||||
|
|
||||||
|
#include <linux/string.h>
|
||||||
|
|
||||||
#define CMD_EXEC_PATH "--exec-path"
|
#define CMD_EXEC_PATH "--exec-path"
|
||||||
#define CMD_PERF_DIR "--perf-dir="
|
#define CMD_PERF_DIR "--perf-dir="
|
||||||
#define CMD_WORK_TREE "--work-tree="
|
#define CMD_WORK_TREE "--work-tree="
|
||||||
@ -67,9 +69,4 @@ extern char *perf_path(const char *fmt, ...) __attribute__((format (printf, 1, 2
|
|||||||
extern char *perf_pathdup(const char *fmt, ...)
|
extern char *perf_pathdup(const char *fmt, ...)
|
||||||
__attribute__((format (printf, 1, 2)));
|
__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_CACHE_H */
|
#endif /* __PERF_CACHE_H */
|
||||||
|
@ -22,24 +22,6 @@ static const char *get_perf_dir(void)
|
|||||||
return ".";
|
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 *get_pathname(void)
|
||||||
{
|
{
|
||||||
static char pathname_array[4][PATH_MAX];
|
static char pathname_array[4][PATH_MAX];
|
||||||
|
Loading…
Reference in New Issue
Block a user