[Libreoffice-commits] .: Branch 'feature/killsdf' - l10ntools/inc l10ntools/source
Libreoffice Gerrit user
logerrit at kemper.freedesktop.org
Fri Oct 5 06:45:59 PDT 2012
l10ntools/inc/export.hxx | 24 ++++
l10ntools/source/cfgmerge.cxx | 89 ++----------------
l10ntools/source/export.cxx | 86 ++---------------
l10ntools/source/export2.cxx | 105 +++++++++++++++++++++
l10ntools/source/helpex.cxx | 207 ++----------------------------------------
l10ntools/source/lngex.cxx | 137 ++-------------------------
l10ntools/source/localize.cxx | 2
l10ntools/source/uimerge.cxx | 113 ++--------------------
l10ntools/source/xrmlex.l | 14 --
l10ntools/source/xrmmerge.cxx | 101 +++-----------------
10 files changed, 210 insertions(+), 668 deletions(-)
New commits:
commit a418748140f993e481e2ff1cb37464936f0b2243
Author: Zolnai Tamás <zolnaitamas2000 at gmail.com>
Date: Thu Oct 4 18:57:28 2012 +0200
Extract argument-handling to one source file
Plus cleanup
-Delete unneeded global variables
-Delete -e input flag in general
-Delete helpex's -x, -y and -lf input flags
These are all unused
Change-Id: I83db62543a728ed75fa6893c45566f11d1237c69
diff --git a/l10ntools/inc/export.hxx b/l10ntools/inc/export.hxx
index 9a4ce78..28807f6 100644
--- a/l10ntools/inc/export.hxx
+++ b/l10ntools/inc/export.hxx
@@ -248,6 +248,27 @@ typedef ::std::vector< ResData* > ResStack;
class WordTransformer;
class ParserQueue;
+//result type of handleArguments()
+struct HandledArgs
+{
+ OString m_sPrj;
+ OString m_sPrjRoot;
+ OString m_sInputFile;
+ OString m_sOutputFile;
+ OString m_sMergeSrc;
+ OString m_sLanguages;
+ bool m_bMergeMode;
+ HandledArgs()
+ : m_sPrj( OString() )
+ , m_sPrjRoot( OString() )
+ , m_sInputFile( OString() )
+ , m_sOutputFile( OString() )
+ , m_sMergeSrc( OString() )
+ , m_sLanguages( OString() )
+ , m_bMergeMode( false )
+ {}
+};
+
class Export
{
private:
@@ -285,6 +306,9 @@ public:
static rtl::OString sLanguages; // public ?
static rtl::OString sForcedLanguages; // public ?
+ static bool handleArguments(int argc, char * argv[], HandledArgs& o_aHandledArgs);
+ static void writeUsage(const OString& rName, const OString& rFileType);
+
static void InitLanguages( bool bMergeMode = false );
static void InitForcedLanguages( bool bMergeMode = false );
static std::vector<rtl::OString> GetLanguages();
diff --git a/l10ntools/source/cfgmerge.cxx b/l10ntools/source/cfgmerge.cxx
index 41db097..3eb442f 100644
--- a/l10ntools/source/cfgmerge.cxx
+++ b/l10ntools/source/cfgmerge.cxx
@@ -38,86 +38,24 @@ namespace {
namespace global {
-bool mergeMode = false;
-char const * prj = 0;
-char const * prjRoot = 0;
char const * inputPathname = 0;
-char const * outputPathname = 0;
-char const * mergeSrc;
boost::scoped_ptr< CfgParser > parser;
}
-
-void handleArguments(int argc, char ** argv) {
- for (int i = 1; i != argc; ++i) {
- if (std::strcmp(argv[i], "-e") == 0) {
- // ignored, used to be "Disable writing errorlog"
- } else if (std::strcmp(argv[i], "-i") == 0) {
- if (++i == argc) {
- global::inputPathname = 0; // no valid command line
- break;
- }
- global::inputPathname = argv[i];
- } else if (std::strcmp(argv[i], "-l") == 0) {
- if (++i == argc) {
- global::inputPathname = 0; // no valid command line
- break;
- }
- Export::sLanguages = argv[i];
- } else if (std::strcmp(argv[i], "-m") == 0) {
- if (++i == argc) {
- global::inputPathname = 0; // no valid command line
- break;
- }
- global::mergeSrc = argv[i];
- global::mergeMode = true;
- } else if (std::strcmp(argv[i], "-o") == 0) {
- if (++i == argc) {
- global::inputPathname = 0; // no valid command line
- break;
- }
- global::outputPathname = argv[i];
- } else if (std::strcmp(argv[i], "-p") == 0) {
- if (++i == argc) {
- global::inputPathname = 0; // no valid command line
- break;
- }
- global::prj = argv[i];
- } else if (std::strcmp(argv[i], "-r") == 0) {
- if (++i == argc) {
- global::inputPathname = 0; // no valid command line
- break;
- }
- global::prjRoot = argv[i];
- } else {
- global::inputPathname = 0; // no valid command line
- break;
- }
- }
- if (global::inputPathname == 0 || global::outputPathname == 0) {
- std::fprintf(
- stderr,
- ("Syntax: cfgex [-p Prj] [-r PrjRoot] -i FileIn -o FileOut"
- " [-m DataBase] [-e] [-l l1,l2,...]\n"
- " Prj: Project\n"
- " PrjRoot: Path to project root (../.. etc.)\n"
- " FileIn: Source files (*.src)\n"
- " FileOut: Destination file (*.*)\n"
- " DataBase: Mergedata (*.sdf)\n"
- " -e: ignored\n"
- " -l: Restrict the handled languages; l1, l2, ... are elements of"
- " (de, en-US, ...)\n"));
- std::exit(EXIT_FAILURE);
- }
- Export::InitLanguages();
-}
-
}
extern "C" {
FILE * init(int argc, char ** argv) {
- handleArguments(argc, argv);
+
+ HandledArgs aArgs;
+ if ( !Export::handleArguments(argc, argv, aArgs) )
+ {
+ Export::writeUsage("cfgex","xcu");
+ std::exit(EXIT_FAILURE);
+ }
+ Export::InitLanguages();
+ global::inputPathname = aArgs.m_sInputFile.getStr();
FILE * pFile = std::fopen(global::inputPathname, "r");
if (pFile == 0) {
@@ -127,16 +65,17 @@ FILE * init(int argc, char ** argv) {
std::exit(EXIT_FAILURE);
}
- if (global::mergeMode) {
+ if (aArgs.m_bMergeMode) {
global::parser.reset(
new CfgMerge(
- global::mergeSrc, global::outputPathname,
+ aArgs.m_sMergeSrc.getStr(), aArgs.m_sOutputFile.getStr(),
global::inputPathname));
} else {
global::parser.reset(
new CfgExport(
- global::outputPathname, global::prj,
- common::pathnameToken(global::inputPathname, global::prjRoot)));
+ aArgs.m_sOutputFile.getStr(), aArgs.m_sPrj.getStr(),
+ common::pathnameToken(global::inputPathname,
+ aArgs.m_sPrjRoot.getStr())));
}
return pFile;
diff --git a/l10ntools/source/export.cxx b/l10ntools/source/export.cxx
index 8fe8057..d9dd5ac 100644
--- a/l10ntools/source/export.cxx
+++ b/l10ntools/source/export.cxx
@@ -42,86 +42,28 @@ MergeDataFile * pMergeDataFile = 0; //TODO
namespace global {
-bool mergeMode = false;
char const * prj = 0;
char const * prjRoot = 0;
char const * inputPathname = 0;
-char const * outputPathname = 0;
-char const * mergeSrc;
boost::scoped_ptr< Export > exporter;
}
-
-void handleArguments(int argc, char ** argv) {
- for (int i = 1; i != argc; ++i) {
- if (std::strcmp(argv[i], "-e") == 0) {
- // ingored, used to be "Disable writing errorlog"
- } else if (std::strcmp(argv[i], "-i") == 0) {
- if (++i == argc) {
- global::inputPathname = 0; // no valid command line
- break;
- }
- global::inputPathname = argv[i];
- } else if (std::strcmp(argv[i], "-l") == 0) {
- if (++i == argc) {
- global::inputPathname = 0; // no valid command line
- break;
- }
- Export::sLanguages = argv[i];
- } else if (std::strcmp(argv[i], "-m") == 0) {
- if (++i == argc) {
- global::inputPathname = 0; // no valid command line
- break;
- }
- global::mergeSrc = argv[i];
- global::mergeMode = true;
- } else if (std::strcmp(argv[i], "-o") == 0) {
- if (++i == argc) {
- global::inputPathname = 0; // no valid command line
- break;
- }
- global::outputPathname = argv[i];
- } else if (std::strcmp(argv[i], "-p") == 0) {
- if (++i == argc) {
- global::inputPathname = 0; // no valid command line
- break;
- }
- global::prj = argv[i];
- } else if (std::strcmp(argv[i], "-r") == 0) {
- if (++i == argc) {
- global::inputPathname = 0; // no valid command line
- break;
- }
- global::prjRoot = argv[i];
- } else {
- global::inputPathname = 0; // no valid command line
- break;
- }
- }
- if (global::inputPathname == 0 || global::outputPathname == 0) {
- std::fprintf(
- stderr,
- ("Syntax: transex3 [-p Prj] [-r PrjRoot] -i FileIn -o FileOut"
- " [-m DataBase] [-e] [-l l1,l2,...]\n"
- " Prj: Project\n"
- " PrjRoot: Path to project root (../.. etc.)\n"
- " FileIn: Source files (*.src)\n"
- " FileOut: Destination file (*.*)\n"
- " DataBase: Mergedata (*.sdf)\n"
- " -e: ignored\n"
- " -l: Restrict the handled languages; l1, l2, ... are elements of"
- " (de, en-US, ...)\n"));
- std::exit(EXIT_FAILURE);
- }
- Export::InitLanguages();
-}
-
}
extern "C" {
FILE * init(int argc, char ** argv) {
- handleArguments(argc, argv);
+
+ HandledArgs aArgs;
+ if ( !Export::handleArguments(argc, argv, aArgs) )
+ {
+ Export::writeUsage("transex3","src/hrc");
+ std::exit(EXIT_FAILURE);
+ }
+ Export::InitLanguages();
+ global::prj = aArgs.m_sPrj.getStr();
+ global::prjRoot = aArgs.m_sPrjRoot.getStr();
+ global::inputPathname = aArgs.m_sInputFile.getStr();
FILE * pFile = std::fopen(global::inputPathname, "r");
if (pFile == 0) {
@@ -131,13 +73,13 @@ FILE * init(int argc, char ** argv) {
std::exit(EXIT_FAILURE);
}
- if (global::mergeMode) {
+ if (aArgs.m_bMergeMode) {
global::exporter.reset(
- new Export(global::mergeSrc, global::outputPathname));
+ new Export(aArgs.m_sMergeSrc.getStr(), aArgs.m_sOutputFile.getStr()));
} else {
sActFileName =
common::pathnameToken(global::inputPathname, global::prjRoot);
- global::exporter.reset(new Export(global::outputPathname));
+ global::exporter.reset(new Export(aArgs.m_sOutputFile.getStr()));
}
global::exporter->Init();
diff --git a/l10ntools/source/export2.cxx b/l10ntools/source/export2.cxx
index 726f36a..e2be3f3 100644
--- a/l10ntools/source/export2.cxx
+++ b/l10ntools/source/export2.cxx
@@ -31,6 +31,15 @@
#include <time.h>
#include <stdlib.h>
+//flags for handleArguments()
+#define STATE_NON 0x0001
+#define STATE_INPUT 0x0002
+#define STATE_OUTPUT 0x0003
+#define STATE_PRJ 0x0004
+#define STATE_ROOT 0x0005
+#define STATE_MERGESRC 0x0006
+#define STATE_LANGUAGES 0x0007
+
//
// class ResData();
//
@@ -82,6 +91,102 @@ rtl::OString Export::sLanguages;
rtl::OString Export::sForcedLanguages;
/*****************************************************************************/
+bool Export::handleArguments(
+ int argc, char * argv[], HandledArgs& o_aHandledArgs)
+{
+ if ( argc <= 1 )
+ {
+ return false;
+ }
+ sLanguages = "";
+ sal_uInt16 nState = STATE_NON;
+
+ for( int i = 1; i < argc; i++ )
+ {
+ if ( OString( argv[ i ] ).toAsciiUpperCase() == "-I" )
+ {
+ nState = STATE_INPUT; // next token specifies source file
+ }
+ else if ( OString( argv[ i ] ).toAsciiUpperCase() == "-O" )
+ {
+ nState = STATE_OUTPUT; // next token specifies the dest file
+ }
+ else if ( OString( argv[ i ] ).toAsciiUpperCase() == "-P" )
+ {
+ nState = STATE_PRJ; // next token specifies the cur. project
+ }
+ else if ( OString( argv[ i ] ).toAsciiUpperCase() == "-R" )
+ {
+ nState = STATE_ROOT; // next token specifies path to project root
+ }
+ else if ( OString( argv[ i ] ).toAsciiUpperCase() == "-M" )
+ {
+ nState = STATE_MERGESRC; // next token specifies the merge database
+ }
+ else if ( OString( argv[ i ] ).toAsciiUpperCase() == "-L" )
+ {
+ nState = STATE_LANGUAGES;
+ }
+ else
+ {
+ switch ( nState )
+ {
+ case STATE_NON:
+ {
+ return false; // no valid command line
+ }
+ case STATE_INPUT:
+ {
+ o_aHandledArgs.m_sInputFile = OString( argv[i] );
+ }
+ break;
+ case STATE_OUTPUT:
+ {
+ o_aHandledArgs.m_sOutputFile = OString( argv[i] );
+ }
+ break;
+ case STATE_PRJ:
+ {
+ o_aHandledArgs.m_sPrj = OString( argv[i] );
+ }
+ break;
+ case STATE_ROOT:
+ {
+ o_aHandledArgs.m_sPrjRoot = OString( argv[i] );
+ }
+ break;
+ case STATE_MERGESRC:
+ {
+ o_aHandledArgs.m_sMergeSrc = OString( argv[i] );
+ o_aHandledArgs.m_bMergeMode = true;
+ }
+ break;
+ case STATE_LANGUAGES:
+ {
+ sLanguages = OString( argv[i] );
+ }
+ break;
+ }
+ }
+ }
+ return true;
+}
+
+void Export::writeUsage(const OString& rName, const OString& rFileType)
+{
+ std::cout
+ << "Syntax: " << rName.getStr()
+ << " [-p Prj] [-r PrjRoot] -i FileIn -o FileOut"
+ << " [-m DataBase] [-l l1,l2,...]\n"
+ << " Prj: Project\n"
+ << " PrjRoot: Path to project root (../.. etc.)\n"
+ << " FileIn: Source files (*." << rFileType.getStr() << ")\n"
+ << " FileOut: Destination file (*.*)\n"
+ << " DataBase: Mergedata (*.po)\n"
+ << " -l: Restrict the handled languages; l1, l2, ... are elements of"
+ << " (de, en-US, ...)\n";
+}
+
/*****************************************************************************/
void Export::SetLanguages( std::vector<rtl::OString> val ){
/*****************************************************************************/
diff --git a/l10ntools/source/helpex.cxx b/l10ntools/source/helpex.cxx
index 470b4f1..574987e 100644
--- a/l10ntools/source/helpex.cxx
+++ b/l10ntools/source/helpex.cxx
@@ -28,213 +28,34 @@
#include "helpmerge.hxx"
-// defines to parse command line
-#define STATE_NON 0x0001
-#define STATE_INPUT 0x0002
-#define STATE_OUTPUT 0x0003
-#define STATE_PRJ 0x0004
-#define STATE_ROOT 0x0005
-#define STATE_SDFFILE 0x0006
-#define STATE_ERRORLOG 0x0007
-#define STATE_BREAKHELP 0x0008
-#define STATE_UNMERGE 0x0009
-#define STATE_LANGUAGES 0x000A
-#define STATE_FORCE_LANGUAGES 0x000B
-#define STATE_OUTPUTX 0xfe
-#define STATE_OUTPUTY 0xff
-
-// set of global variables
-rtl::OString sInputFile;
-sal_Bool bEnableExport;
-sal_Bool bMergeMode;
-rtl::OString sPrj;
-rtl::OString sPrjRoot;
-rtl::OString sOutputFile;
-rtl::OString sOutputFileX;
-rtl::OString sOutputFileY;
-rtl::OString sSDFFile;
-
-/*****************************************************************************/
-sal_Bool ParseCommandLine( int argc, char* argv[])
-/*****************************************************************************/
-{
- bEnableExport = sal_False;
- bMergeMode = sal_False;
- sPrj = "";
- sPrjRoot = "";
- Export::sLanguages = "";
- Export::sForcedLanguages = "";
-
- sal_uInt16 nState = STATE_NON;
- sal_Bool bInput = sal_False;
-
- // parse command line
- for( int i = 1; i < argc; i++ )
- {
- rtl::OString aArg = rtl::OString(argv[i]).toAsciiUpperCase();
- if (aArg.equalsL(RTL_CONSTASCII_STRINGPARAM("-I")))
- nState = STATE_INPUT; // next tokens specifies source files
- else if (aArg.equalsL(RTL_CONSTASCII_STRINGPARAM("-O")))
- nState = STATE_OUTPUT; // next token specifies the dest file
- else if (aArg.equalsL(RTL_CONSTASCII_STRINGPARAM("-X")))
- nState = STATE_OUTPUTX; // next token specifies the dest file
- else if (aArg.equalsL(RTL_CONSTASCII_STRINGPARAM("-Y" )))
- nState = STATE_OUTPUTY; // next token specifies the dest file
- else if (aArg.equalsL(RTL_CONSTASCII_STRINGPARAM("-P" )))
- nState = STATE_PRJ; // next token specifies the cur. project
- else if (aArg.equalsL(RTL_CONSTASCII_STRINGPARAM("-LF")))
- nState = STATE_FORCE_LANGUAGES;
- else if (aArg.equalsL(RTL_CONSTASCII_STRINGPARAM("-R" )))
- nState = STATE_ROOT; // next token specifies path to project root
- else if (aArg.equalsL(RTL_CONSTASCII_STRINGPARAM("-M" )))
- nState = STATE_SDFFILE; // next token specifies the merge database
- else if (aArg.equalsL(RTL_CONSTASCII_STRINGPARAM("-E" )))
- {
- nState = STATE_ERRORLOG;
- }
- else if (aArg.equalsL(RTL_CONSTASCII_STRINGPARAM("-L" )))
- nState = STATE_LANGUAGES;
- else
- {
- switch ( nState )
- {
- case STATE_NON: {
- return sal_False; // no valid command line
- }
- //break;
- case STATE_INPUT: {
- sInputFile = argv[ i ];
- bInput = sal_True; // source file found
- }
- break;
- case STATE_OUTPUT: {
- sOutputFile = argv[ i ]; // the dest. file
- }
- break;
- case STATE_OUTPUTX: {
- sOutputFileX = argv[ i ]; // the dest. file
- }
- break;
- case STATE_OUTPUTY: {
- sOutputFileY = argv[ i ]; // the dest. file
- }
- break;
- case STATE_PRJ: {
- sPrj = argv[ i ];
- }
- break;
- case STATE_ROOT: {
- sPrjRoot = argv[ i ]; // path to project root
- }
- break;
- case STATE_SDFFILE: {
- sSDFFile = argv[ i ];
- bMergeMode = sal_True; // activate merge mode, cause merge database found
- }
- break;
- case STATE_LANGUAGES: {
- Export::sLanguages = argv[ i ];
- }
- case STATE_FORCE_LANGUAGES:{
- Export::sForcedLanguages = argv[ i ];
- }
- break;
- }
- }
- }
-
- if ( bInput ) {
- // command line is valid
- bEnableExport = sal_True;
- return sal_True;
- }
-
- // command line is not valid
- return sal_False;
-}
-
-
-/*****************************************************************************/
-void Help()
-/*****************************************************************************/
-{
- fprintf( stdout, "Syntax: HELPEX[-p Prj][-r PrjRoot]-i FileIn ( -o FileOut | -x path -y relfile )[-m DataBase][-e][-b][-u][-L l1,l2,...] -LF l1,l2 \n" );
- fprintf( stdout, " Prj: Project\n" );
- fprintf( stdout, " PrjRoot: Path to project root (..\\.. etc.)\n" );
- fprintf( stdout, " FileIn: Source file (*.lng)\n" );
- fprintf( stdout, " FileOut: Destination file (*.*)\n" );
- fprintf( stdout, " DataBase: Mergedata (*.sdf)\n" );
- fprintf( stdout, " -L: Restrict the handled languages. l1,l2,... are elements of (en-US,fr,de...)\n" );
- fprintf( stdout, " -LF: Force the creation of that languages\n" );
-
-}
-
-/*****************************************************************************/
#ifndef TESTDRIVER
SAL_IMPLEMENT_MAIN_WITH_ARGS(argc, argv) {
- if ( !ParseCommandLine( argc, argv )) {
- Help();
+ HandledArgs aArgs;
+ if ( !Export::handleArguments( argc, argv, aArgs) ) {
+ Export::writeUsage("helpex","xhp");
return 1;
}
//sal_uInt32 startfull = Export::startMessure();
-
- bool hasInputList = sInputFile[0]=='@';
bool hasNoError = true;
- if ( sOutputFile.getLength() ){ // Merge single file ?
- HelpParser aParser( sInputFile );
+ if ( !aArgs.m_sOutputFile.isEmpty() ){
+ HelpParser aParser( aArgs.m_sInputFile );
- if ( bMergeMode )
+ if ( aArgs.m_bMergeMode )
{
//sal_uInt64 startreadloc = Export::startMessure();
- MergeDataFile aMergeDataFile(sSDFFile, sInputFile, false);
+ MergeDataFile aMergeDataFile( aArgs.m_sMergeSrc, aArgs.m_sInputFile, false );
- hasNoError = aParser.Merge( sSDFFile, sOutputFile , Export::sLanguages , aMergeDataFile );
+ hasNoError = aParser.Merge( aArgs.m_sMergeSrc, aArgs.m_sOutputFile , Export::sLanguages , aMergeDataFile );
}
else
- hasNoError = aParser.CreateSDF( sOutputFile, sPrj, sPrjRoot, sInputFile, new XMLFile( rtl::OUString('0') ), "help" );
- }else if ( sOutputFileX.getLength() && sOutputFileY.getLength() && hasInputList ) { // Merge multiple files ?
- if ( bMergeMode ){
-
- ifstream aFStream( sInputFile.copy( 1 ).getStr() , ios::in );
-
- if( !aFStream ){
- std::cerr << "ERROR: - helpex - Can't open the file " << sInputFile.copy( 1 ).getStr() << "\n";
- std::exit(EXIT_FAILURE);
- }
-
- vector<rtl::OString> filelist;
- rtl::OStringBuffer filename;
- sal_Char aChar;
- while( aFStream.get( aChar ) )
- {
- if( aChar == ' ' || aChar == '\n')
- filelist.push_back(filename.makeStringAndClear());
- else
- filename.append( aChar );
- }
- if( filename.getLength() > 0 )
- filelist.push_back(filename.makeStringAndClear());
-
- aFStream.close();
- rtl::OString sHelpFile; // dummy
- MergeDataFile aMergeDataFile( sSDFFile, sHelpFile, false );
-
- std::vector<rtl::OString> aLanguages;
- HelpParser::parse_languages( aLanguages , aMergeDataFile );
-
- bool bCreateDir = true;
- for( vector<rtl::OString>::iterator pos = filelist.begin() ; pos != filelist.end() ; ++pos )
- {
- sHelpFile = *pos;
-
- HelpParser aParser( sHelpFile );
- hasNoError = aParser.Merge( sSDFFile , sOutputFileX , sOutputFileY , true , aLanguages , aMergeDataFile , bCreateDir );
- bCreateDir = false;
- }
- }
- } else
+ hasNoError =
+ aParser.CreateSDF(
+ aArgs.m_sOutputFile, aArgs.m_sPrj, aArgs.m_sPrjRoot,
+ aArgs.m_sInputFile, new XMLFile( OUString('0') ), "help" );
+ }
+ else
std::cerr << "helpex ERROR: Wrong input parameters!\n";
if( hasNoError )
diff --git a/l10ntools/source/lngex.cxx b/l10ntools/source/lngex.cxx
index ab2f0af..706ab26 100644
--- a/l10ntools/source/lngex.cxx
+++ b/l10ntools/source/lngex.cxx
@@ -25,140 +25,23 @@
#include "lngmerge.hxx"
-// defines to parse command line
-#define STATE_NON 0x0001
-#define STATE_INPUT 0x0002
-#define STATE_OUTPUT 0x0003
-#define STATE_PRJ 0x0004
-#define STATE_ROOT 0x0005
-#define STATE_MERGESRC 0x0006
-#define STATE_ERRORLOG 0x0007
-#define STATE_BREAKHELP 0x0008
-#define STATE_UNMERGE 0x0009
-#define STATE_ULF 0x000A
-#define STATE_LANGUAGES 0x000B
-
-// set of global variables
-rtl::OString sInputFile;
-sal_Bool bEnableExport;
-sal_Bool bMergeMode;
-sal_Bool bUTF8;
-sal_Bool bULF; // ULF = Unicode Language File
-rtl::OString sPrj;
-rtl::OString sPrjRoot;
-rtl::OString sOutputFile;
-rtl::OString sMergeSrc;
-
-/*****************************************************************************/
-sal_Bool ParseCommandLine( int argc, char* argv[])
-/*****************************************************************************/
-{
- bEnableExport = sal_False;
- bMergeMode = sal_False;
- bUTF8 = sal_True;
- bULF = sal_False;
- sPrj = "";
- sPrjRoot = "";
- Export::sLanguages = "";
-
- sal_uInt16 nState = STATE_NON;
- sal_Bool bInput = sal_False;
-
- // parse command line
- for( int i = 1; i < argc; i++ ) {
- rtl::OString sSwitch = rtl::OString(argv[i]).toAsciiUpperCase();
- if (sSwitch.equalsL(RTL_CONSTASCII_STRINGPARAM("-I")))
- nState = STATE_INPUT; // next tokens specifies source files
- else if (sSwitch.equalsL(RTL_CONSTASCII_STRINGPARAM("-O")))
- nState = STATE_OUTPUT; // next token specifies the dest file
- else if (sSwitch.equalsL(RTL_CONSTASCII_STRINGPARAM("-P")))
- nState = STATE_PRJ; // next token specifies the cur. project
- else if (sSwitch.equalsL(RTL_CONSTASCII_STRINGPARAM("-R")))
- nState = STATE_ROOT; // next token specifies path to project root
- else if (sSwitch.equalsL(RTL_CONSTASCII_STRINGPARAM("-M")))
- nState = STATE_MERGESRC; // next token specifies the merge database
- else if (sSwitch.equalsL(RTL_CONSTASCII_STRINGPARAM("-E")))
- {
- nState = STATE_ERRORLOG;
- }
- else if (sSwitch.equalsL(RTL_CONSTASCII_STRINGPARAM("-L")))
- nState = STATE_LANGUAGES;
- else
- {
- switch ( nState ) {
- case STATE_NON: {
- return sal_False; // no valid command line
- }
- //break;
- case STATE_INPUT: {
- sInputFile = argv[ i ];
- bInput = sal_True; // source file found
- }
- break;
- case STATE_OUTPUT: {
- sOutputFile = argv[ i ]; // the dest. file
- }
- break;
- case STATE_PRJ: {
- sPrj = argv[ i ];
- }
- break;
- case STATE_ROOT: {
- sPrjRoot = argv[ i ]; // path to project root
- }
- break;
- case STATE_MERGESRC: {
- sMergeSrc = argv[ i ];
- bMergeMode = sal_True; // activate merge mode, cause merge database found
- }
- break;
- case STATE_LANGUAGES: {
- Export::sLanguages = argv[ i ];
- }
- break;
- }
- }
- }
-
- if ( bInput ) {
- // command line is valid
- bULF = sal_True;
- bEnableExport = sal_True;
- return sal_True;
- }
-
- // command line is not valid
- return sal_False;
-}
-
-
-/*****************************************************************************/
-void Help()
-/*****************************************************************************/
-{
- fprintf( stdout, "Syntax:ULFEX[-p Prj][-r PrjRoot]-i FileIn -o FileOut[-m DataBase][-L l1,l2,...]\n" );
- fprintf( stdout, " Prj: Project\n" );
- fprintf( stdout, " PrjRoot: Path to project root (..\\.. etc.)\n" );
- fprintf( stdout, " FileIn: Source file (*.lng)\n" );
- fprintf( stdout, " FileOut: Destination file (*.*)\n" );
- fprintf( stdout, " DataBase: Mergedata (*.sdf)\n" );
- fprintf( stdout, " -L: Restrict the handled languages. l1,l2,... are elements of (de,en-US...)\n" );
-}
-
SAL_IMPLEMENT_MAIN_WITH_ARGS(argc, argv) {
- if ( !ParseCommandLine( argc, argv ))
+
+ HandledArgs aArgs;
+ if ( !Export::handleArguments(argc, argv, aArgs) )
{
- Help();
+ Export::writeUsage("ulfex","ulf");
return 1;
}
- if (!sOutputFile.isEmpty())
+ if (!aArgs.m_sOutputFile.isEmpty())
{
- LngParser aParser( sInputFile, bULF );
- if ( bMergeMode )
- aParser.Merge(sMergeSrc, sOutputFile);
+ LngParser aParser( aArgs.m_sInputFile, true );
+ if ( aArgs.m_bMergeMode )
+ aParser.Merge(aArgs.m_sMergeSrc, aArgs.m_sOutputFile);
else
- aParser.CreateSDF( sOutputFile, sPrj, sPrjRoot );
+ aParser.CreateSDF(
+ aArgs.m_sOutputFile, aArgs.m_sPrj, aArgs.m_sPrjRoot );
}
return 0;
diff --git a/l10ntools/source/localize.cxx b/l10ntools/source/localize.cxx
index 941f8d9..fd1d8ca 100644
--- a/l10ntools/source/localize.cxx
+++ b/l10ntools/source/localize.cxx
@@ -193,7 +193,7 @@ void handleCommand(
RTL_CONSTASCII_USTRINGPARAM("INPATH_FOR_BUILD"))));
buf.appendAscii(RTL_CONSTASCII_STRINGPARAM("/bin/"));
buf.append(executable);
- buf.appendAscii(RTL_CONSTASCII_STRINGPARAM(" -e -p "));
+ buf.appendAscii(RTL_CONSTASCII_STRINGPARAM(" -p "));
buf.append(project);
buf.appendAscii(RTL_CONSTASCII_STRINGPARAM(" -r "));
buf.append(projectRoot);
diff --git a/l10ntools/source/uimerge.cxx b/l10ntools/source/uimerge.cxx
index bdf536a..4192ed7 100644
--- a/l10ntools/source/uimerge.cxx
+++ b/l10ntools/source/uimerge.cxx
@@ -26,100 +26,10 @@
#include <fstream>
#include <vector>
-#define STATE_NON 0x0001
-#define STATE_INPUT 0x0002
-#define STATE_OUTPUT 0x0003
-#define STATE_PRJ 0x0004
-#define STATE_ROOT 0x0005
-#define STATE_MERGESRC 0x0006
-#define STATE_ERRORLOG 0x0007
-#define STATE_LANGUAGES 0x000C
-
-sal_Bool bMergeMode;
-sal_Bool bErrorLog;
-sal_Bool bUTF8;
-sal_Bool bDisplayName;
-sal_Bool bExtensionDescription;
rtl::OString sPrj;
rtl::OString sPrjRoot;
rtl::OString sInputFileName;
rtl::OString sOutputFile;
-rtl::OString sMergeSrc;
-rtl::OString sLangAttribute;
-rtl::OString sResourceType;
-XRMResParser *pParser = NULL;
-
-void GetOutputFile( int argc, char* argv[])
-{
- bMergeMode = sal_False;
- bErrorLog = sal_True;
- bUTF8 = sal_True;
- bDisplayName = sal_False;
- bExtensionDescription = sal_False;
- sPrj = "";
- sPrjRoot = "";
- sInputFileName = "";
- Export::sLanguages = "";
- sal_uInt16 nState = STATE_NON;
-
- // parse command line
- for( int i = 1; i < argc; i++ ) {
- if ( rtl::OString( argv[ i ] ).toAsciiUpperCase() == "-I" ) {
- nState = STATE_INPUT; // next token specifies source file
- }
- else if ( rtl::OString( argv[ i ] ).toAsciiUpperCase() == "-O" ) {
- nState = STATE_OUTPUT; // next token specifies the dest file
- }
- else if ( rtl::OString( argv[ i ] ).toAsciiUpperCase() == "-P" ) {
- nState = STATE_PRJ; // next token specifies the cur. project
- }
- else if ( rtl::OString( argv[ i ] ).toAsciiUpperCase() == "-R" ) {
- nState = STATE_ROOT; // next token specifies path to project root
- }
- else if ( rtl::OString( argv[ i ] ).toAsciiUpperCase() == "-M" ) {
- nState = STATE_MERGESRC; // next token specifies the merge database
- }
- else if ( rtl::OString( argv[ i ] ).toAsciiUpperCase() == "-E" ) {
- nState = STATE_ERRORLOG;
- bErrorLog = sal_False;
- }
- else if ( rtl::OString( argv[ i ] ).toAsciiUpperCase() == "-L" ) {
- nState = STATE_LANGUAGES;
- }
- else {
- switch ( nState ) {
- case STATE_NON: {
- return; // no valid command line
- }
- case STATE_INPUT: {
- sInputFileName = argv[ i ];
- }
- break;
- case STATE_OUTPUT: {
- sOutputFile = argv[ i ]; // the dest. file
- }
- break;
- case STATE_PRJ: {
- sPrj = rtl::OString( argv[ i ]);
- }
- break;
- case STATE_ROOT: {
- sPrjRoot = rtl::OString( argv[ i ]); // path to project root
- }
- break;
- case STATE_MERGESRC: {
- sMergeSrc = rtl::OString( argv[ i ]);
- bMergeMode = sal_True; // activate merge mode, cause merge database found
- }
- break;
- case STATE_LANGUAGES: {
- Export::sLanguages = rtl::OString( argv[ i ]);
- }
- break;
- }
- }
- }
-}
int extractTranslations()
{
@@ -275,22 +185,19 @@ SAL_IMPLEMENT_MAIN_WITH_ARGS(argc, argv)
{
int nRetValue = 0;
- GetOutputFile( argc, argv );
-
- if (sOutputFile.isEmpty())
+ HandledArgs aArgs;
+ if ( !Export::handleArguments(argc, argv, aArgs) )
{
- fprintf( stdout, "Syntax: UIEX[-p Prj][-r PrjRoot]-i FileIn [-o FileOut][-m DataBase][-e][-L l1,l2,...]\n" );
- fprintf( stdout, " Prj: Project\n" );
- fprintf( stdout, " PrjRoot: Path to project root (..\\.. etc.)\n" );
- fprintf( stdout, " FileIn: Source files (*.src)\n" );
- fprintf( stdout, " FileOut: Destination file (*.*)\n" );
- fprintf( stdout, " DataBase: Mergedata (*.sdf)\n" );
- fprintf( stdout, " -e: Disable writing errorlog\n" );
- fprintf( stdout, " -L: Restrict the handled languages. l1,l2,... are elements of (de,en-US,es...)\n" );
+ Export::writeUsage("uiex","ui");
return 1;
}
- if (!bMergeMode)
+ sPrj = aArgs.m_sPrj;
+ sPrjRoot = aArgs.m_sPrjRoot;
+ sInputFileName = aArgs.m_sInputFile;
+ sOutputFile = aArgs.m_sOutputFile;
+
+ if (!aArgs.m_bMergeMode)
{
if (Export::sLanguages != "en-US")
{
@@ -302,7 +209,7 @@ SAL_IMPLEMENT_MAIN_WITH_ARGS(argc, argv)
}
else
{
- Merge(sMergeSrc, sInputFileName, sOutputFile);
+ Merge(aArgs.m_sMergeSrc, sInputFileName, sOutputFile);
}
return nRetValue;
diff --git a/l10ntools/source/xrmlex.l b/l10ntools/source/xrmlex.l
index dfe74d7..8d6094c 100644
--- a/l10ntools/source/xrmlex.l
+++ b/l10ntools/source/xrmlex.l
@@ -221,18 +221,8 @@ SAL_IMPLEMENT_MAIN_WITH_ARGS(argc, argv) {
pOutput = GetOutputFile( argc, argv );
- if ( !pOutput ) {
- fprintf( stdout, "Syntax: XRMEX[-p Prj][-r PrjRoot]-i FileIn [-o FileOut][-m DataBase][-e][-b][-u][-NOUTF8][-L l1,l2,...]\n" );
- fprintf( stdout, " Prj: Project\n" );
- fprintf( stdout, " PrjRoot: Path to project root (..\\.. etc.)\n" );
- fprintf( stdout, " FileIn: Source files (*.src)\n" );
- fprintf( stdout, " FileOut: Destination file (*.*)\n" );
- fprintf( stdout, " DataBase: Mergedata (*.sdf)\n" );
- fprintf( stdout, " -e: Disable writing errorlog\n" );
- fprintf( stdout, " -b: Break when Token \"HelpText\" found in source\n" );
- fprintf( stdout, " -u: [english] and [german] are allowed, Id is Taken from DataBase \n" );
- fprintf( stdout, " -NOUTF8: disable UTF8 as language independent encoding\n" );
- fprintf( stdout, " -L: Restrict the handled languages. l1,l2,... are elements of (de,en-US,es...)\n" );
+ if ( !pOutput )
+ {
return 1;
}
pFile = GetXrmFile();
diff --git a/l10ntools/source/xrmmerge.cxx b/l10ntools/source/xrmmerge.cxx
index a22996d..4cf4d9e 100644
--- a/l10ntools/source/xrmmerge.cxx
+++ b/l10ntools/source/xrmmerge.cxx
@@ -36,20 +36,8 @@ using namespace std;
void yyerror( const char * );
void YYWarning( const char * );
-// defines to parse command line
-#define STATE_NON 0x0001
-#define STATE_INPUT 0x0002
-#define STATE_OUTPUT 0x0003
-#define STATE_PRJ 0x0004
-#define STATE_ROOT 0x0005
-#define STATE_MERGESRC 0x0006
-#define STATE_ERRORLOG 0x0007
-#define STATE_LANGUAGES 0x000C
-
// set of global variables
-sal_Bool bEnableExport;
-sal_Bool bMergeMode;
-sal_Bool bUTF8;
+bool bMergeMode;
sal_Bool bDisplayName;
sal_Bool bExtensionDescription;
rtl::OString sPrj;
@@ -69,87 +57,30 @@ extern "C" {
extern char *GetOutputFile( int argc, char* argv[])
/*****************************************************************************/
{
- bEnableExport = sal_False;
- bMergeMode = sal_False;
- bUTF8 = sal_True;
bDisplayName = sal_False;
bExtensionDescription = sal_False;
- sPrj = "";
- sPrjRoot = "";
- sInputFileName = "";
sActFileName = "";
- Export::sLanguages = "";
- sal_uInt16 nState = STATE_NON;
- sal_Bool bInput = sal_False;
-
- // parse command line
- for( int i = 1; i < argc; i++ ) {
- if ( rtl::OString( argv[ i ] ).toAsciiUpperCase() == "-I" ) {
- nState = STATE_INPUT; // next token specifies source file
- }
- else if ( rtl::OString( argv[ i ] ).toAsciiUpperCase() == "-O" ) {
- nState = STATE_OUTPUT; // next token specifies the dest file
- }
- else if ( rtl::OString( argv[ i ] ).toAsciiUpperCase() == "-P" ) {
- nState = STATE_PRJ; // next token specifies the cur. project
- }
- else if ( rtl::OString( argv[ i ] ).toAsciiUpperCase() == "-R" ) {
- nState = STATE_ROOT; // next token specifies path to project root
- }
- else if ( rtl::OString( argv[ i ] ).toAsciiUpperCase() == "-M" ) {
- nState = STATE_MERGESRC; // next token specifies the merge database
- }
- else if ( rtl::OString( argv[ i ] ).toAsciiUpperCase() == "-E" ) {
- nState = STATE_ERRORLOG;
- }
- else if ( rtl::OString( argv[ i ] ).toAsciiUpperCase() == "-L" ) {
- nState = STATE_LANGUAGES;
- }
- else {
- switch ( nState ) {
- case STATE_NON: {
- return NULL; // no valid command line
- }
- case STATE_INPUT: {
- sInputFileName = argv[ i ];
- bInput = sal_True; // source file found
- }
- break;
- case STATE_OUTPUT: {
- sOutputFile = argv[ i ]; // the dest. file
- }
- break;
- case STATE_PRJ: {
- sPrj = rtl::OString( argv[ i ]);
- }
- break;
- case STATE_ROOT: {
- sPrjRoot = rtl::OString( argv[ i ]); // path to project root
- }
- break;
- case STATE_MERGESRC: {
- sMergeSrc = rtl::OString( argv[ i ]);
- bMergeMode = sal_True; // activate merge mode, cause merge database found
- }
- break;
- case STATE_LANGUAGES: {
- Export::sLanguages = rtl::OString( argv[ i ]);
- }
- break;
- }
- }
- }
- if ( bInput ) {
+ HandledArgs aArgs;
+ if ( Export::handleArguments(argc, argv, aArgs) )
+ {
// command line is valid
- bEnableExport = sal_True;
+ bMergeMode = aArgs.m_bMergeMode;
+ sPrj = aArgs.m_sPrj;
+ sPrjRoot = aArgs.m_sPrjRoot;
+ sInputFileName = aArgs.m_sInputFile;
+ sOutputFile = aArgs.m_sOutputFile;
+ sMergeSrc = aArgs.m_sMergeSrc;
char *pReturn = new char[ sOutputFile.getLength() + 1 ];
std::strcpy( pReturn, sOutputFile.getStr()); // #100211# - checked
return pReturn;
}
-
- // command line is not valid
- return NULL;
+ else
+ {
+ // command line is not valid
+ Export::writeUsage("xrmex","xrm/xml");
+ return NULL;
+ }
}
/*****************************************************************************/
More information about the Libreoffice-commits
mailing list