svn commit: trunk/busybox: include networking

vda at busybox.net vda at busybox.net
Mon Jul 21 09:22:32 UTC 2008


Author: vda
Date: 2008-07-21 02:22:28 -0700 (Mon, 21 Jul 2008)
New Revision: 22897

Log:
telnet: shrink
telnetd: shrink, and fix issue file printing
test: better and shorter usage text

function                                             old     new   delta
putiac2                                               51      50      -1
putiac                                                24      20      -4
handlenetoutput                                       95      91      -4
telnet_main                                         1480    1475      -5
iacflush                                              37      32      -5
make_new_session                                     436     421     -15
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/6 up/down: 0/-34)             Total: -34 bytes



Modified:
   trunk/busybox/include/usage.h
   trunk/busybox/networking/telnet.c
   trunk/busybox/networking/telnetd.c


Changeset:
Modified: trunk/busybox/include/usage.h
===================================================================
--- trunk/busybox/include/usage.h	2008-07-21 08:53:18 UTC (rev 22896)
+++ trunk/busybox/include/usage.h	2008-07-21 09:22:28 UTC (rev 22897)
@@ -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" \

Modified: trunk/busybox/networking/telnet.c
===================================================================
--- trunk/busybox/networking/telnet.c	2008-07-21 08:53:18 UTC (rev 22896)
+++ trunk/busybox/networking/telnet.c	2008-07-21 09:22:28 UTC (rev 22897)
@@ -52,9 +52,10 @@
 
 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 void iacflush(void)
 {
-	write(G.netfd, G.iacbuf, G.iaclen);
+	write(netfd, G.iacbuf, G.iaclen);
 	G.iaclen = 0;
 }
 
@@ -191,7 +192,7 @@
 			outbuf[j++] = 0x00;
 	}
 	if (j > 0)
-		write(G.netfd, outbuf, j);
+		write(netfd, outbuf, j);
 }
 
 static void handlenetinput(int len)
@@ -545,7 +546,7 @@
 #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 @@
 		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 @@
 	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 @@
 #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) */
 }

Modified: trunk/busybox/networking/telnetd.c
===================================================================
--- trunk/busybox/networking/telnetd.c	2008-07-21 08:53:18 UTC (rev 22896)
+++ trunk/busybox/networking/telnetd.c	2008-07-21 09:22:28 UTC (rev 22897)
@@ -229,11 +229,10 @@
 	/* 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 @@
 	 * 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;




More information about the busybox-cvs mailing list