xref: /AOO41X/main/tools/bootstrp/prj.cxx (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
1*cdf0e10cSrcweir /*************************************************************************
2*cdf0e10cSrcweir  *
3*cdf0e10cSrcweir  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*cdf0e10cSrcweir  *
5*cdf0e10cSrcweir  * Copyright 2000, 2010 Oracle and/or its affiliates.
6*cdf0e10cSrcweir  *
7*cdf0e10cSrcweir  * OpenOffice.org - a multi-platform office productivity suite
8*cdf0e10cSrcweir  *
9*cdf0e10cSrcweir  * This file is part of OpenOffice.org.
10*cdf0e10cSrcweir  *
11*cdf0e10cSrcweir  * OpenOffice.org is free software: you can redistribute it and/or modify
12*cdf0e10cSrcweir  * it under the terms of the GNU Lesser General Public License version 3
13*cdf0e10cSrcweir  * only, as published by the Free Software Foundation.
14*cdf0e10cSrcweir  *
15*cdf0e10cSrcweir  * OpenOffice.org is distributed in the hope that it will be useful,
16*cdf0e10cSrcweir  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17*cdf0e10cSrcweir  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*cdf0e10cSrcweir  * GNU Lesser General Public License version 3 for more details
19*cdf0e10cSrcweir  * (a copy is included in the LICENSE file that accompanied this code).
20*cdf0e10cSrcweir  *
21*cdf0e10cSrcweir  * You should have received a copy of the GNU Lesser General Public License
22*cdf0e10cSrcweir  * version 3 along with OpenOffice.org.  If not, see
23*cdf0e10cSrcweir  * <http://www.openoffice.org/license.html>
24*cdf0e10cSrcweir  * for a copy of the LGPLv3 License.
25*cdf0e10cSrcweir  *
26*cdf0e10cSrcweir  ************************************************************************/
27*cdf0e10cSrcweir 
28*cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
29*cdf0e10cSrcweir #include "precompiled_tools.hxx"
30*cdf0e10cSrcweir #include <stdlib.h>
31*cdf0e10cSrcweir #include <stdio.h>
32*cdf0e10cSrcweir //#include "bootstrp/sstring.hxx"
33*cdf0e10cSrcweir #include <vos/mutex.hxx>
34*cdf0e10cSrcweir 
35*cdf0e10cSrcweir #include <tools/stream.hxx>
36*cdf0e10cSrcweir #include <tools/geninfo.hxx>
37*cdf0e10cSrcweir #include "bootstrp/prj.hxx"
38*cdf0e10cSrcweir #include "bootstrp/inimgr.hxx"
39*cdf0e10cSrcweir 
40*cdf0e10cSrcweir DECLARE_LIST( UniStringList, UniString* )
41*cdf0e10cSrcweir 
42*cdf0e10cSrcweir //#define TEST 	1
43*cdf0e10cSrcweir 
44*cdf0e10cSrcweir #if defined(WNT) || defined(OS2)
45*cdf0e10cSrcweir #define LIST_DELIMETER ';'
46*cdf0e10cSrcweir #define PATH_DELIMETER '\\'
47*cdf0e10cSrcweir #elif defined UNX
48*cdf0e10cSrcweir #define LIST_DELIMETER ':'
49*cdf0e10cSrcweir #define PATH_DELIMETER '/'
50*cdf0e10cSrcweir #endif
51*cdf0e10cSrcweir 
52*cdf0e10cSrcweir //Link Star::aDBNotFoundHdl;
53*cdf0e10cSrcweir 
54*cdf0e10cSrcweir //
55*cdf0e10cSrcweir //	class SimpleConfig
56*cdf0e10cSrcweir //
57*cdf0e10cSrcweir 
58*cdf0e10cSrcweir /*****************************************************************************/
59*cdf0e10cSrcweir SimpleConfig::SimpleConfig( String aSimpleConfigFileName )
60*cdf0e10cSrcweir /*****************************************************************************/
61*cdf0e10cSrcweir {
62*cdf0e10cSrcweir 	nLine = 0;
63*cdf0e10cSrcweir 	aFileName = aSimpleConfigFileName;
64*cdf0e10cSrcweir 	aFileStream.Open ( aFileName, STREAM_READ );
65*cdf0e10cSrcweir }
66*cdf0e10cSrcweir 
67*cdf0e10cSrcweir /*****************************************************************************/
68*cdf0e10cSrcweir SimpleConfig::SimpleConfig( DirEntry& rDirEntry )
69*cdf0e10cSrcweir /*****************************************************************************/
70*cdf0e10cSrcweir {
71*cdf0e10cSrcweir 	nLine = 0;
72*cdf0e10cSrcweir 	aFileName = rDirEntry.GetFull();
73*cdf0e10cSrcweir 	aFileStream.Open ( aFileName, STREAM_READ );
74*cdf0e10cSrcweir }
75*cdf0e10cSrcweir 
76*cdf0e10cSrcweir /*****************************************************************************/
77*cdf0e10cSrcweir SimpleConfig::~SimpleConfig()
78*cdf0e10cSrcweir /*****************************************************************************/
79*cdf0e10cSrcweir {
80*cdf0e10cSrcweir 	aFileStream.Close ();
81*cdf0e10cSrcweir }
82*cdf0e10cSrcweir 
83*cdf0e10cSrcweir /*****************************************************************************/
84*cdf0e10cSrcweir ByteString SimpleConfig::GetNext()
85*cdf0e10cSrcweir /*****************************************************************************/
86*cdf0e10cSrcweir {
87*cdf0e10cSrcweir 	ByteString aString;
88*cdf0e10cSrcweir 
89*cdf0e10cSrcweir 	if ( aStringBuffer =="" )
90*cdf0e10cSrcweir 	  while ((aStringBuffer = GetNextLine()) == "\t") ; //solange bis != "\t"
91*cdf0e10cSrcweir 	if ( aStringBuffer =="" )
92*cdf0e10cSrcweir 		return ByteString();
93*cdf0e10cSrcweir 
94*cdf0e10cSrcweir 	aString = aStringBuffer.GetToken(0,'\t');
95*cdf0e10cSrcweir 	aStringBuffer.Erase(0, aString.Len()+1);
96*cdf0e10cSrcweir 
97*cdf0e10cSrcweir 	aStringBuffer.EraseLeadingChars( '\t' );
98*cdf0e10cSrcweir 
99*cdf0e10cSrcweir 	return aString;
100*cdf0e10cSrcweir }
101*cdf0e10cSrcweir 
102*cdf0e10cSrcweir /*****************************************************************************/
103*cdf0e10cSrcweir ByteString	SimpleConfig::GetNextLine()
104*cdf0e10cSrcweir /*****************************************************************************/
105*cdf0e10cSrcweir {
106*cdf0e10cSrcweir 	ByteString aSecStr;
107*cdf0e10cSrcweir 	nLine++;
108*cdf0e10cSrcweir 
109*cdf0e10cSrcweir 	aFileStream.ReadLine ( aTmpStr );
110*cdf0e10cSrcweir 	if ( aTmpStr.Search( "#" ) == 0 )
111*cdf0e10cSrcweir 		return "\t";
112*cdf0e10cSrcweir 	aTmpStr = aTmpStr.EraseLeadingChars();
113*cdf0e10cSrcweir 	aTmpStr = aTmpStr.EraseTrailingChars();
114*cdf0e10cSrcweir 	while ( aTmpStr.SearchAndReplace(ByteString(' '),ByteString('\t') ) != STRING_NOTFOUND ) ;
115*cdf0e10cSrcweir 	int nLength = aTmpStr.Len();
116*cdf0e10cSrcweir 	sal_Bool bFound = sal_False;
117*cdf0e10cSrcweir 	ByteString aEraseString;
118*cdf0e10cSrcweir 	for ( sal_uInt16 i = 0; i<= nLength; i++)
119*cdf0e10cSrcweir 	{
120*cdf0e10cSrcweir 		if ( aTmpStr.GetChar( i ) == 0x20  && !bFound )
121*cdf0e10cSrcweir 			aTmpStr.SetChar( i, 0x09 );
122*cdf0e10cSrcweir 	}
123*cdf0e10cSrcweir 	return aTmpStr;
124*cdf0e10cSrcweir }
125*cdf0e10cSrcweir 
126*cdf0e10cSrcweir /*****************************************************************************/
127*cdf0e10cSrcweir ByteString SimpleConfig::GetCleanedNextLine( sal_Bool bReadComments )
128*cdf0e10cSrcweir /*****************************************************************************/
129*cdf0e10cSrcweir {
130*cdf0e10cSrcweir 
131*cdf0e10cSrcweir 	aFileStream.ReadLine ( aTmpStr );
132*cdf0e10cSrcweir 	if ( aTmpStr.Search( "#" ) == 0 )
133*cdf0e10cSrcweir         {
134*cdf0e10cSrcweir 		if (bReadComments )
135*cdf0e10cSrcweir 			return aTmpStr;
136*cdf0e10cSrcweir 		else
137*cdf0e10cSrcweir 			while ( aTmpStr.Search( "#" ) == 0 )
138*cdf0e10cSrcweir 			{
139*cdf0e10cSrcweir 				aFileStream.ReadLine ( aTmpStr );
140*cdf0e10cSrcweir 			}
141*cdf0e10cSrcweir         }
142*cdf0e10cSrcweir 
143*cdf0e10cSrcweir 	aTmpStr = aTmpStr.EraseLeadingChars();
144*cdf0e10cSrcweir 	aTmpStr = aTmpStr.EraseTrailingChars();
145*cdf0e10cSrcweir //	while ( aTmpStr.SearchAndReplace(String(' '),String('\t') ) != (sal_uInt16)-1 );
146*cdf0e10cSrcweir 	int nLength = aTmpStr.Len();
147*cdf0e10cSrcweir 	ByteString aEraseString;
148*cdf0e10cSrcweir 	sal_Bool bFirstTab = sal_True;
149*cdf0e10cSrcweir 	for ( sal_uInt16 i = 0; i<= nLength; i++)
150*cdf0e10cSrcweir 	{
151*cdf0e10cSrcweir 		if ( aTmpStr.GetChar( i ) == 0x20 )
152*cdf0e10cSrcweir 			aTmpStr.SetChar( i, 0x09 );
153*cdf0e10cSrcweir 
154*cdf0e10cSrcweir 		if ( aTmpStr.GetChar( i ) ==  0x09 )
155*cdf0e10cSrcweir 		{
156*cdf0e10cSrcweir 			if ( bFirstTab )
157*cdf0e10cSrcweir 				bFirstTab = sal_False;
158*cdf0e10cSrcweir 			else
159*cdf0e10cSrcweir 			{
160*cdf0e10cSrcweir 				aTmpStr.SetChar( i, 0x20 );
161*cdf0e10cSrcweir 			}
162*cdf0e10cSrcweir 		}
163*cdf0e10cSrcweir 		else
164*cdf0e10cSrcweir 			bFirstTab = sal_True;
165*cdf0e10cSrcweir 
166*cdf0e10cSrcweir 	}
167*cdf0e10cSrcweir 	aTmpStr.EraseAllChars(' ');
168*cdf0e10cSrcweir 	return aTmpStr;
169*cdf0e10cSrcweir 
170*cdf0e10cSrcweir }
171*cdf0e10cSrcweir 
172