[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