diff options
author | Nate Straz <nstraz@redhat.com> | 2007-01-05 23:09:14 +0000 |
---|---|---|
committer | Nathan Straz <nstraz@redhat.com> | 2008-09-23 09:37:46 -0400 |
commit | 3a07ad842fcae0f59c449082a0aa6fdf06a9ed35 (patch) | |
tree | 62956e985419e2212cea0b49c9ed674717f58c2b | |
parent | a23532c0b4f1a9bf1bc5a887b9c1a14101c100d2 (diff) | |
download | qarsh-3a07ad842fcae0f59c449082a0aa6fdf06a9ed35.tar.gz qarsh-3a07ad842fcae0f59c449082a0aa6fdf06a9ed35.tar.xz qarsh-3a07ad842fcae0f59c449082a0aa6fdf06a9ed35.zip |
Push processing of the remote command status to main() so it can be
reproduced properly by qarsh.
Return 127 as an exit code on internal error cases.
-rw-r--r-- | qarsh.c | 19 |
1 files changed, 10 insertions, 9 deletions
@@ -349,20 +349,16 @@ run_remote_cmd(char *cmdline) if (hbeat_getstate(qarsh_hb) == HOST_TIMEOUT) { fprintf(stderr, "Didn't receive heartbeat for %d seconds\n", hbeat_getmaxtimeout(qarsh_hb)); - return 127; + return W_EXITCODE(127, 0); } else if (hbeat_getstate(qarsh_hb) == HOST_REBOOT) { fprintf(stderr, "Remote host rebooted\n"); - return 127; + return W_EXITCODE(127, 0); } if (qp == NULL) { fprintf(stderr, "Remote command exited with unknown state\n"); - return 127; - } - if (WIFSIGNALED(qp->qp_cmdexit.qp_status)) { - rc = 128 + WTERMSIG(qp->qp_cmdexit.qp_status); - } else { - rc = WEXITSTATUS(qp->qp_cmdexit.qp_status); + return W_EXITCODE(127, 0); } + rc = qp->qp_cmdexit.qp_status; qpfree(qp); return rc; } @@ -492,5 +488,10 @@ again: ret = run_remote_cmd(args); close(qarsh_fd); free(args); - return ret; + /* If the remote cmd was killed, we need to be killed too */ + if (WIFSIGNALED(ret)) { + raise(WTERMSIG(ret)); + } + /* Otherwise we need to exit with the same exit status */ + return WEXITSTATUS(ret); } |