[BusyBox-cvs] busybox/modutils modprobe.c,1.25,1.26

Erik Andersen andersen at busybox.net
Tue Jan 6 00:07:20 UTC 2004


Update of /var/cvs/busybox/modutils
In directory nail:/tmp/cvs-serv777/modutils

Modified Files:
	modprobe.c 
Log Message:
Woody Suwalski writes:

accept more then 1 dependency per modules.dep line. Also white space cleanup...
I think that parsing still breaks sometimes, but is mostly functional now.



Index: modprobe.c
===================================================================
RCS file: /var/cvs/busybox/modutils/modprobe.c,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -d -r1.25 -r1.26
--- modprobe.c	24 Dec 2003 20:30:45 -0000	1.25
+++ modprobe.c	6 Jan 2004 00:07:17 -0000	1.26
@@ -197,7 +197,6 @@
 				current-> m_next    = 0;
 
 				//printf ( "%s:\n", mod );
-
 				p = col + 1;		
 			}
 			else
@@ -206,15 +205,30 @@
 		else
 			p = buffer;
 
+		while ( p && *p && isblank(*p))
+			p++;
+
 		if ( p && *p ) {
 			char *end = &buffer [l-1];
-			char *deps = strrchr ( end, '/' );
+			char *deps;
 			char *dep;
+			char *next;
 			int ext = 0;
 
 			while ( isblank ( *end ) || ( *end == '\\' ))
 				end--;
 
+			do
+			{
+				next = strchr (p, ' ' );
+				if (next)
+				{
+					*next = 0;
+					next--;
+				}
+				else
+					next = end;
+
 			deps = strrchr ( p, '/' );
 
 			if ( !deps || ( deps < p )) {
@@ -227,25 +241,25 @@
 				deps++;
 
 #if defined(CONFIG_FEATURE_2_6_MODULES)
-			if ((k_version > 4) && ( *(end-2) == '.' ) && *(end-1) == 'k'  &&
-					( *end == 'o' ))
+				if ((k_version > 4) && ( *(next-2) == '.' ) && *(next-1) == 'k'  &&
+						( *next == 'o' ))
 				ext = 3;
 			else
 #endif
-				if (( *(end-1) == '.' ) && ( *end == 'o' ))
+					if (( *(next-1) == '.' ) && ( *next == 'o' ))
 					ext = 2;
 
 			/* Cope with blank lines */
-			if ((end-deps-ext+1) <= 0)
+				if ((next-deps-ext+1) <= 0)
 				continue;
-
-			dep = bb_xstrndup ( deps, end - deps - ext + 1 );
+				dep = bb_xstrndup ( deps, next - deps - ext + 1 );
 
 			current-> m_depcnt++;
 			current-> m_deparr = (char **) xrealloc ( current-> m_deparr, sizeof ( char *) * current-> m_depcnt );
 			current-> m_deparr [current-> m_depcnt - 1] = dep;		
 
 			//printf ( "    %d) %s\n", current-> m_depcnt, current-> m_deparr [current-> m_depcnt -1] );
+			} while (next < end);
 		}
 
 		if ( buffer [l-1] == '\\' )




More information about the busybox-cvs mailing list