blob: d2a07f7c6df040aefa2f891220ec4eeabac88422 [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.
*
*************************************************************/
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_tools.hxx"
#include <stdlib.h>
#include <stdio.h>
//#include "bootstrp/sstring.hxx"
#include <vos/mutex.hxx>
#include <tools/stream.hxx>
#include <tools/geninfo.hxx>
#include "bootstrp/prj.hxx"
#include "bootstrp/inimgr.hxx"
DECLARE_LIST( UniStringList, UniString* )
//#define TEST 1
#if defined(WNT) || defined(OS2)
#define LIST_DELIMETER ';'
#define PATH_DELIMETER '\\'
#elif defined UNX
#define LIST_DELIMETER ':'
#define PATH_DELIMETER '/'
#endif
//Link Star::aDBNotFoundHdl;
//
// class SimpleConfig
//
/*****************************************************************************/
SimpleConfig::SimpleConfig( String aSimpleConfigFileName )
/*****************************************************************************/
{
nLine = 0;
aFileName = aSimpleConfigFileName;
aFileStream.Open ( aFileName, STREAM_READ );
}
/*****************************************************************************/
SimpleConfig::SimpleConfig( DirEntry& rDirEntry )
/*****************************************************************************/
{
nLine = 0;
aFileName = rDirEntry.GetFull();
aFileStream.Open ( aFileName, STREAM_READ );
}
/*****************************************************************************/
SimpleConfig::~SimpleConfig()
/*****************************************************************************/
{
aFileStream.Close ();
}
/*****************************************************************************/
ByteString SimpleConfig::GetNext()
/*****************************************************************************/
{
ByteString aString;
if ( aStringBuffer =="" )
while ((aStringBuffer = GetNextLine()) == "\t") ; //solange bis != "\t"
if ( aStringBuffer =="" )
return ByteString();
aString = aStringBuffer.GetToken(0,'\t');
aStringBuffer.Erase(0, aString.Len()+1);
aStringBuffer.EraseLeadingChars( '\t' );
return aString;
}
/*****************************************************************************/
ByteString SimpleConfig::GetNextLine()
/*****************************************************************************/
{
ByteString aSecStr;
nLine++;
aFileStream.ReadLine ( aTmpStr );
if ( aTmpStr.Search( "#" ) == 0 )
return "\t";
aTmpStr = aTmpStr.EraseLeadingChars();
aTmpStr = aTmpStr.EraseTrailingChars();
while ( aTmpStr.SearchAndReplace(ByteString(' '),ByteString('\t') ) != STRING_NOTFOUND ) ;
int nLength = aTmpStr.Len();
sal_Bool bFound = sal_False;
ByteString aEraseString;
for ( sal_uInt16 i = 0; i<= nLength; i++)
{
if ( aTmpStr.GetChar( i ) == 0x20 && !bFound )
aTmpStr.SetChar( i, 0x09 );
}
return aTmpStr;
}
/*****************************************************************************/
ByteString SimpleConfig::GetCleanedNextLine( sal_Bool bReadComments )
/*****************************************************************************/
{
aFileStream.ReadLine ( aTmpStr );
if ( aTmpStr.Search( "#" ) == 0 )
{
if (bReadComments )
return aTmpStr;
else
while ( aTmpStr.Search( "#" ) == 0 )
{
aFileStream.ReadLine ( aTmpStr );
}
}
aTmpStr = aTmpStr.EraseLeadingChars();
aTmpStr = aTmpStr.EraseTrailingChars();
// while ( aTmpStr.SearchAndReplace(String(' '),String('\t') ) != (sal_uInt16)-1 );
int nLength = aTmpStr.Len();
ByteString aEraseString;
sal_Bool bFirstTab = sal_True;
for ( sal_uInt16 i = 0; i<= nLength; i++)
{
if ( aTmpStr.GetChar( i ) == 0x20 )
aTmpStr.SetChar( i, 0x09 );
if ( aTmpStr.GetChar( i ) == 0x09 )
{
if ( bFirstTab )
bFirstTab = sal_False;
else
{
aTmpStr.SetChar( i, 0x20 );
}
}
else
bFirstTab = sal_True;
}
aTmpStr.EraseAllChars(' ');
return aTmpStr;
}