summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenis Vlasenko2007-11-06 02:23:39 +0000
committerDenis Vlasenko2007-11-06 02:23:39 +0000
commit1bec1b980e3cf5ad604fb0c2038a3ab83d9ab5f5 (patch)
tree924352d9309f62c733927506ed08086a2880556c
parentcd0fbb5e778e3cef7f88b71a55b673cbdf7cee85 (diff)
downloadbusybox-1bec1b980e3cf5ad604fb0c2038a3ab83d9ab5f5.zip
busybox-1bec1b980e3cf5ad604fb0c2038a3ab83d9ab5f5.tar.gz
telnet: use poll, it's shorter
*: style fixes
-rw-r--r--modutils/insmod.c3
-rw-r--r--networking/inetd.c3
-rw-r--r--networking/route.c7
-rw-r--r--networking/telnet.c142
-rw-r--r--networking/udhcp/files.c6
5 files changed, 80 insertions, 81 deletions
diff --git a/modutils/insmod.c b/modutils/insmod.c
index 7d51d9d..4620f6f 100644
--- a/modutils/insmod.c
+++ b/modutils/insmod.c
@@ -1951,7 +1951,8 @@ static unsigned long obj_elf_hash_n(const char *name, unsigned long n)
while (n > 0) {
ch = *name++;
h = (h << 4) + ch;
- if ((g = (h & 0xf0000000)) != 0) {
+ g = (h & 0xf0000000);
+ if (g != 0) {
h ^= g >> 24;
h &= ~g;
}
diff --git a/networking/inetd.c b/networking/inetd.c
index 94d3df6..9c17c92 100644
--- a/networking/inetd.c
+++ b/networking/inetd.c
@@ -430,7 +430,8 @@ static void register_rpc(servtab_t *sep)
struct protoent *pp;
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);
return;
}
diff --git a/networking/route.c b/networking/route.c
index 3425e63..6f945b9 100644
--- a/networking/route.c
+++ b/networking/route.c
@@ -352,9 +352,10 @@ static void INET6_setroute(int action, char **args)
memset(&sa6, 0, sizeof(sa6));
} else {
char *cp;
- if ((cp = strchr(target, '/'))) { /* Yes... const to non is ok. */
- *cp = 0;
- prefix_len = xatoul_range(cp+1, 0, 128);
+ cp = strchr(target, '/'); /* Yes... const to non is ok. */
+ if (cp) {
+ *cp = '\0';
+ prefix_len = xatoul_range(cp + 1, 0, 128);
} else {
prefix_len = 128;
}
diff --git a/networking/telnet.c b/networking/telnet.c
index 9085c58..78229cd 100644
--- a/networking/telnet.c
+++ b/networking/telnet.c
@@ -101,6 +101,7 @@ static void iacflush(void)
#define write_str(fd, str) write(fd, str, sizeof(str) - 1)
+static void doexit(int ev) ATTRIBUTE_NORETURN;
static void doexit(int ev)
{
cookmode();
@@ -157,31 +158,29 @@ static void conescape(void)
static void handlenetoutput(int len)
{
- /* here we could do smart tricks how to handle 0xFF:s in output
- * stream like writing twice every sequence of FF:s (thus doing
- * many write()s. But I think interactive telnet application does
- * not need to be 100% 8-bit clean, so changing every 0xff:s to
- * 0x7f:s
+ /* here we could do smart tricks how to handle 0xFF:s in output
+ * stream like writing twice every sequence of FF:s (thus doing
+ * many write()s. But I think interactive telnet application does
+ * not need to be 100% 8-bit clean, so changing every 0xff:s to
+ * 0x7f:s
*
- * 2002-mar-21, Przemyslaw Czerpak (druzus@polbox.com)
- * I don't agree.
- * first - I cannot use programs like sz/rz
- * second - the 0x0D is sent as one character and if the next
- * char is 0x0A then it's eaten by a server side.
- * third - whay doy you have to make 'many write()s'?
- * I don't understand.
- * So I implemented it. It's realy useful for me. I hope that
- * others people will find it interesting to.
+ * 2002-mar-21, Przemyslaw Czerpak (druzus@polbox.com)
+ * I don't agree.
+ * first - I cannot use programs like sz/rz
+ * second - the 0x0D is sent as one character and if the next
+ * char is 0x0A then it's eaten by a server side.
+ * third - whay doy you have to make 'many write()s'?
+ * I don't understand.
+ * So I implemented it. It's realy useful for me. I hope that
+ * others people will find it interesting too.
*/
int i, j;
byte * p = (byte*)G.buf;
byte outbuf[4*DATABUFSIZE];
- for (i = len, j = 0; i > 0; i--, p++)
- {
- if (*p == 0x1d)
- {
+ for (i = len, j = 0; i > 0; i--, p++) {
+ if (*p == 0x1d) {
conescape();
return;
}
@@ -200,68 +199,59 @@ static void handlenetinput(int len)
int i;
int cstart = 0;
- for (i = 0; i < len; i++)
- {
+ for (i = 0; i < len; i++) {
byte c = G.buf[i];
- if (G.telstate == 0) /* most of the time state == 0 */
- {
- if (c == IAC)
- {
+ if (G.telstate == 0) { /* most of the time state == 0 */
+ if (c == IAC) {
cstart = i;
G.telstate = TS_IAC;
}
- }
- else
- switch (G.telstate)
- {
- case TS_0:
- if (c == IAC)
- G.telstate = TS_IAC;
- else
- G.buf[cstart++] = c;
- break;
-
- case TS_IAC:
- if (c == IAC) /* IAC IAC -> 0xFF */
- {
- G.buf[cstart++] = c;
- G.telstate = TS_0;
- break;
- }
- /* else */
- switch (c)
- {
- case SB:
- G.telstate = TS_SUB1;
- break;
- case DO:
- case DONT:
- case WILL:
- case WONT:
- G.telwish = c;
- G.telstate = TS_OPT;
- break;
- default:
- G.telstate = TS_0; /* DATA MARK must be added later */
- }
- break;
- case TS_OPT: /* WILL, WONT, DO, DONT */
- telopt(c);
- G.telstate = TS_0;
- break;
- case TS_SUB1: /* Subnegotiation */
- case TS_SUB2: /* Subnegotiation */
- if (subneg(c))
- G.telstate = TS_0;
- break;
- }
+ } else
+ switch (G.telstate) {
+ case TS_0:
+ if (c == IAC)
+ G.telstate = TS_IAC;
+ else
+ G.buf[cstart++] = c;
+ break;
+
+ case TS_IAC:
+ if (c == IAC) { /* IAC IAC -> 0xFF */
+ G.buf[cstart++] = c;
+ G.telstate = TS_0;
+ break;
+ }
+ /* else */
+ switch (c) {
+ case SB:
+ G.telstate = TS_SUB1;
+ break;
+ case DO:
+ case DONT:
+ case WILL:
+ case WONT:
+ G.telwish = c;
+ G.telstate = TS_OPT;
+ break;
+ default:
+ G.telstate = TS_0; /* DATA MARK must be added later */
+ }
+ break;
+ case TS_OPT: /* WILL, WONT, DO, DONT */
+ telopt(c);
+ G.telstate = TS_0;
+ break;
+ case TS_SUB1: /* Subnegotiation */
+ case TS_SUB2: /* Subnegotiation */
+ if (subneg(c))
+ G.telstate = TS_0;
+ break;
+ }
}
- if (G.telstate)
- {
- if (G.iaclen) iacflush();
+ if (G.telstate) {
+ if (G.iaclen) iacflush();
if (G.telstate == TS_0) G.telstate = 0;
-
len = cstart;
}
@@ -440,7 +430,8 @@ static void to_sga(void)
} else if (G.telwish == WONT)
return;
- if ((G.telflags ^= UF_SGA) & UF_SGA) /* toggle */
+ G.telflags ^= UF_SGA; /* toggle */
+ if (G.telflags & UF_SGA)
putiac2(DO, TELOPT_SGA);
else
putiac2(DONT, TELOPT_SGA);
@@ -550,6 +541,9 @@ static void cookmode(void)
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)
{
diff --git a/networking/udhcp/files.c b/networking/udhcp/files.c
index 8ed4855..59a5e4a 100644
--- a/networking/udhcp/files.c
+++ b/networking/udhcp/files.c
@@ -343,8 +343,10 @@ int read_config(const char *file)
p = strchr(buffer, '#');
if (p) *p = '\0';
- if (!(token = strtok(buffer, " \t"))) continue;
- if (!(line = strtok(NULL, ""))) continue;
+ token = strtok(buffer, " \t");
+ if (!token) continue;
+ line = strtok(NULL, "");
+ if (!line) continue;
/* eat leading whitespace */
line = skip_whitespace(line);