From 9d65ab2beb0e418510a42f6802cf6daa1d7a2106 Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Tue, 6 Jan 2004 00:07:17 +0000 Subject: [PATCH] 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. --- modutils/modprobe.c | 30 ++++++++++++++++++++++-------- 1 file 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 ) current-> m_next = 0; //printf ( "%s:\n", mod ); - p = col + 1; } else @@ -206,15 +205,30 @@ static struct dep_t *build_dep ( void ) 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 @@ static struct dep_t *build_dep ( void ) 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] == '\\' ) -- 2.25.1