|
@@ -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;
|
|
|
}
|