Files
libreoffice/idl/source/prj/command.cxx

385 lines
12 KiB
C++
Raw Normal View History

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2000-09-18 15:33:13 +00:00
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
2000-09-18 15:33:13 +00:00
*
* Copyright 2000, 2010 Oracle and/or its affiliates.
2000-09-18 15:33:13 +00:00
*
* OpenOffice.org - a multi-platform office productivity suite
2000-09-18 15:33:13 +00:00
*
* This file is part of OpenOffice.org.
2000-09-18 15:33:13 +00:00
*
* OpenOffice.org is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 3
* only, as published by the Free Software Foundation.
2000-09-18 15:33:13 +00:00
*
* OpenOffice.org is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License version 3 for more details
* (a copy is included in the LICENSE file that accompanied this code).
2000-09-18 15:33:13 +00:00
*
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with OpenOffice.org. If not, see
* <http://www.openoffice.org/license.html>
* for a copy of the LGPLv3 License.
2000-09-18 15:33:13 +00:00
*
************************************************************************/
2000-09-18 15:33:13 +00:00
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <command.hxx>
#include <globals.hxx>
#include <database.hxx>
#include <tools/fsys.hxx>
char const * SyntaxStrings[] = {
2000-09-18 15:33:13 +00:00
"basic-type:",
"\tvoid| char| int| float| double|",
"\tUINT16| INT16| UINT32| INT32| BOOL|",
"\tBYTE| String| SbxObject",
"",
"{ import \"filename\" }\n",
"module definition:",
"module",
"\tunique id range (ask MM)",
"modul-name",
"'['",
"\tSlotIdFile( \"filename\" )",
"']'",
"'{'",
"\t{ include \"filename\" }\n",
"\titem definition:",
"\titem type item-name;\n",
"\ttype definition:",
"\tstruct | union identifier",
"\t'{'",
"\t\t{ type idetifier }",
"\t'}'",
"\t|",
"\tenum identifier",
"\t'{'",
"\t\t{ identifier, }",
"\t'}'",
"\t|",
"\ttypedef type identifier\n",
"\titem-method:",
"\titem identifier item-method-args\n",
"\titem-method-args:",
"\t( { item parameter-name SLOT_ID } )\n",
"\tslot definition:",
"\titem identifier SLOT_ID [ item-method-args ]",
"\t'['\n",
"\t\titem-method-args",
"\t\tAccelConfig, MenuConfig, StatusBarConfig, ToolbarConfig",
"\t\tAutomation*",
"\t\tAutoUpdate",
"\t\tContainer",
"\t\tDefault = Identifier",
"\t\tExecMethod = Identifier",
"\t\tExport*",
"\t\tFastCall",
"\t\tGet, Set",
"\t\tGroupId = Identifier",
"\t\tHasCoreId",
"\t\tHasDialog",
"\t\tIsCollection",
2002-04-17 11:53:07 +00:00
"\t\tImageRotation",
"\t\tImageReflection",
2000-09-18 15:33:13 +00:00
"\t\tPseudoPrefix = Identifier",
"\t\tPseudoSlots",
"\t\tReadOnly",
"\t\tReadOnlyDoc*",
"\t\tRecordPerSet*, RecordPerItem, RecordManual, NoRecord",
"\t\tRecordAbsolute",
"\t\tStateMethod = Identifier",
"\t\tSynchron*, Asynchron",
"\t\tToggle",
"\t']'\n",
"\tinterface definition:",
"\tshell | interface identifier ':' interface",
"\t'{'",
"\t\t{ slot }",
"\t'}'\n",
"---syntax example is sfx.idl---\n",
NULL };
char CommandLineSyntax[] =
"-fs<slotmap file> -fl<listing file>\n"
"-fo<odl file> -fd<data base file>\n"
"-fi<item implementation> -ft<type library file> (not OLE)\n"
"-fr<ressource file> -fm<makefile target file>\n"
"-fC<c++ source file> -fH<c++ header file>\n"
"-fc<c source file> -fh<c header file>\n"
"-rsc <*.srs header line>\n"
"-help, ? @<file> response file\n"
" <filenames>\n";
void Init()
2000-09-18 15:33:13 +00:00
{
if( !IDLAPP->pHashTable )
IDLAPP->pHashTable = new SvStringHashTable( 2801 );
if( !IDLAPP->pGlobalNames )
IDLAPP->pGlobalNames = new SvGlobalHashNames();
}
void DeInit()
{
delete IDLAPP;
}
sal_Bool ReadIdl( SvIdlWorkingBase * pDataBase, const SvCommand & rCommand )
2000-09-18 15:33:13 +00:00
{
for( size_t n = 0; n < rCommand.aInFileList.size(); ++n )
2000-09-18 15:33:13 +00:00
{
String aFileName ( *rCommand.aInFileList[ n ] );
pDataBase->AddDepFile(aFileName);
2000-09-18 15:33:13 +00:00
SvFileStream aStm( aFileName, STREAM_STD_READ | STREAM_NOCREATE );
if( aStm.GetError() == SVSTREAM_OK )
{
if( pDataBase->IsBinaryFormat( aStm ) )
{
pDataBase->Load( aStm );
if( aStm.GetError() != SVSTREAM_OK )
{
2011-11-27 08:21:00 +00:00
rtl::OStringBuffer aStr;
2000-09-18 15:33:13 +00:00
if( aStm.GetError() == SVSTREAM_FILEFORMAT_ERROR )
2011-11-27 08:21:00 +00:00
aStr.append("error: incompatible format, file ");
2000-09-18 15:33:13 +00:00
else if( aStm.GetError() == SVSTREAM_WRONGVERSION )
2011-11-27 08:21:00 +00:00
aStr.append("error: wrong version, file ");
2000-09-18 15:33:13 +00:00
else
2011-11-27 08:21:00 +00:00
aStr.append("error during load, file ");
aStr.append(rtl::OUStringToOString(aFileName,
RTL_TEXTENCODING_UTF8));
fprintf( stderr, "%s\n", aStr.getStr() );
return sal_False;
2000-09-18 15:33:13 +00:00
}
}
else
{
SvTokenStream aTokStm( aStm, aFileName );
if( !pDataBase->ReadSvIdl( aTokStm, sal_False, rCommand.aPath ) )
return sal_False;
2000-09-18 15:33:13 +00:00
}
}
else
{
2011-11-27 08:21:00 +00:00
const rtl::OString aStr(rtl::OUStringToOString(aFileName,
RTL_TEXTENCODING_UTF8));
fprintf( stderr, "unable to read input file: %s\n", aStr.getStr() );
return sal_False;
}
2000-09-18 15:33:13 +00:00
}
return sal_True;
2000-09-18 15:33:13 +00:00
}
static sal_Bool ResponseFile( StringList * pList, int argc, char ** argv )
2000-09-18 15:33:13 +00:00
{
// program name
pList->push_back( new String( String::CreateFromAscii(*argv) ) );
2000-09-18 15:33:13 +00:00
for( int i = 1; i < argc; i++ )
{
if( '@' == **(argv +i) )
{ // when @, then response file
2000-09-18 15:33:13 +00:00
SvFileStream aStm( String::CreateFromAscii((*(argv +i)) +1), STREAM_STD_READ | STREAM_NOCREATE );
if( aStm.GetError() != SVSTREAM_OK )
return sal_False;
2000-09-18 15:33:13 +00:00
2011-11-13 23:17:06 +00:00
rtl::OString aStr;
2000-09-18 15:33:13 +00:00
while( aStm.ReadLine( aStr ) )
{
sal_uInt16 n = 0;
sal_uInt16 nPos = 1;
2000-09-18 15:33:13 +00:00
while( n != nPos )
{
2011-11-13 23:17:06 +00:00
while( aStr[n] && isspace( aStr[n] ) )
2000-09-18 15:33:13 +00:00
n++;
nPos = n;
2011-11-13 23:17:06 +00:00
while( aStr[n] && !isspace( aStr[n] ) )
2000-09-18 15:33:13 +00:00
n++;
if( n != nPos )
2011-11-13 23:17:06 +00:00
pList->push_back( new String( rtl::OStringToOUString(aStr.copy(nPos, n - nPos), RTL_TEXTENCODING_ASCII_US) ) );
2000-09-18 15:33:13 +00:00
}
}
}
else if( argv[ i ] )
pList->push_back( new String( String::CreateFromAscii( argv[ i ] ) ) );
2000-09-18 15:33:13 +00:00
}
return sal_True;
2000-09-18 15:33:13 +00:00
}
SvCommand::SvCommand( int argc, char ** argv )
CWS-TOOLING: integrate CWS buildverbosity 2009-10-13 15:51:48 +0200 fs r276867 : allow building with 'nodep'=='' 2009-10-11 22:39:56 +0200 fs r276820 : silence a compiler warning in a file only used when VERBOSE!="" 2009-10-09 14:37:43 +0200 fs r276807 : let not override the non-presence of $VERBOSE the given command line arguments 2009-10-09 14:36:25 +0200 fs r276806 : also deliver spirit/home/classic/debug/impl 2009-10-08 13:38:07 +0200 fs r276789 : not that many line feeds in --show mode 2009-10-08 13:13:01 +0200 fs r276788 : minor adjustments requested by hjs: - replaced space/tab mixes at beginning of lines with mere tab - made "nothing to update" message for the ZIPALLTARGET target more prominent - removed useless "echo > /dev/nul" statements 2009-10-07 13:32:12 +0200 fs r276753 : #i105585# 2009-10-07 11:31:59 +0200 fs r276742 : #i10000# missing dependency between stoc/security and stoc/util 2009-10-06 22:59:59 +0200 fs r276729 : CWS-TOOLING: rebase CWS buildverbosity to trunk@276699 (milestone: DEV300:m61) 2009-09-29 12:04:58 +0200 fs r276518 : #i10000# 2009-09-29 12:04:25 +0200 fs r276517 : oops 2009-09-29 12:01:07 +0200 fs r276516 : #i84497# removed some more (non-diagnostic) 'echo ------' directives 2009-09-29 11:59:29 +0200 fs r276515 : #i84497# removed some more (non-diagnostic) 'echo ------' directives 2009-09-29 11:52:32 +0200 fs r276514 : #i84497# removed the various 'echo ------------' directives from verbose mode, as per hjs' request 2009-09-29 11:44:16 +0200 fs r276513 : do not duplicate IDLC call commands with different verbosity switches 2009-09-28 21:43:50 +0200 thb r276502 : #i84497# fixed potential recursive macro def + extra ls * solenv/inc/settings.mk: now setting via VERBOSE!:=, removes warning and my spurious "recursive macro definition" error * solenv/inc/tg_app.mk: one extra ls silenced for app target (and quiet mode, that goes without saying) 2009-09-23 08:57:01 +0200 fs r276366 : use ULFEX_VERBOSITY instead of duplicating the ULFEX call 2009-09-21 11:42:26 +0200 fs r276320 : ignore output paths 2009-09-21 11:04:27 +0200 fs r276318 : silence another compiler warning, which only hits us when actually using this (debug) file, which is the case only when slideshow is compiled with a env variable VERBOSE, thus came up in CWS buildverbosity 2009-09-21 10:30:14 +0200 fs r276313 : make some output depend on VERBOSE==TRUE, not COMMAND_ECHO="" While both are equivalent at the moment, COMMAND_ECHO finally is an implementation default of the VERBOSE flag only, so better rely on VERBOSE as the primary verbosity flag 2009-09-21 09:56:57 +0200 fs r276311 : forgot to re-generate from tg_zip before committing 2009-09-21 09:52:11 +0200 fs r276310 : #i84497# even less verbosity 2009-09-17 11:02:47 +0200 fs r276232 : #i84497# verbose implies VERBOSE nowadays, and VERBOSE==FALSE should not lead to -DVERBOSE 2009-09-15 22:59:37 +0200 fs r276189 : #i105022# copy fix for this P1 into this CWS 2009-09-15 11:56:35 +0200 fs r276165 : CWS-TOOLING: rebase CWS buildverbosity to trunk@276043 (milestone: DEV300:m58) 2009-09-14 17:45:10 +0200 fs r276137 : #i84497# don't duplicate zip lines w/ and w/o -q switch, use a variable instead (maintenance) 2009-09-14 15:01:33 +0200 fs r276124 : #i10000# 2009-09-11 23:58:46 +0200 thb r276083 : #i84497#: More quiet-build fine tuning - silenced rsc for real (properly filtering options for cpp, and a pretty brutal amputation of the tool blurp, which would have needed cmd opt parser duplication) - silenced deliver.pl - silenced checkdll.sh - silenced zip via -q (in quiet mode) - silenced various idl, resource, transex whatever tool, passing appropriate options down to them '-QQ' sometimes - silenced dmake, pointless blurb that something does *not* need update removed - silenced the old starview idl compiler, to not output tool's name & progress chars in quiet mode 2009-09-11 21:13:59 +0200 thb r276081 : #i84497#: More bits on the quiet mode of the build. The bulk of the changes is disabling those annoying "echo ------------------" lines for the quiet build, which has the stretch goal of outputting *exactly* one line per file compiled/linked/processed. Apart from that, silenced a few especialy annoying module-specific makefiles (basically adding $(COMMAND_ECHO) in front of a gazillion rules). Additionally, slightly tweaked what idlc regards verbose, normal, and quiet mode; this was to have it echo exactly one line per idl file processed (the fact that quiet mode did not echo *anything* for idl files was a bit too much for my taste) 2009-09-04 09:14:35 +0200 fs r275777 : don't emit the link parameters if VERBOSE!=TRUE 2009-09-02 10:31:15 +0200 fs r275700 : #i10000# 2009-09-02 08:44:14 +0200 fs r275697 : update svn:ignore to ignore the output paths 2009-09-02 08:40:54 +0200 fs r275695 : #i84497# less verbose output during build, unless a dedicated '-verbose' switch is given 2009-09-02 08:40:28 +0200 fs r275694 : GRAPHITE is missing in the BUILD_TYPE 2009-09-02 08:40:05 +0200 fs r275693 : #i84497# less verbose output during build, unless a dedicated '-verbose' switch is given 2009-09-02 08:39:25 +0200 fs r275692 : #i84497# less verbose output during build, unless a dedicated '-verbose' switch is given 2009-09-02 08:39:02 +0200 fs r275691 : #i84497# less verbose output during build, unless a dedicated '-verbose' switch is given 2009-09-02 08:38:09 +0200 fs r275690 : #i84497# less verbose output during build 2009-09-02 08:37:06 +0200 fs r275689 : #i84497# don't emit that much noise, unless a '-verbose' switch is given
2009-10-21 10:43:22 +00:00
: nVerbosity(1), nFlags( 0 )
2000-09-18 15:33:13 +00:00
{
StringList aList;
if( ResponseFile( &aList, argc, argv ) )
for( size_t i = 1; i < aList.size(); i++ )
2000-09-18 15:33:13 +00:00
{
String aParam( *aList[ i ] );
2000-09-18 15:33:13 +00:00
sal_Unicode aFirstChar( aParam.GetChar(0) );
if( '-' == aFirstChar )
{
aParam.Erase( 0, 1 );
aFirstChar = aParam.GetChar(0);
if( aFirstChar == 'F' || aFirstChar == 'f' )
{
aParam.Erase( 0, 1 );
aFirstChar = aParam.GetChar(0);
String aName( aParam.Copy( 1 ) );
if( 's' == aFirstChar )
{ // name of slot output
2000-09-18 15:33:13 +00:00
aSlotMapFile = aName;
}
else if( 'l' == aFirstChar )
{ // name of listing
2000-09-18 15:33:13 +00:00
aListFile = aName;
}
else if( 'i' == aFirstChar )
{
2000-09-18 15:33:13 +00:00
}
else if( 'o' == aFirstChar )
{
2000-09-18 15:33:13 +00:00
}
else if( 'd' == aFirstChar )
{ // name of data set file
2000-09-18 15:33:13 +00:00
aDataBaseFile = aName;
}
else if( 'D' == aFirstChar )
{
2000-09-18 15:33:13 +00:00
}
else if( 'C' == aFirstChar )
{
2000-09-18 15:33:13 +00:00
}
else if( 'H' == aFirstChar )
{
2000-09-18 15:33:13 +00:00
}
else if( 'c' == aFirstChar )
{
2000-09-18 15:33:13 +00:00
}
else if( 'h' == aFirstChar )
{
2000-09-18 15:33:13 +00:00
}
else if( 't' == aFirstChar )
{
2000-09-18 15:33:13 +00:00
}
else if( 'm' == aFirstChar )
{ // name of info file
2000-09-18 15:33:13 +00:00
aTargetFile = aName;
}
else if( 'r' == aFirstChar )
{
2000-09-18 15:33:13 +00:00
}
else if( 'z' == aFirstChar )
{ // name of HelpId file
2000-09-18 15:33:13 +00:00
aHelpIdFile = aName;
}
else if( 'y' == aFirstChar )
{ // name of CSV file
2000-09-18 15:33:13 +00:00
aCSVFile = aName;
}
else if( 'x' == aFirstChar )
{ // name of IDL file for the CSV file
2000-09-18 15:33:13 +00:00
aExportFile = aName;
}
else if( 'M' == aFirstChar )
{
m_DepFile = aName;
}
2000-09-18 15:33:13 +00:00
else
{
printf(
"unknown switch: %s\n",
rtl::OUStringToOString(
aParam, RTL_TEXTENCODING_UTF8).getStr());
2000-09-18 15:33:13 +00:00
exit( -1 );
}
}
else if( aParam.EqualsIgnoreCaseAscii( "help" ) || aParam.EqualsIgnoreCaseAscii( "?" ) )
{ // help
printf( "%s", CommandLineSyntax );
2000-09-18 15:33:13 +00:00
}
CWS-TOOLING: integrate CWS buildverbosity 2009-10-13 15:51:48 +0200 fs r276867 : allow building with 'nodep'=='' 2009-10-11 22:39:56 +0200 fs r276820 : silence a compiler warning in a file only used when VERBOSE!="" 2009-10-09 14:37:43 +0200 fs r276807 : let not override the non-presence of $VERBOSE the given command line arguments 2009-10-09 14:36:25 +0200 fs r276806 : also deliver spirit/home/classic/debug/impl 2009-10-08 13:38:07 +0200 fs r276789 : not that many line feeds in --show mode 2009-10-08 13:13:01 +0200 fs r276788 : minor adjustments requested by hjs: - replaced space/tab mixes at beginning of lines with mere tab - made "nothing to update" message for the ZIPALLTARGET target more prominent - removed useless "echo > /dev/nul" statements 2009-10-07 13:32:12 +0200 fs r276753 : #i105585# 2009-10-07 11:31:59 +0200 fs r276742 : #i10000# missing dependency between stoc/security and stoc/util 2009-10-06 22:59:59 +0200 fs r276729 : CWS-TOOLING: rebase CWS buildverbosity to trunk@276699 (milestone: DEV300:m61) 2009-09-29 12:04:58 +0200 fs r276518 : #i10000# 2009-09-29 12:04:25 +0200 fs r276517 : oops 2009-09-29 12:01:07 +0200 fs r276516 : #i84497# removed some more (non-diagnostic) 'echo ------' directives 2009-09-29 11:59:29 +0200 fs r276515 : #i84497# removed some more (non-diagnostic) 'echo ------' directives 2009-09-29 11:52:32 +0200 fs r276514 : #i84497# removed the various 'echo ------------' directives from verbose mode, as per hjs' request 2009-09-29 11:44:16 +0200 fs r276513 : do not duplicate IDLC call commands with different verbosity switches 2009-09-28 21:43:50 +0200 thb r276502 : #i84497# fixed potential recursive macro def + extra ls * solenv/inc/settings.mk: now setting via VERBOSE!:=, removes warning and my spurious "recursive macro definition" error * solenv/inc/tg_app.mk: one extra ls silenced for app target (and quiet mode, that goes without saying) 2009-09-23 08:57:01 +0200 fs r276366 : use ULFEX_VERBOSITY instead of duplicating the ULFEX call 2009-09-21 11:42:26 +0200 fs r276320 : ignore output paths 2009-09-21 11:04:27 +0200 fs r276318 : silence another compiler warning, which only hits us when actually using this (debug) file, which is the case only when slideshow is compiled with a env variable VERBOSE, thus came up in CWS buildverbosity 2009-09-21 10:30:14 +0200 fs r276313 : make some output depend on VERBOSE==TRUE, not COMMAND_ECHO="" While both are equivalent at the moment, COMMAND_ECHO finally is an implementation default of the VERBOSE flag only, so better rely on VERBOSE as the primary verbosity flag 2009-09-21 09:56:57 +0200 fs r276311 : forgot to re-generate from tg_zip before committing 2009-09-21 09:52:11 +0200 fs r276310 : #i84497# even less verbosity 2009-09-17 11:02:47 +0200 fs r276232 : #i84497# verbose implies VERBOSE nowadays, and VERBOSE==FALSE should not lead to -DVERBOSE 2009-09-15 22:59:37 +0200 fs r276189 : #i105022# copy fix for this P1 into this CWS 2009-09-15 11:56:35 +0200 fs r276165 : CWS-TOOLING: rebase CWS buildverbosity to trunk@276043 (milestone: DEV300:m58) 2009-09-14 17:45:10 +0200 fs r276137 : #i84497# don't duplicate zip lines w/ and w/o -q switch, use a variable instead (maintenance) 2009-09-14 15:01:33 +0200 fs r276124 : #i10000# 2009-09-11 23:58:46 +0200 thb r276083 : #i84497#: More quiet-build fine tuning - silenced rsc for real (properly filtering options for cpp, and a pretty brutal amputation of the tool blurp, which would have needed cmd opt parser duplication) - silenced deliver.pl - silenced checkdll.sh - silenced zip via -q (in quiet mode) - silenced various idl, resource, transex whatever tool, passing appropriate options down to them '-QQ' sometimes - silenced dmake, pointless blurb that something does *not* need update removed - silenced the old starview idl compiler, to not output tool's name & progress chars in quiet mode 2009-09-11 21:13:59 +0200 thb r276081 : #i84497#: More bits on the quiet mode of the build. The bulk of the changes is disabling those annoying "echo ------------------" lines for the quiet build, which has the stretch goal of outputting *exactly* one line per file compiled/linked/processed. Apart from that, silenced a few especialy annoying module-specific makefiles (basically adding $(COMMAND_ECHO) in front of a gazillion rules). Additionally, slightly tweaked what idlc regards verbose, normal, and quiet mode; this was to have it echo exactly one line per idl file processed (the fact that quiet mode did not echo *anything* for idl files was a bit too much for my taste) 2009-09-04 09:14:35 +0200 fs r275777 : don't emit the link parameters if VERBOSE!=TRUE 2009-09-02 10:31:15 +0200 fs r275700 : #i10000# 2009-09-02 08:44:14 +0200 fs r275697 : update svn:ignore to ignore the output paths 2009-09-02 08:40:54 +0200 fs r275695 : #i84497# less verbose output during build, unless a dedicated '-verbose' switch is given 2009-09-02 08:40:28 +0200 fs r275694 : GRAPHITE is missing in the BUILD_TYPE 2009-09-02 08:40:05 +0200 fs r275693 : #i84497# less verbose output during build, unless a dedicated '-verbose' switch is given 2009-09-02 08:39:25 +0200 fs r275692 : #i84497# less verbose output during build, unless a dedicated '-verbose' switch is given 2009-09-02 08:39:02 +0200 fs r275691 : #i84497# less verbose output during build, unless a dedicated '-verbose' switch is given 2009-09-02 08:38:09 +0200 fs r275690 : #i84497# less verbose output during build 2009-09-02 08:37:06 +0200 fs r275689 : #i84497# don't emit that much noise, unless a '-verbose' switch is given
2009-10-21 10:43:22 +00:00
else if( aParam.EqualsIgnoreCaseAscii( "quiet" ) )
{
nVerbosity = 0;
}
else if( aParam.EqualsIgnoreCaseAscii( "verbose" ) )
{
nVerbosity = 2;
}
2000-09-18 15:33:13 +00:00
else if( aParam.EqualsIgnoreCaseAscii( "syntax" ) )
{ // help
int j = 0;
while(SyntaxStrings[j])
printf("%s\n",SyntaxStrings[j++]);
2000-09-18 15:33:13 +00:00
}
else if( aParam.EqualsIgnoreCaseAscii( "i", 0, 1 ) )
{ // define include paths
2000-09-18 15:33:13 +00:00
String aName( aParam.Copy( 1 ) );
if( aPath.Len() )
aPath += DirEntry::GetSearchDelimiter();
aPath += aName;
}
else if( aParam.EqualsIgnoreCaseAscii( "rsc", 0, 3 ) )
{ // first line in *.srs file
OSL_ENSURE(false, "does anything use this option, doesn't look like it belong here");
if( aList[ i + 1 ] )
2000-09-18 15:33:13 +00:00
{
i++;
}
}
else
{
// temporary compatibility hack
printf(
"unknown switch: %s\n",
rtl::OUStringToOString(
aParam, RTL_TEXTENCODING_UTF8).getStr());
2000-09-18 15:33:13 +00:00
exit( -1 );
}
}
else
{
aInFileList.push_back( new String( aParam ) );
2000-09-18 15:33:13 +00:00
}
}
else
{
printf( "%s", CommandLineSyntax );
2000-09-18 15:33:13 +00:00
}
for ( size_t i = 0, n = aList.size(); i < n; ++i )
delete aList[ i ];
aList.clear();
2000-09-18 15:33:13 +00:00
ByteString aInc( getenv( "INCLUDE" ) );
// append include environment variable
2000-09-18 15:33:13 +00:00
if( aInc.Len() )
{
if( aPath.Len() )
aPath += DirEntry::GetSearchDelimiter();
aPath += String::CreateFromAscii( aInc.GetBuffer() );
}
}
SvCommand::~SvCommand()
{
// release ByteString list
for ( size_t i = 0, n = aInFileList.size(); i < n; ++i )
delete aInFileList[ i ];
aInFileList.clear();
2000-09-18 15:33:13 +00:00
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */