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