diff options
| author | Franklin Wei <git@fwei.tk> | 2016-02-12 21:54:42 -0500 |
|---|---|---|
| committer | Franklin Wei <git@fwei.tk> | 2016-02-16 20:42:49 -0500 |
| commit | b110e7e0c519cc9575f8d224f0f75aca0d73946f (patch) | |
| tree | c3f33326a5e4822f2251e8d7370294096ab2eba4 /src/client.c | |
| parent | a006044fbcb3355f0fa063720e7c41f4971894a0 (diff) | |
| download | netcosm-b110e7e0c519cc9575f8d224f0f75aca0d73946f.zip netcosm-b110e7e0c519cc9575f8d224f0f75aca0d73946f.tar.gz netcosm-b110e7e0c519cc9575f8d224f0f75aca0d73946f.tar.bz2 netcosm-b110e7e0c519cc9575f8d224f0f75aca0d73946f.tar.xz | |
support multiple objects sharing the same name
Diffstat (limited to 'src/client.c')
| -rw-r--r-- | src/client.c | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/src/client.c b/src/client.c index 62b9fbe..a90dc4b 100644 --- a/src/client.c +++ b/src/client.c @@ -80,7 +80,7 @@ void __attribute__((format(printf,1,2))) out(const char *fmt, ...) while(ptr[pos]) { bool is_newline = (ptr[pos] == '\n'); - if(is_newline || pos >= line_width) + if(is_newline || pos >= line_width - 1) { if(is_newline || !last_space) last_space = pos; @@ -270,9 +270,17 @@ bool poll_requests(void) size_t datalen = packetlen - 1; packet[MSG_MAX] = '\0'; - if(packetlen <= 0) + /* no data yet */ + if(packetlen < 0) goto fail; + /* parent closed pipe */ + if(!packetlen) + { + debugf("master process died\n"); + exit(0); + } + got_cmd = true; unsigned char cmd = packet[0]; @@ -285,6 +293,7 @@ bool poll_requests(void) break; } case REQ_KICK: + { out((char*)data, datalen); exit(EXIT_SUCCESS); @@ -626,7 +635,7 @@ int logout_cb(char **save) int look_cb(char **save) { - char *what = strtok_r(NULL, " ", save); + char *what = strtok_r(NULL, "", save); if(!what) client_look(); else @@ -645,7 +654,7 @@ int inventory_cb(char **save) int take_cb(char **save) { - char *what = strtok_r(NULL, " ", save); + char *what = strtok_r(NULL, "", save); client_take(what); return CMD_OK; } @@ -673,7 +682,7 @@ int go_cb(char **save) int drop_cb(char **save) { - char *what = strtok_r(NULL, " ", save); + char *what = strtok_r(NULL, "", save); client_drop(what); return CMD_OK; } @@ -826,6 +835,8 @@ auth: case CMD_OK: goto next_cmd; case CMD_LOGOUT: + free(line); + free(orig); goto auth; case CMD_QUIT: free(line); |