From 95234c8e9fcfe876fd9e18b755ae90fab3cc10ce Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Sat, 11 Jun 2005 16:38:58 +0000 Subject: [PATCH] (ioq_gets): Support telnet line termination "\r\n". Previously, string input other than through parse() or getele() failed to strip '\r', which could end up in ship names and such. (getele): Code dealing with '\r' is now redundant, remove. It ceased to work in rev. 1.6 because input filtering replaces '\r' by '?'. --- src/lib/gen/ioqueue.c | 3 +++ src/lib/subs/getele.c | 7 ++----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/lib/gen/ioqueue.c b/src/lib/gen/ioqueue.c index a7927686..41f68cda 100644 --- a/src/lib/gen/ioqueue.c +++ b/src/lib/gen/ioqueue.c @@ -163,6 +163,9 @@ ioq_gets(struct ioqueue *ioq, s_char *buf, int cc) actual = nbytes; if (actual > cc - 1) actual = cc - 1; + /* telnet terminates lines with "\r\n", get rid of \r */ + if (actual > 0 && buf[actual-1] == '\r') + actual--; buf[actual] = '\0'; /* remove the newline too */ removecc(ioq, nbytes + 1); diff --git a/src/lib/subs/getele.c b/src/lib/subs/getele.c index 20c7e9e8..0d1c4e2d 100644 --- a/src/lib/subs/getele.c +++ b/src/lib/subs/getele.c @@ -75,9 +75,7 @@ getele(char *nation, char *buf /* buf is message text */) uprnf(buf); continue; } - if (buffer[0] == '.' && ((buffer[1] == 0) - || (buffer[1] == '\n') - || (buffer[1] == '\r'))) + if (buffer[0] == '.' && buffer[1] == 0) break; len = strlen(buffer); buffer[len++] = '\n'; @@ -101,8 +99,7 @@ getele(char *nation, char *buf /* buf is message text */) static int tilde_escape(s_char *s, s_char c) { - if (s[0] == '~' && s[1] == c && - ((s[2] == 0) || (s[2] == '\n') || (s[2] == '\r'))) + if (s[0] == '~' && s[1] == c && s[2] == 0) return 1; return 0; }