+ if (signal_alarm_hit)
+ {
+ char *buf;
+
+ if (asprintf (&buf, "Timed out after %d seconds", timeout) != -1)
+ {
+ print_child_error (buf, argv);
+ free (buf);
+ }
+ rc = 128 + SIGALRM;
+ }
+ else if (WIFEXITED (status))
+ rc = WEXITSTATUS (status);
+ else if (WIFSIGNALED (status))
+ {
+ print_child_error (strsignal (WTERMSIG (status)), argv);
+ rc = 128 + WTERMSIG (status);
+ }
+ else if (WIFSTOPPED (status))
+ {
+ fprintf (stderr, "waitpid (%d): WIFSTOPPED - WSTOPSIG is %d\n",
+ (int) child, WSTOPSIG (status));
+ exit (EXIT_FAILURE);
+ }
+ else