xref: /trunk/main/rsc/source/prj/gui.cxx (revision 1ecadb572e7010ff3b3382ad9bf179dbc6efadbb)
1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 // MARKER(update_precomp.py): autogen include statement, do not remove
29 #include "precompiled_rsc.hxx"
30 
31 #include <stdlib.h>
32 #include <stdio.h>
33 #include <sal/main.h>
34 #include <rscrsc.hxx>
35 #include <rscdb.hxx>
36 
37 /*************** G l o b a l e   V a r i a b l e n **********************/
38 static RscCompiler * pRscCompiler = NULL;
39 /****************************************************************/
40 /*                                                              */
41 /*  Function    :   ExitProgram()                               */
42 /*                                                              */
43 /*  Description :   Gibt die Temporaeren Dateien frei.          */
44 /****************************************************************/
45 #if defined( UNX ) || ( defined( OS2 ) && ( defined( TCPP ) || defined ( GCC )) ) ||  defined (WTC) || defined (MTW) || defined(__MINGW32__)
46         void ExitProgram( void ){
47 #else
48 #if defined( CSET )
49     void _Optlink ExitProgram( void ){
50 #else
51     void cdecl ExitProgram( void ){
52 #endif
53 #endif
54     if( pRscCompiler )
55         delete pRscCompiler;
56 }
57 
58 RscVerbosity lcl_determineVerbosity( int argc, char ** argv )
59 {
60     for ( int i = 0; i < argc; ++i )
61     {
62         if ( argv[i] == NULL )
63             continue;
64         if ( rsc_stricmp( argv[i], "-verbose" ) == 0 )
65             return RscVerbosityVerbose;
66         if ( rsc_stricmp( argv[i], "-quiet" ) == 0 )
67             return RscVerbositySilent;
68     }
69     return RscVerbosityNormal;
70 }
71 
72 SAL_IMPLEMENT_MAIN_WITH_ARGS(argc, argv) {
73 #ifndef UNX
74 #ifdef CSET
75     atexit( ExitProgram );
76 #else
77     atexit( ExitProgram );
78 #endif
79 #endif
80 #if OSL_DEBUG_LEVEL > 1
81     fprintf( stderr, "debugging %s\n", argv[0] );
82 #endif
83 
84     ERRTYPE     aError;
85 
86     InitRscCompiler();
87     RscError*   pErrHdl    = new RscError( lcl_determineVerbosity( argc, argv ) );
88 #ifdef MTW
89     RscCmdLine* pCmdLine   = new RscCmdLine( argc, (char **)argv, pErrHdl );
90 #else
91     RscCmdLine* pCmdLine   = new RscCmdLine( argc, argv, pErrHdl );
92 #endif
93     RscTypCont* pTypCont   = new RscTypCont( pErrHdl,
94                                              pCmdLine->nByteOrder,
95                                              pCmdLine->aPath,
96                                              pCmdLine->nCommands );
97 
98     if( pErrHdl->nErrors )
99         aError = ERR_ERROR;
100     else{
101         RscCompiler* pCompiler = new RscCompiler( pCmdLine, pTypCont );
102 
103         pRscCompiler = pCompiler;
104         aError = pCompiler->Start();
105         pRscCompiler = NULL;
106 
107         delete pCompiler;
108     }
109 
110     delete pTypCont;
111     delete pCmdLine;
112     delete pErrHdl;
113     delete pHS; // wird durch InitRscCompiler erzeugt
114 
115     if( aError.IsOk() )
116         return( 0 );
117     else
118         return( 1 );
119 }
120 
121 void RscExit( sal_uInt32 nExit )
122 {
123     if( nExit )
124         printf( "Program exit is %ud\n", (unsigned int)nExit );
125     exit( nExit );
126 }
127