summaryrefslogtreecommitdiffstats
path: root/client.c
diff options
context:
space:
mode:
authorNicholas Marriott <nicm@openbsd.org>2009-07-23 20:24:27 +0000
committerNicholas Marriott <nicm@openbsd.org>2009-07-23 20:24:27 +0000
commit16e017d5a65b68f226835cd200ae3f252b08ed15 (patch)
treec117b427c0654d4cc132691f8b04b3493d5393db /client.c
parentba84ddcf8e64beac0838bbc4097ef1417e85916f (diff)
Tidy client message return slightly: convert flags into an enum, and merge
error string into struct client_ctx as well.
Diffstat (limited to 'client.c')
-rw-r--r--client.c33
1 files changed, 15 insertions, 18 deletions
diff --git a/client.c b/client.c
index 5ad15321..9bd731a8 100644
--- a/client.c
+++ b/client.c
@@ -155,7 +155,7 @@ client_main(struct client_ctx *cctx)
sigcont = 0;
}
- switch (client_msg_dispatch(cctx, &error)) {
+ switch (client_msg_dispatch(cctx)) {
case -1:
goto out;
case 0:
@@ -179,8 +179,10 @@ client_main(struct client_ctx *cctx)
fatal("poll failed");
}
- if (buffer_poll(&pfd, cctx->srv_in, cctx->srv_out) != 0)
- goto server_dead;
+ if (buffer_poll(&pfd, cctx->srv_in, cctx->srv_out) != 0) {
+ cctx->exittype = CCTX_DIED;
+ break;
+ }
}
out:
@@ -188,28 +190,23 @@ out:
printf("[terminated]\n");
return (1);
}
-
- if (cctx->flags & CCTX_SHUTDOWN) {
+ switch (cctx->exittype) {
+ case CCTX_DIED:
+ printf("[lost server]\n");
+ return (0);
+ case CCTX_SHUTDOWN:
printf("[server exited]\n");
return (0);
- }
-
- if (cctx->flags & CCTX_EXIT) {
+ case CCTX_EXIT:
printf("[exited]\n");
return (0);
- }
-
- if (cctx->flags & CCTX_DETACH) {
+ case CCTX_DETACH:
printf("[detached]\n");
return (0);
+ default:
+ printf("[error: %s]\n", cctx->errstr);
+ return (1);
}
-
- printf("[error: %s]\n", error);
- return (1);
-
-server_dead:
- printf("[lost server]\n");
- return (0);
}
void