diff options
Diffstat (limited to 'tools/perf/builtin-script.c')
| -rw-r--r-- | tools/perf/builtin-script.c | 39 | 
1 files changed, 8 insertions, 31 deletions
diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c index 2d8cb1d1682c..53f78cf3113f 100644 --- a/tools/perf/builtin-script.c +++ b/tools/perf/builtin-script.c @@ -3699,37 +3699,13 @@ int cmd_script(int argc, const char **argv)  	if (err < 0)  		goto out_delete; -	script.ptime_range = perf_time__range_alloc(script.time_str, -						    &script.range_size); -	if (!script.ptime_range) { -		err = -ENOMEM; -		goto out_delete; -	} - -	/* needs to be parsed after looking up reference time */ -	if (perf_time__parse_str(script.ptime_range, script.time_str) != 0) { -		if (session->evlist->first_sample_time == 0 && -		    session->evlist->last_sample_time == 0) { -			pr_err("HINT: no first/last sample time found in perf data.\n" -			       "Please use latest perf binary to execute 'perf record'\n" -			       "(if '--buildid-all' is enabled, please set '--timestamp-boundary').\n"); -			err = -EINVAL; -			goto out_delete; -		} - -		script.range_num = perf_time__percent_parse_str( -					script.ptime_range, script.range_size, -					script.time_str, -					session->evlist->first_sample_time, -					session->evlist->last_sample_time); - -		if (script.range_num < 0) { -			pr_err("Invalid time string\n"); -			err = -EINVAL; +	if (script.time_str) { +		err = perf_time__parse_for_ranges(script.time_str, session, +						  &script.ptime_range, +						  &script.range_size, +						  &script.range_num); +		if (err < 0)  			goto out_delete; -		} -	} else { -		script.range_num = 1;  	}  	err = __cmd_script(&script); @@ -3737,7 +3713,8 @@ int cmd_script(int argc, const char **argv)  	flush_scripting();  out_delete: -	zfree(&script.ptime_range); +	if (script.ptime_range) +		zfree(&script.ptime_range);  	perf_evlist__free_stats(session->evlist);  	perf_session__delete(session);  | 
