[BusyBox-cvs] busybox/networking ifupdown.c,1.23,1.24

Erik Andersen andersen at busybox.net
Thu Jun 5 19:37:05 UTC 2003


Update of /var/cvs/busybox/networking
In directory winder:/tmp/cvs-serv17061/networking

Modified Files:
	ifupdown.c 
Log Message:
Patch from Lars Kellogg-Stedman, lars at larsshack.org, to
make ifupdown's mapping function work as documented.


Index: ifupdown.c
===================================================================
RCS file: /var/cvs/busybox/networking/ifupdown.c,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -d -r1.23 -r1.24
--- ifupdown.c	19 Apr 2003 23:15:06 -0000	1.23
+++ ifupdown.c	5 Jun 2003 19:37:01 -0000	1.24
@@ -49,6 +49,9 @@
 #define EUNDEFVAR   10002
 #define EUNBALPER   10000
 
+#ifdef CONFIG_FEATURE_IFUPDOWN_MAPPING
+#define MAX_INTERFACE_LENGTH 10
+#endif
 
 #if 0
 #define debug_noise(fmt, args...) printf(fmt, ## args)
@@ -1106,12 +1109,13 @@
 	/* unreached */
 }
 
-static int run_mapping(char *physical, char *logical, int len, struct mapping_defn_t * map)
+static char * run_mapping(char *physical, char *logical, int len, struct mapping_defn_t * map)
 {
 	FILE *in, *out;
 	int i, status;
 	pid_t pid;
 
+	char *new_logical = NULL;
 
 	pid = popen2(&in, &out, map->script, physical, NULL);
 	if (pid == 0) {
@@ -1123,16 +1127,18 @@
 	fclose(in);
 	waitpid(pid, &status, 0);
 	if (WIFEXITED(status) && WEXITSTATUS(status) == 0) {
-		if (fgets(logical, len, out)) {
-			char *pch = logical + bb_strlen(logical) - 1;
+		new_logical = (char *)xmalloc(MAX_INTERFACE_LENGTH);
 
-			while (pch >= logical && isspace(*pch))
+		if (fgets(new_logical, MAX_INTERFACE_LENGTH, out)) {
+			char *pch = new_logical + bb_strlen(new_logical) - 1;
+
+			while (pch >= new_logical && isspace(*pch))
 				*(pch--) = '\0';
 		}
 	}
 	fclose(out);
 
-	return 1;
+	return new_logical ? new_logical : logical;
 }
 #endif /* CONFIG_FEATURE_IFUPDOWN_IPV6 */
 
@@ -1318,7 +1324,7 @@
 					if (verbose) {
 						printf("Running mapping script %s on %s\n", currmap->script, liface);
 					}
-					run_mapping(iface, liface, sizeof(liface), currmap);
+					liface = run_mapping(iface, liface, sizeof(liface), currmap);
 					break;
 				}
 			}



More information about the busybox-cvs mailing list