blob: b5d67753794b557cd148943afe506511c46b3d25 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
#include "minormk.hxx"
#include "prodmap.hxx"
#include <soldep/appdef.hxx>
#include <tools/fsys.hxx>
#include <tools/geninfo.hxx>
//
// class MinorMk
//
/*****************************************************************************/
MinorMk::MinorMk(
GenericInformationList *pList,
const ByteString &rVersion,
const ByteString &rWorkStamp,
const ByteString &rEnvironment,
const ByteString &rMinor
)
/*****************************************************************************/
{
String sRoot( ProductMapper::GetVersionRoot( pList, rVersion ));
if ( sRoot.Len()) {
ByteString sPath( sRoot, RTL_TEXTENCODING_ASCII_US );
sPath += "/";
sPath += rEnvironment;
sPath += "/";
sPath += "inc";
if ( rMinor.Len()) {
sPath += ".";
sPath += rMinor;
}
#ifdef UNX
sPath.SearchAndReplaceAll( "\\", "/" );
while( sPath.SearchAndReplace( "//", "/" ) != STRING_NOTFOUND ) {};
#else
sPath.SearchAndReplaceAll( "/", "\\" );
while( sPath.SearchAndReplace( "\\\\", "\\" ) != STRING_NOTFOUND ) {};
#endif
DirEntry aPath( String( sPath, RTL_TEXTENCODING_ASCII_US ));
ByteString sFile( rWorkStamp );
sFile += "minor.mk";
DirEntry aFile( aPath );
aFile += DirEntry( String( sFile, RTL_TEXTENCODING_ASCII_US ));
if ( !aFile.Exists()) {
sFile = sFile.Copy( 3 );
aFile = aPath;
aFile += DirEntry( String( sFile, RTL_TEXTENCODING_ASCII_US ));
}
ReadMinorMk( aFile.GetFull());
}
}
/*****************************************************************************/
MinorMk::MinorMk( GenericInformationList *pList, const ByteString rVersion )
/*****************************************************************************/
{
String sRoot( ProductMapper::GetVersionRoot( pList, rVersion ));
if ( sRoot.Len()) {
ByteString sPath( sRoot, RTL_TEXTENCODING_ASCII_US );
sPath += "/src/solenv/inc";
#ifdef UNX
sPath.SearchAndReplaceAll( "\\", "/" );
while( sPath.SearchAndReplace( "//", "/" ) != STRING_NOTFOUND ) {};
#else
sPath.SearchAndReplaceAll( "/", "\\" );
while( sPath.SearchAndReplace( "\\\\", "\\" ) != STRING_NOTFOUND ) {};
#endif
DirEntry aPath( String( sPath, RTL_TEXTENCODING_ASCII_US ));
ByteString sFile( "minor.mk" );
DirEntry aFile( aPath );
aFile += DirEntry( String( sFile, RTL_TEXTENCODING_ASCII_US ));
ReadMinorMk( aFile.GetFull());
}
}
/*****************************************************************************/
MinorMk::MinorMk( const ByteString &rMinor, const ByteString &rEnvironment )
/*****************************************************************************/
: bExists( sal_False )
{
ByteString sDelimiter( DirEntry::GetAccessDelimiter(), RTL_TEXTENCODING_ASCII_US );
ByteString sSolver( GetEnv( "SOLARVERSION" ));
sal_Bool bNewEnv = sal_True;
if ( !sSolver.Len()) {
sSolver = GetEnv( "SOLARVER" );
bNewEnv = sal_False;
}
ByteString sUPD( GetEnv( "UPD" ));
ByteString sMinorMk( sSolver );
sMinorMk += sDelimiter;
if ( !bNewEnv ) {
sMinorMk += sUPD;
sMinorMk += sDelimiter;
}
if ( rEnvironment.Len()) {
sMinorMk += rEnvironment;
sMinorMk += sDelimiter;
sMinorMk += "inc";
if( rMinor.Len()) {
sMinorMk += ".";
sMinorMk += rMinor;
}
sMinorMk += sDelimiter;
}
sMinorMk += sUPD;
sMinorMk += "minor.mk";
String sFile( sMinorMk, RTL_TEXTENCODING_ASCII_US );
ReadMinorMk( sFile );
}
/*****************************************************************************/
void MinorMk::ReadMinorMk( const String &rFileName )
/*****************************************************************************/
{
if ( DirEntry( rFileName ).Exists()) {
bExists = sal_True;
SvFileStream aStream( rFileName, STREAM_STD_READ );
while ( !aStream.IsOpen())
aStream.Open( rFileName, STREAM_STD_READ );
ByteString sLine;
while ( !aStream.IsEof()) {
aStream.ReadLine( sLine );
if ( sLine.GetToken( 0, '=' ) == "RSCVERSION" )
sRSCVERSION = sLine.GetToken( 1, '=' );
else if ( sLine.GetToken( 0, '=' ) == "RSCREVISION" )
sRSCREVISION = sLine.GetToken( 1, '=' );
else if ( sLine.GetToken( 0, '=' ) == "BUILD" )
sBUILD = sLine.GetToken( 1, '=' );
else if ( sLine.GetToken( 0, '=' ) == "LAST_MINOR" )
sLAST_MINOR = sLine.GetToken( 1, '=' );
}
aStream.Close();
sRSCVERSION.EraseTrailingChars();
sRSCREVISION.EraseTrailingChars();
sBUILD.EraseTrailingChars();
sLAST_MINOR.EraseTrailingChars();
}
}
/*****************************************************************************/
MinorMk::~MinorMk()
/*****************************************************************************/
{
}