mirror of
https://github.com/sheumann/hush.git
synced 2024-12-27 01:32:08 +00:00
telnet: use poll, it's shorter
*: style fixes
This commit is contained in:
parent
cd0fbb5e77
commit
1bec1b980e
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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)
|
||||||
{
|
{
|
||||||
|
@ -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);
|
||||||
|
Loading…
Reference in New Issue
Block a user