From: Masami Hiramatsu <masami.hiramatsu...@hitachi.com>

Use new lsdir() for looking up buildid caches. This changes
logic a bit to ignore all dot files, since the build-id
cache must not start with dot.

Signed-off-by: Masami Hiramatsu <masami.hiramatsu...@hitachi.com>
Signed-off-by: Masami Hiramatsu <mhira...@kernel.org>
---
 tools/perf/util/build-id.c |   30 +++++-------------------------
 1 file changed, 5 insertions(+), 25 deletions(-)

diff --git a/tools/perf/util/build-id.c b/tools/perf/util/build-id.c
index b035483..848e05f 100644
--- a/tools/perf/util/build-id.c
+++ b/tools/perf/util/build-id.c
@@ -400,38 +400,18 @@ int build_id_cache__list_build_ids(const char *pathname,
 {
        struct strlist *list;
        char *dir_name;
-       DIR *dir;
-       struct dirent *d;
        int ret = 0;
 
-       list = strlist__new(NULL, NULL);
        dir_name = build_id_cache__dirname_from_path(pathname, false, false,
                                                     NULL);
-       if (!list || !dir_name) {
-               ret = -ENOMEM;
-               goto out;
-       }
+       if (!dir_name)
+               return -ENOMEM;
 
-       /* List up all dirents */
-       dir = opendir(dir_name);
-       if (!dir) {
+       list = lsdir(dir_name, lsdir_no_dot_filter);
+       if (!list)
                ret = -errno;
-               goto out;
-       }
-
-       while ((d = readdir(dir)) != NULL) {
-               if (!strcmp(d->d_name, ".") || !strcmp(d->d_name, ".."))
-                       continue;
-               strlist__add(list, d->d_name);
-       }
-       closedir(dir);
-
-out:
+       *result = list;
        free(dir_name);
-       if (ret)
-               strlist__delete(list);
-       else
-               *result = list;
 
        return ret;
 }

Reply via email to