telnet: shrink telnetd: shrink, and fix issue file printing test: better and shorter usage text
No binary (build failed)
—
(log yok)
| @@ -4015,8 +4015,8 @@ | |
| #define telnet_full_usage "\n\n" \ | |
| "Connect to telnet server\n" \ | |
| "\nOptions:" \ | |
| - | "\n -a Attempt an automatic login with USER variable" \ |
| - | "\n -l USER Attempt an automatic login with USER argument" \ |
| + | "\n -a Automatic login with $USER variable" \ |
| + | "\n -l USER Automatic login as USER" \ |
| #else | |
| #define telnet_trivial_usage \ | |
| @@ -4047,8 +4047,8 @@ | |
| #define test_trivial_usage \ | |
| "EXPRESSION ]" | |
| #define test_full_usage "\n\n" \ | |
| - | "Check file types and compares values returning an exit code\n" \ |
| - | "determined by the value of EXPRESSION" |
| + | "Check file types, compare values etc. Return a 0/1 exit code\n" \ |
| + | "depending on logical value of EXPRESSION" |
| #define test_example_usage \ | |
| "$ test 1 -eq 2\n" \ | |
| "$ echo $?\n" \ | |
| @@ -52,9 +52,10 @@ enum { | |
| typedef unsigned char byte; | |
| + | enum { netfd = 3 }; |
| + | |
| struct globals { | |
| - | int netfd; /* console fd:s are 0 and 1 (and 2) */ |
| - | short iaclen; /* could even use byte */ |
| + | int iaclen; /* could even use byte, but it's a loss on x86 */ |
| byte telstate; /* telnet negotiation state from network input */ | |
| byte telwish; /* DO, DONT, WILL, WONT */ | |
| byte charmode; | |
| @@ -95,7 +96,7 @@ static int subneg(byte c); | |
| static void iacflush(void) | |
| { | |
| - | write(G.netfd, G.iacbuf, G.iaclen); |
| + | write(netfd, G.iacbuf, G.iaclen); |
| G.iaclen = 0; | |
| } | |
| @@ -191,7 +192,7 @@ static void handlenetoutput(int len) | |
| outbuf[j++] = 0x00; | |
| } | |
| if (j > 0) | |
| - | write(G.netfd, outbuf, j); |
| + | write(netfd, outbuf, j); |
| } | |
| static void handlenetinput(int len) | |
| @@ -545,7 +546,7 @@ static void cookmode(void) | |
| #define USE_POLL 1 | |
| int telnet_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; | |
| - | int telnet_main(int argc, char **argv) |
| + | int telnet_main(int argc UNUSED_PARAM, char **argv) |
| { | |
| char *host; | |
| int port; | |
| @@ -573,9 +574,6 @@ int telnet_main(int argc, char **argv) | |
| cfmakeraw(&G.termios_raw); | |
| } | |
| - | if (argc < 2) |
| - | bb_show_usage(); |
| - | |
| #if ENABLE_FEATURE_TELNET_AUTOLOGIN | |
| if (1 & getopt32(argv, "al:", &G.autologin)) | |
| G.autologin = getenv("USER"); | |
| @@ -590,20 +588,20 @@ int telnet_main(int argc, char **argv) | |
| if (*argv) /* extra params?? */ | |
| bb_show_usage(); | |
| - | G.netfd = create_and_connect_stream_or_die(host, port); |
| + | xmove_fd(create_and_connect_stream_or_die(host, port), netfd); |
| - | setsockopt(G.netfd, SOL_SOCKET, SO_KEEPALIVE, &const_int_1, sizeof(const_int_1)); |
| + | setsockopt(netfd, SOL_SOCKET, SO_KEEPALIVE, &const_int_1, sizeof(const_int_1)); |
| signal(SIGINT, fgotsig); | |
| #ifdef USE_POLL | |
| - | ufds[0].fd = 0; ufds[1].fd = G.netfd; |
| + | ufds[0].fd = 0; ufds[1].fd = netfd; |
| ufds[0].events = ufds[1].events = POLLIN; | |
| #else | |
| FD_ZERO(&readfds); | |
| FD_SET(STDIN_FILENO, &readfds); | |
| - | FD_SET(G.netfd, &readfds); |
| - | maxfd = G.netfd + 1; |
| + | FD_SET(netfd, &readfds); |
| + | maxfd = netfd + 1; |
| #endif | |
| while (1) { | |
| @@ -642,17 +640,17 @@ int telnet_main(int argc, char **argv) | |
| #ifdef USE_POLL | |
| if (ufds[1].revents) /* well, should check POLLIN, but ... */ | |
| #else | |
| - | if (FD_ISSET(G.netfd, &rfds)) |
| + | if (FD_ISSET(netfd, &rfds)) |
| #endif | |
| { | |
| - | len = read(G.netfd, G.buf, DATABUFSIZE); |
| + | len = read(netfd, G.buf, DATABUFSIZE); |
| if (len <= 0) { | |
| write_str(1, "Connection closed by foreign host\r\n"); | |
| doexit(EXIT_FAILURE); | |
| } | |
| - | TRACE(0, ("Read netfd (%d): %d\n", G.netfd, len)); |
| + | TRACE(0, ("Read netfd (%d): %d\n", netfd, len)); |
| handlenetinput(len); | |
| } | |
| } | |
| - | } |
| + | } /* while (1) */ |
| } | |
| @@ -229,11 +229,10 @@ make_new_session( | |
| /* open the child's side of the tty. */ | |
| /* NB: setsid() disconnects from any previous ctty's. Therefore | |
| * we must open child's side of the tty AFTER setsid! */ | |
| - | fd = xopen(tty_name, O_RDWR); /* becomes our ctty */ |
| - | dup2(fd, 0); |
| - | dup2(fd, 1); |
| - | dup2(fd, 2); |
| - | while (fd > 2) close(fd--); |
| + | close(0); |
| + | xopen(tty_name, O_RDWR); /* becomes our ctty */ |
| + | xdup2(0, 1); |
| + | xdup2(0, 2); |
| tcsetpgrp(0, getpid()); /* switch this tty's process group to us */ | |
| /* The pseudo-terminal allocated to the client is configured to operate in | |
| @@ -252,7 +251,7 @@ make_new_session( | |
| * issue files, and they may block writing to fd 1, | |
| * (parent is supposed to read it, but parent waits | |
| * for vforked child to exec!) */ | |
| - | print_login_issue(issuefile, NULL); |
| + | print_login_issue(issuefile, tty_name); |
| /* Exec shell / login / whatever */ | |
| login_argv[0] = loginpath; | |