svn commit: trunk/busybox: libbb loginutils networking/udhcp

vda at busybox.net vda at busybox.net
Thu Nov 8 09:40:27 PST 2007


Author: vda
Date: 2007-11-08 09:40:23 -0800 (Thu, 08 Nov 2007)
New Revision: 20385

Log:
xreadlink: code shrink
udhcp: add missing tryagain member to client_config

function                                             old     new   delta
xmalloc_readlink_follow                              169     154     -15
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-15)             Total: -15 bytes



Modified:
   trunk/busybox/libbb/xreadlink.c
   trunk/busybox/loginutils/login.c
   trunk/busybox/networking/udhcp/dhcpc.h


Changeset:
Modified: trunk/busybox/libbb/xreadlink.c
===================================================================
--- trunk/busybox/libbb/xreadlink.c	2007-11-08 11:03:35 UTC (rev 20384)
+++ trunk/busybox/libbb/xreadlink.c	2007-11-08 17:40:23 UTC (rev 20385)
@@ -41,14 +41,21 @@
  */
 char *xmalloc_readlink_follow(const char *path)
 {
-	char *buf = NULL, *lpc, *linkpath;
+	char *buf;
+	char *lpc;
+	char *linkpath;
 	int bufsize;
-	smallint looping = 0;
+	int looping = MAXSYMLINKS + 1;
 
-	buf = strdup(path);
-	bufsize = strlen(path) + 1;
+	linkpath = xstrdup(path);
+	goto jump_in;
 
-	while(1) {
+	while (1) {
+		if (!--looping) {
+			free(linkpath);
+			free(buf);
+			return NULL;
+		}
 		linkpath = xmalloc_readlink(buf);
 		if (!linkpath) {
 			if (errno == EINVAL) /* not a symlink */
@@ -56,25 +63,19 @@
 			free(buf);
 			return NULL;
 		} 
-
-		if (*linkpath == '/') {
-			free(buf);
-			buf = linkpath;
-			bufsize = strlen(linkpath) + 1;
-		} else {
+		if (linkpath[0] != '/') {
 			bufsize += strlen(linkpath);
-			if (looping++ > MAXSYMLINKS) {
-				free(linkpath);
-				free(buf);
-				return NULL;
-			}
 			buf = xrealloc(buf, bufsize);
 			lpc = bb_get_last_path_component_strip(buf);
 			strcpy(lpc, linkpath);
 			free(linkpath);
+		} else {
+			free(buf);
+ jump_in:
+			buf = linkpath;
+			bufsize = strlen(buf) + 1;
 		}
 	}
-
 }
 
 char *xmalloc_readlink_or_warn(const char *path)

Modified: trunk/busybox/loginutils/login.c
===================================================================
--- trunk/busybox/loginutils/login.c	2007-11-08 11:03:35 UTC (rev 20384)
+++ trunk/busybox/loginutils/login.c	2007-11-08 17:40:23 UTC (rev 20385)
@@ -305,9 +305,8 @@
 	openlog(applet_name, LOG_PID | LOG_CONS | LOG_NOWAIT, LOG_AUTH);
 
 	while (1) {
-
 		/* flush away any type-ahead (as getty does) */
-		(void) ioctl(0, TCFLSH, TCIFLUSH);
+		ioctl(0, TCFLSH, TCIFLUSH);
 
 		if (!username[0])
 			get_username_or_die(username, sizeof(username));

Modified: trunk/busybox/networking/udhcp/dhcpc.h
===================================================================
--- trunk/busybox/networking/udhcp/dhcpc.h	2007-11-08 11:03:35 UTC (rev 20384)
+++ trunk/busybox/networking/udhcp/dhcpc.h	2007-11-08 17:40:23 UTC (rev 20385)
@@ -30,6 +30,7 @@
 	int ifindex;                    /* Index number of the interface to use */
 	int retries;                    /* Max number of request packets */
 	int timeout;                    /* Number of seconds to try to get a lease */
+	int tryagain;                   /* Number of seconds to try to get a lease */
 	uint8_t arp[6];                 /* Our arp address */
 };
 



More information about the busybox-cvs mailing list