From 225f0f513243a45440cbc2a4e0400b491ff47a97 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Fri, 14 Dec 2007 07:44:12 +0000 Subject: [PATCH] (parseid): New, factored out of recvline() and recv_output(). (recvline, recv_output): Use it. --- src/client/expect.c | 17 ++++++++++++----- src/client/misc.h | 1 + src/client/play.c | 13 ++++--------- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/client/expect.c b/src/client/expect.c index cb0e9571c..d278eba4c 100644 --- a/src/client/expect.c +++ b/src/client/expect.c @@ -58,10 +58,9 @@ int recvline(int s, char *buf) { int sz = 1024; - char *bp, *end; + char *bp; char ch; ssize_t n; - long id; bp = buf; for (;;) { @@ -84,10 +83,18 @@ recvline(int s, char *buf) *bp++ = ch; *bp = 0; + return parseid(buf); +} + +int +parseid(char *line) +{ + char *end; + long id; - id = strtol(buf, &end, 16); - if (end == buf || *end != ' ') { - fprintf(stderr, "Malformed id in line %s", buf); + id = strtol(line, &end, 16); + if (end == line || *end != ' ') { + fprintf(stderr, "Malformed id in line %s", line); id = -1; } if (id > C_LAST) diff --git a/src/client/misc.h b/src/client/misc.h index 2b6329471..05d4f3d56 100644 --- a/src/client/misc.h +++ b/src/client/misc.h @@ -57,6 +57,7 @@ void putso(void); void putse(void); #endif int recvline(int s, char *buf); +int parseid(char *); int expect(int s, int match, char *buf); int tcp_connect(char *, char *); int login(int s, char *uname, char *cname, char *cpass, int kill_proc, int); diff --git a/src/client/play.c b/src/client/play.c index 22a1add8b..072c5e754 100644 --- a/src/client/play.c +++ b/src/client/play.c @@ -322,7 +322,7 @@ recv_output(int sock) char buf[4096]; ssize_t n; int i, ch, len; - char *line, *end; + char *line; n = read(sock, buf, sizeof(buf)); if (n < 0) @@ -337,16 +337,11 @@ recv_output(int sock) lbuf_init(&lbuf); break; } - if (ch != ' ') { - lbuf_putc(&lbuf, ch); + lbuf_putc(&lbuf, ch); + if (ch != ' ') break; - } line = lbuf_line(&lbuf); - id = strtol(line, &end, 16); - if (end == line || *end) { - /* FIXME gripe bad id */ - id = -1; - } + id = parseid(line); lbuf_init(&lbuf); switch (id) { -- 2.43.0