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