summaryrefslogtreecommitdiff
path: root/soldep/bootstrp/prodmap.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'soldep/bootstrp/prodmap.cxx')
-rw-r--r--soldep/bootstrp/prodmap.cxx517
1 files changed, 0 insertions, 517 deletions
diff --git a/soldep/bootstrp/prodmap.cxx b/soldep/bootstrp/prodmap.cxx
deleted file mode 100644
index 0c5ce1e66f14..000000000000
--- a/soldep/bootstrp/prodmap.cxx
+++ /dev/null
@@ -1,517 +0,0 @@
- /*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#include "prodmap.hxx"
-#include <tools/geninfo.hxx>
-#include <tools/fsys.hxx>
-#include "minormk.hxx"
-
-#include <stdio.h>
-
-#define PRODUCT_KEY "TARGETDESCRIPTION/PRODUCTS"
-#define DEPENDS_ON_KEY "TARGETDESCRIPTION/DEPENDSON"
-#define BASED_ON_KEY "TARGETDESCRIPTION/BASEDON"
-
-//
-// class ProductMapper
-//
-
-/*****************************************************************************/
-ProductMapper::ProductMapper()
-/*****************************************************************************/
- : pVersionList( NULL ),
- pProductList( NULL )
-{
-}
-
-/*****************************************************************************/
-ProductMapper::ProductMapper( GenericInformationList *pVerList )
-/*****************************************************************************/
- : pVersionList( pVerList ),
- pProductList( NULL )
-{
- if ( pVerList )
- CreateProductList( pVerList );
-}
-
-/*****************************************************************************/
-ProductMapper::~ProductMapper()
-/*****************************************************************************/
-{
- delete pProductList;
-}
-
-/*****************************************************************************/
-void ProductMapper::CreateProductList( GenericInformationList *pVerList )
-/*****************************************************************************/
-{
- /*
- creates a list of the following format:
-
- ProductName Workspace // 6.0 Final SRC641
- { // {
- DependsOn // DependsOn
- { // {
- product1 //
- product2 //
- ... //
- } //
- BasedOn //
- { //
- productX //
- productY //
- ... //
- } //
- } //
- */
-
- delete pProductList;
- pProductList = NULL;
-
- pVersionList = pVerList;
-
- if ( pVersionList ) {
- ByteString sProductKey( PRODUCT_KEY );
- ByteString sDependsOnKey( DEPENDS_ON_KEY );
- ByteString sBasedOnKey( BASED_ON_KEY );
-
- for ( sal_uIntPtr i = 0; i < pVersionList->Count(); i++ ) {
- GenericInformation *pVersion = pVersionList->GetObject( i );
-
- GenericInformation *pProducts = pVersion->GetSubInfo( sProductKey, sal_True );
- if ( pProducts ) {
- ByteString sProducts = pProducts->GetValue();
-
- ByteString sDependsOn;
- GenericInformation *pDependsOn = pVersion->GetSubInfo( sDependsOnKey, sal_True );
- if ( pDependsOn )
- sDependsOn = pDependsOn->GetValue();
-
- ByteString sBasedOn;
- GenericInformation *pBasedOn = pVersion->GetSubInfo( sBasedOnKey, sal_True );
- if ( pBasedOn )
- sBasedOn = pBasedOn->GetValue();
-
- for ( sal_uInt16 x = 0; x < sProducts.GetTokenCount( ';' ); x++ ) {
- ByteString sProduct( sProducts.GetToken( x, ';' ));
- if( sProduct.Len()) {
- if ( !pProductList )
- pProductList = new GenericInformationList();
-
- pProductList->InsertInfo( sProduct, *pVersion, sal_True, sal_True );
-
- for ( sal_uInt16 y = 0; y < sDependsOn.GetTokenCount( ';' ); y++ ) {
- ByteString sDependsOnKey_l = sProduct;
- sDependsOnKey_l += "/DependsOn/";
- sDependsOnKey_l += sDependsOn.GetToken( y, ';' );
-
- pProductList->InsertInfo( sDependsOnKey_l, "", sal_True, sal_True );
- }
- for ( sal_uInt16 z = 0; z < sBasedOn.GetTokenCount( ';' ); z++ ) {
- ByteString sBasedOnKey_l = sProduct;
- sBasedOnKey_l += "/BasedOn/";
- sBasedOnKey_l += sBasedOn.GetToken( z, ';' );
-
- pProductList->InsertInfo( sBasedOnKey_l, "", sal_True, sal_True );
- }
- }
- }
- }
- }
- }
-}
-
-/*****************************************************************************/
-sal_uInt16 ProductMapper::GetProductInformation(
- const ByteString &rProduct, GenericInformation *& pProductInfo )
-/*****************************************************************************/
-{
- pProductInfo = NULL;
-
- if ( !pVersionList )
- return PRODUCT_MAPPER_NO_VERSION_INFORMATION;
-
- if ( !pProductList )
- return PRODUCT_MAPPER_NO_PRODUCT;
-
- ByteString sProductKey( rProduct );
- pProductInfo = pProductList->GetInfo( sProductKey, sal_True );
-
- if ( !pProductInfo )
- return PRODUCT_MAPPER_NO_PRODUCT;
-
- return PRODUCT_MAPPER_OK;
-}
-
-/*****************************************************************************/
-sal_uInt16 ProductMapper::PrintDependentTargets(
- const ByteString &rProduct, sal_uInt16 nLevel )
-/*****************************************************************************/
-{
- GenericInformation *pProductInfo;
-
- sal_uInt16 nReturn = GetProductInformation( rProduct, pProductInfo );
-
- if ( nReturn == PRODUCT_MAPPER_OK ) {
- for ( sal_uInt16 i = 0; i < nLevel; i++ )
- fprintf( stdout, " " );
- fprintf( stdout, "%s (%s)\n", pProductInfo->GetBuffer(),
- pProductInfo->GetValue().GetBuffer());
- aPrintedList.PutString( new ByteString( *pProductInfo ));
-
- for ( sal_uIntPtr j = 0; j < pProductList->Count(); j++ ) {
- GenericInformation *pCandidate = pProductList->GetObject( j );
- ByteString sKey( "DEPENDSON/" );
- sKey += rProduct;
- GenericInformation *pDependsOn = pCandidate->GetSubInfo( sKey, sal_True );
- if ( pDependsOn )
- PrintDependentTargets( *pCandidate, nLevel + 1 );
- }
- if ( !nLevel ) {
- ByteString sKey( "BASEDON" );
- GenericInformation *pBasedOn = pProductInfo->GetSubInfo( sKey );
- if ( pBasedOn ) {
- GenericInformationList *pBases = pBasedOn->GetSubList();
- if ( pBases ) {
- for ( sal_uIntPtr k = 0; k < pBases->Count(); k++ ) {
- aBaseList.PutString( new ByteString( *pBases->GetObject( k )));
- }
- }
- }
- }
- }
-
- return nReturn;
-}
-
-/*****************************************************************************/
-sal_uInt16 ProductMapper::PrintAndDeleteBaseList()
-/*****************************************************************************/
-{
- if ( aBaseList.Count()) {
- fprintf( stdout, "\nbased on\n" );
- while ( aBaseList.Count()) {
- ByteString sProduct( *aBaseList.GetObject(( sal_uIntPtr ) 0 ));
- if ( aPrintedList.IsString( aBaseList.GetObject(( sal_uIntPtr ) 0 )) == NOT_THERE ) {
- aPrintedList.PutString( aBaseList.GetObject(( sal_uIntPtr ) 0 ));
- PrintDependentTargets( sProduct );
- }
- else
- delete aBaseList.GetObject(( sal_uIntPtr ) 0 );
-
- aBaseList.Remove(( sal_uIntPtr ) 0 );
- }
- while ( aPrintedList.Count())
- delete aPrintedList.Remove(( sal_uIntPtr ) 0 );
-
- fprintf( stdout, "\n" );
- }
- return PRODUCT_MAPPER_OK;
-}
-
-/*****************************************************************************/
-sal_uInt16 ProductMapper::PrintDependencies( const ByteString &rProduct )
-/*****************************************************************************/
-{
- sal_uInt16 nResult = PrintDependentTargets( rProduct );
- PrintAndDeleteBaseList();
- return nResult;
-}
-
-/*****************************************************************************/
-sal_uInt16 ProductMapper::PrintProductList()
-/*****************************************************************************/
-{
- if ( !pVersionList )
- return PRODUCT_MAPPER_NO_VERSION_INFORMATION;
-
- if ( !pProductList || !pProductList->Count())
- return PRODUCT_MAPPER_NO_PRODUCT;
-
- if ( pProductList->Count()) {
- for ( sal_uIntPtr i = 0; i < pProductList->Count(); i++ )
- fprintf( stdout, "%s (%s)\n",
- pProductList->GetObject( i )->GetBuffer(),
- pProductList->GetObject( i )->GetValue().GetBuffer());
- fprintf( stdout, "\n" );
- }
-
- return PRODUCT_MAPPER_OK;
-}
-
-/*****************************************************************************/
-SByteStringList *ProductMapper::GetMinorList(
- const ByteString &rVersion, const ByteString &rEnvironment )
-/*****************************************************************************/
-{
- SByteStringList *pList = NULL;
-
- if ( pVersionList ) {
- String sRoot( GetVersionRoot( pVersionList, rVersion ));
- if ( sRoot.Len()) {
- DirEntry aEntry( sRoot );
- aEntry += DirEntry( String( rEnvironment, RTL_TEXTENCODING_ASCII_US ));
- String sWildcard( String::CreateFromAscii( "inc.*" ));
- aEntry += DirEntry( sWildcard );
-
- Dir aDir( aEntry, FSYS_KIND_DIR );
- for ( sal_uInt16 i = 0; i < aDir.Count(); i++ ) {
- ByteString sInc( aDir[ i ].GetName(), RTL_TEXTENCODING_ASCII_US );
- if ( sInc.GetTokenCount( '.' ) > 1 ) {
- if ( !pList )
- pList = new SByteStringList();
- pList->PutString( new ByteString( sInc.GetToken( 1, '.' )));
- }
- }
- }
- }
- return pList;
-}
-
-/*****************************************************************************/
-String ProductMapper::GetVersionRoot(
- GenericInformationList *pList, const ByteString &rVersion )
-/*****************************************************************************/
-{
- ByteString sKey( rVersion );
- GenericInformation *pVersion = pList->GetInfo( sKey );
- if ( pVersion ) {
-#ifdef UNX
- sKey = "drives/o:/unixvolume";
- GenericInformation *pUnixVolume = pVersion->GetSubInfo( sKey, sal_True );
- ByteString sPath;
- if ( pUnixVolume )
- sPath = pUnixVolume->GetValue();
- sPath += "/";
-#else
- ByteString sPath( "o:\\" );
-#endif
- sKey = "settings/path";
- GenericInformation *pPath = pVersion->GetSubInfo( sKey, sal_True );
- if ( pPath ) {
- sPath += pPath->GetValue().GetToken( 0, '\\' );
- sPath += "/";
- }
-#ifdef UNX
- sPath.SearchAndReplaceAll( "\\", "/" );
- while( sPath.SearchAndReplace( "//", "/" ) != STRING_NOTFOUND ) {};
-#else
- sPath.SearchAndReplaceAll( "/", "\\" );
- while( sPath.SearchAndReplace( "\\\\", "\\" ) != STRING_NOTFOUND ) {};
-#endif
-
- return String( sPath, RTL_TEXTENCODING_ASCII_US );
- }
- return String();
-}
-
-/*****************************************************************************/
-BaseProductList *ProductMapper::GetBases(
- GenericInformation *pProductInfo, sal_uInt16 nLevel,
- BaseProductList *pBases )
-/*****************************************************************************/
-{
- if ( !pBases )
- pBases = new BaseProductList();
-
- if ( pProductInfo ) {
- ByteString sCandidate( *pProductInfo );
- sCandidate += " (";
- sCandidate += pProductInfo->GetValue();
- sCandidate += ")";
-
- ByteString sKey( "BASEDON" );
- GenericInformation *pBasedOn = pProductInfo->GetSubInfo( sKey );
- if ( pBasedOn ) {
- GenericInformationList *pBasesInfo = pBasedOn->GetSubList();
- if ( pBasesInfo ) {
- for ( sal_uIntPtr k = 0; k < pBasesInfo->Count(); k++ ) {
- GenericInformation *pBaseProduct;
- if ( GetProductInformation( *pBasesInfo->GetObject( k ), pBaseProduct ) == PRODUCT_MAPPER_OK )
- GetBases( pBaseProduct, ++ nLevel, pBases );
- }
- }
- }
- sal_Bool bFound = sal_False;
- ByteString sUpperCandidate( sCandidate );
- sUpperCandidate.ToUpperAscii();
- for ( sal_uInt16 i = 0; i < pBases->Count() && !bFound; i++ ) {
- ByteString sTest( *pBases->GetObject( i ));
- if ( sTest.ToUpperAscii() == sUpperCandidate )
- bFound = sal_True;
- }
- if ( !bFound )
- pBases->Insert( new ByteString( sCandidate ), ( sal_uIntPtr ) 0 );
- }
- return pBases;
-}
-
-/*****************************************************************************/
-sal_uInt16 ProductMapper::PrintMinorList(
- const ByteString rProduct, const ByteString rEnvironment )
-/*****************************************************************************/
-{
- if ( !pVersionList )
- return PRODUCT_MAPPER_NO_VERSION_INFORMATION;
-
- if ( !pProductList || !pProductList->Count())
- return PRODUCT_MAPPER_NO_PRODUCT;
-
- GenericInformation *pProductInfo;
- GetProductInformation( rProduct, pProductInfo );
- if ( !pProductInfo )
- return PRODUCT_MAPPER_NO_PRODUCT;
-
- BaseProductList *pBases = GetBases( pProductInfo );
- if ( pBases->Count()) {
- if ( pBases->Count() > 1 )
- fprintf( stdout, "Product \"%s\" based on ", pBases->GetObject(( sal_uIntPtr ) 0 )->GetBuffer());
- else
- fprintf( stdout, "Product \"%s\" based on no other products", pBases->GetObject(( sal_uIntPtr ) 0 )->GetBuffer());
-
- for ( sal_uIntPtr i = 1; i < pBases->Count(); i++ ) {
- fprintf( stdout, "\"%s\"", pBases->GetObject( i )->GetBuffer());
- if ( i < pBases->Count() - 1 )
- fprintf( stdout, ", " );
- }
- fprintf( stdout, "\n\n" );
- }
- sal_uInt16 nResult = PRODUCT_MAPPER_OK;
-
- if ( rEnvironment.Len())
- nResult = PrintSingleMinorList( pProductInfo, pBases, rEnvironment );
- else {
- ByteString sEnvKey( pProductInfo->GetValue());
- sEnvKey += "/Environments";
-
- GenericInformation *pEnvironmentInfo = pVersionList->GetInfo( sEnvKey, sal_True );
- if ( pEnvironmentInfo ) {
- GenericInformationList *pEnvironmentList = pEnvironmentInfo->GetSubList();
- if ( pEnvironmentList ) {
- for ( sal_uIntPtr i = 0; i < pEnvironmentList->Count(); i++ ) {
- sal_uInt16 nTmp = PrintSingleMinorList( pProductInfo, pBases, *pEnvironmentList->GetObject( i ));
- if ( nTmp != PRODUCT_MAPPER_OK )
- nResult = nTmp;
- }
- }
- }
- }
-
- for ( sal_uIntPtr m = 0; m < pBases->Count(); m++ )
- delete pBases->GetObject( m );
- delete pBases;
-
- return nResult;
-}
-
-/*****************************************************************************/
-sal_uInt16 ProductMapper::PrintSingleMinorList(
- GenericInformation *pProductInfo, BaseProductList *pBases,
- const ByteString rEnvironment )
-/*****************************************************************************/
-{
- DirEntry aRoot( GetVersionRoot( pVersionList, pProductInfo->GetValue()));
- aRoot += DirEntry( String( rEnvironment, RTL_TEXTENCODING_ASCII_US ));
- if ( !aRoot.Exists())
- return PRODUCT_MAPPER_OK;
-
- SByteStringList *pMinors = GetMinorList( pProductInfo->GetValue(), rEnvironment );
- if ( !pMinors )
- pMinors = new SByteStringList();
- pMinors->Insert( new ByteString( "" ), LIST_APPEND );
-
- SByteStringList aOutputList;
- sal_Bool bUnknownMinor = sal_False;
- for ( sal_uIntPtr i = 0; i < pMinors->Count(); i++ ) {
- ByteString sOutput;
- ByteString sProductVersion;
-
- for ( sal_uIntPtr j = 0; j < pBases->Count(); j++ ) {
- ByteString sCurProduct( *pBases->GetObject( j ));
- ByteString sVersion( sCurProduct.GetToken( sCurProduct.GetTokenCount( '(' ) - 1, '(' ).GetToken( 0, ')' ));
- if ( !j )
- sProductVersion = sVersion;
-
- MinorMk *pMinorMk = new MinorMk(
- pVersionList, sProductVersion, sVersion, rEnvironment, *pMinors->GetObject( i ));
-
- ByteString sMinor( pMinorMk->GetLastMinor().GetBuffer());
- if ( !sMinor.Len()) {
- sMinor = "!";
- bUnknownMinor = sal_True;
- }
- if ( j == 0 ) {
- sOutput += pMinorMk->GetBuildNr();
- sOutput += " ";
-
- if ( i == pMinors->Count() - 1 )
- sOutput += "flat: ";
- else
- sOutput += " ";
- }
- sOutput += sVersion;
- sOutput += ".";
- sOutput += sMinor;
- sOutput += "(";
- sOutput += pMinorMk->GetBuildNr();
- sOutput += ") ";
- }
- aOutputList.PutString( new ByteString( sOutput ));
- }
- ByteString sOldMinor;
-
- if ( aOutputList.Count())
- fprintf( stdout, "Available builds on %s:\n", rEnvironment.GetBuffer());
-
- for ( sal_uIntPtr o = 0; o < aOutputList.Count(); o++ ) {
- ByteString sOutput( *aOutputList.GetObject( o ));
- sOutput = sOutput.Copy( sOutput.GetToken( 0, ' ' ).Len() + 1 );
-
- ByteString sCurMinor( sOutput.GetToken( 1, '.' ).GetToken( 0, '(' ));
- if ( sOldMinor.Len() && sCurMinor < sOldMinor ) {
- fprintf( stdout, " ----------\n" );
- }
- sOldMinor = sCurMinor;
-
- fprintf( stdout, "%s\n", sOutput.GetBuffer());
- delete aOutputList.GetObject( o );
- }
- if ( bUnknownMinor )
- fprintf( stdout, "Symbol ! indcates that at least one minor could not be found\n\n" );
- else if ( aOutputList.Count())
- fprintf( stdout, "\n" );
-
- for ( sal_uIntPtr l = 0; l < pMinors->Count(); l++ )
- delete pMinors->GetObject( l );
- delete pMinors;
-
- return PRODUCT_MAPPER_OK;
-}
-
-
-
-