xref: /trunk/main/idl/source/prj/svidl.cxx (revision cf6516809c57e1bb0a940545cca99cdad54d4ce2)
1*724893d4SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
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
10cdf0e10cSrcweir  *
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.
19cdf0e10cSrcweir  *
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 <database.hxx>
30cdf0e10cSrcweir #include <globals.hxx>
31cdf0e10cSrcweir #include <command.hxx>
32cdf0e10cSrcweir #include <tools/fsys.hxx>
33cdf0e10cSrcweir #include <tools/string.hxx>
34cdf0e10cSrcweir 
35cdf0e10cSrcweir #define BR 0x8000
FileMove_Impl(const String & rFile1,const String & rFile2,sal_Bool bImmerVerschieben)36cdf0e10cSrcweir sal_Bool FileMove_Impl( const String & rFile1, const String & rFile2, sal_Bool bImmerVerschieben )
37cdf0e10cSrcweir {
38cdf0e10cSrcweir     //printf( "Move from %s to %s\n", rFile2.GetStr(), rFile1.GetStr() );
39cdf0e10cSrcweir     sal_uLong nC1 = 0;
40cdf0e10cSrcweir     sal_uLong nC2 = 1;
41cdf0e10cSrcweir     if( !bImmerVerschieben )
42cdf0e10cSrcweir     {
43cdf0e10cSrcweir         SvFileStream aOutStm1( rFile1, STREAM_STD_READ );
44cdf0e10cSrcweir         SvFileStream aOutStm2( rFile2, STREAM_STD_READ );
45cdf0e10cSrcweir         if( aOutStm1.GetError() == SVSTREAM_OK )
46cdf0e10cSrcweir         {
47cdf0e10cSrcweir             sal_uInt8 * pBuf1 = new sal_uInt8[ BR ];
48cdf0e10cSrcweir             sal_uInt8 * pBuf2 = new sal_uInt8[ BR ];
49cdf0e10cSrcweir             nC1 = aOutStm1.Read( pBuf1, BR );
50cdf0e10cSrcweir             nC2 = aOutStm2.Read( pBuf2, BR );
51cdf0e10cSrcweir             while( nC1 == nC2 )
52cdf0e10cSrcweir             {
53cdf0e10cSrcweir                 if( memcmp( pBuf1, pBuf2, nC1 ) )
54cdf0e10cSrcweir                 {
55cdf0e10cSrcweir                     nC1++;
56cdf0e10cSrcweir                     break;
57cdf0e10cSrcweir                 }
58cdf0e10cSrcweir                 else
59cdf0e10cSrcweir                 {
60cdf0e10cSrcweir                     if( 0x8000 != nC1 )
61cdf0e10cSrcweir                         break;
62cdf0e10cSrcweir                     nC1 = aOutStm1.Read( pBuf1, BR );
63cdf0e10cSrcweir                     nC2 = aOutStm2.Read( pBuf2, BR );
64cdf0e10cSrcweir                 }
65cdf0e10cSrcweir             }
66cdf0e10cSrcweir             delete[] pBuf1;
67cdf0e10cSrcweir             delete[] pBuf2;
68cdf0e10cSrcweir         }
69cdf0e10cSrcweir     }
70cdf0e10cSrcweir     DirEntry aF2( rFile2 );
71cdf0e10cSrcweir     if( nC1 != nC2 )
72cdf0e10cSrcweir     {// es hat sich etwas geaendert
73cdf0e10cSrcweir         DirEntry aF1( rFile1 );
74cdf0e10cSrcweir         aF1.Kill();
75cdf0e10cSrcweir         // Datei verschieben
76cdf0e10cSrcweir         if( aF2.MoveTo( aF1 ) )
77cdf0e10cSrcweir         {
78cdf0e10cSrcweir             // Beide Dateien loeschen
79cdf0e10cSrcweir             aF1.Kill();
80cdf0e10cSrcweir             aF2.Kill();
81cdf0e10cSrcweir             return sal_False;
82cdf0e10cSrcweir         }
83cdf0e10cSrcweir /*
84cdf0e10cSrcweir         else
85cdf0e10cSrcweir         {
86cdf0e10cSrcweir             printf( "%s to %s moved\n",
87cdf0e10cSrcweir                      rFile2.GetStr(), rFile1.GetStr() );
88cdf0e10cSrcweir         }
89cdf0e10cSrcweir */
90cdf0e10cSrcweir         return sal_True;
91cdf0e10cSrcweir     }
92cdf0e10cSrcweir     return 0 == aF2.Kill();
93cdf0e10cSrcweir }
94cdf0e10cSrcweir 
95cdf0e10cSrcweir /*************************************************************************
96cdf0e10cSrcweir |*    main()
97cdf0e10cSrcweir |*
98cdf0e10cSrcweir |*    Beschreibung
99cdf0e10cSrcweir *************************************************************************/
100cdf0e10cSrcweir #if defined( UNX ) || (defined( PM2 ) && defined( CSET )) || defined (WTC) || defined (MTW) || defined (__MINGW32__) || defined( OS2 )
main(int argc,char ** argv)101cdf0e10cSrcweir int main ( int argc, char ** argv)
102cdf0e10cSrcweir {
103cdf0e10cSrcweir #else
104cdf0e10cSrcweir int cdecl main ( int argc, char ** argv)
105cdf0e10cSrcweir {
106cdf0e10cSrcweir #endif
107cdf0e10cSrcweir 
108cdf0e10cSrcweir /*
109cdf0e10cSrcweir     pStr = ::ResponseFile( &aCmdLine, argv, argc );
110cdf0e10cSrcweir     if( pStr )
111cdf0e10cSrcweir     {
112cdf0e10cSrcweir         printf( "Cannot open response file <%s>\n", pStr );
113cdf0e10cSrcweir         return( 1 );
114cdf0e10cSrcweir     };
115cdf0e10cSrcweir */
116cdf0e10cSrcweir 
117cdf0e10cSrcweir     String aTmpListFile;
118cdf0e10cSrcweir     String aTmpSlotMapFile;
119cdf0e10cSrcweir     String aTmpSfxItemFile;
120cdf0e10cSrcweir     String aTmpDataBaseFile;
121cdf0e10cSrcweir     String aTmpCallingFile;
122cdf0e10cSrcweir     String aTmpSrcFile;
123cdf0e10cSrcweir     String aTmpCxxFile;
124cdf0e10cSrcweir     String aTmpHxxFile;
125cdf0e10cSrcweir     String aTmpHelpIdFile;
126cdf0e10cSrcweir     String aTmpCSVFile;
127cdf0e10cSrcweir     String aTmpDocuFile;
128cdf0e10cSrcweir 
129cdf0e10cSrcweir     SvCommand aCommand( argc, argv );
130cdf0e10cSrcweir 
131cdf0e10cSrcweir     if( aCommand.nVerbosity != 0 )
132cdf0e10cSrcweir         printf( "StarView Interface Definition Language (IDL) Compiler 3.0\n" );
133cdf0e10cSrcweir 
134cdf0e10cSrcweir     Init();
135cdf0e10cSrcweir     SvIdlWorkingBase * pDataBase = new SvIdlWorkingBase(aCommand);
136cdf0e10cSrcweir 
137cdf0e10cSrcweir     int nExit = 0;
138cdf0e10cSrcweir     if( aCommand.aExportFile.Len() )
139cdf0e10cSrcweir     {
140cdf0e10cSrcweir         DirEntry aDE( aCommand.aExportFile );
141cdf0e10cSrcweir         pDataBase->SetExportFile( aDE.GetName() );
142cdf0e10cSrcweir     }
143cdf0e10cSrcweir 
144cdf0e10cSrcweir     if( ReadIdl( pDataBase, aCommand ) )
145cdf0e10cSrcweir     {
146cdf0e10cSrcweir         if( nExit == 0 && aCommand.aDocuFile.Len() )
147cdf0e10cSrcweir         {
148cdf0e10cSrcweir             DirEntry aDE( aCommand.aDocuFile );
149cdf0e10cSrcweir             aDE.ToAbs();
150cdf0e10cSrcweir             aTmpDocuFile = aDE.GetPath().TempName().GetFull();
151cdf0e10cSrcweir             SvFileStream aOutStm( aTmpDocuFile, STREAM_READWRITE | STREAM_TRUNC );
152cdf0e10cSrcweir             if( !pDataBase->WriteDocumentation( aOutStm ) )
153cdf0e10cSrcweir             {
154cdf0e10cSrcweir                 nExit = -1;
155cdf0e10cSrcweir                 ByteString aStr = "cannot write documentation file: ";
156cdf0e10cSrcweir                 aStr += ByteString( aCommand.aDocuFile, RTL_TEXTENCODING_UTF8 );
157cdf0e10cSrcweir                 fprintf( stderr, "%s\n", aStr.GetBuffer() );
158cdf0e10cSrcweir             }
159cdf0e10cSrcweir         }
160cdf0e10cSrcweir         if( nExit == 0 && aCommand.aListFile.Len() )
161cdf0e10cSrcweir         {
162cdf0e10cSrcweir             DirEntry aDE( aCommand.aListFile );
163cdf0e10cSrcweir             aDE.ToAbs();
164cdf0e10cSrcweir             aTmpListFile = aDE.GetPath().TempName().GetFull();
165cdf0e10cSrcweir             SvFileStream aOutStm( aTmpListFile, STREAM_READWRITE | STREAM_TRUNC );
166cdf0e10cSrcweir             if( !pDataBase->WriteSvIdl( aOutStm ) )
167cdf0e10cSrcweir             {
168cdf0e10cSrcweir                 nExit = -1;
169cdf0e10cSrcweir                 ByteString aStr = "cannot write list file: ";
170cdf0e10cSrcweir                 aStr += ByteString( aCommand.aListFile, RTL_TEXTENCODING_UTF8 );
171cdf0e10cSrcweir                 fprintf( stderr, "%s\n", aStr.GetBuffer() );
172cdf0e10cSrcweir             }
173cdf0e10cSrcweir         }
174cdf0e10cSrcweir         if( nExit == 0 && aCommand.aSlotMapFile.Len() )
175cdf0e10cSrcweir         {
176cdf0e10cSrcweir             DirEntry aDE( aCommand.aSlotMapFile );
177cdf0e10cSrcweir             aDE.ToAbs();
178cdf0e10cSrcweir             aTmpSlotMapFile = aDE.GetPath().TempName().GetFull();
179cdf0e10cSrcweir             SvFileStream aOutStm( aTmpSlotMapFile, STREAM_READWRITE | STREAM_TRUNC );
180cdf0e10cSrcweir             if( !pDataBase->WriteSfx( aOutStm ) )
181cdf0e10cSrcweir             {
182cdf0e10cSrcweir                 nExit = -1;
183cdf0e10cSrcweir                 ByteString aStr = "cannot write slotmap file: ";
184cdf0e10cSrcweir                 aStr += ByteString( aCommand.aSlotMapFile, RTL_TEXTENCODING_UTF8 );
185cdf0e10cSrcweir                 fprintf( stderr, "%s\n", aStr.GetBuffer() );
186cdf0e10cSrcweir             }
187cdf0e10cSrcweir         }
188cdf0e10cSrcweir         if( nExit == 0 && aCommand.aHelpIdFile.Len() )
189cdf0e10cSrcweir         {
190cdf0e10cSrcweir             DirEntry aDE( aCommand.aHelpIdFile );
191cdf0e10cSrcweir             aDE.ToAbs();
192cdf0e10cSrcweir             aTmpHelpIdFile = aDE.GetPath().TempName().GetFull();
193cdf0e10cSrcweir             SvFileStream aStm( aTmpHelpIdFile, STREAM_READWRITE | STREAM_TRUNC );
194cdf0e10cSrcweir             if (!pDataBase->WriteHelpIds( aStm ) )
195cdf0e10cSrcweir             {
196cdf0e10cSrcweir                 nExit = -1;
197cdf0e10cSrcweir                 ByteString aStr = "cannot write help ID file: ";
198cdf0e10cSrcweir                 aStr += ByteString( aCommand.aHelpIdFile, RTL_TEXTENCODING_UTF8 );
199cdf0e10cSrcweir                 fprintf( stderr, "%s\n", aStr.GetBuffer() );
200cdf0e10cSrcweir             }
201cdf0e10cSrcweir         }
202cdf0e10cSrcweir         if( nExit == 0 && aCommand.aCSVFile.Len() )
203cdf0e10cSrcweir         {
204cdf0e10cSrcweir             DirEntry aDE( aCommand.aCSVFile );
205cdf0e10cSrcweir             aDE.ToAbs();
206cdf0e10cSrcweir             aTmpCSVFile = aDE.GetPath().TempName().GetFull();
207cdf0e10cSrcweir             SvFileStream aStm( aTmpCSVFile, STREAM_READWRITE | STREAM_TRUNC );
208cdf0e10cSrcweir             if (!pDataBase->WriteCSV( aStm ) )
209cdf0e10cSrcweir             {
210cdf0e10cSrcweir                 nExit = -1;
211cdf0e10cSrcweir                 ByteString aStr = "cannot write CSV file: ";
212cdf0e10cSrcweir                 aStr += ByteString( aCommand.aCSVFile, RTL_TEXTENCODING_UTF8 );
213cdf0e10cSrcweir                 fprintf( stderr, "%s\n", aStr.GetBuffer() );
214cdf0e10cSrcweir             }
215cdf0e10cSrcweir         }
216cdf0e10cSrcweir         if( nExit == 0 && aCommand.aSfxItemFile.Len() )
217cdf0e10cSrcweir         {
218cdf0e10cSrcweir             DirEntry aDE( aCommand.aSfxItemFile );
219cdf0e10cSrcweir             aDE.ToAbs();
220cdf0e10cSrcweir             aTmpSfxItemFile = aDE.GetPath().TempName().GetFull();
221cdf0e10cSrcweir             SvFileStream aOutStm( aTmpSfxItemFile, STREAM_READWRITE | STREAM_TRUNC );
222cdf0e10cSrcweir             if( !pDataBase->WriteSfxItem( aOutStm ) )
223cdf0e10cSrcweir             {
224cdf0e10cSrcweir                 nExit = -1;
225cdf0e10cSrcweir                 ByteString aStr = "cannot write item file: ";
226cdf0e10cSrcweir                 aStr += ByteString( aCommand.aSfxItemFile, RTL_TEXTENCODING_UTF8 );
227cdf0e10cSrcweir                 fprintf( stderr, "%s\n", aStr.GetBuffer() );
228cdf0e10cSrcweir             }
229cdf0e10cSrcweir         }
230cdf0e10cSrcweir         if( nExit == 0 && aCommand.aDataBaseFile.Len() )
231cdf0e10cSrcweir         {
232cdf0e10cSrcweir             DirEntry aDE( aCommand.aDataBaseFile );
233cdf0e10cSrcweir             aDE.ToAbs();
234cdf0e10cSrcweir             aTmpDataBaseFile = aDE.GetPath().TempName().GetFull();
235cdf0e10cSrcweir             SvFileStream aOutStm( aTmpDataBaseFile, STREAM_READWRITE | STREAM_TRUNC );
236cdf0e10cSrcweir             pDataBase->Save( aOutStm, aCommand.nFlags );
237cdf0e10cSrcweir             if( aOutStm.GetError() != SVSTREAM_OK )
238cdf0e10cSrcweir             {
239cdf0e10cSrcweir                 nExit = -1;
240cdf0e10cSrcweir                 ByteString aStr = "cannot write database file: ";
241cdf0e10cSrcweir                 aStr += ByteString( aCommand.aDataBaseFile, RTL_TEXTENCODING_UTF8 );
242cdf0e10cSrcweir                 fprintf( stderr, "%s\n", aStr.GetBuffer() );
243cdf0e10cSrcweir             }
244cdf0e10cSrcweir         }
245cdf0e10cSrcweir /*
246cdf0e10cSrcweir         if( nExit == 0 && aCommand.aCallingFile.Len() )
247cdf0e10cSrcweir         {
248cdf0e10cSrcweir             DirEntry aDE( aCommand.aCallingFile );
249cdf0e10cSrcweir             aDE.ToAbs();
250cdf0e10cSrcweir             aTmpCallingFile = aDE.GetPath().TempName().GetFull();
251cdf0e10cSrcweir             SvFileStream aOutStm( aTmpCallingFile, STREAM_READWRITE | STREAM_TRUNC );
252cdf0e10cSrcweir             pDataBase->WriteSbx( aOutStm );
253cdf0e10cSrcweir             //pDataBase->Save( aOutStm, aCommand.nFlags | IDL_WRITE_CALLING );
254cdf0e10cSrcweir             if( aOutStm.GetError() != SVSTREAM_OK )
255cdf0e10cSrcweir             {
256cdf0e10cSrcweir                 nExit = -1;
257cdf0e10cSrcweir                 ByteString aStr = "cannot write calling file: ";
258cdf0e10cSrcweir                 aStr += aCommand.aCallingFile;
259cdf0e10cSrcweir                 fprintf( stderr, "%s\n", aStr.GetStr() );
260cdf0e10cSrcweir             }
261cdf0e10cSrcweir         }
262cdf0e10cSrcweir         if( nExit == 0 && aCommand.aCxxFile.Len() )
263cdf0e10cSrcweir         {
264cdf0e10cSrcweir             DirEntry aDE( aCommand.aCxxFile );
265cdf0e10cSrcweir             aDE.ToAbs();
266cdf0e10cSrcweir             aTmpCxxFile = aDE.GetPath().TempName().GetFull();
267cdf0e10cSrcweir             SvFileStream aOutStm( aTmpCxxFile, STREAM_READWRITE | STREAM_TRUNC );
268cdf0e10cSrcweir 
269cdf0e10cSrcweir             aOutStm << "#pragma hdrstop" << endl;
270cdf0e10cSrcweir             aOutStm << "#include <";
271cdf0e10cSrcweir             if( aCommand.aHxxFile.Len() )
272cdf0e10cSrcweir                 aOutStm << DirEntry(aCommand.aHxxFile).GetName().GetBuffer();
273cdf0e10cSrcweir             else
274cdf0e10cSrcweir             {
275cdf0e10cSrcweir                 DirEntry aDE( aCommand.aCxxFile );
276cdf0e10cSrcweir                 aDE.SetExtension( "hxx" );
277cdf0e10cSrcweir                 aOutStm << aDE.GetName().GetBuffer);
278cdf0e10cSrcweir             }
279cdf0e10cSrcweir             aOutStm << '>' << endl;
280cdf0e10cSrcweir             if( !pDataBase->WriteCxx( aOutStm ) )
281cdf0e10cSrcweir             {
282cdf0e10cSrcweir                 nExit = -1;
283cdf0e10cSrcweir                 ByteString aStr = "cannot write cxx file: ";
284cdf0e10cSrcweir                 aStr += ByteString( aCommand.aCxxFile, RTL_TEXTENCODING_UTF8 );
285cdf0e10cSrcweir                 fprintf( stderr, "%s\n", aStr.GetBuffer() );
286cdf0e10cSrcweir             }
287cdf0e10cSrcweir         }
288cdf0e10cSrcweir         if( nExit == 0 && aCommand.aHxxFile.Len() )
289cdf0e10cSrcweir         {
290cdf0e10cSrcweir             DirEntry aDE( aCommand.aHxxFile );
291cdf0e10cSrcweir             aDE.ToAbs();
292cdf0e10cSrcweir             aTmpHxxFile = aDE.GetPath().TempName().GetFull();
293cdf0e10cSrcweir             SvFileStream aOutStm( aTmpHxxFile, STREAM_READWRITE | STREAM_TRUNC );
294cdf0e10cSrcweir 
295cdf0e10cSrcweir             aOutStm << "#include <somisc.hxx>" << endl;
296cdf0e10cSrcweir             if( !pDataBase->WriteHxx( aOutStm ) )
297cdf0e10cSrcweir             {
298cdf0e10cSrcweir                 nExit = -1;
299cdf0e10cSrcweir                 ByteString aStr = "cannot write cxx file: ";
300cdf0e10cSrcweir                 aStr += ByteString( aCommand.aHxxFile, RTL_TEXTENCODING_UTF8 );
301cdf0e10cSrcweir                 fprintf( stderr, "%s\n", aStr.GetBuffer() );
302cdf0e10cSrcweir             }
303cdf0e10cSrcweir         }
304cdf0e10cSrcweir  */
305cdf0e10cSrcweir     }
306cdf0e10cSrcweir     else
307cdf0e10cSrcweir         nExit = -1;
308cdf0e10cSrcweir 
309cdf0e10cSrcweir     if( nExit == 0 )
310cdf0e10cSrcweir     {
311cdf0e10cSrcweir         sal_Bool bErr = sal_False;
312cdf0e10cSrcweir         sal_Bool bDoMove = aCommand.aTargetFile.Len() == 0;
313cdf0e10cSrcweir         String aErrFile, aErrFile2;
314cdf0e10cSrcweir         if( !bErr && aCommand.aListFile.Len() )
315cdf0e10cSrcweir         {
316cdf0e10cSrcweir             bErr |= !FileMove_Impl( aCommand.aListFile, aTmpListFile, bDoMove );
317cdf0e10cSrcweir             if( bErr ) {
318cdf0e10cSrcweir                 aErrFile = aCommand.aListFile;
319cdf0e10cSrcweir                 aErrFile2 = aTmpListFile;
320cdf0e10cSrcweir             }
321cdf0e10cSrcweir         }
322cdf0e10cSrcweir         if( !bErr && aCommand.aSlotMapFile.Len() )
323cdf0e10cSrcweir         {
324cdf0e10cSrcweir             bErr |= !FileMove_Impl( aCommand.aSlotMapFile, aTmpSlotMapFile, bDoMove );
325cdf0e10cSrcweir             if( bErr ) {
326cdf0e10cSrcweir                 aErrFile = aCommand.aSlotMapFile;
327cdf0e10cSrcweir                 aErrFile2 = aTmpSlotMapFile;
328cdf0e10cSrcweir             }
329cdf0e10cSrcweir         }
330cdf0e10cSrcweir         if( !bErr && aCommand.aSfxItemFile.Len() )
331cdf0e10cSrcweir         {
332cdf0e10cSrcweir             bErr |= !FileMove_Impl( aCommand.aSfxItemFile, aTmpSfxItemFile, bDoMove );
333cdf0e10cSrcweir             if( bErr ) {
334cdf0e10cSrcweir                 aErrFile = aCommand.aSfxItemFile;
335cdf0e10cSrcweir                 aErrFile2 = aTmpSfxItemFile;
336cdf0e10cSrcweir             }
337cdf0e10cSrcweir         }
338cdf0e10cSrcweir         if( !bErr && aCommand.aDataBaseFile.Len() )
339cdf0e10cSrcweir         {
340cdf0e10cSrcweir             bErr |= !FileMove_Impl( aCommand.aDataBaseFile, aTmpDataBaseFile, bDoMove );
341cdf0e10cSrcweir             if( bErr ) {
342cdf0e10cSrcweir                 aErrFile = aCommand.aDataBaseFile;
343cdf0e10cSrcweir                 aErrFile2 = aTmpDataBaseFile;
344cdf0e10cSrcweir             }
345cdf0e10cSrcweir         }
346cdf0e10cSrcweir         if( !bErr && aCommand.aCallingFile.Len() )
347cdf0e10cSrcweir         {
348cdf0e10cSrcweir             bErr |= !FileMove_Impl( aCommand.aCallingFile, aTmpCallingFile, bDoMove );
349cdf0e10cSrcweir             if( bErr ) {
350cdf0e10cSrcweir                 aErrFile = aCommand.aCallingFile;
351cdf0e10cSrcweir                 aErrFile2 = aTmpCallingFile;
352cdf0e10cSrcweir             }
353cdf0e10cSrcweir         }
354cdf0e10cSrcweir         if( !bErr && aCommand.aCxxFile.Len() )
355cdf0e10cSrcweir         {
356cdf0e10cSrcweir             bErr |= !FileMove_Impl( aCommand.aCxxFile, aTmpCxxFile, bDoMove );
357cdf0e10cSrcweir             if( bErr ) {
358cdf0e10cSrcweir                 aErrFile = aCommand.aCxxFile;
359cdf0e10cSrcweir                 aErrFile2 = aTmpCxxFile;
360cdf0e10cSrcweir             }
361cdf0e10cSrcweir         }
362cdf0e10cSrcweir         if( !bErr && aCommand.aHxxFile.Len() )
363cdf0e10cSrcweir         {
364cdf0e10cSrcweir             bErr |= !FileMove_Impl( aCommand.aHxxFile, aTmpHxxFile, bDoMove );
365cdf0e10cSrcweir             if( bErr ) {
366cdf0e10cSrcweir                 aErrFile = aCommand.aHxxFile;
367cdf0e10cSrcweir                 aErrFile2 = aTmpHxxFile;
368cdf0e10cSrcweir             }
369cdf0e10cSrcweir         }
370cdf0e10cSrcweir         if( !bErr && aCommand.aHelpIdFile.Len() )
371cdf0e10cSrcweir         {
372cdf0e10cSrcweir             bErr |= !FileMove_Impl( aCommand.aHelpIdFile, aTmpHelpIdFile, bDoMove );
373cdf0e10cSrcweir             if( bErr ) {
374cdf0e10cSrcweir                 aErrFile = aCommand.aHelpIdFile;
375cdf0e10cSrcweir                 aErrFile2 = aTmpHelpIdFile;
376cdf0e10cSrcweir             }
377cdf0e10cSrcweir         }
378cdf0e10cSrcweir         if( !bErr && aCommand.aCSVFile.Len() )
379cdf0e10cSrcweir         {
380cdf0e10cSrcweir             bErr |= !FileMove_Impl( aCommand.aCSVFile, aTmpCSVFile, bDoMove );
381cdf0e10cSrcweir             if( bErr ) {
382cdf0e10cSrcweir                 aErrFile = aCommand.aCSVFile;
383cdf0e10cSrcweir                 aErrFile2 = aTmpCSVFile;
384cdf0e10cSrcweir             }
385cdf0e10cSrcweir         }
386cdf0e10cSrcweir         if( !bErr && aCommand.aDocuFile.Len() )
387cdf0e10cSrcweir         {
388cdf0e10cSrcweir             bErr |= !FileMove_Impl( aCommand.aDocuFile, aTmpDocuFile, bDoMove );
389cdf0e10cSrcweir             if( bErr ) {
390cdf0e10cSrcweir                 aErrFile = aCommand.aDocuFile;
391cdf0e10cSrcweir                 aErrFile2 = aTmpDocuFile;
392cdf0e10cSrcweir             }
393cdf0e10cSrcweir         }
394cdf0e10cSrcweir 
395cdf0e10cSrcweir         if( bErr )
396cdf0e10cSrcweir         {
397cdf0e10cSrcweir             nExit = -1;
398cdf0e10cSrcweir             ByteString aStr = "cannot move file from: ";
399cdf0e10cSrcweir             aStr += ByteString( aErrFile2, RTL_TEXTENCODING_UTF8 );
400cdf0e10cSrcweir             aStr += "\n              to file: ";
401cdf0e10cSrcweir             aStr += ByteString( aErrFile, RTL_TEXTENCODING_UTF8 );
402cdf0e10cSrcweir             fprintf( stderr, "%s\n", aStr.GetBuffer() );
403cdf0e10cSrcweir         }
404cdf0e10cSrcweir         else
405cdf0e10cSrcweir         {
406cdf0e10cSrcweir             if( aCommand.aTargetFile.Len() )
407cdf0e10cSrcweir             {
408cdf0e10cSrcweir #ifdef ICC
409cdf0e10cSrcweir                 DirEntry aT(aCommand.aTargetFile);
410cdf0e10cSrcweir                 aT.Kill();
411cdf0e10cSrcweir #endif
412cdf0e10cSrcweir                 // Datei stempeln, da idl korrekt durchlaufen wurde
413cdf0e10cSrcweir                 SvFileStream aOutStm( aCommand.aTargetFile,
414cdf0e10cSrcweir                                 STREAM_READWRITE | STREAM_TRUNC );
415cdf0e10cSrcweir             }
416cdf0e10cSrcweir         }
417cdf0e10cSrcweir     }
418cdf0e10cSrcweir 
419cdf0e10cSrcweir     if( nExit != 0 )
420cdf0e10cSrcweir     {
421cdf0e10cSrcweir         if( aCommand.aListFile.Len() )
422cdf0e10cSrcweir             DirEntry( aTmpListFile ).Kill();
423cdf0e10cSrcweir         if( aCommand.aSlotMapFile.Len() )
424cdf0e10cSrcweir             DirEntry( aTmpSlotMapFile ).Kill();
425cdf0e10cSrcweir         if( aCommand.aSfxItemFile.Len() )
426cdf0e10cSrcweir             DirEntry( aTmpSfxItemFile ).Kill();
427cdf0e10cSrcweir         if( aCommand.aDataBaseFile.Len() )
428cdf0e10cSrcweir             DirEntry( aTmpDataBaseFile ).Kill();
429cdf0e10cSrcweir         if( aCommand.aCallingFile.Len() )
430cdf0e10cSrcweir             DirEntry( aTmpCallingFile ).Kill();
431cdf0e10cSrcweir         if( aCommand.aCxxFile.Len() )
432cdf0e10cSrcweir             DirEntry( aTmpCxxFile ).Kill();
433cdf0e10cSrcweir         if( aCommand.aHxxFile.Len() )
434cdf0e10cSrcweir             DirEntry( aTmpHxxFile ).Kill();
435cdf0e10cSrcweir     }
436cdf0e10cSrcweir 
437cdf0e10cSrcweir     delete pDataBase;
438cdf0e10cSrcweir     DeInit();
439cdf0e10cSrcweir     if( nExit != 0 )
440cdf0e10cSrcweir         fprintf( stderr, "svidl terminated with errors\n" );
441cdf0e10cSrcweir     return nExit;
442cdf0e10cSrcweir }
443