forked from mirrors/linux
		
	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
					
				
					 4 changed files with 33 additions and 23 deletions
				
			
		| 
						 | 
					@ -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 a new issue