aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/util/session.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/perf/util/session.c')
-rw-r--r--tools/perf/util/session.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c
index ea17dfb85baa..cc5e6be46d86 100644
--- a/tools/perf/util/session.c
+++ b/tools/perf/util/session.c
@@ -107,8 +107,19 @@ struct perf_session *perf_session__new(const char *filename, int mode,
107 bool force, bool repipe, 107 bool force, bool repipe,
108 struct perf_tool *tool) 108 struct perf_tool *tool)
109{ 109{
110 size_t len = filename ? strlen(filename) : 0; 110 struct perf_session *self;
111 struct perf_session *self = zalloc(sizeof(*self) + len); 111 struct stat st;
112 size_t len;
113
114 if (!filename || !strlen(filename)) {
115 if (!fstat(STDIN_FILENO, &st) && S_ISFIFO(st.st_mode))
116 filename = "-";
117 else
118 filename = "perf.data";
119 }
120
121 len = strlen(filename);
122 self = zalloc(sizeof(*self) + len);
112 123
113 if (self == NULL) 124 if (self == NULL)
114 goto out; 125 goto out;