summaryrefslogtreecommitdiff
path: root/modutils/modprobe.c
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2004-01-06 00:07:17 +0000
committerEric Andersen <andersen@codepoet.org>2004-01-06 00:07:17 +0000
commit9d65ab2beb0e418510a42f6802cf6daa1d7a2106 (patch)
tree583114d16b4d9a228fc624249eefd32b809868b0 /modutils/modprobe.c
parent66e21fd1616daefa903aeeb4d42e9ca50e4032ab (diff)
downloadbusybox-w32-9d65ab2beb0e418510a42f6802cf6daa1d7a2106.tar.gz
busybox-w32-9d65ab2beb0e418510a42f6802cf6daa1d7a2106.tar.bz2
busybox-w32-9d65ab2beb0e418510a42f6802cf6daa1d7a2106.zip
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.
Diffstat (limited to 'modutils/modprobe.c')
-rw-r--r--modutils/modprobe.c30
1 files changed, 22 insertions, 8 deletions
diff --git a/modutils/modprobe.c b/modutils/modprobe.c
index e300c0d2b..1e4d24e0d 100644
--- a/modutils/modprobe.c
+++ b/modutils/modprobe.c
@@ -197,7 +197,6 @@ static struct dep_t *build_dep ( void )
197 current-> m_next = 0; 197 current-> m_next = 0;
198 198
199 //printf ( "%s:\n", mod ); 199 //printf ( "%s:\n", mod );
200
201 p = col + 1; 200 p = col + 1;
202 } 201 }
203 else 202 else
@@ -206,15 +205,30 @@ static struct dep_t *build_dep ( void )
206 else 205 else
207 p = buffer; 206 p = buffer;
208 207
208 while ( p && *p && isblank(*p))
209 p++;
210
209 if ( p && *p ) { 211 if ( p && *p ) {
210 char *end = &buffer [l-1]; 212 char *end = &buffer [l-1];
211 char *deps = strrchr ( end, '/' ); 213 char *deps;
212 char *dep; 214 char *dep;
215 char *next;
213 int ext = 0; 216 int ext = 0;
214 217
215 while ( isblank ( *end ) || ( *end == '\\' )) 218 while ( isblank ( *end ) || ( *end == '\\' ))
216 end--; 219 end--;
217 220
221 do
222 {
223 next = strchr (p, ' ' );
224 if (next)
225 {
226 *next = 0;
227 next--;
228 }
229 else
230 next = end;
231
218 deps = strrchr ( p, '/' ); 232 deps = strrchr ( p, '/' );
219 233
220 if ( !deps || ( deps < p )) { 234 if ( !deps || ( deps < p )) {
@@ -227,25 +241,25 @@ static struct dep_t *build_dep ( void )
227 deps++; 241 deps++;
228 242
229#if defined(CONFIG_FEATURE_2_6_MODULES) 243#if defined(CONFIG_FEATURE_2_6_MODULES)
230 if ((k_version > 4) && ( *(end-2) == '.' ) && *(end-1) == 'k' && 244 if ((k_version > 4) && ( *(next-2) == '.' ) && *(next-1) == 'k' &&
231 ( *end == 'o' )) 245 ( *next == 'o' ))
232 ext = 3; 246 ext = 3;
233 else 247 else
234#endif 248#endif
235 if (( *(end-1) == '.' ) && ( *end == 'o' )) 249 if (( *(next-1) == '.' ) && ( *next == 'o' ))
236 ext = 2; 250 ext = 2;
237 251
238 /* Cope with blank lines */ 252 /* Cope with blank lines */
239 if ((end-deps-ext+1) <= 0) 253 if ((next-deps-ext+1) <= 0)
240 continue; 254 continue;
241 255 dep = bb_xstrndup ( deps, next - deps - ext + 1 );
242 dep = bb_xstrndup ( deps, end - deps - ext + 1 );
243 256
244 current-> m_depcnt++; 257 current-> m_depcnt++;
245 current-> m_deparr = (char **) xrealloc ( current-> m_deparr, sizeof ( char *) * current-> m_depcnt ); 258 current-> m_deparr = (char **) xrealloc ( current-> m_deparr, sizeof ( char *) * current-> m_depcnt );
246 current-> m_deparr [current-> m_depcnt - 1] = dep; 259 current-> m_deparr [current-> m_depcnt - 1] = dep;
247 260
248 //printf ( " %d) %s\n", current-> m_depcnt, current-> m_deparr [current-> m_depcnt -1] ); 261 //printf ( " %d) %s\n", current-> m_depcnt, current-> m_deparr [current-> m_depcnt -1] );
262 } while (next < end);
249 } 263 }
250 264
251 if ( buffer [l-1] == '\\' ) 265 if ( buffer [l-1] == '\\' )