diff options
| author | Franklin Wei <git@fwei.tk> | 2015-12-07 22:19:18 -0500 |
|---|---|---|
| committer | Franklin Wei <git@fwei.tk> | 2015-12-07 22:19:18 -0500 |
| commit | 33e3462fb86a715e6f71e387233e36c7be255038 (patch) | |
| tree | 06560056c0777446288f377b2e125b07368d6f9a /src/client.c | |
| parent | 0f3bd99c40594c46b5b4bb0603085ec9cc111e0e (diff) | |
| download | netcosm-33e3462fb86a715e6f71e387233e36c7be255038.zip netcosm-33e3462fb86a715e6f71e387233e36c7be255038.tar.gz netcosm-33e3462fb86a715e6f71e387233e36c7be255038.tar.bz2 netcosm-33e3462fb86a715e6f71e387233e36c7be255038.tar.xz | |
refactor
Diffstat (limited to 'src/client.c')
| -rw-r--r-- | src/client.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/client.c b/src/client.c index 4ed944c..4835881 100644 --- a/src/client.c +++ b/src/client.c @@ -58,6 +58,8 @@ void all_upper(char *s) } } +volatile sig_atomic_t done_printing; + void sigusr2_handler(int s) { (void) s; @@ -65,6 +67,7 @@ void sigusr2_handler(int s) size_t len = read(from_parent, buf, MSG_MAX); buf[MSG_MAX] = '\0'; out_raw(buf, len); + done_printing = 1; } void client_change_state(int state) @@ -235,12 +238,19 @@ void client_main(int fd, struct sockaddr_in *addr, int total, int to, int from) auth_list_users(); } } - else if(!strcmp(tok, "CLIENTS")) + else if(!strcmp(tok, "CLIENT")) { - unsigned char cmd_code = REQ_LISTCLIENTS; - write(to_parent, &cmd_code, sizeof(cmd_code)); - kill(getppid(), SIGUSR1); - waitpid(-1, NULL, 0); + char *what = strtok_r(NULL, WSPACE, &save); + all_upper(what); + if(!strcmp(what, "LIST")) + { + done_printing = 0; + unsigned char cmd_code = REQ_LISTCLIENTS; + write(to_parent, &cmd_code, sizeof(cmd_code)); + kill(getppid(), SIGUSR1); + waitpid(-1, NULL, 0); + while(!done_printing); + } } } |