aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/util/path.c
diff options
context:
space:
mode:
authorJiri Olsa <jolsa@kernel.org>2017-12-06 18:45:35 +0100
committerArnaldo Carvalho de Melo <acme@redhat.com>2017-12-27 12:15:48 -0300
commit06c3f2aa9fc68e7f3fe3d83e7569d2a2801d9f99 (patch)
tree36061880d13768b6761cdf2e6aac9a76be5d15e1 /tools/perf/util/path.c
parentperf stat: Resort '--per-thread' result (diff)
downloadlinux-dev-06c3f2aa9fc68e7f3fe3d83e7569d2a2801d9f99.tar.xz
linux-dev-06c3f2aa9fc68e7f3fe3d83e7569d2a2801d9f99.zip
perf utils: Move is_directory() to path.h
So that it can be used more widely, like in the next patch, when it will be used to fix a bug in 'perf test' handling of dirent.d_type == DT_UNKNOWN. Signed-off-by: Jiri Olsa <jolsa@kernel.org> Cc: David Ahern <dsahern@gmail.com> Cc: Michael Petlan <mpetlan@redhat.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/20171206174535.25380-1-jolsa@kernel.org [ Split from a larger patch, removed needless includes in path.h ] Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/util/path.c')
-rw-r--r--tools/perf/util/path.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/tools/perf/util/path.c b/tools/perf/util/path.c
index 933f5c6bffb4..ca56ba2dd3da 100644
--- a/tools/perf/util/path.c
+++ b/tools/perf/util/path.c
@@ -18,6 +18,7 @@
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
+#include <dirent.h>
#include <unistd.h>
static char bad_path[] = "/bad-path/";
@@ -77,3 +78,16 @@ bool is_regular_file(const char *file)
return S_ISREG(st.st_mode);
}
+
+/* Helper function for filesystems that return a dent->d_type DT_UNKNOWN */
+bool is_directory(const char *base_path, const struct dirent *dent)
+{
+ char path[PATH_MAX];
+ struct stat st;
+
+ sprintf(path, "%s/%s", base_path, dent->d_name);
+ if (stat(path, &st))
+ return false;
+
+ return S_ISDIR(st.st_mode);
+}