telnet: use poll, it's shorter

*: style fixes
This commit is contained in:
Denis Vlasenko 2007-11-06 02:23:39 +00:00
parent cd0fbb5e77
commit 1bec1b980e
5 changed files with 79 additions and 80 deletions

View File

@ -1951,7 +1951,8 @@ static unsigned long obj_elf_hash_n(const char *name, unsigned long n)
while (n > 0) { while (n > 0) {
ch = *name++; ch = *name++;
h = (h << 4) + ch; h = (h << 4) + ch;
if ((g = (h & 0xf0000000)) != 0) { g = (h & 0xf0000000);
if (g != 0) {
h ^= g >> 24; h ^= g >> 24;
h &= ~g; h &= ~g;
} }

View File

@ -430,7 +430,8 @@ static void register_rpc(servtab_t *sep)
struct protoent *pp; struct protoent *pp;
socklen_t size; socklen_t size;
if ((pp = getprotobyname(sep->se_proto + 4)) == NULL) { pp = getprotobyname(sep->se_proto + 4);
if (pp == NULL) {
bb_perror_msg("%s: getproto", sep->se_proto); bb_perror_msg("%s: getproto", sep->se_proto);
return; return;
} }

View File

@ -352,9 +352,10 @@ static void INET6_setroute(int action, char **args)
memset(&sa6, 0, sizeof(sa6)); memset(&sa6, 0, sizeof(sa6));
} else { } else {
char *cp; char *cp;
if ((cp = strchr(target, '/'))) { /* Yes... const to non is ok. */ cp = strchr(target, '/'); /* Yes... const to non is ok. */
*cp = 0; if (cp) {
prefix_len = xatoul_range(cp+1, 0, 128); *cp = '\0';
prefix_len = xatoul_range(cp + 1, 0, 128);
} else { } else {
prefix_len = 128; prefix_len = 128;
} }

View File

@ -101,6 +101,7 @@ static void iacflush(void)
#define write_str(fd, str) write(fd, str, sizeof(str) - 1) #define write_str(fd, str) write(fd, str, sizeof(str) - 1)
static void doexit(int ev) ATTRIBUTE_NORETURN;
static void doexit(int ev) static void doexit(int ev)
{ {
cookmode(); cookmode();
@ -171,17 +172,15 @@ static void handlenetoutput(int len)
* third - whay doy you have to make 'many write()s'? * third - whay doy you have to make 'many write()s'?
* I don't understand. * I don't understand.
* So I implemented it. It's realy useful for me. I hope that * So I implemented it. It's realy useful for me. I hope that
* others people will find it interesting to. * others people will find it interesting too.
*/ */
int i, j; int i, j;
byte * p = (byte*)G.buf; byte * p = (byte*)G.buf;
byte outbuf[4*DATABUFSIZE]; byte outbuf[4*DATABUFSIZE];
for (i = len, j = 0; i > 0; i--, p++) for (i = len, j = 0; i > 0; i--, p++) {
{ if (*p == 0x1d) {
if (*p == 0x1d)
{
conescape(); conescape();
return; return;
} }
@ -200,21 +199,16 @@ static void handlenetinput(int len)
int i; int i;
int cstart = 0; int cstart = 0;
for (i = 0; i < len; i++) for (i = 0; i < len; i++) {
{
byte c = G.buf[i]; byte c = G.buf[i];
if (G.telstate == 0) /* most of the time state == 0 */ if (G.telstate == 0) { /* most of the time state == 0 */
{ if (c == IAC) {
if (c == IAC)
{
cstart = i; cstart = i;
G.telstate = TS_IAC; G.telstate = TS_IAC;
} }
} } else
else switch (G.telstate) {
switch (G.telstate)
{
case TS_0: case TS_0:
if (c == IAC) if (c == IAC)
G.telstate = TS_IAC; G.telstate = TS_IAC;
@ -223,15 +217,13 @@ static void handlenetinput(int len)
break; break;
case TS_IAC: case TS_IAC:
if (c == IAC) /* IAC IAC -> 0xFF */ if (c == IAC) { /* IAC IAC -> 0xFF */
{
G.buf[cstart++] = c; G.buf[cstart++] = c;
G.telstate = TS_0; G.telstate = TS_0;
break; break;
} }
/* else */ /* else */
switch (c) switch (c) {
{
case SB: case SB:
G.telstate = TS_SUB1; G.telstate = TS_SUB1;
break; break;
@ -257,11 +249,9 @@ static void handlenetinput(int len)
break; break;
} }
} }
if (G.telstate) if (G.telstate) {
{
if (G.iaclen) iacflush(); if (G.iaclen) iacflush();
if (G.telstate == TS_0) G.telstate = 0; if (G.telstate == TS_0) G.telstate = 0;
len = cstart; len = cstart;
} }
@ -440,7 +430,8 @@ static void to_sga(void)
} else if (G.telwish == WONT) } else if (G.telwish == WONT)
return; return;
if ((G.telflags ^= UF_SGA) & UF_SGA) /* toggle */ G.telflags ^= UF_SGA; /* toggle */
if (G.telflags & UF_SGA)
putiac2(DO, TELOPT_SGA); putiac2(DO, TELOPT_SGA);
else else
putiac2(DONT, TELOPT_SGA); putiac2(DONT, TELOPT_SGA);
@ -550,6 +541,9 @@ static void cookmode(void)
tcsetattr(0, TCSADRAIN, &G.termios_def); tcsetattr(0, TCSADRAIN, &G.termios_def);
} }
/* poll gives smaller (-70 bytes) code */
#define USE_POLL 1
int telnet_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; int telnet_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int telnet_main(int argc, char **argv) int telnet_main(int argc, char **argv)
{ {

View File

@ -343,8 +343,10 @@ int read_config(const char *file)
p = strchr(buffer, '#'); p = strchr(buffer, '#');
if (p) *p = '\0'; if (p) *p = '\0';
if (!(token = strtok(buffer, " \t"))) continue; token = strtok(buffer, " \t");
if (!(line = strtok(NULL, ""))) continue; if (!token) continue;
line = strtok(NULL, "");
if (!line) continue;
/* eat leading whitespace */ /* eat leading whitespace */
line = skip_whitespace(line); line = skip_whitespace(line);