diff options
Diffstat (limited to 'tools/perf/util/path.c')
| -rw-r--r-- | tools/perf/util/path.c | 67 | 
1 files changed, 3 insertions, 64 deletions
diff --git a/tools/perf/util/path.c b/tools/perf/util/path.c index 3bf6bf82ff2d..7c7630be5a89 100644 --- a/tools/perf/util/path.c +++ b/tools/perf/util/path.c @@ -11,17 +11,13 @@   * which is what it's designed for.   */  #include "cache.h" +#include "util.h" +#include <limits.h>  static char bad_path[] = "/bad-path/";  /* - * Two hacks: + * One hack:   */ - -static const char *get_perf_dir(void) -{ -	return "."; -} -  static char *get_pathname(void)  {  	static char pathname_array[4][PATH_MAX]; @@ -54,60 +50,3 @@ char *mkpath(const char *fmt, ...)  		return bad_path;  	return cleanup_path(pathname);  } - -char *perf_path(const char *fmt, ...) -{ -	const char *perf_dir = get_perf_dir(); -	char *pathname = get_pathname(); -	va_list args; -	unsigned len; - -	len = strlen(perf_dir); -	if (len > PATH_MAX-100) -		return bad_path; -	memcpy(pathname, perf_dir, len); -	if (len && perf_dir[len-1] != '/') -		pathname[len++] = '/'; -	va_start(args, fmt); -	len += vsnprintf(pathname + len, PATH_MAX - len, fmt, args); -	va_end(args); -	if (len >= PATH_MAX) -		return bad_path; -	return cleanup_path(pathname); -} - -/* strip arbitrary amount of directory separators at end of path */ -static inline int chomp_trailing_dir_sep(const char *path, int len) -{ -	while (len && is_dir_sep(path[len - 1])) -		len--; -	return len; -} - -/* - * If path ends with suffix (complete path components), returns the - * part before suffix (sans trailing directory separators). - * Otherwise returns NULL. - */ -char *strip_path_suffix(const char *path, const char *suffix) -{ -	int path_len = strlen(path), suffix_len = strlen(suffix); - -	while (suffix_len) { -		if (!path_len) -			return NULL; - -		if (is_dir_sep(path[path_len - 1])) { -			if (!is_dir_sep(suffix[suffix_len - 1])) -				return NULL; -			path_len = chomp_trailing_dir_sep(path, path_len); -			suffix_len = chomp_trailing_dir_sep(suffix, suffix_len); -		} -		else if (path[--path_len] != suffix[--suffix_len]) -			return NULL; -	} - -	if (path_len && !is_dir_sep(path[path_len - 1])) -		return NULL; -	return strndup(path, chomp_trailing_dir_sep(path, path_len)); -}  |