From: Denys Vlasenko Date: Mon, 1 Jul 2013 11:02:33 +0000 (+0200) Subject: Convert trace() from returning int to returning void X-Git-Tag: v4.9~207 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d0ffdf494ac722f3d121c6e807f105000409e6a6;p=strace Convert trace() from returning int to returning void The cleanup sequence in error cases, and on normal code path was nearly the same, no point in duplicating it. Signed-off-by: Denys Vlasenko --- diff --git a/strace.c b/strace.c index 10339815..4c70b988 100644 --- a/strace.c +++ b/strace.c @@ -158,7 +158,6 @@ static const char *progname; unsigned os_release; /* generated from uname()'s u.release */ static void detach(struct tcb *tcp); -static int trace(void); static void cleanup(void); static void interrupt(int sig); static sigset_t empty_set, blocked_set; @@ -1958,7 +1957,7 @@ interrupt(int sig) interrupted = sig; } -static int +static void trace(void) { struct rusage ru; @@ -1972,7 +1971,7 @@ trace(void) unsigned event; if (interrupted) - return 0; + return; if (interactive) sigprocmask(SIG_SETMASK, &empty_set, NULL); @@ -1986,10 +1985,9 @@ trace(void) continue; if (wait_errno == ECHILD) /* Should not happen since nprocs > 0 */ - return 0; + return; errno = wait_errno; - perror_msg("wait4(__WALL)"); - return -1; + perror_msg_and_die("wait4(__WALL)"); } if (pid == popen_pid) { @@ -2198,8 +2196,8 @@ trace(void) if (clearbpt(tcp) < 0) { /* Pretty fatal */ droptcb(tcp); - cleanup(); - return -1; + exit_code = 1; + return; } } if (ptrace_setoptions) { @@ -2289,8 +2287,9 @@ trace(void) * (that is, process really stops. It used to continue to run). */ if (ptrace_restart(PTRACE_LISTEN, tcp, 0) < 0) { - cleanup(); - return -1; + /* Note: ptrace_restart emitted error message */ + exit_code = 1; + return; } continue; } @@ -2300,7 +2299,7 @@ trace(void) /* We handled quick cases, we are permitted to interrupt now. */ if (interrupted) - return 0; + return; /* This should be syscall entry or exit. * (Or it still can be that pesky post-execve SIGTRAP!) @@ -2323,11 +2322,11 @@ trace(void) sig = 0; restart_tracee: if (ptrace_restart(PTRACE_SYSCALL, tcp, sig) < 0) { - cleanup(); - return -1; + /* Note: ptrace_restart emitted error message */ + exit_code = 1; + return; } - } - return 0; + } /* while (nprocs != 0) */ } int @@ -2336,8 +2335,7 @@ main(int argc, char *argv[]) init(argc, argv); /* Run main tracing loop */ - if (trace() < 0) - return 1; + trace(); cleanup(); fflush(NULL);