aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tools/perf/util/build-id.c30
1 files changed, 4 insertions, 26 deletions
diff --git a/tools/perf/util/build-id.c b/tools/perf/util/build-id.c
index b6ecf87bc3e3..bff425e1232c 100644
--- a/tools/perf/util/build-id.c
+++ b/tools/perf/util/build-id.c
@@ -365,39 +365,17 @@ static char *build_id_cache__dirname_from_path(const char *name,
365int build_id_cache__list_build_ids(const char *pathname, 365int build_id_cache__list_build_ids(const char *pathname,
366 struct strlist **result) 366 struct strlist **result)
367{ 367{
368 struct strlist *list;
369 char *dir_name; 368 char *dir_name;
370 DIR *dir;
371 struct dirent *d;
372 int ret = 0; 369 int ret = 0;
373 370
374 list = strlist__new(NULL, NULL);
375 dir_name = build_id_cache__dirname_from_path(pathname, false, false); 371 dir_name = build_id_cache__dirname_from_path(pathname, false, false);
376 if (!list || !dir_name) { 372 if (!dir_name)
377 ret = -ENOMEM; 373 return -ENOMEM;
378 goto out;
379 }
380 374
381 /* List up all dirents */ 375 *result = lsdir(dir_name, lsdir_no_dot_filter);
382 dir = opendir(dir_name); 376 if (!*result)
383 if (!dir) {
384 ret = -errno; 377 ret = -errno;
385 goto out;
386 }
387
388 while ((d = readdir(dir)) != NULL) {
389 if (!strcmp(d->d_name, ".") || !strcmp(d->d_name, ".."))
390 continue;
391 strlist__add(list, d->d_name);
392 }
393 closedir(dir);
394
395out:
396 free(dir_name); 378 free(dir_name);
397 if (ret)
398 strlist__delete(list);
399 else
400 *result = list;
401 379
402 return ret; 380 return ret;
403} 381}