xref: /trunk/main/idl/source/prj/command.cxx (revision 79aad27f)
1*724893d4SAndrew Rist /**************************************************************
2*724893d4SAndrew Rist  *
3*724893d4SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*724893d4SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*724893d4SAndrew Rist  * distributed with this work for additional information
6*724893d4SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*724893d4SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*724893d4SAndrew Rist  * "License"); you may not use this file except in compliance
9*724893d4SAndrew Rist  * with the License.  You may obtain a copy of the License at
10*724893d4SAndrew Rist  *
11*724893d4SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir  *
13*724893d4SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*724893d4SAndrew Rist  * software distributed under the License is distributed on an
15*724893d4SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*724893d4SAndrew Rist  * KIND, either express or implied.  See the License for the
17*724893d4SAndrew Rist  * specific language governing permissions and limitations
18*724893d4SAndrew Rist  * under the License.
19*724893d4SAndrew Rist  *
20*724893d4SAndrew Rist  *************************************************************/
21*724893d4SAndrew Rist 
22*724893d4SAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_idl.hxx"
26cdf0e10cSrcweir 
27cdf0e10cSrcweir #include <stdlib.h>
28cdf0e10cSrcweir #include <stdio.h>
29cdf0e10cSrcweir #include <string.h>
30cdf0e10cSrcweir #include <ctype.h>
31cdf0e10cSrcweir 
32cdf0e10cSrcweir #include <command.hxx>
33cdf0e10cSrcweir #include <globals.hxx>
34cdf0e10cSrcweir #include <database.hxx>
35cdf0e10cSrcweir #include <tools/fsys.hxx>
36cdf0e10cSrcweir 
37cdf0e10cSrcweir /*************************************************************************
38cdf0e10cSrcweir |*
39cdf0e10cSrcweir |*	  Syntaxbeschreibung
40cdf0e10cSrcweir |*
41cdf0e10cSrcweir *************************************************************************/
42cdf0e10cSrcweir char const * SyntaxStrings[] = {
43cdf0e10cSrcweir "basic-type:",
44cdf0e10cSrcweir "\tvoid|        char|       int|        float|      double|",
45cdf0e10cSrcweir "\tUINT16|      INT16|      UINT32|     INT32|      BOOL|",
46cdf0e10cSrcweir "\tBYTE|        String|     SbxObject",
47cdf0e10cSrcweir "",
48cdf0e10cSrcweir "{ import \"filename\" }\n",
49cdf0e10cSrcweir "module definition:",
50cdf0e10cSrcweir "module",
51cdf0e10cSrcweir "\tunique id range (ask MM)",
52cdf0e10cSrcweir "modul-name",
53cdf0e10cSrcweir "'['",
54cdf0e10cSrcweir "\tSlotIdFile( \"filename\" )",
55cdf0e10cSrcweir "']'",
56cdf0e10cSrcweir "'{'",
57cdf0e10cSrcweir "\t{ include \"filename\" }\n",
58cdf0e10cSrcweir 
59cdf0e10cSrcweir "\titem definition:",
60cdf0e10cSrcweir "\titem type item-name;\n",
61cdf0e10cSrcweir 
62cdf0e10cSrcweir "\ttype definition:",
63cdf0e10cSrcweir "\tstruct | union identifier",
64cdf0e10cSrcweir "\t'{'",
65cdf0e10cSrcweir "\t\t{ type idetifier }",
66cdf0e10cSrcweir "\t'}'",
67cdf0e10cSrcweir "\t|",
68cdf0e10cSrcweir "\tenum identifier",
69cdf0e10cSrcweir "\t'{'",
70cdf0e10cSrcweir "\t\t{ identifier, }",
71cdf0e10cSrcweir "\t'}'",
72cdf0e10cSrcweir "\t|",
73cdf0e10cSrcweir "\ttypedef type identifier\n",
74cdf0e10cSrcweir 
75cdf0e10cSrcweir "\titem-method:",
76cdf0e10cSrcweir "\titem identifier item-method-args\n",
77cdf0e10cSrcweir 
78cdf0e10cSrcweir "\titem-method-args:",
79cdf0e10cSrcweir "\t( { item parameter-name SLOT_ID } )\n",
80cdf0e10cSrcweir 
81cdf0e10cSrcweir "\tslot definition:",
82cdf0e10cSrcweir "\titem identifier SLOT_ID [ item-method-args ]",
83cdf0e10cSrcweir "\t'['\n",
84cdf0e10cSrcweir 
85cdf0e10cSrcweir "\t\titem-method-args",
86cdf0e10cSrcweir "\t\tAccelConfig, MenuConfig, StatusBarConfig, ToolbarConfig",
87cdf0e10cSrcweir "\t\tAutomation*",
88cdf0e10cSrcweir "\t\tAutoUpdate",
89cdf0e10cSrcweir // "\t\tCachable*, Volatile",
90cdf0e10cSrcweir "\t\tContainer",
91cdf0e10cSrcweir "\t\tDefault        = Identifier",
92cdf0e10cSrcweir "\t\tExecMethod     = Identifier",
93cdf0e10cSrcweir "\t\tExport*",
94cdf0e10cSrcweir "\t\tFastCall",
95cdf0e10cSrcweir "\t\tGet, Set",
96cdf0e10cSrcweir "\t\tGroupId        = Identifier",
97cdf0e10cSrcweir "\t\tHasCoreId",
98cdf0e10cSrcweir "\t\tHasDialog",
99cdf0e10cSrcweir "\t\tIsCollection",
100cdf0e10cSrcweir "\t\tImageRotation",
101cdf0e10cSrcweir "\t\tImageReflection",
102cdf0e10cSrcweir "\t\tPseudoPrefix   = Identifier",
103cdf0e10cSrcweir "\t\tPseudoSlots",
104cdf0e10cSrcweir "\t\tReadOnly",
105cdf0e10cSrcweir "\t\tReadOnlyDoc*",
106cdf0e10cSrcweir "\t\tRecordPerSet*, RecordPerItem, RecordManual, NoRecord",
107cdf0e10cSrcweir "\t\tRecordAbsolute",
108cdf0e10cSrcweir "\t\tStateMethod    = Identifier",
109cdf0e10cSrcweir "\t\tSynchron*, Asynchron",
110cdf0e10cSrcweir "\t\tToggle",
111cdf0e10cSrcweir "\t']'\n",
112cdf0e10cSrcweir 
113cdf0e10cSrcweir "\tinterface definition:",
114cdf0e10cSrcweir "\tshell | interface identifier ':' interface",
115cdf0e10cSrcweir "\t'{'",
116cdf0e10cSrcweir "\t\t{ slot }",
117cdf0e10cSrcweir "\t'}'\n",
118cdf0e10cSrcweir "---syntax example is sfx.idl---\n",
119cdf0e10cSrcweir NULL };
120cdf0e10cSrcweir 
121cdf0e10cSrcweir char CommandLineSyntax[] =
122cdf0e10cSrcweir "-fs<slotmap file>          -fl<listing file>\n"
123cdf0e10cSrcweir "-fo<odl file>              -fd<data base file>\n"
124cdf0e10cSrcweir "-fi<item implementation>   -ft<type library file> (not OLE)\n"
125cdf0e10cSrcweir "-fr<ressource file>        -fm<makefile target file>\n"
126cdf0e10cSrcweir "-fC<c++ source file>       -fH<c++ header file>\n"
127cdf0e10cSrcweir "-fc<c source file>         -fh<c header file>\n"
128cdf0e10cSrcweir "-rsc <*.srs header line>\n"
129cdf0e10cSrcweir "-help, ?                   @<file> response file\n"
130cdf0e10cSrcweir " <filenames>\n";
131cdf0e10cSrcweir 
132cdf0e10cSrcweir /*************************************************************************
133cdf0e10cSrcweir |*
134cdf0e10cSrcweir |*	  Init()
135cdf0e10cSrcweir |*
136cdf0e10cSrcweir |*	  Beschreibung
137cdf0e10cSrcweir |*	  Ersterstellung	MM 15.12.94
138cdf0e10cSrcweir |*	  Letzte Aenderung	MM 15.12.94
139cdf0e10cSrcweir |*
140cdf0e10cSrcweir *************************************************************************/
Init()141cdf0e10cSrcweir void Init()
142cdf0e10cSrcweir {
143cdf0e10cSrcweir 	if( !IDLAPP->pHashTable )
144cdf0e10cSrcweir 		IDLAPP->pHashTable		= new SvStringHashTable( 2801 );
145cdf0e10cSrcweir 	if( !IDLAPP->pGlobalNames )
146cdf0e10cSrcweir 		IDLAPP->pGlobalNames	= new SvGlobalHashNames();
147cdf0e10cSrcweir }
148cdf0e10cSrcweir 
149cdf0e10cSrcweir /*************************************************************************
150cdf0e10cSrcweir |*
151cdf0e10cSrcweir |*	  DeInit()
152cdf0e10cSrcweir |*
153cdf0e10cSrcweir |*	  Beschreibung
154cdf0e10cSrcweir |*
155cdf0e10cSrcweir *************************************************************************/
DeInit()156cdf0e10cSrcweir void DeInit()
157cdf0e10cSrcweir {
158cdf0e10cSrcweir 	delete IDLAPP;
159cdf0e10cSrcweir }
160cdf0e10cSrcweir 
161cdf0e10cSrcweir /*************************************************************************
162cdf0e10cSrcweir |*
163cdf0e10cSrcweir |*	  DeInit()
164cdf0e10cSrcweir |*
165cdf0e10cSrcweir |*	  Beschreibung
166cdf0e10cSrcweir |*
167cdf0e10cSrcweir *************************************************************************/
ReadIdl(SvIdlWorkingBase * pDataBase,const SvCommand & rCommand)168cdf0e10cSrcweir sal_Bool ReadIdl( SvIdlWorkingBase * pDataBase, const SvCommand & rCommand )
169cdf0e10cSrcweir {
170cdf0e10cSrcweir 	for( sal_uInt16 n = 0; n < rCommand.aInFileList.Count(); n++ )
171cdf0e10cSrcweir 	{
172cdf0e10cSrcweir         String aFileName ( *rCommand.aInFileList.GetObject( n ) );
173cdf0e10cSrcweir 		SvFileStream aStm( aFileName, STREAM_STD_READ | STREAM_NOCREATE );
174cdf0e10cSrcweir 		if( aStm.GetError() == SVSTREAM_OK )
175cdf0e10cSrcweir 		{
176cdf0e10cSrcweir 			if( pDataBase->IsBinaryFormat( aStm ) )
177cdf0e10cSrcweir 			{
178cdf0e10cSrcweir 				pDataBase->Load( aStm );
179cdf0e10cSrcweir 				if( aStm.GetError() != SVSTREAM_OK )
180cdf0e10cSrcweir 				{
181cdf0e10cSrcweir 					ByteString aStr;
182cdf0e10cSrcweir 					if( aStm.GetError() == SVSTREAM_FILEFORMAT_ERROR )
183cdf0e10cSrcweir 						aStr = "error: incompatible format, file ";
184cdf0e10cSrcweir 					else if( aStm.GetError() == SVSTREAM_WRONGVERSION )
185cdf0e10cSrcweir 						aStr = "error: wrong version, file ";
186cdf0e10cSrcweir 					else
187cdf0e10cSrcweir 						aStr = "error during load, file ";
188cdf0e10cSrcweir                     aStr += ByteString( aFileName, RTL_TEXTENCODING_UTF8 );
189cdf0e10cSrcweir                     fprintf( stderr, "%s\n", aStr.GetBuffer() );
190cdf0e10cSrcweir 					return sal_False;
191cdf0e10cSrcweir 				}
192cdf0e10cSrcweir 			}
193cdf0e10cSrcweir 			else
194cdf0e10cSrcweir 			{
195cdf0e10cSrcweir 				SvTokenStream aTokStm( aStm, aFileName );
196cdf0e10cSrcweir 				if( !pDataBase->ReadSvIdl( aTokStm, sal_False, rCommand.aPath ) )
197cdf0e10cSrcweir 					return sal_False;
198cdf0e10cSrcweir 			}
199cdf0e10cSrcweir 		}
200cdf0e10cSrcweir 		else
201cdf0e10cSrcweir         {
202cdf0e10cSrcweir             const ByteString aStr( aFileName, RTL_TEXTENCODING_UTF8 );
203cdf0e10cSrcweir             fprintf( stderr, "unable to read input file: %s\n", aStr.GetBuffer() );
204cdf0e10cSrcweir 			return sal_False;
205cdf0e10cSrcweir         }
206cdf0e10cSrcweir 	}
207cdf0e10cSrcweir 	return sal_True;
208cdf0e10cSrcweir }
209cdf0e10cSrcweir 
210cdf0e10cSrcweir /*************************************************************************
211cdf0e10cSrcweir |*
212cdf0e10cSrcweir |*	  SvCommand::SvCommand()
213cdf0e10cSrcweir |*
214cdf0e10cSrcweir |*	  Beschreibung
215cdf0e10cSrcweir |*
216cdf0e10cSrcweir *************************************************************************/
ResponseFile(StringList * pList,int argc,char ** argv)217cdf0e10cSrcweir static sal_Bool ResponseFile( StringList * pList, int argc, char ** argv )
218cdf0e10cSrcweir {
219cdf0e10cSrcweir 	// Programmname
220cdf0e10cSrcweir     pList->Insert( new String( String::CreateFromAscii(*argv) ), LIST_APPEND );
221cdf0e10cSrcweir 	for( int i = 1; i < argc; i++ )
222cdf0e10cSrcweir 	{
223cdf0e10cSrcweir 		if( '@' == **(argv +i) )
224cdf0e10cSrcweir 		{ // wenn @, dann Response-Datei
225cdf0e10cSrcweir             SvFileStream aStm( String::CreateFromAscii((*(argv +i)) +1), STREAM_STD_READ | STREAM_NOCREATE );
226cdf0e10cSrcweir 			if( aStm.GetError() != SVSTREAM_OK )
227cdf0e10cSrcweir 				return sal_False;
228cdf0e10cSrcweir 
229cdf0e10cSrcweir 			ByteString aStr;
230cdf0e10cSrcweir 			while( aStm.ReadLine( aStr ) )
231cdf0e10cSrcweir 			{
232cdf0e10cSrcweir 				sal_uInt16 n = 0;
233cdf0e10cSrcweir 				sal_uInt16 nPos = 1;
234cdf0e10cSrcweir 				while( n != nPos )
235cdf0e10cSrcweir 				{
236cdf0e10cSrcweir                     while( aStr.GetChar(n) && isspace( aStr.GetChar(n) ) )
237cdf0e10cSrcweir 						n++;
238cdf0e10cSrcweir 					nPos = n;
239cdf0e10cSrcweir                     while( aStr.GetChar(n) && !isspace( aStr.GetChar(n) ) )
240cdf0e10cSrcweir 						n++;
241cdf0e10cSrcweir 					if( n != nPos )
242cdf0e10cSrcweir                         pList->Insert( new String( String::CreateFromAscii( aStr.Copy( nPos, n - nPos ).GetBuffer() ) ), LIST_APPEND );
243cdf0e10cSrcweir 				}
244cdf0e10cSrcweir 			}
245cdf0e10cSrcweir 		}
246cdf0e10cSrcweir 		else if( argv[ i ] )
247cdf0e10cSrcweir             pList->Insert( new String( String::CreateFromAscii( argv[ i ] ) ), LIST_APPEND );
248cdf0e10cSrcweir 	}
249cdf0e10cSrcweir 	return sal_True;
250cdf0e10cSrcweir }
251cdf0e10cSrcweir 
252cdf0e10cSrcweir /*************************************************************************
253cdf0e10cSrcweir |*	  SvCommand::SvCommand()
254cdf0e10cSrcweir |*
255cdf0e10cSrcweir |*	  Beschreibung
256cdf0e10cSrcweir *************************************************************************/
SvCommand(int argc,char ** argv)257cdf0e10cSrcweir SvCommand::SvCommand( int argc, char ** argv )
258cdf0e10cSrcweir 	: nVerbosity(1), nFlags( 0 )
259cdf0e10cSrcweir {
260cdf0e10cSrcweir 	StringList aList;
261cdf0e10cSrcweir 
262cdf0e10cSrcweir 	if( ResponseFile( &aList, argc, argv ) )
263cdf0e10cSrcweir 	for( sal_uLong i = 1; i < aList.Count(); i++ )
264cdf0e10cSrcweir 	{
265cdf0e10cSrcweir         String aParam( *aList.GetObject( i ) );
266cdf0e10cSrcweir         sal_Unicode aFirstChar( aParam.GetChar(0) );
267cdf0e10cSrcweir         if( '-' == aFirstChar )
268cdf0e10cSrcweir 		{
269cdf0e10cSrcweir 			aParam.Erase( 0, 1 );
270cdf0e10cSrcweir             aFirstChar = aParam.GetChar(0);
271cdf0e10cSrcweir             if( aFirstChar == 'F' || aFirstChar == 'f' )
272cdf0e10cSrcweir 			{
273cdf0e10cSrcweir 				aParam.Erase( 0, 1 );
274cdf0e10cSrcweir                 aFirstChar = aParam.GetChar(0);
275cdf0e10cSrcweir                 String aName( aParam.Copy( 1 ) );
276cdf0e10cSrcweir                 if( 's' == aFirstChar )
277cdf0e10cSrcweir 				{ // Name der Slot-Ausgabe
278cdf0e10cSrcweir                     aSlotMapFile = aName;
279cdf0e10cSrcweir 				}
280cdf0e10cSrcweir                 else if( 'l' == aFirstChar )
281cdf0e10cSrcweir 				{ // Name der Listing
282cdf0e10cSrcweir                     aListFile = aName;
283cdf0e10cSrcweir 				}
284cdf0e10cSrcweir                 else if( 'i' == aFirstChar )
285cdf0e10cSrcweir 				{ // Name der Item-Datei
286cdf0e10cSrcweir //                    aSfxItemFile = aName;
287cdf0e10cSrcweir 				}
288cdf0e10cSrcweir                 else if( 'o' == aFirstChar )
289cdf0e10cSrcweir 				{ // Name der ODL-Datei
290cdf0e10cSrcweir //                    aODLFile = aName;
291cdf0e10cSrcweir 				}
292cdf0e10cSrcweir                 else if( 'd' == aFirstChar )
293cdf0e10cSrcweir 				{ // Name der Datenbasis-Datei
294cdf0e10cSrcweir                     aDataBaseFile = aName;
295cdf0e10cSrcweir 				}
296cdf0e10cSrcweir                 else if( 'D' == aFirstChar )
297cdf0e10cSrcweir 				{ // Name der Docu-Datei f"ur das API
298cdf0e10cSrcweir //                    aDocuFile = aName;
299cdf0e10cSrcweir 				}
300cdf0e10cSrcweir                 else if( 'C' == aFirstChar )
301cdf0e10cSrcweir 				{ // Name der cxx-Datei
302cdf0e10cSrcweir //                    aCxxFile = aName;
303cdf0e10cSrcweir 				}
304cdf0e10cSrcweir                 else if( 'H' == aFirstChar )
305cdf0e10cSrcweir 				{ // Name der hxx-Datei
306cdf0e10cSrcweir //                    aHxxFile = aName;
307cdf0e10cSrcweir 				}
308cdf0e10cSrcweir                 else if( 'c' == aFirstChar )
309cdf0e10cSrcweir 				{ // Name der C-Header-Datei
310cdf0e10cSrcweir //                    aCSourceFile = aName;
311cdf0e10cSrcweir 				}
312cdf0e10cSrcweir                 else if( 'h' == aFirstChar )
313cdf0e10cSrcweir 				{ // Name der C-Header-Datei
314cdf0e10cSrcweir //                    aCHeaderFile = aName;
315cdf0e10cSrcweir 				}
316cdf0e10cSrcweir                 else if( 't' == aFirstChar )
317cdf0e10cSrcweir 				{ // Name der Info-Datei
318cdf0e10cSrcweir //                    aCallingFile = aName;
319cdf0e10cSrcweir 				}
320cdf0e10cSrcweir                 else if( 'm' == aFirstChar )
321cdf0e10cSrcweir 				{ // Name der Info-Datei
322cdf0e10cSrcweir                     aTargetFile = aName;
323cdf0e10cSrcweir 				}
324cdf0e10cSrcweir                 else if( 'r' == aFirstChar )
325cdf0e10cSrcweir 				{ // Name der Resource-Datei
326cdf0e10cSrcweir //                    aSrcFile = aName;
327cdf0e10cSrcweir 				}
328cdf0e10cSrcweir                 else if( 'z' == aFirstChar )
329cdf0e10cSrcweir 				{ // Name der HelpId-Datei
330cdf0e10cSrcweir                     aHelpIdFile = aName;
331cdf0e10cSrcweir 				}
332cdf0e10cSrcweir                 else if( 'y' == aFirstChar )
333cdf0e10cSrcweir 				{ // Name der CSV-Datei
334cdf0e10cSrcweir                     aCSVFile = aName;
335cdf0e10cSrcweir 				}
336cdf0e10cSrcweir                 else if( 'x' == aFirstChar )
337cdf0e10cSrcweir 				{ // Name der IDL-Datei fuer die CSV-Datei
338cdf0e10cSrcweir                     aExportFile = aName;
339cdf0e10cSrcweir 				}
340cdf0e10cSrcweir 				else
341cdf0e10cSrcweir 				{
342cdf0e10cSrcweir                     printf(
343cdf0e10cSrcweir                         "unknown switch: %s\n",
344cdf0e10cSrcweir                         rtl::OUStringToOString(
345cdf0e10cSrcweir                             aParam, RTL_TEXTENCODING_UTF8).getStr());
346cdf0e10cSrcweir 					exit( -1 );
347cdf0e10cSrcweir 				}
348cdf0e10cSrcweir 			}
349cdf0e10cSrcweir             else if( aParam.EqualsIgnoreCaseAscii( "help" ) || aParam.EqualsIgnoreCaseAscii( "?" ) )
350cdf0e10cSrcweir 			{ // Hilfe
351cdf0e10cSrcweir                 printf( "%s", CommandLineSyntax );
352cdf0e10cSrcweir 			}
353cdf0e10cSrcweir             else if( aParam.EqualsIgnoreCaseAscii( "quiet" ) )
354cdf0e10cSrcweir             {
355cdf0e10cSrcweir                 nVerbosity = 0;
356cdf0e10cSrcweir             }
357cdf0e10cSrcweir             else if( aParam.EqualsIgnoreCaseAscii( "verbose" ) )
358cdf0e10cSrcweir             {
359cdf0e10cSrcweir                 nVerbosity = 2;
360cdf0e10cSrcweir             }
361cdf0e10cSrcweir             else if( aParam.EqualsIgnoreCaseAscii( "syntax" ) )
362cdf0e10cSrcweir 			{ // Hilfe
363cdf0e10cSrcweir 				int j = 0;
364cdf0e10cSrcweir 				while(SyntaxStrings[j])
365cdf0e10cSrcweir 					printf("%s\n",SyntaxStrings[j++]);
366cdf0e10cSrcweir 			}
367cdf0e10cSrcweir             else if( aParam.EqualsIgnoreCaseAscii( "i", 0, 1 ) )
368cdf0e10cSrcweir 			{ // Include-Pfade definieren
369cdf0e10cSrcweir                 String aName( aParam.Copy( 1 ) );
370cdf0e10cSrcweir 				if( aPath.Len() )
371cdf0e10cSrcweir 					aPath += DirEntry::GetSearchDelimiter();
372cdf0e10cSrcweir                 aPath += aName;
373cdf0e10cSrcweir 			}
374cdf0e10cSrcweir             else if( aParam.EqualsIgnoreCaseAscii( "rsc", 0, 3 ) )
375cdf0e10cSrcweir 			{ // erste Zeile im *.srs File
376cdf0e10cSrcweir 				if( aList.GetObject( i +1 ) )
377cdf0e10cSrcweir 				{
378cdf0e10cSrcweir                     aSrsLine = ByteString( *aList.GetObject( i +1 ), RTL_TEXTENCODING_UTF8 );
379cdf0e10cSrcweir 					i++;
380cdf0e10cSrcweir 				}
381cdf0e10cSrcweir 			}
382cdf0e10cSrcweir 			else
383cdf0e10cSrcweir 			{
384cdf0e10cSrcweir                 // temporary compatibility hack
385cdf0e10cSrcweir                 printf(
386cdf0e10cSrcweir                     "unknown switch: %s\n",
387cdf0e10cSrcweir                     rtl::OUStringToOString(
388cdf0e10cSrcweir                         aParam, RTL_TEXTENCODING_UTF8).getStr());
389cdf0e10cSrcweir 				exit( -1 );
390cdf0e10cSrcweir 			}
391cdf0e10cSrcweir 		}
392cdf0e10cSrcweir 		else
393cdf0e10cSrcweir 		{
394cdf0e10cSrcweir             aInFileList.Insert( new String( aParam ), LIST_APPEND );
395cdf0e10cSrcweir 		}
396cdf0e10cSrcweir 	}
397cdf0e10cSrcweir 	else
398cdf0e10cSrcweir 	{
399cdf0e10cSrcweir         printf( "%s", CommandLineSyntax );
400cdf0e10cSrcweir 	}
401cdf0e10cSrcweir 
402cdf0e10cSrcweir     String * pStr = aList.First();
403cdf0e10cSrcweir 	while( pStr )
404cdf0e10cSrcweir 	{
405cdf0e10cSrcweir 		delete pStr;
406cdf0e10cSrcweir 		pStr = aList.Next();
407cdf0e10cSrcweir 	}
408cdf0e10cSrcweir 
409cdf0e10cSrcweir 	ByteString aInc( getenv( "INCLUDE" ) );
410cdf0e10cSrcweir 	// Include Environmentvariable anhaengen
411cdf0e10cSrcweir 	if( aInc.Len() )
412cdf0e10cSrcweir 	{
413cdf0e10cSrcweir 		if( aPath.Len() )
414cdf0e10cSrcweir 			aPath += DirEntry::GetSearchDelimiter();
415cdf0e10cSrcweir         aPath += String::CreateFromAscii( aInc.GetBuffer() );
416cdf0e10cSrcweir 	}
417cdf0e10cSrcweir }
418cdf0e10cSrcweir 
419cdf0e10cSrcweir /*************************************************************************
420cdf0e10cSrcweir |*
421cdf0e10cSrcweir |*	  SvCommand::~SvCommand()
422cdf0e10cSrcweir |*
423cdf0e10cSrcweir |*	  Beschreibung
424cdf0e10cSrcweir |*
425cdf0e10cSrcweir *************************************************************************/
~SvCommand()426cdf0e10cSrcweir SvCommand::~SvCommand()
427cdf0e10cSrcweir {
428cdf0e10cSrcweir 	// ByteString Liste freigeben
429cdf0e10cSrcweir     String * pStr;
430cdf0e10cSrcweir 	while( NULL != (pStr = aInFileList.Remove()) )
431cdf0e10cSrcweir 		delete pStr;
432cdf0e10cSrcweir }
433cdf0e10cSrcweir 
434