summaryrefslogtreecommitdiff
path: root/soldep/bootstrp/minormk.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'soldep/bootstrp/minormk.cxx')
-rw-r--r--soldep/bootstrp/minormk.cxx187
1 files changed, 187 insertions, 0 deletions
diff --git a/soldep/bootstrp/minormk.cxx b/soldep/bootstrp/minormk.cxx
new file mode 100644
index 000000000000..8c08d3a69840
--- /dev/null
+++ b/soldep/bootstrp/minormk.cxx
@@ -0,0 +1,187 @@
+/*************************************************************************
+ *
+ * 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 "minormk.hxx"
+#include "prodmap.hxx"
+#include <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( FALSE )
+{
+ ByteString sDelimiter( DirEntry::GetAccessDelimiter(), RTL_TEXTENCODING_ASCII_US );
+
+
+ ByteString sSolver( GetEnv( "SOLARVERSION" ));
+ BOOL bNewEnv = TRUE;
+ if ( !sSolver.Len()) {
+ sSolver = GetEnv( "SOLARVER" );
+ bNewEnv = 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 = 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()
+/*****************************************************************************/
+{
+}
+