diff options
| author | Franklin Wei <frankhwei536@gmail.com> | 2016-02-12 21:54:42 -0500 |
|---|---|---|
| committer | Franklin Wei <git@fwei.tk> | 2016-02-16 20:42:49 -0500 |
| commit | e19e49b3c09d094402e916c1a458e9f5e4e51642 (patch) | |
| tree | c3f33326a5e4822f2251e8d7370294096ab2eba4 /src/client.c | |
| parent | c850993ef6fe0422cc60c6af7886045269da70e4 (diff) | |
| download | netcosm-e19e49b3c09d094402e916c1a458e9f5e4e51642.zip netcosm-e19e49b3c09d094402e916c1a458e9f5e4e51642.tar.gz netcosm-e19e49b3c09d094402e916c1a458e9f5e4e51642.tar.bz2 netcosm-e19e49b3c09d094402e916c1a458e9f5e4e51642.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); |