perf tools: Use kmod_path__parse in decompress_kmodule
tip-bot for Jiri Olsa
merge botCommit-ID: 914f85c4a2db34429b146a57652d2db24d063379 Gitweb: http://git.kernel.org/tip/914f85c4a2db34429b146a57652d2db24d063379 Author: Jiri Olsa <[email protected]> AuthorDate: Thu, 12 Feb 2015 22:27:50 +0100 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Mon, 23 Mar 2015 12:37:17 -0300
perf tools: Use kmod_path__parse in decompress_kmodule
Replacing the file name parsing with kmod_path__parse.
Signed-off-by Jiri Olsa <[email protected]>
Acked-by Namhyung Kim <[email protected]>
Cc Adrian Hunter <[email protected]>
Cc Corey Ashford <[email protected]>
Cc David Ahern <[email protected]>
Cc Frederic Weisbecker <[email protected]>
Cc Paul Mackerras <[email protected]>
Cc Peter Zijlstra <[email protected]>
Cc Stephane Eranian <[email protected]>
Signed-off-by Arnaldo Carvalho de Melo <[email protected]>
--- tools/perf/util/symbol-elf.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-)
tools/perf/util/symbol-elf.c +11 -9
@@ -579,32 +579,34 @@ static int dso__swap_init(struct dso *dso, unsigned char eidata)static int decompress_kmodule (struct dso *dso,const char *name,enum dso_binary_type type) { -int fd; -const char *ext =strrchr (name,'.' ); +int fd =-1 ;char tmpbuf[] ="/tmp/perf-kmod-XXXXXX" ; +struct kmod_path m;if (type !=DSO_BINARY_TYPE__SYSTEM_PATH_KMODULE_COMP && type !=DSO_BINARY_TYPE__GUEST_KMODULE_COMP && type !=DSO_BINARY_TYPE__BUILD_ID_CACHE )return -1 ; -if (!ext || !is_supported_compression (ext +1 )) { - ext =strrchr (dso->name,'.' ); -if (!ext || !is_supported_compression (ext +1 )) -return -1 ; - } +if (type ==DSO_BINARY_TYPE__BUILD_ID_CACHE ) + name = dso->long_name; + +if (kmod_path__parse_ext (&m, name) || !m.comp) +return -1 ; fd =mkstemp (tmpbuf);if (fd <0 ) -return -1 ; + goto out; -if (!decompress_to_file (ext +1 , name, fd)) { +if (!decompress_to_file (m.ext, name, fd)) {close (fd); fd =-1 ; }unlink (tmpbuf); +out: +free (m.ext);return fd; }