From 198c81549d1c0a21236c4f1e2b84b695e8a4e8d6 Mon Sep 17 00:00:00 2001 From: Kurt Zenker Date: Thu, 8 Apr 2010 16:47:53 +0200 Subject: #161974# restructure reading buildlist --- soldep/bootstrp/prj.cxx | 677 ++++++++++++++++------------------------------ soldep/inc/soldep/prj.hxx | 9 +- 2 files changed, 242 insertions(+), 444 deletions(-) (limited to 'soldep') diff --git a/soldep/bootstrp/prj.cxx b/soldep/bootstrp/prj.cxx index d13e08a05283..9fde614659b0 100644 --- a/soldep/bootstrp/prj.cxx +++ b/soldep/bootstrp/prj.cxx @@ -160,45 +160,34 @@ ByteString SimpleConfig::GetNextLine() ByteString SimpleConfig::GetCleanedNextLine( BOOL bReadComments ) /*****************************************************************************/ { + sal_Bool bStreamOk; + sal_Bool bReadNextLine = sal_True; + while (bReadNextLine) + { + bStreamOk = aFileStream.ReadLine ( aTmpStr ); + if (!bStreamOk) + return ByteString(); - aFileStream.ReadLine ( aTmpStr ); - if ( aTmpStr.Search( "#" ) == 0 ) - if (bReadComments ) - return aTmpStr; - else - while ( aTmpStr.Search( "#" ) == 0 ) - { - aFileStream.ReadLine ( aTmpStr ); - } + ByteString sTab = "\t"; + ByteString sDoubleTab = "\t\t"; + ByteString sSpace = " "; + xub_StrLen nIndex = 0; - aTmpStr = aTmpStr.EraseLeadingChars(); - aTmpStr = aTmpStr.EraseTrailingChars(); -// while ( aTmpStr.SearchAndReplace(String(' '),String('\t') ) != (USHORT)-1 ); - int nLength = aTmpStr.Len(); -// USHORT nPos = 0; - ByteString aEraseString; - BOOL bFirstTab = TRUE; - for ( USHORT i = 0; i<= nLength; i++) - { - if ( aTmpStr.GetChar( i ) == 0x20 ) - aTmpStr.SetChar( i, 0x09 ); + aTmpStr.SearchAndReplaceAll(sSpace, sTab); + while ( (nIndex = aTmpStr.SearchAndReplace(sDoubleTab, sTab, nIndex )) != STRING_NOTFOUND ); + + aTmpStr = aTmpStr.EraseLeadingAndTrailingChars('\t'); // remove tabs - if ( aTmpStr.GetChar( i ) == 0x09 ) + if ( aTmpStr.Search( "#" ) == 0 ) { - if ( bFirstTab ) - bFirstTab = FALSE; - else - { - aTmpStr.SetChar( i, 0x20 ); - } + if (bReadComments ) + return aTmpStr; } else - bFirstTab = TRUE; - + bReadNextLine = sal_False; } - aTmpStr.EraseAllChars(' '); - return aTmpStr; + return aTmpStr; } @@ -824,7 +813,8 @@ Prj::Prj() : bVisited( FALSE ), bIsAvailable( TRUE ), pTempCommandDataList (0), - bTempCommandDataListPermanent (FALSE) + bTempCommandDataListPermanent (FALSE), + bError (FALSE) /*****************************************************************************/ { } @@ -841,7 +831,8 @@ Prj::Prj( ByteString aName ) : bVisited( FALSE ), bIsAvailable( TRUE ), pTempCommandDataList (0), - bTempCommandDataListPermanent (FALSE) + bTempCommandDataListPermanent (FALSE), + bError (FALSE) /*****************************************************************************/ { } @@ -1146,6 +1137,7 @@ Prj& Prj::operator>> ( SvStream& rStream ) rStream << bFixedDependencies; rStream << bSorted; rStream << bIsAvailable; + rStream << bError; if (pPrjDepInfoList) { @@ -1178,6 +1170,7 @@ Prj& Prj::operator<< ( SvStream& rStream ) rStream >> bFixedDependencies; rStream >> bSorted; rStream >> bIsAvailable; + rStream >> bError; BOOL bDepList; rStream >> bDepList; @@ -1509,18 +1502,7 @@ void Star::Read( String &rFileName ) while( aFileList.Count()) { String ssFileName = *aFileList.GetObject(( ULONG ) 0 ); - ByteString sFileName_l(ssFileName, RTL_TEXTENCODING_ASCII_US); - StarFile *pFile = new StarFile( ssFileName ); - if ( pFile->Exists()) { -// if (sFileName_l.Len() >= RTL_CONSTASCII_LENGTH(XML_EXT) && ssFileName.EqualsAscii(XML_EXT, sFileName_l.Len() - RTL_CONSTASCII_LENGTH(XML_EXT), RTL_CONSTASCII_LENGTH(XML_EXT))) -// { -// ReadXmlBuildList(sFileName_l); -// } else { - SimpleConfig aSolarConfig( ssFileName ); - while (( aString = aSolarConfig.GetNext()) != "" ) - InsertToken (( char * ) aString.GetBuffer()); -// } - } + StarFile* pFile = ReadBuildlist (ssFileName); aMutex.acquire(); ReplaceFileEntry (&aLoadedFilesList, pFile); //aLoadedFilesList.Insert( pFile, LIST_APPEND ); @@ -1575,19 +1557,9 @@ void Star::Read( SolarFileList *pSolarFiles ) ByteString aString; String ssFileName = *pSolarFiles->GetObject(( ULONG ) 0 ); - ByteString sFileName_l(ssFileName, RTL_TEXTENCODING_ASCII_US); - StarFile *pFile = new StarFile( ssFileName ); + StarFile *pFile = ReadBuildlist ( ssFileName); if ( pFile->Exists()) { -// if (sFileName_l.Len() >= RTL_CONSTASCII_LENGTH(XML_EXT) && ssFileName.EqualsAscii(XML_EXT, sFileName_l.Len() - RTL_CONSTASCII_LENGTH(XML_EXT), RTL_CONSTASCII_LENGTH(XML_EXT))) -// { -// ReadXmlBuildList(sFileName_l); -// } else { - SimpleConfig aSolarConfig( ssFileName ); - while (( aString = aSolarConfig.GetNext()) != "" ) - InsertToken (( char * ) aString.GetBuffer()); -// } - DirEntry aEntry( pFile->GetName() ); DirEntry aEntryPrj = aEntry.GetPath().GetPath(); if (aEntryPrj.GetExtension() != String::CreateFromAscii( "" )) @@ -1721,207 +1693,259 @@ void Star::Expand_Impl() } /*****************************************************************************/ -void Star::InsertToken ( char *yytext ) +StarFile* Star::ReadBuildlist (const String& rFilename, BOOL bReadComments, BOOL bExtendAlias) +/*****************************************************************************/ +{ + ByteString sFileName_l(rFilename, RTL_TEXTENCODING_ASCII_US); + StarFile *pFile = new StarFile( rFilename ); + if ( pFile->Exists()) { + SimpleConfig aSolarConfig( rFilename ); + DirEntry aEntry(rFilename); + ByteString sProjectName (aEntry.GetPath().GetPath().GetName(), RTL_TEXTENCODING_ASCII_US); + Prj* pPrj = GetPrj (sProjectName); // 0, if Prj not found + if (pPrj) + { + Remove(pPrj); // Project exist, remove old Project and read again + DELETEZ (pPrj); // delete and set pPrj to 0 + } + ByteString aString; + while (( aString = aSolarConfig.GetCleanedNextLine( bReadComments )) != ByteString::EmptyString() ) + InsertTokenLine ( aString, &pPrj, sProjectName, bExtendAlias ); + } + return pFile; +} + +/*****************************************************************************/ +void Star::InsertTokenLine ( const ByteString& rTokenLine, Prj** ppPrj, const ByteString& rProjectName, const sal_Bool bExtendAlias ) /*****************************************************************************/ { - static int i = 0; - static ByteString aDirName, aWhat, aWhatOS, + int i = 0; + ByteString aWhat, aWhatOS, sClientRestriction, aLogFileName, aProjectName, aPrefix, aCommandPara; - static BOOL bPrjDep = FALSE; - static BOOL bHardDep = FALSE; - static BOOL bFixedDep = FALSE; - static int nCommandType, nOSType; + ByteString aDirName; + BOOL bPrjDep = FALSE; + BOOL bHardDep = FALSE; + BOOL bFixedDep = FALSE; + BOOL bNewProject = FALSE; + int nCommandType=0, nOSType=0; + Prj* pPrj = *ppPrj; CommandData* pCmdData; - static SByteStringList *pStaticDepList; - Prj* pPrj; + SByteStringList *pDepList = NULL; + ByteString aCommentString; + ByteString sToken; + ByteString sStringBuffer = rTokenLine; - switch (i) + while (sStringBuffer != ByteString::EmptyString()) { - case 0: - aPrefix = yytext; - pStaticDepList = 0; - break; - case 1: - aDirName = yytext; - aProjectName = aDirName.GetToken ( 0, 0x5c); - break; - case 2: - if ( !strcmp( yytext, ":" )) - { - bPrjDep = TRUE; - bHardDep = FALSE; - bFixedDep = FALSE; - i = 9; - } - else if ( !strcmp( yytext, "::" )) - { - bPrjDep = TRUE; - bHardDep = TRUE; - bFixedDep = FALSE; - i = 9; - } - else if ( !strcmp( yytext, ":::" )) - { - bPrjDep = TRUE; - bHardDep = TRUE; - bFixedDep = TRUE; - i = 9; - } - else - { - bPrjDep = FALSE; - bHardDep = FALSE; - bFixedDep = FALSE; + ByteString sToken = sStringBuffer.GetToken(0,'\t'); + sStringBuffer.Erase(0, sToken.Len()+1); - aWhat = yytext; - nCommandType = GetJobType(aWhat); - } - if (bPrjDep) - { - if ( HasProject( aProjectName )) + switch (i) + { + case 0: + if ( sToken.Search( "#" ) == 0 ) { - RemovePrj(GetPrj(aProjectName)); - // Projekt exist. schon, entfernen, später neue anlegen + i = -1; + aCommentString = sToken; + sStringBuffer = ByteString::EmptyString(); + if ( Count() == 0 ) + aDirName = "null_entry" ; //comments at begin of file } - } - break; - case 3: - if ( !bPrjDep ) - { - aWhat = yytext; - if ( aWhat == "-" ) + else { - aCommandPara = ByteString(); + aPrefix = sToken; + pDepList = 0; } - else - aCommandPara = aWhat; - } - break; - case 4: - if ( !bPrjDep ) - { - aWhatOS = yytext; - if ( aWhatOS.GetTokenCount( ',' ) > 1 ) { - sClientRestriction = aWhatOS.Copy( aWhatOS.GetToken( 0, ',' ).Len() + 1 ); - aWhatOS = aWhatOS.GetToken( 0, ',' ); + break; + case 1: + aDirName = sToken; + aProjectName = aDirName.GetToken ( 0, 0x5c); + if (aProjectName != rProjectName) + sStringBuffer = ByteString::EmptyString(); // something is wrong, ignore line + break; + case 2: + if ( sToken.CompareTo(":") == COMPARE_EQUAL ) + { + bPrjDep = TRUE; + bHardDep = FALSE; + bFixedDep = FALSE; + i = 9; } - nOSType = GetOSType (aWhatOS); - } - break; - case 5: - if ( !bPrjDep ) - { - aLogFileName = (ByteString(aProjectName).Append("_")).Append(yytext); - } - break; - default: - if ( !bPrjDep ) - { - ByteString aItem = yytext; - if ( aItem == "NULL" ) + else if ( sToken.CompareTo("::") == COMPARE_EQUAL ) { - // Liste zu Ende - i = -1; + bPrjDep = TRUE; + bHardDep = TRUE; + bFixedDep = FALSE; + i = 9; + } + else if ( sToken.CompareTo(":::") == COMPARE_EQUAL ) + { + bPrjDep = TRUE; + bHardDep = TRUE; + bFixedDep = TRUE; + i = 9; } else { - // ggfs. Dependency liste anlegen und ergaenzen - if ( !pStaticDepList ) - pStaticDepList = new SByteStringList; - ByteString* pStr = new ByteString ((ByteString (aProjectName).Append("_")).Append(aItem)); - pStaticDepList->PutString( pStr ); + bPrjDep = FALSE; + bHardDep = FALSE; + bFixedDep = FALSE; + + aWhat = sToken; + nCommandType = GetJobType(aWhat); } - } - else - { - ByteString aItem = yytext; - if ( aItem == "NULL" ) + if (bPrjDep) { - // Liste zu Ende - i = -1; - bPrjDep= FALSE; + if (pPrj) + sStringBuffer = ByteString::EmptyString(); // definition more than once or not first line, ignore line } - else + break; + case 3: + if ( !bPrjDep ) { - ByteString sMode; - BOOL bHasModes = FALSE; - if (aItem.Search(":") != STRING_NOTFOUND) + aWhat = sToken; + if ( aWhat == "-" ) { - sMode = aItem.GetToken ( 0, ':'); - aItem = aItem.GetToken ( 1, ':'); - bHasModes = TRUE; + aCommandPara = ByteString(); } + else + aCommandPara = aWhat; + } + break; + case 4: + if ( !bPrjDep ) + { + aWhatOS = sToken; + if ( aWhatOS.GetTokenCount( ',' ) > 1 ) { + sClientRestriction = aWhatOS.Copy( aWhatOS.GetToken( 0, ',' ).Len() + 1 ); + aWhatOS = aWhatOS.GetToken( 0, ',' ); + } + nOSType = GetOSType (aWhatOS); + } + break; + case 5: + if ( !bPrjDep ) + { + if (bExtendAlias) + aLogFileName = (ByteString(aProjectName).Append("_")).Append(sToken); + else + aLogFileName = sToken; - if ( HasProject( aProjectName )) + } + break; + default: + if ( !bPrjDep ) + { + ByteString aItem = sToken; + if ( aItem == "NULL" ) { - pPrj = GetPrj( aProjectName ); - // Projekt exist. schon, neue Eintraege anhaengen + // Liste zu Ende + i = -1; } else { - // neues Project anlegen - pPrj = new Prj ( aProjectName ); - pPrj->SetPreFix( aPrefix ); - Insert(pPrj,LIST_APPEND); + // ggfs. Dependency liste anlegen und ergaenzen + if ( !pDepList ) + pDepList = new SByteStringList; + ByteString* pStr; + if (bExtendAlias) + pStr = new ByteString ((ByteString (aProjectName).Append("_")).Append(aItem)); + else + pStr = new ByteString (aItem); + pDepList->PutString( pStr ); + } + } + else + { + ByteString aItem = sToken; + if ( aItem == "NULL" ) + { + // Liste zu Ende + i = -1; + bPrjDep= FALSE; } - if (bHasModes) - pPrj->AddDependencies( aItem, sMode ); else - pPrj->AddDependencies( aItem ); - pPrj->HasHardDependencies( bHardDep ); - pPrj->HasFixedDependencies( bFixedDep ); - -/* - if ( nStarMode == STAR_MODE_RECURSIVE_PARSE ) { - String sItem( aItem, RTL_TEXTENCODING_ASCII_US ); - InsertSolarList( sItem ); + { + ByteString sMode; + BOOL bHasModes = FALSE; + if (aItem.Search(":") != STRING_NOTFOUND) + { + sMode = aItem.GetToken ( 0, ':'); + aItem = aItem.GetToken ( 1, ':'); + bHasModes = TRUE; + } + if (!pPrj) + { + // neues Project anlegen + pPrj = new Prj ( aProjectName ); + pPrj->SetPreFix( aPrefix ); + bNewProject = TRUE; + } + if (bHasModes) + pPrj->AddDependencies( aItem, sMode ); + else + pPrj->AddDependencies( aItem ); + pPrj->HasHardDependencies( bHardDep ); + pPrj->HasFixedDependencies( bFixedDep ); } - */ } - } - break; + break; + } + if ( i == -1 ) + break; + i++; } /* Wenn dieses Project noch nicht vertreten ist, in die Liste der Solar-Projekte einfuegen */ if ( i == -1 ) { - if ( HasProject( aProjectName )) - { - pPrj = GetPrj( aProjectName ); - // Projekt exist. schon, neue Eintraege anhaengen - } - else + if (!pPrj) { // neues Project anlegen pPrj = new Prj ( aProjectName ); pPrj->SetPreFix( aPrefix ); - Insert(pPrj,LIST_APPEND); + bNewProject = TRUE; } + if (bNewProject) + Insert(pPrj,LIST_APPEND); + pCmdData = new CommandData; pCmdData->SetPath( aDirName ); pCmdData->SetCommandType( nCommandType ); pCmdData->SetCommandPara( aCommandPara ); pCmdData->SetOSType( nOSType ); pCmdData->SetLogFile( aLogFileName ); + pCmdData->SetComment( aCommentString ); pCmdData->SetClientRestriction( sClientRestriction ); - if ( pStaticDepList ) - pCmdData->SetDependencies( pStaticDepList ); + if ( pDepList ) + pCmdData->SetDependencies( pDepList ); - pStaticDepList = 0; + pDepList = 0; pPrj->Insert ( pCmdData, LIST_APPEND ); - aDirName =""; - aWhat =""; - aWhatOS = ""; - sClientRestriction = ""; - aLogFileName = ""; - nCommandType = 0; - nOSType = 0; - } - i++; - // und wer raeumt die depLst wieder ab ? - // CommandData macht das + // und wer raeumt die depLst wieder ab ? + // CommandData macht das + } + else + { + if (!pPrj) + { + // new project to set the error flag + pPrj = new Prj ( rProjectName ); + pPrj->SetPreFix( aPrefix ); + bNewProject = TRUE; + } + if (pPrj) + { + pPrj->SetError(); + if (bNewProject) + Insert(pPrj,LIST_APPEND); // add project even if there is a buildlist error + } + if ( pDepList ) + delete pDepList; + } + *ppPrj = pPrj; } /*****************************************************************************/ @@ -2572,19 +2596,7 @@ USHORT StarWriter::Read( String aFileName, BOOL bReadComments, USHORT nMode ) while( aFileList.Count()) { String ssFileName = *aFileList.GetObject(( ULONG ) 0 ); - ByteString sFileName_l(ssFileName, RTL_TEXTENCODING_ASCII_US); - StarFile *pFile = new StarFile( ssFileName ); - if ( pFile->Exists()) { -// if (sFileName_l.Len() >= RTL_CONSTASCII_LENGTH(XML_EXT) && ssFileName.EqualsAscii(XML_EXT, sFileName_l.Len() - RTL_CONSTASCII_LENGTH(XML_EXT), RTL_CONSTASCII_LENGTH(XML_EXT))) -// { -// ReadXmlBuildList(sFileName_l); -// } else { - SimpleConfig aSolarConfig( ssFileName ); - while (( aString = aSolarConfig.GetCleanedNextLine( bReadComments )) != "" ) - InsertTokenLine ( aString ); - } -// } - + StarFile* pFile = ReadBuildlist (ssFileName, bReadComments, FALSE); aMutex.acquire(); aLoadedFilesList.Insert( pFile, LIST_APPEND ); aMutex.release(); @@ -2608,21 +2620,7 @@ USHORT StarWriter::Read( SolarFileList *pSolarFiles, BOOL bReadComments ) while( pSolarFiles->Count()) { ByteString aString; String ssFileName = *pSolarFiles->GetObject(( ULONG ) 0 ); - ByteString sFileName_l(ssFileName, RTL_TEXTENCODING_ASCII_US); - StarFile *pFile = new StarFile( ssFileName); - if ( pFile->Exists()) { -// if (sFileName_l.Len() >= RTL_CONSTASCII_LENGTH(XML_EXT) && ssFileName.EqualsAscii(XML_EXT, sFileName_l.Len() - RTL_CONSTASCII_LENGTH(XML_EXT), RTL_CONSTASCII_LENGTH(XML_EXT))) -// { -// ReadXmlBuildList(sFileName_l); -// } -// else -// { - SimpleConfig aSolarConfig( ssFileName ); - while (( aString = aSolarConfig.GetCleanedNextLine( bReadComments )) != "" ) - InsertTokenLine ( aString ); -// } - } - + StarFile* pFile = ReadBuildlist(ssFileName, bReadComments, FALSE); aMutex.acquire(); aLoadedFilesList.Insert( pFile, LIST_APPEND ); aMutex.release(); @@ -2803,217 +2801,12 @@ USHORT StarWriter::WriteMultiple( String rSourceRoot ) } /*****************************************************************************/ -void StarWriter::InsertTokenLine ( ByteString& rString ) +void StarWriter::InsertTokenLine ( const ByteString& rTokenLine ) /*****************************************************************************/ { - int i = 0; - ByteString aWhat, aWhatOS, - sClientRestriction, aLogFileName, aProjectName, aPrefix, aCommandPara; - static ByteString aDirName; - BOOL bPrjDep = FALSE; - BOOL bHardDep = FALSE; - BOOL bFixedDep = FALSE; - int nCommandType=0, nOSType=0; - CommandData* pCmdData; - SByteStringList *pDepList2 = NULL; - Prj* pPrj; - - ByteString aEmptyString; - ByteString aToken = rString.GetToken( 0, '\t' ); - ByteString aCommentString; - - const char* yytext = aToken.GetBuffer(); - - while ( !( aToken == aEmptyString ) ) - { - switch (i) - { - case 0: - if ( rString.Search( "#" ) == 0 ) - { - i = -1; - aCommentString = rString; - rString = aEmptyString; - if ( Count() == 0 ) - aDirName = "null_entry" ; //comments at begin of file - break; - } - aPrefix = yytext; - pDepList2 = NULL; - break; - case 1: - aDirName = yytext; - break; - case 2: - if ( !strcmp( yytext, ":" )) - { - bPrjDep = TRUE; - bHardDep = FALSE; - bFixedDep = FALSE; - i = 9; - } - else if ( !strcmp( yytext, "::" )) - { - bPrjDep = TRUE; - bHardDep = TRUE; - bFixedDep = FALSE; - i = 9; - } - else if ( !strcmp( yytext, ":::" )) - { - bPrjDep = TRUE; - bHardDep = TRUE; - bFixedDep = TRUE; - i = 9; - } - else - { - bPrjDep = FALSE; - bHardDep = FALSE; - bFixedDep = FALSE; - - aWhat = yytext; - nCommandType = GetJobType(aWhat); - } - break; - case 3: - if ( !bPrjDep ) - { - aWhat = yytext; - if ( aWhat == "-" ) - { - aCommandPara = ByteString(); - } - else - aCommandPara = aWhat; - } - break; - case 4: - if ( !bPrjDep ) - { - aWhatOS = yytext; - if ( aWhatOS.GetTokenCount( ',' ) > 1 ) { - sClientRestriction = aWhatOS.Copy( aWhatOS.GetToken( 0, ',' ).Len() + 1 ); - aWhatOS = aWhatOS.GetToken( 0, ',' ); - } - nOSType = GetOSType (aWhatOS); - } - break; - case 5: - if ( !bPrjDep ) - { - aLogFileName = yytext; - } - break; - default: - if ( !bPrjDep ) - { - ByteString aItem = yytext; - if ( aItem == "NULL" ) - { - // Liste zu Ende - i = -1; - } - else - { - // ggfs. Dependency liste anlegen und ergaenzen - if ( !pDepList2 ) - pDepList2 = new SByteStringList; - pDepList2->PutString( new ByteString( aItem )); - } - } - else - { - ByteString aItem = yytext; - if ( aItem == "NULL" ) - { - // Liste zu Ende - i = -1; - bPrjDep= FALSE; - } - else - { - ByteString sMode; - BOOL bHasModes = FALSE; - if (aItem.Search(":") != STRING_NOTFOUND) - { - sMode = aItem.GetToken ( 0, ':'); - aItem = aItem.GetToken ( 1, ':'); - bHasModes = TRUE; - } - - aProjectName = aDirName.GetToken ( 0, 0x5c); - if ( HasProject( aProjectName )) - { - pPrj = GetPrj( aProjectName ); - // Projekt exist. schon, neue Eintraege anhaengen - } - else - { - // neues Project anlegen - pPrj = new Prj ( aProjectName ); - pPrj->SetPreFix( aPrefix ); - Insert(pPrj,LIST_APPEND); - } - if (bHasModes) - pPrj->AddDependencies( aItem, sMode ); - else - pPrj->AddDependencies( aItem ); - pPrj->HasHardDependencies( bHardDep ); - pPrj->HasFixedDependencies( bFixedDep ); - - /* - if ( nStarMode == STAR_MODE_RECURSIVE_PARSE ) { - String sItem( aItem, RTL_TEXTENCODING_ASCII_US ); - InsertSolarList( sItem ); - } - */ - } - - } - break; - } - /* Wenn dieses Project noch nicht vertreten ist, in die Liste - der Solar-Projekte einfuegen */ - if ( i == -1 ) - { - aProjectName = aDirName.GetToken ( 0, 0x5c); - if ( HasProject( aProjectName )) - { - pPrj = GetPrj( aProjectName ); - // Projekt exist. schon, neue Eintraege anhaengen - } - else - { - // neues Project anlegen - pPrj = new Prj ( aProjectName ); - pPrj->SetPreFix( aPrefix ); - Insert(pPrj,LIST_APPEND); - } - - pCmdData = new CommandData; - pCmdData->SetPath( aDirName ); - pCmdData->SetCommandType( nCommandType ); - pCmdData->SetCommandPara( aCommandPara ); - pCmdData->SetOSType( nOSType ); - pCmdData->SetLogFile( aLogFileName ); - pCmdData->SetComment( aCommentString ); - pCmdData->SetClientRestriction( sClientRestriction ); - if ( pDepList2 ) - pCmdData->SetDependencies( pDepList2 ); - - pPrj->Insert ( pCmdData, LIST_APPEND ); - - } - i++; - - rString.Erase(0, aToken.Len()+1); - aToken = rString.GetToken( 0, '\t' ); - yytext = aToken.GetBuffer(); - - } - // und wer raeumt die depLst wieder ab ? - // macht CommandData selber + ByteString sProjectName = rTokenLine.GetToken(1,'\t'); + Prj* pPrj = GetPrj (sProjectName); // 0, if Prj not found; + Star::InsertTokenLine ( rTokenLine, &pPrj, sProjectName, sal_False ); } /*****************************************************************************/ diff --git a/soldep/inc/soldep/prj.hxx b/soldep/inc/soldep/prj.hxx index b04d6ac1fe4e..53feb3c03cf5 100644 --- a/soldep/inc/soldep/prj.hxx +++ b/soldep/inc/soldep/prj.hxx @@ -287,6 +287,7 @@ private: SDepInfoList* RemoveDepInfoList(SDepInfoList* pInfoList ); PrjList* pTempCommandDataList; BOOL bTempCommandDataListPermanent; + BOOL bError; public: Prj(); Prj( ByteString aName ); @@ -329,6 +330,9 @@ public: void SetTempCommandDataListPermanent (BOOL bVar = TRUE) {bTempCommandDataListPermanent = bVar;} BOOL IsTempCommandDataListPermanent() {return bTempCommandDataListPermanent;} + void SetError (BOOL bVar = TRUE) {bError = bVar;} + BOOL HasError () {return bError;} + Prj& operator<< ( SvStream& rStream ); Prj& operator>> ( SvStream& rStream ); }; @@ -396,6 +400,7 @@ protected: void Expand_Impl(); void ExpandPrj_Impl( Prj *pPrj, Prj *pDepPrj ); ULONG SearchFileEntry( StarFileList *pStarFiles, StarFile* pFile ); + void InsertTokenLine (const ByteString& rToken, Prj** ppPrj, const ByteString& rProjectName, const sal_Bool bExtendAlias = sal_True); public: Star(); @@ -421,7 +426,7 @@ public: BOOL RemovePrj ( Prj* pPrj ); void RemoveAllPrj (); - void InsertToken( char *pChar ); + StarFile* ReadBuildlist (const String& rFilename, BOOL bReadComments = FALSE, BOOL bExtendAlias = TRUE); BOOL NeedsUpdate(); SolarFileList* NeedsFilesForUpdate(); void ReplaceFileEntry( StarFileList *pStarFiles, StarFile* pFile ); @@ -472,7 +477,7 @@ public: USHORT Write( String aFileName ); USHORT WriteMultiple( String rSourceRoot ); - void InsertTokenLine( ByteString& rString ); + void InsertTokenLine ( const ByteString& rTokenLine ); }; #endif -- cgit