diff options
| author | Mike Buland <eichlan@xagasoft.com> | 2006-09-20 22:51:37 +0000 |
|---|---|---|
| committer | Mike Buland <eichlan@xagasoft.com> | 2006-09-20 22:51:37 +0000 |
| commit | 3825e6cb1008dea6062ef0c3f5ffecf249a3f420 (patch) | |
| tree | 5c9fe11285d07ae30aea77ba28b7d569e97e50c7 | |
| parent | 030ab69b236f53357a79fa912956f43f975d79e2 (diff) | |
| download | build-3825e6cb1008dea6062ef0c3f5ffecf249a3f420.tar.gz build-3825e6cb1008dea6062ef0c3f5ffecf249a3f420.tar.bz2 build-3825e6cb1008dea6062ef0c3f5ffecf249a3f420.tar.xz build-3825e6cb1008dea6062ef0c3f5ffecf249a3f420.zip | |
You need this rev to build congo.
| -rw-r--r-- | src/build.cpp | 11 | ||||
| -rw-r--r-- | src/build.h | 1 | ||||
| -rw-r--r-- | src/buildparser.cpp | 2 | ||||
| -rw-r--r-- | src/functiondirectoriesin.cpp | 13 | ||||
| -rw-r--r-- | src/functionregexp.cpp | 35 |
5 files changed, 60 insertions, 2 deletions
diff --git a/src/build.cpp b/src/build.cpp index b48e9f1..c81c885 100644 --- a/src/build.cpp +++ b/src/build.cpp | |||
| @@ -168,6 +168,17 @@ void Build::setAdd( const std::string &cont, const std::string &var, const std:: | |||
| 168 | } | 168 | } |
| 169 | } | 169 | } |
| 170 | 170 | ||
| 171 | void Build::copyContext( const std::string &src, const std::string &dest ) | ||
| 172 | { | ||
| 173 | if( mContVars.find(src) == mContVars.end() ) | ||
| 174 | return; | ||
| 175 | |||
| 176 | VarMap &d = mContVars[dest]; | ||
| 177 | VarMap &s = mContVars[src]; | ||
| 178 | for( VarMap::iterator i = s.begin(); i != s.end(); i++ ) | ||
| 179 | d[(*i).first] = (*i).second; | ||
| 180 | } | ||
| 181 | |||
| 171 | std::string Build::getVar( const StringList *cont, const std::string &var, VarMap *mExtra ) | 182 | std::string Build::getVar( const StringList *cont, const std::string &var, VarMap *mExtra ) |
| 172 | { | 183 | { |
| 173 | if( mExtra != NULL ) | 184 | if( mExtra != NULL ) |
diff --git a/src/build.h b/src/build.h index 82e4998..9229617 100644 --- a/src/build.h +++ b/src/build.h | |||
| @@ -46,6 +46,7 @@ public: | |||
| 46 | 46 | ||
| 47 | void set( const std::string &cont, const std::string &var, const std::string &val ); | 47 | void set( const std::string &cont, const std::string &var, const std::string &val ); |
| 48 | void setAdd( const std::string &cont, const std::string &var, const std::string &val ); | 48 | void setAdd( const std::string &cont, const std::string &var, const std::string &val ); |
| 49 | void copyContext( const std::string &src, const std::string &dest ); | ||
| 49 | std::string getVar( const StringList *cont, const std::string &var, VarMap *mExtra ); | 50 | std::string getVar( const StringList *cont, const std::string &var, VarMap *mExtra ); |
| 50 | 51 | ||
| 51 | Rule *getRule( const std::string &name ); | 52 | Rule *getRule( const std::string &name ); |
diff --git a/src/buildparser.cpp b/src/buildparser.cpp index f5b87c7..403c469 100644 --- a/src/buildparser.cpp +++ b/src/buildparser.cpp | |||
| @@ -430,7 +430,7 @@ Build *BuildParser::genBuild() | |||
| 430 | i != lTargetTmp.end(); i++ ) | 430 | i != lTargetTmp.end(); i++ ) |
| 431 | { | 431 | { |
| 432 | StringList lTargetNames = buildToStringList( | 432 | StringList lTargetNames = buildToStringList( |
| 433 | (*i).first, StringList() | 433 | (*i).first, StringList(), bld |
| 434 | ); | 434 | ); |
| 435 | for( StringList::iterator j = lTargetNames.begin(); | 435 | for( StringList::iterator j = lTargetNames.begin(); |
| 436 | j != lTargetNames.end(); j++ ) | 436 | j != lTargetNames.end(); j++ ) |
diff --git a/src/functiondirectoriesin.cpp b/src/functiondirectoriesin.cpp index ef2f097..c68fa5c 100644 --- a/src/functiondirectoriesin.cpp +++ b/src/functiondirectoriesin.cpp | |||
| @@ -42,7 +42,18 @@ void FunctionDirectoriesIn::execute( Build *bld, const StringList &lInput, Strin | |||
| 42 | { | 42 | { |
| 43 | if( e->d_name[0] == '.' || e->d_name[0] == '\0' ) | 43 | if( e->d_name[0] == '.' || e->d_name[0] == '\0' ) |
| 44 | continue; | 44 | continue; |
| 45 | lOutput.push_back( prefix + e->d_name ); | 45 | std::string sOut = prefix + e->d_name; |
| 46 | lOutput.push_back( sOut ); | ||
| 47 | if( bld ) | ||
| 48 | { | ||
| 49 | std::string sV = lParams.front() + "/"; | ||
| 50 | sV += e->d_name; | ||
| 51 | bld->set( sOut, "fulldir", sV ); | ||
| 52 | } | ||
| 53 | else | ||
| 54 | { | ||
| 55 | printf("no build access.\n"); | ||
| 56 | } | ||
| 46 | } | 57 | } |
| 47 | } | 58 | } |
| 48 | 59 | ||
diff --git a/src/functionregexp.cpp b/src/functionregexp.cpp index 74c19ee..27fdbbd 100644 --- a/src/functionregexp.cpp +++ b/src/functionregexp.cpp | |||
| @@ -39,6 +39,41 @@ void FunctionRegexp::execute( Build *bld, const StringList &lInput, StringList & | |||
| 39 | } | 39 | } |
| 40 | else | 40 | else |
| 41 | { | 41 | { |
| 42 | if( !bld ) | ||
| 43 | { | ||
| 44 | throw BuildException("You apparently can't use regexp with two params here. Isn't that odd?"); | ||
| 45 | } | ||
| 46 | |||
| 47 | RegExp re( lParams.front().c_str() ); | ||
| 48 | lParams.pop_front(); | ||
| 49 | std::string p2 = lParams.front(); | ||
| 50 | |||
| 51 | for( StringList::const_iterator i = lInput.begin(); | ||
| 52 | i != lInput.end(); i++ ) | ||
| 53 | { | ||
| 54 | if( re.execute( (*i).c_str() ) ) | ||
| 55 | { | ||
| 56 | VarMap ext; | ||
| 57 | int jmax = re.getNumSubStrings(); | ||
| 58 | for( int j = 0; j < jmax; j++ ) | ||
| 59 | { | ||
| 60 | char buf[30]; | ||
| 61 | sprintf( buf, "re:%d", j ); | ||
| 62 | ext[buf] = re.getSubString( j ); | ||
| 63 | } | ||
| 64 | |||
| 65 | std::string sNew = bld->replVars( p2, NULL, &ext ); | ||
| 66 | lOutput.push_back( sNew ); | ||
| 67 | |||
| 68 | for( int j = 0; j < jmax; j++ ) | ||
| 69 | { | ||
| 70 | char buf[30]; | ||
| 71 | sprintf( buf, "re:%d", j ); | ||
| 72 | bld->set( sNew, buf, re.getSubString( j ) ); | ||
| 73 | } | ||
| 74 | bld->copyContext( *i, sNew ); | ||
| 75 | } | ||
| 76 | } | ||
| 42 | } | 77 | } |
| 43 | } | 78 | } |
| 44 | 79 | ||
