diff options
Diffstat (limited to 'tools/perf/perf.c')
| -rw-r--r-- | tools/perf/perf.c | 32 | 
1 files changed, 21 insertions, 11 deletions
diff --git a/tools/perf/perf.c b/tools/perf/perf.c index 0f661fbce6a..095b88207cd 100644 --- a/tools/perf/perf.c +++ b/tools/perf/perf.c @@ -328,14 +328,23 @@ static int run_builtin(struct cmd_struct *p, int argc, const char **argv)  	if (S_ISFIFO(st.st_mode) || S_ISSOCK(st.st_mode))  		return 0; +	status = 1;  	/* Check for ENOSPC and EIO errors.. */ -	if (fflush(stdout)) -		die("write failure on standard output: %s", strerror(errno)); -	if (ferror(stdout)) -		die("unknown write failure on standard output"); -	if (fclose(stdout)) -		die("close failed on standard output: %s", strerror(errno)); -	return 0; +	if (fflush(stdout)) { +		fprintf(stderr, "write failure on standard output: %s", strerror(errno)); +		goto out; +	} +	if (ferror(stdout)) { +		fprintf(stderr, "unknown write failure on standard output"); +		goto out; +	} +	if (fclose(stdout)) { +		fprintf(stderr, "close failed on standard output: %s", strerror(errno)); +		goto out; +	} +	status = 0; +out: +	return status;  }  static void handle_internal_command(int argc, const char **argv) @@ -467,7 +476,8 @@ int main(int argc, const char **argv)  		cmd += 5;  		argv[0] = cmd;  		handle_internal_command(argc, argv); -		die("cannot handle %s internally", cmd); +		fprintf(stderr, "cannot handle %s internally", cmd); +		goto out;  	}  	/* Look for flags.. */ @@ -485,7 +495,7 @@ int main(int argc, const char **argv)  		printf("\n usage: %s\n\n", perf_usage_string);  		list_common_cmds_help();  		printf("\n %s\n\n", perf_more_info_string); -		exit(1); +		goto out;  	}  	cmd = argv[0]; @@ -517,7 +527,7 @@ int main(int argc, const char **argv)  			fprintf(stderr, "Expansion of alias '%s' failed; "  				"'%s' is not a perf-command\n",  				cmd, argv[0]); -			exit(1); +			goto out;  		}  		if (!done_help) {  			cmd = argv[0] = help_unknown_cmd(cmd); @@ -528,6 +538,6 @@ int main(int argc, const char **argv)  	fprintf(stderr, "Failed to run command '%s': %s\n",  		cmd, strerror(errno)); - +out:  	return 1;  }  |