summaryrefslogtreecommitdiff
path: root/transex3
diff options
context:
space:
mode:
authorIvo Hinkelmann <ihi@openoffice.org>2009-11-18 17:50:36 +0100
committerIvo Hinkelmann <ihi@openoffice.org>2009-11-18 17:50:36 +0100
commit72b6e82f7534a183f38354e032ca9099c1a42f17 (patch)
treed1e408b04d365a7647c7110ab2f687e1d0cf2626 /transex3
parentde0356c665eb3fc168c4e8a168e3828d50992220 (diff)
#i107009# source_config file / multiple repository support in l10n tools
Diffstat (limited to 'transex3')
-rw-r--r--transex3/inc/export.hxx7
-rw-r--r--transex3/inc/gsicheck.hxx (renamed from transex3/source/gsicheck.hxx)0
-rw-r--r--transex3/inc/inireader.hxx52
-rw-r--r--transex3/inc/treeconfig.hxx28
-rw-r--r--transex3/source/cfgmerge.cxx6
-rw-r--r--transex3/source/export2.cxx13
-rw-r--r--transex3/source/hw2fw.cxx202
-rw-r--r--transex3/source/inireader.cxx132
-rw-r--r--transex3/source/localize.cxx169
-rw-r--r--transex3/source/makefile.mk29
-rw-r--r--transex3/source/treeconfig.cxx119
-rw-r--r--transex3/source/txtconv.cxx168
-rw-r--r--transex3/source/xrmmerge.cxx6
13 files changed, 419 insertions, 512 deletions
diff --git a/transex3/inc/export.hxx b/transex3/inc/export.hxx
index 3d7eee8e1eaf..b9c83af56ba0 100644
--- a/transex3/inc/export.hxx
+++ b/transex3/inc/export.hxx
@@ -51,6 +51,7 @@
#include <set> /* std::set*/
#include <vector> /* std::vector*/
#include <queue>
+#include <string>
#define NO_TRANSLATE_ISO "x-no-translate"
@@ -326,7 +327,6 @@ public:
static bool skipProject( ByteString sPrj ) ;
- static ByteString sIsoCode99;
static void InitLanguages( bool bMergeMode = false );
static void InitForcedLanguages( bool bMergeMode = false );
static std::vector<ByteString> GetLanguages();
@@ -349,12 +349,12 @@ public:
static bool isSourceLanguage( const ByteString &sLanguage );
static bool isAllowed( const ByteString &sLanguage );
- //static bool isMergingGermanAllowed( const ByteString& rPrj );
static bool LanguageAllowed( const ByteString &nLanguage );
static void Languages( std::vector<ByteString>::const_iterator& begin , std::vector<ByteString>::const_iterator& end );
static void getRandomName( const ByteString& sPrefix , ByteString& sRandStr , const ByteString& sPostfix );
static void getRandomName( ByteString& sRandStr );
+ static void getCurrentDir( std::string& dir );
static void replaceEncoding( ByteString& rString );
@@ -517,8 +517,6 @@ private:
public:
MergeDataFile( const ByteString &rFileName, const ByteString& rFile , BOOL bErrLog, CharSet aCharSet, bool bCaseSensitive = false );
-// MergeDataFile( const ByteString &rFileName, const ByteString& rFile , BOOL bErrLog, CharSet aCharSet
-// );
~MergeDataFile();
@@ -538,7 +536,6 @@ public:
static ByteString CreateKey( const ByteString& rTYP , const ByteString& rGID , const ByteString& rLID , const ByteString& rFilename , bool bCaseSensitive = false );
ByteString Dump();
-// void WriteErrorLog( const ByteString &rFileName );
void WriteError( const ByteString &rLine );
};
diff --git a/transex3/source/gsicheck.hxx b/transex3/inc/gsicheck.hxx
index 13debcfc7106..13debcfc7106 100644
--- a/transex3/source/gsicheck.hxx
+++ b/transex3/inc/gsicheck.hxx
diff --git a/transex3/inc/inireader.hxx b/transex3/inc/inireader.hxx
new file mode 100644
index 000000000000..0861290adf9f
--- /dev/null
+++ b/transex3/inc/inireader.hxx
@@ -0,0 +1,52 @@
+#include <string>
+#include <hash_map>
+#include <unicode/regex.h>
+
+using namespace std;
+
+namespace transex3
+{
+
+struct eqstr
+{
+ bool operator()( const string s1 , const string s2) const
+ {
+ return s1.compare( s2 ) == 0;
+ }
+};
+
+typedef std::hash_map< string , string > stringmap;
+typedef std::hash_map< string, stringmap* > INImap;
+
+class INIreader
+{
+ private:
+ UErrorCode section_status;
+ UErrorCode parameter_status;
+ RegexMatcher* section_match;
+ RegexMatcher* parameter_match;
+
+ public:
+ INIreader(): section_status ( U_ZERO_ERROR ) ,
+ parameter_status ( U_ZERO_ERROR )
+ {
+ section_match = new RegexMatcher ( "^\\s*\\[([a-zA-Z0-9]*)\\].*" , 0 , section_status );
+ parameter_match = new RegexMatcher ( "^\\s*([a-zA-Z0-9]*)\\s*=\\s*([a-zA-Z0-9 ]*).*" , 0 , parameter_status ) ;
+ }
+ ~INIreader()
+ {
+ delete section_match;
+ delete parameter_match;
+ }
+ // open "filename", fill hash_map with sections / paramaters
+ bool read( INImap& myMap , string& filename );
+
+ private:
+ bool is_section( string& line , string& section_str );
+ bool is_parameter( string& line , string& parameter_key , string& parameter_value );
+ inline void check_status( UErrorCode status );
+ inline void toStlString ( const UnicodeString& str, string& stl_str );
+ inline void trim( string& str );
+};
+
+}
diff --git a/transex3/inc/treeconfig.hxx b/transex3/inc/treeconfig.hxx
new file mode 100644
index 000000000000..96d693b0d376
--- /dev/null
+++ b/transex3/inc/treeconfig.hxx
@@ -0,0 +1,28 @@
+#include <vector>
+#include <string>
+
+#include "inireader.hxx"
+
+namespace transex3{
+
+class Treeconfig
+{
+
+ private:
+ INIreader inireader;
+ INImap map;
+ bool has_config_file;
+ void getCurrentDir( string& dir );
+ bool isConfigFilePresent();
+
+ public:
+
+ Treeconfig() : has_config_file( false ) { parseConfig(); }
+ // read the config file, returns true in case a config file had been found
+ bool parseConfig();
+ // returns a string vector containing all active repositories, returns true in case we are deep inside
+ // of a source tree. This could affect the behavour of the tool
+ bool getActiveRepositories( vector<string>& active_repos);
+};
+
+}
diff --git a/transex3/source/cfgmerge.cxx b/transex3/source/cfgmerge.cxx
index 21b4aeff185d..7f92ad8ac721 100644
--- a/transex3/source/cfgmerge.cxx
+++ b/transex3/source/cfgmerge.cxx
@@ -172,9 +172,9 @@ extern char *GetOutputFile( int argc, char* argv[])
Export::sLanguages = ByteString( argv[ i ]);
}
break;
- case STATE_ISOCODE99: {
- Export::sIsoCode99 = ByteString( argv[ i ]);
- }
+// case STATE_ISOCODE99: {
+// Export::sIsoCode99 = ByteString( argv[ i ]);
+// }
break;
}
}
diff --git a/transex3/source/export2.cxx b/transex3/source/export2.cxx
index 5db1067a7afb..7815e80e033f 100644
--- a/transex3/source/export2.cxx
+++ b/transex3/source/export2.cxx
@@ -42,6 +42,7 @@
#include <iomanip>
#include <tools/urlobj.hxx>
#include <time.h>
+#include <stdlib.h>
using namespace std;
//
@@ -93,7 +94,7 @@ ResData::~ResData()
/*****************************************************************************/
ByteString Export::sLanguages;
ByteString Export::sForcedLanguages;
-ByteString Export::sIsoCode99;
+//ByteString Export::sIsoCode99;
/*****************************************************************************/
void Export::DumpExportList( ByteString& sListName , ExportList& aList ){
@@ -648,6 +649,16 @@ int Export::getCurrentDirectory( rtl::OUString& base_fqurl_out, rtl::OUString& b
return osl::File::getFileURLFromSystemPath( base_out , base_fqurl_out );
}
+void Export::getCurrentDir( string& dir )
+{
+ char buffer[64000];
+ if( getcwd( buffer , sizeof( buffer ) ) == 0 ){
+ cerr << "Error: getcwd failed!\n";
+ exit( -1 );
+ }
+ dir = string( buffer );
+}
+
// Stolen from sal/osl/unx/tempfile.c
diff --git a/transex3/source/hw2fw.cxx b/transex3/source/hw2fw.cxx
deleted file mode 100644
index dd77b8d9210c..000000000000
--- a/transex3/source/hw2fw.cxx
+++ /dev/null
@@ -1,202 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: hw2fw.cxx,v $
- * $Revision: 1.4 $
- *
- * This file is part of OpenOffice.org.
- *
- * 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.
- *
- * 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).
- *
- * 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.
- *
- ************************************************************************/
-
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_transex3.hxx"
-#include <tools/string.hxx>
-
-struct hw_pair
-{
- sal_Unicode nFrom;
- sal_Unicode nTo;
-};
-
-#define MAKE_PAIR(a,b) { a, b }
-
-static struct hw_pair aHWPairs[] =
-{
- MAKE_PAIR( 0xFF65, 0x30FB ), // HALFWIDTH KATAKANA MIDDLE DOT --> KATAKANA MIDDLE DOT
- MAKE_PAIR( 0xFF66, 0x30F2 ), // HALFWIDTH KATAKANA LETTER WO --> KATAKANA LETTER WO
- MAKE_PAIR( 0xFF67, 0x30A1 ), // HALFWIDTH KATAKANA LETTER SMALL A --> KATAKANA LETTER SMALL A
- MAKE_PAIR( 0xFF68, 0x30A3 ), // HALFWIDTH KATAKANA LETTER SMALL I --> KATAKANA LETTER SMALL I
- MAKE_PAIR( 0xFF69, 0x30A5 ), // HALFWIDTH KATAKANA LETTER SMALL U --> KATAKANA LETTER SMALL U
- MAKE_PAIR( 0xFF6A, 0x30A7 ), // HALFWIDTH KATAKANA LETTER SMALL E --> KATAKANA LETTER SMALL E
- MAKE_PAIR( 0xFF6B, 0x30A9 ), // HALFWIDTH KATAKANA LETTER SMALL O --> KATAKANA LETTER SMALL O
- MAKE_PAIR( 0xFF6C, 0x30E3 ), // HALFWIDTH KATAKANA LETTER SMALL YA --> KATAKANA LETTER SMALL YA
- MAKE_PAIR( 0xFF6D, 0x30E5 ), // HALFWIDTH KATAKANA LETTER SMALL YU --> KATAKANA LETTER SMALL YU
- MAKE_PAIR( 0xFF6E, 0x30E7 ), // HALFWIDTH KATAKANA LETTER SMALL YO --> KATAKANA LETTER SMALL YO
- MAKE_PAIR( 0xFF6F, 0x30C3 ), // HALFWIDTH KATAKANA LETTER SMALL TU --> KATAKANA LETTER SMALL TU
- MAKE_PAIR( 0xFF70, 0x30FC ), // HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK --> KATAKANA-HIRAGANA PROLONGED SOUND MARK
- MAKE_PAIR( 0xFF71, 0x30A2 ), // HALFWIDTH KATAKANA LETTER A --> KATAKANA LETTER A
- MAKE_PAIR( 0xFF72, 0x30A4 ), // HALFWIDTH KATAKANA LETTER I --> KATAKANA LETTER I
- MAKE_PAIR( 0xFF73, 0x30A6 ), // HALFWIDTH KATAKANA LETTER U --> KATAKANA LETTER U
- MAKE_PAIR( 0xFF74, 0x30A8 ), // HALFWIDTH KATAKANA LETTER E --> KATAKANA LETTER E
- MAKE_PAIR( 0xFF75, 0x30AA ), // HALFWIDTH KATAKANA LETTER O --> KATAKANA LETTER O
- MAKE_PAIR( 0xFF76, 0x30AB ), // HALFWIDTH KATAKANA LETTER KA --> KATAKANA LETTER KA
- MAKE_PAIR( 0xFF77, 0x30AD ), // HALFWIDTH KATAKANA LETTER KI --> KATAKANA LETTER KI
- MAKE_PAIR( 0xFF78, 0x30AF ), // HALFWIDTH KATAKANA LETTER KU --> KATAKANA LETTER KU
- MAKE_PAIR( 0xFF79, 0x30B1 ), // HALFWIDTH KATAKANA LETTER KE --> KATAKANA LETTER KE
- MAKE_PAIR( 0xFF7A, 0x30B3 ), // HALFWIDTH KATAKANA LETTER KO --> KATAKANA LETTER KO
- MAKE_PAIR( 0xFF7B, 0x30B5 ), // HALFWIDTH KATAKANA LETTER SA --> KATAKANA LETTER SA
- MAKE_PAIR( 0xFF7C, 0x30B7 ), // HALFWIDTH KATAKANA LETTER SI --> KATAKANA LETTER SI
- MAKE_PAIR( 0xFF7D, 0x30B9 ), // HALFWIDTH KATAKANA LETTER SU --> KATAKANA LETTER SU
- MAKE_PAIR( 0xFF7E, 0x30BB ), // HALFWIDTH KATAKANA LETTER SE --> KATAKANA LETTER SE
- MAKE_PAIR( 0xFF7F, 0x30BD ), // HALFWIDTH KATAKANA LETTER SO --> KATAKANA LETTER SO
- MAKE_PAIR( 0xFF80, 0x30BF ), // HALFWIDTH KATAKANA LETTER TA --> KATAKANA LETTER TA
- MAKE_PAIR( 0xFF81, 0x30C1 ), // HALFWIDTH KATAKANA LETTER TI --> KATAKANA LETTER TI
- MAKE_PAIR( 0xFF82, 0x30C4 ), // HALFWIDTH KATAKANA LETTER TU --> KATAKANA LETTER TU
- MAKE_PAIR( 0xFF83, 0x30C6 ), // HALFWIDTH KATAKANA LETTER TE --> KATAKANA LETTER TE
- MAKE_PAIR( 0xFF84, 0x30C8 ), // HALFWIDTH KATAKANA LETTER TO --> KATAKANA LETTER TO
- MAKE_PAIR( 0xFF85, 0x30CA ), // HALFWIDTH KATAKANA LETTER NA --> KATAKANA LETTER NA
- MAKE_PAIR( 0xFF86, 0x30CB ), // HALFWIDTH KATAKANA LETTER NI --> KATAKANA LETTER NI
- MAKE_PAIR( 0xFF87, 0x30CC ), // HALFWIDTH KATAKANA LETTER NU --> KATAKANA LETTER NU
- MAKE_PAIR( 0xFF88, 0x30CD ), // HALFWIDTH KATAKANA LETTER NE --> KATAKANA LETTER NE
- MAKE_PAIR( 0xFF89, 0x30CE ), // HALFWIDTH KATAKANA LETTER NO --> KATAKANA LETTER NO
- MAKE_PAIR( 0xFF8A, 0x30CF ), // HALFWIDTH KATAKANA LETTER HA --> KATAKANA LETTER HA
- MAKE_PAIR( 0xFF8B, 0x30D2 ), // HALFWIDTH KATAKANA LETTER HI --> KATAKANA LETTER HI
- MAKE_PAIR( 0xFF8C, 0x30D5 ), // HALFWIDTH KATAKANA LETTER HU --> KATAKANA LETTER HU
- MAKE_PAIR( 0xFF8D, 0x30D8 ), // HALFWIDTH KATAKANA LETTER HE --> KATAKANA LETTER HE
- MAKE_PAIR( 0xFF8E, 0x30DB ), // HALFWIDTH KATAKANA LETTER HO --> KATAKANA LETTER HO
- MAKE_PAIR( 0xFF8F, 0x30DE ), // HALFWIDTH KATAKANA LETTER MA --> KATAKANA LETTER MA
- MAKE_PAIR( 0xFF90, 0x30DF ), // HALFWIDTH KATAKANA LETTER MI --> KATAKANA LETTER MI
- MAKE_PAIR( 0xFF91, 0x30E0 ), // HALFWIDTH KATAKANA LETTER MU --> KATAKANA LETTER MU
- MAKE_PAIR( 0xFF92, 0x30E1 ), // HALFWIDTH KATAKANA LETTER ME --> KATAKANA LETTER ME
- MAKE_PAIR( 0xFF93, 0x30E2 ), // HALFWIDTH KATAKANA LETTER MO --> KATAKANA LETTER MO
- MAKE_PAIR( 0xFF94, 0x30E4 ), // HALFWIDTH KATAKANA LETTER YA --> KATAKANA LETTER YA
- MAKE_PAIR( 0xFF95, 0x30E6 ), // HALFWIDTH KATAKANA LETTER YU --> KATAKANA LETTER YU
- MAKE_PAIR( 0xFF96, 0x30E8 ), // HALFWIDTH KATAKANA LETTER YO --> KATAKANA LETTER YO
- MAKE_PAIR( 0xFF97, 0x30E9 ), // HALFWIDTH KATAKANA LETTER RA --> KATAKANA LETTER RA
- MAKE_PAIR( 0xFF98, 0x30EA ), // HALFWIDTH KATAKANA LETTER RI --> KATAKANA LETTER RI
- MAKE_PAIR( 0xFF99, 0x30EB ), // HALFWIDTH KATAKANA LETTER RU --> KATAKANA LETTER RU
- MAKE_PAIR( 0xFF9A, 0x30EC ), // HALFWIDTH KATAKANA LETTER RE --> KATAKANA LETTER RE
- MAKE_PAIR( 0xFF9B, 0x30ED ), // HALFWIDTH KATAKANA LETTER RO --> KATAKANA LETTER RO
- MAKE_PAIR( 0xFF9C, 0x30EF ), // HALFWIDTH KATAKANA LETTER WA --> KATAKANA LETTER WA
- MAKE_PAIR( 0xFF9D, 0x30F3 ), // HALFWIDTH KATAKANA LETTER N --> KATAKANA LETTER N
- MAKE_PAIR( 0xFF9E, 0x3099 ), // HALFWIDTH KATAKANA VOICED SOUND MARK --> COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
- MAKE_PAIR( 0xFF9F, 0x309A ) // HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK --> COMBINING KATAKANA-
-};
-
-
-static struct hw_pair aCombine3099[] =
-{
- { 0x30a6, 0x30f4 },
- { 0x30ab, 0x30ac },
- { 0x30ad, 0x30ae },
- { 0x30af, 0x30b0 },
- { 0x30b1, 0x30b2 },
- { 0x30b3, 0x30b4 },
- { 0x30b5, 0x30b6 },
- { 0x30b7, 0x30b8 },
- { 0x30b9, 0x30ba },
- { 0x30bb, 0x30bc },
- { 0x30bd, 0x30be },
- { 0x30bf, 0x30c0 },
- { 0x30c1, 0x30c2 },
- { 0x30c4, 0x30c5 },
- { 0x30c6, 0x30c7 },
- { 0x30c8, 0x30c9 },
- { 0x30cf, 0x30d0 },
- { 0x30d2, 0x30d3 },
- { 0x30d5, 0x30d6 },
- { 0x30d8, 0x30d9 },
- { 0x30db, 0x30dc },
- { 0x30ef, 0x30f7 },
- { 0x30f0, 0x30f8 },
- { 0x30f1, 0x30f9 },
- { 0x30f2, 0x30fa },
- { 0x30fd, 0x30fe }
-};
-
-static struct hw_pair aCombine309A[] =
-{
- { 0x30cf, 0x30d1 },
- { 0x30d2, 0x30d4 },
- { 0x30d5, 0x30d7 },
- { 0x30d8, 0x30da },
- { 0x30db, 0x30dd }
-};
-
-USHORT ImplReplaceFullWidth( sal_Unicode* pString, USHORT nLen )
-{
- sal_Unicode* pRead = pString;
- sal_Unicode* pWrite = pRead;
- USHORT nNewLen = nLen;
-
- while( (pRead - pString) < nLen )
- {
- if( pWrite != pRead )
- *pWrite = *pRead;
-
- if( *pRead >= 0xff65 && *pRead <= 0xff9f )
- {
- *pWrite = aHWPairs[ *pRead - 0xff65 ].nTo;
-
- struct hw_pair* pTable = NULL;
- int nTableEntries = 0;
- if( *pWrite == 0x3099 )
- {
- // replace 0x3099 combinations
- pTable = aCombine3099;
- nTableEntries = sizeof(aCombine3099)/sizeof(aCombine3099[0]);
- }
- else if( *pWrite == 0x309a )
- {
- // replace 0x309a combinations
- pTable = aCombine309A;
- nTableEntries = sizeof(aCombine309A)/sizeof(aCombine309A[0]);
- }
- if( pTable )
- {
- sal_Unicode c = pWrite[-1];
- for( int i = 0; i < nTableEntries; i++ )
- if( c == pTable[i].nFrom )
- {
- pWrite--;
- *pWrite = pTable[i].nTo;
- nNewLen--;
- break;
- }
- }
- }
- pRead++;
- pWrite++;
- }
- if( pWrite < pRead )
- *pWrite = 0;
-
- return nNewLen;
-}
-
-void ConvertHalfwitdhToFullwidth( String& rString )
-{
- USHORT nNewLen = ImplReplaceFullWidth( rString.GetBufferAccess(), rString.Len() );
- rString.ReleaseBufferAccess( nNewLen );
-}
diff --git a/transex3/source/inireader.cxx b/transex3/source/inireader.cxx
new file mode 100644
index 000000000000..0985e788452d
--- /dev/null
+++ b/transex3/source/inireader.cxx
@@ -0,0 +1,132 @@
+#include <unicode/regex.h>
+#include <unicode/unistr.h>
+#include <string>
+#include <fstream>
+#include <iostream>
+#include "inireader.hxx"
+
+using namespace std;
+namespace transex3
+{
+
+bool INIreader::read( INImap& myMap , string& filename )
+{
+ ifstream aFStream( filename.c_str() );
+ if( aFStream && aFStream.is_open())
+ {
+ string line;
+ string section;
+ string param_key;
+ string param_value;
+ stringmap* myvalues = 0;
+
+ while( std::getline( aFStream , line ) )
+ {
+ trim( line );
+ if( line.empty() ){
+ }
+ else if( is_section( line , section ) )
+ {
+ //cerr << "[" << section << "]\n";
+ myvalues = new stringmap();
+ myMap[ section ] = myvalues ;
+ }
+ else if ( is_parameter( line , param_key , param_value ) )
+ {
+ //cerr << "" << param_key << " = " << param_value << "\n";
+ if( myvalues )
+ {
+ (*myvalues)[ param_key ] = param_value ;
+ }
+ else
+ {
+ cerr << "ERROR: The INI file " << filename << " appears to be broken ... parameters without a section?!?\n";
+ if( aFStream.is_open() ) aFStream.close();
+ return false;
+ }
+ }
+ }
+
+ if( aFStream.is_open() )
+ aFStream.close();
+
+ return true;
+ }
+ else
+ {
+ cerr << "ERROR: Can't open file '" << filename << "'\n";
+ }
+ return false;
+}
+
+bool INIreader::is_section( string& line , string& section_str )
+{
+ // Error in regex ?
+ check_status( section_status );
+ UnicodeString target( line.c_str() , line.length() );
+
+ section_match->reset( target );
+ check_status( section_status );
+
+ if( section_match->find() )
+ {
+ check_status( section_status );
+ UnicodeString result( section_match->group( 1 , section_status) );
+ check_status( section_status );
+ toStlString( result , section_str );
+
+ return true;
+ }
+ return false;
+}
+
+bool INIreader::is_parameter( string& line , string& parameter_key , string& parameter_value )
+{
+ // Error in regex ?
+ check_status( parameter_status );
+ UnicodeString target( line.c_str() , line.length() );
+
+ parameter_match->reset( target );
+ check_status( parameter_status );
+
+ if( parameter_match->find() )
+ {
+ check_status( parameter_status );
+
+ UnicodeString result1( parameter_match->group( 1 , parameter_status) );
+ check_status( parameter_status );
+ toStlString( result1 , parameter_key );
+ UnicodeString result2( parameter_match->group( 2 , parameter_status) );
+ check_status( parameter_status );
+ toStlString( result2 , parameter_value );
+
+ return true;
+ }
+ return false;
+}
+
+void INIreader::check_status( UErrorCode status )
+{
+ if( U_FAILURE( status) )
+ {
+ cerr << "Error in or while using regex: " << u_errorName( status ) << "\n";
+ exit(-1);
+ }
+}
+
+void INIreader::toStlString( const UnicodeString& str , string& stl_str)
+{
+ // convert to string
+ char* buffer = new char[ str.length()*3 ];
+ str.extract( 0 , str.length() , buffer );
+ stl_str = string( buffer );
+ delete buffer;
+}
+
+void INIreader::trim( string& str )
+{
+ string str1 = str.substr( 0 , str.find_last_not_of(' ') + 1 );
+ str = str1.empty() ? str1 : str1.substr( str1.find_first_not_of(' ') );
+}
+
+}
diff --git a/transex3/source/localize.cxx b/transex3/source/localize.cxx
index 31143ab50d38..09c9b29bb447 100644
--- a/transex3/source/localize.cxx
+++ b/transex3/source/localize.cxx
@@ -33,7 +33,11 @@
#include "srciter.hxx"
#include "export.hxx"
+#include "treeconfig.hxx"
+#include <string>
+#include <vector>
#include <stdio.h>
+#include <iostream>
#include "tools/errcode.hxx"
#include "tools/fsys.hxx"
@@ -42,6 +46,8 @@
#include <transex3/file.hxx>
#endif
+namespace transex3
+{
//
// SourceTreeLocalizer
@@ -131,7 +137,6 @@ private:
ByteString sLanguageRestriction;
- ByteString sIsoCode99;
ByteString sOutputFile;
bool bQuiet2;
@@ -147,8 +152,7 @@ private:
void WorkOnFile(
const ByteString &rFileName,
const ByteString &rExecutable,
- const ByteString &rParameter,
- const ByteString &rIso
+ const ByteString &rParameter
);
void WorkOnFileType(
@@ -156,8 +160,7 @@ private:
const ByteString &rExtension,
const ByteString &rExecutable,
const ByteString &rParameter,
- const ByteString &rCollectMode,
- const ByteString &rIso
+ const ByteString &rCollectMode
);
void WorkOnDirectory( const ByteString &rDirectory );
BOOL ExecuteMerge();
@@ -175,8 +178,6 @@ public:
void SetLanguageRestriction( const ByteString& rRestrictions )
{ sLanguageRestriction = rRestrictions; }
- void SetIsoCode99( const ByteString& rIsoCode )
- { sIsoCode99 = rIsoCode; }
int getFileCnt();
BOOL Extract( const ByteString &rDestinationFile );
BOOL Merge( const ByteString &rSourceFile , const ByteString &rOutput );
@@ -215,16 +216,6 @@ const ByteString SourceTreeLocalizer::GetProjectName( BOOL bAbs )
DirEntry aTest = aCur + DirEntry(PRJ_DIR_NAME) + DirEntry(DLIST_NAME);
if ( aTest.Exists() )
{
- // HACK !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- if (( ByteString( aCur.GetName(), RTL_TEXTENCODING_ASCII_US ).Equals("webinstall") ) ||
- ( ByteString( aCur.GetName(), RTL_TEXTENCODING_ASCII_US ).Equals("portal") ) ||
- ( ByteString( aCur.GetName(), RTL_TEXTENCODING_ASCII_US ).Equals("xulclient") ) ||
- ( ByteString( aCur.GetName(), RTL_TEXTENCODING_ASCII_US ).Search( "wdk_" ) == 0 ))
- return "";
- // end HACK !!!!!!!!!!!!!!!!!!!!!!!!!
-
-
-
if ( bAbs )
return ByteString( aCur.GetFull(), RTL_TEXTENCODING_ASCII_US );
else
@@ -280,10 +271,9 @@ bool skipProject( ByteString sPrj )
/*****************************************************************************/
void SourceTreeLocalizer::WorkOnFile(
const ByteString &rFileName, const ByteString &rExecutable,
- const ByteString &rParameter, const ByteString &rIso )
+ const ByteString &rParameter )
/*****************************************************************************/
{
- (void) rIso; // Remove me ;)
String sFull( rFileName, RTL_TEXTENCODING_ASCII_US );
DirEntry aEntry( sFull );
ByteString sFileName( aEntry.GetName(), RTL_TEXTENCODING_ASCII_US );
@@ -294,14 +284,10 @@ void SourceTreeLocalizer::WorkOnFile(
aPath.SetCWD();
ByteString sPrj( GetProjectName());
- //printf ("prj = %s , exe = %s\n", sPrj.GetBuffer() , rExecutable.GetBuffer() );
-// printf("Skip %s = %d \n",sPrj.GetBuffer() , skipProject( sPrj ) );
- //printf("prj = %s\n",sPrj.GetBuffer());
if ( sPrj.Len() && !skipProject( sPrj ) )
{
ByteString sRoot( GetProjectRootRel());
- // get temp file
DirEntry aTemp( Export::GetTempFile());
ByteString sTempFile( aTemp.GetFull(), RTL_TEXTENCODING_ASCII_US );
@@ -442,7 +428,7 @@ BOOL SourceTreeLocalizer::CheckPositiveList( const ByteString &rFileName )
void SourceTreeLocalizer::WorkOnFileType(
const ByteString &rDirectory, const ByteString &rExtension,
const ByteString &rExecutable, const ByteString &rParameter,
- const ByteString &rCollectMode, const ByteString &rIso
+ const ByteString &rCollectMode
)
/*****************************************************************************/
{
@@ -466,7 +452,7 @@ void SourceTreeLocalizer::WorkOnFileType(
bAllowed = CheckPositiveList( sFile );
if ( bAllowed )
- WorkOnFile( sFile, rExecutable, rParameter, rIso );
+ WorkOnFile( sFile, rExecutable, rParameter );
}
}
@@ -480,7 +466,6 @@ void SourceTreeLocalizer::WorkOnDirectory( const ByteString &rDirectory )
ByteString sExecutable( ExeTable[ nIndex ][ 1 ] );
ByteString sParameter( ExeTable[ nIndex ][ 2 ] );
ByteString sCollectMode( ExeTable[ nIndex ][ 3 ] );
- ByteString sIso( ExeTable[ nIndex ][ 4 ] );
while( !sExtension.Equals( "NULL" )) {
WorkOnFileType(
@@ -488,8 +473,7 @@ void SourceTreeLocalizer::WorkOnDirectory( const ByteString &rDirectory )
sExtension,
sExecutable,
sParameter,
- sCollectMode,
- sIso
+ sCollectMode
);
nIndex++;
@@ -498,7 +482,6 @@ void SourceTreeLocalizer::WorkOnDirectory( const ByteString &rDirectory )
sExecutable = ExeTable[ nIndex ][ 1 ];
sParameter = ExeTable[ nIndex ][ 2 ];
sCollectMode = ExeTable[ nIndex ][ 3 ];
- sIso = ExeTable[ nIndex ][ 4 ];
}
}
@@ -518,11 +501,12 @@ BOOL SourceTreeLocalizer::Extract( const ByteString &rDestinationFile )
{
nMode = LOCALIZE_EXTRACT;
aSDF.Open( String( rDestinationFile, RTL_TEXTENCODING_ASCII_US ),
- STREAM_STD_WRITE | STREAM_TRUNC );
+ STREAM_STD_WRITE );
aSDF.SetLineDelimiter( LINEEND_CRLF );
BOOL bReturn = aSDF.IsOpen();
if ( bReturn ) {
+ aSDF.Seek( STREAM_SEEK_TO_END );
bReturn = StartExecute();
aSDF.Close();
}
@@ -569,8 +553,6 @@ BOOL SourceTreeLocalizer::MergeSingleFile(
while( !sCandidate.Equals ("NULL") && !sCandidate.Equals(sExtension) )
sCandidate = ExeTable[ ++nIndex ][ 0 ];
- ByteString sIso( ExeTable[ nIndex ][ 4 ] );
-
if ( !sCandidate.Equals( "NULL" ) ) {
if( !aEntry.Exists()) {
DirEntryKind theDir=FSYS_KIND_FILE;
@@ -606,10 +588,6 @@ BOOL SourceTreeLocalizer::MergeSingleFile(
sCommand += sOutput;
sCommand += " ";
sCommand += ByteString( ExeTable[ nIndex ][ 2 ] );
- if ( sIso.Equals( "iso" ) && sIsoCode99.Len()) {
- sCommand += " -ISO99 ";
- sCommand += sIsoCode99;
- }
if ( sLanguageRestriction.Len()) {
sCommand += " -l ";
sCommand += sLanguageRestriction;
@@ -707,7 +685,6 @@ BOOL SourceTreeLocalizer::ExecuteMerge( )
ByteString sBDel( sDel.GetBuffer() , sDel.Len() , RTL_TEXTENCODING_UTF8 );
if( bLocal ){
xub_StrLen nPos = sOutputFileName.SearchBackward( sBDel.GetChar(0) );
- //if( nPos >= 0 )
sOutputFileName = sOutputFileName.Copy( nPos+1 , sOutputFileName.Len()-nPos-1 );
}
ByteStringBoolHashMap aFileHM;
@@ -720,7 +697,6 @@ BOOL SourceTreeLocalizer::ExecuteMerge( )
aFileHM[sFileName]=true;
}
- // RECODE THIS !!!!!!!!!!!!!!!!!!!!!
for( ByteStringBoolHashMap::iterator iter = aFileHM.begin(); iter != aFileHM.end(); ++iter ){
sFileKey = iter->first;
aSDF.Seek( 0 );
@@ -757,7 +733,6 @@ BOOL SourceTreeLocalizer::ExecuteMerge( )
bMerged = true;
if ( !MergeSingleFile( sPrj, sFile, sSDFFile ))
bReturn = FALSE;
- //}
}else{
bMerged = true;
//printf("MergeSingleFile('%s','%s','%s')\n",sPrj.GetBuffer(),sFile.GetBuffer(),sSDFFile.GetBuffer());
@@ -766,7 +741,6 @@ BOOL SourceTreeLocalizer::ExecuteMerge( )
}
}
}
- //}
aEntry.Kill();
// If Outputfile not included in the SDF file copy it without merge
@@ -800,6 +774,8 @@ BOOL SourceTreeLocalizer::Merge( const ByteString &rSourceFile , const ByteStrin
return bReturn;
}
+}
+using namespace transex3;
#define STATE_NONE 0x0000
#define STATE_EXPORT 0x0001
@@ -819,13 +795,11 @@ void Help()
fprintf( stdout,
"As part of the L10N framework, localize extracts and merges translations\n"
"out of and into the whole source tree.\n\n"
- "Syntax: localize -e|-m -l l1[=f1][,l2[=f2]][...] -f FileName [-QQ][-skip_links]\n"
+ "Syntax: localize -e -l en-US -f FileName [-QQ]\n"
"Parameter:\n"
"\t-e: Extract mode\n"
- "\t-m: Merge mode\n"
"\tFileName: Output file when extract mode, input file when merge mode\n"
"\tl1...ln: supported languages (\"all\" for all languages).\n"
- "\tf1...fn: fallback languages for supported languages\n"
"\tQQ: quiet output)"
);
@@ -834,16 +808,9 @@ void Help()
fprintf( stdout,
"\nExample 1:\n"
"==========\n"
- "localize -e -l en-US,de -f MyFile\n\n"
+ "localize -e -l en-US -f MyFile\n\n"
"All strings will be extracted for language de and language en-US.\n"
);
- fprintf( stdout,
- "\nExample 2:\n"
- "==========\n"
- "localize -m -l es -f MyFile\n\n"
- "All strings in MyFile will be merged into language es in the\n"
- "source code.\n"
- );
}
/*****************************************************************************/
@@ -880,11 +847,13 @@ int _cdecl main( int argc, char *argv[] )
bool bQuiet2 = false;
bool bSkipLinks = false;
- ByteString sIsoCode;
ByteString sLanguages;
ByteString sFileName;
ByteString sOutput;
+ bQuiet2 = true;
+ bExport = TRUE;
+
for( int i = 1; i < argc; i++ ) {
ByteString sSwitch( argv[ i ] );
sSwitch.ToUpperAscii();
@@ -895,12 +864,6 @@ int _cdecl main( int argc, char *argv[] )
return Error();
bExport = TRUE;
}
- else if ( sSwitch.Equals( "-M" )) {
- nState = STATE_MERGE;
- if ( bExport )
- return Error();
- bMerge = TRUE;
- }
else if( sSwitch.Equals( "-Q" )) {
bQuiet = true;
}
@@ -912,20 +875,12 @@ int _cdecl main( int argc, char *argv[] )
nState = STATE_FILENAME;
else if ( sSwitch.Equals( "-QQ" ))
bQuiet2 = true;
- // else if ( ByteString( argv[ i ]).ToUpperAscii().Equals( "-SKIP_LINKS" ))
- // bSkipLinks = true;
else if ( ByteString( argv[ i ]).ToUpperAscii().Equals( "-O" ) )
nState = STATE_OUTPUT;
else {
switch ( nState ) {
case STATE_NONE:
return Error();
- case STATE_ISOCODE:
- if ( sIsoCode.Len())
- return Error();
- sIsoCode = ByteString( argv[ i ] );
- nState = STATE_NONE;
- break;
case STATE_OUTPUT:
if ( sOutput.Len())
return Error();
@@ -954,12 +909,10 @@ int _cdecl main( int argc, char *argv[] )
return 1;
}
- ByteString sRoot( Export::GetEnv( "SRC_ROOT" ));
- DirEntry aRoot( String( sRoot, RTL_TEXTENCODING_ASCII_US ));
- sRoot = ByteString( aRoot.GetFull(), RTL_TEXTENCODING_ASCII_US );
+ ByteString sSolarVer( Export::GetEnv( "WORK_STAMP" ));
ByteString sVersion( Export::GetEnv( "WORK_STAMP" ));
- if ( !sRoot.Len() || !sVersion.Len()) {
+ if ( !sSolarVer.Len() || !sVersion.Len()) {
fprintf( stderr, "ERROR: No environment set!\n" );
return 1;
}
@@ -972,55 +925,39 @@ int _cdecl main( int argc, char *argv[] )
return 3;
}
- ByteString sMode( "merge" );
- if ( bExport )
- sMode = "extract";
-
- ByteString sICode( sIsoCode );
- if ( !sICode.Len())
- sICode = "not given, support for language 99 disabled";
- if(!bQuiet && !bQuiet2 ){
- fprintf( stdout,
- "\n"
- "============================================================\n"
- "Current settings:\n"
- "============================================================\n"
- "Mode: %s\n"
- "Workspace: %s\n"
- "Source tree: %s\n"
- "Languages: %s\n"
- "ISO code (99): %s\n"
- "Filename: %s\n"
- "Outputfile %s\n"
- "============================================================\n"
- "\n"
- ,
- sMode.GetBuffer(),
- sVersion.GetBuffer(),
- sRoot.GetBuffer(),
- sLanguages.GetBuffer(),
- sICode.GetBuffer(),
- sFileName.GetBuffer(),
- sOutput.GetBuffer()
- );
- }
- SourceTreeLocalizer aIter( sRoot, sVersion , (sOutput.Len() > 0) , bQuiet2 , bSkipLinks );
-
- aIter.SetLanguageRestriction( sLanguages );
- aIter.SetIsoCode99( sIsoCode );
- if ( bExport ){
- if( bQuiet2 ){ /*printf("");*/fflush( stdout );}
- aIter.Extract( sFileName );
- if( bQuiet2 ){ printf("\n %d files found!\n",aIter.GetFileCnt());}
+ Treeconfig treeconfig;
+ vector<string> repos;
+ bool hasPwd = treeconfig.getActiveRepositories( repos );
+ if( hasPwd ) cout << "Found special path!\n";
+
+ // localize through all repositories
+ for( vector<string>::iterator iter = repos.begin(); iter != repos.end() ; ++iter )
+ {
+ string curRepository = string( Export::GetEnv("SOURCE_ROOT_DIR") ) + "/" + *iter;
+ cout << "Localizing repository " << curRepository << "\n";
+ SourceTreeLocalizer aIter( ByteString( curRepository.c_str() ) , sVersion , (sOutput.Len() > 0) , bQuiet2 , bSkipLinks );
+ aIter.SetLanguageRestriction( sLanguages );
+ if ( bExport ){
+ if( bQuiet2 ){ /*printf("");*/fflush( stdout );}
+ aIter.Extract( sFileName );
+ if( bQuiet2 ){ printf("\n %d files found!\n",aIter.GetFileCnt());}
+ }
}
- else {
+ if( hasPwd )
+ {
+ string pwd;
+ Export::getCurrentDir( pwd );
+ cout << "Localizing repository " << pwd << "\n";
+ SourceTreeLocalizer aIter( ByteString( pwd.c_str() ) , sVersion , (sOutput.Len() > 0) , bQuiet2 , bSkipLinks );
+ aIter.SetLanguageRestriction( sLanguages );
+ if ( bExport ){
+ if( bQuiet2 ){ /*printf("");*/fflush( stdout );}
+ aIter.Extract( sFileName );
+ if( bQuiet2 ){ printf("\n %d files found!\n",aIter.GetFileCnt());}
+ }
- DirEntry aEntry( String( sFileName, RTL_TEXTENCODING_ASCII_US ));
- if ( !aEntry.Exists())
- return FALSE;
- printf("%s\n",sFileName.GetBuffer());
- aIter.Merge( sFileName , sOutput );
}
return 0;
}
+
diff --git a/transex3/source/makefile.mk b/transex3/source/makefile.mk
index 68b94a5b58fa..73c74825fa3a 100644
--- a/transex3/source/makefile.mk
+++ b/transex3/source/makefile.mk
@@ -61,8 +61,8 @@ OBJFILES= \
$(OBJ)$/helpmerge.obj \
$(OBJ)$/helpex.obj \
$(OBJ)$/file.obj \
- $(OBJ)$/directory.obj \
- $(OBJ)$/hw2fw.obj
+ $(OBJ)$/directory.obj
+
LIB1TARGET= $(LB)$/$(TARGET).lib
LIB1ARCHIV= $(LB)$/libtransex.a
@@ -73,8 +73,8 @@ LIB1OBJFILES= $(OBJ)$/export.obj \
$(OBJ)$/srciter.obj \
$(OBJ)$/file.obj \
$(OBJ)$/directory.obj \
- $(OBJ)$/utf8conv.obj \
- $(OBJ)$/hw2fw.obj
+ $(OBJ)$/utf8conv.obj
+
APP1VERSIONMAP=exports.map
@@ -96,7 +96,7 @@ APP1LIBS+= $(LB)$/$(TARGET).lib
APP1DEPN= $(OBJ)$/src_yy_wrapper.obj $(LB)$/$(TARGET).lib
APP2TARGET= helpex
-APP2OBJS= $(OBJ)$/helpmerge.obj $(OBJ)$/xmlparse.obj $(OBJ)$/export2.obj $(OBJ)$/utf8conv.obj $(OBJ)$/merge.obj $(OBJ)$/helpex.obj $(OBJ)$/hw2fw.obj
+APP2OBJS= $(OBJ)$/helpmerge.obj $(OBJ)$/xmlparse.obj $(OBJ)$/export2.obj $(OBJ)$/utf8conv.obj $(OBJ)$/merge.obj $(OBJ)$/helpex.obj
APP2RPATH= NONE
.IF "$(OS)"!="MACOSX"
@@ -110,7 +110,7 @@ APP2STDLIBS+=$(SALLIB) $(EXPATASCII3RDLIB) $(TOOLSLIB) $(VOSLIB)
# extractor and merger for *.lng and *.lng
APP3TARGET= ulfex
-APP3OBJS= $(OBJ)$/lngmerge.obj $(OBJ)$/hw2fw.obj $(OBJ)$/merge.obj $(OBJ)$/export2.obj $(OBJ)$/lngex.obj $(OBJ)$/utf8conv.obj
+APP3OBJS= $(OBJ)$/lngmerge.obj $(OBJ)$/merge.obj $(OBJ)$/export2.obj $(OBJ)$/lngex.obj $(OBJ)$/utf8conv.obj
APP3RPATH= NONE
.IF "$(OS)"!="MACOSX"
@@ -142,7 +142,7 @@ APP5STDLIBS+= \
# extractor and merger for *.cfg
APP6TARGET= cfgex
-APP6OBJS= $(OBJ)$/cfgmerge.obj $(OBJ)$/cfg_yy_wrapper.obj $(OBJ)$/hw2fw.obj $(OBJ)$/merge.obj $(OBJ)$/export2.obj $(OBJ)$/utf8conv.obj
+APP6OBJS= $(OBJ)$/cfgmerge.obj $(OBJ)$/cfg_yy_wrapper.obj $(OBJ)$/merge.obj $(OBJ)$/export2.obj $(OBJ)$/utf8conv.obj
.IF "$(OS)"!="MACOSX"
#APP6STDLIBS+= $(BTSTRPLIB)
@@ -159,7 +159,7 @@ APP6STDLIBS+= \
# extractor and merger for *.xrm
APP7TARGET= xrmex
-APP7OBJS= $(OBJ)$/xrmmerge.obj $(OBJ)$/xrm_yy_wrapper.obj $(OBJ)$/hw2fw.obj $(OBJ)$/merge.obj $(OBJ)$/export2.obj $(OBJ)$/utf8conv.obj
+APP7OBJS= $(OBJ)$/xrmmerge.obj $(OBJ)$/xrm_yy_wrapper.obj $(OBJ)$/merge.obj $(OBJ)$/export2.obj $(OBJ)$/utf8conv.obj
APP7RPATH= NONE
.IF "$(OS)"!="MACOSX"
@@ -174,21 +174,22 @@ APP7STDLIBS+= \
# static libs at end for OS X
.ENDIF
-# encoding converter for text files
-APP8TARGET= txtconv
-#APP8STACK= 16000
-APP8OBJS= $(OBJ)$/utf8conv.obj $(OBJ)$/txtconv.obj $(OBJ)$/hw2fw.obj
-APP8STDLIBS=$(TOOLSLIB) $(SALLIB)
+#
+#APP8TARGET= treeconfig
+#APP8OBJS= $(OBJ)$/treeconfig.obj $(OBJ)$/inireader.obj $(OBJ)$/export2.obj
+#APP8STDLIBS=$(TOOLSLIB) $(SALLIB) $(VOSLIB) $(ICUINLIB) $(STLPORT)
# localizer for l10n framework
APP9TARGET= localize_sl
EXCEPTIONSFILES= \
$(OBJ)$/localize.obj
-APP9OBJS= $(OBJ)$/localize.obj $(OBJ)$/utf8conv.obj $(OBJ)$/srciter.obj $(OBJ)$/export2.obj $(OBJ)$/file.obj $(OBJ)$/directory.obj
+APP9OBJS= $(OBJ)$/localize.obj $(OBJ)$/utf8conv.obj $(OBJ)$/srciter.obj $(OBJ)$/export2.obj $(OBJ)$/file.obj $(OBJ)$/directory.obj $(OBJ)$/treeconfig.obj $(OBJ)$/inireader.obj
APP9STDLIBS+= \
$(TOOLSLIB) \
$(VOSLIB) \
+ $(ICUINLIB) \
+ $(STLPORTLIB) \
$(SALLIB)
DEPOBJFILES=$(APP1OBJS) $(APP2OBJS) $(APP3OBJS) $(APP4OBJS) $(APP5OBJS) $(APP6OBJS) $(APP7OBJS) $(APP8OBJS) $(APP9OBJS)
diff --git a/transex3/source/treeconfig.cxx b/transex3/source/treeconfig.cxx
new file mode 100644
index 000000000000..2430f11f0e0d
--- /dev/null
+++ b/transex3/source/treeconfig.cxx
@@ -0,0 +1,119 @@
+#include <vector>
+#include <string>
+#include <iostream>
+#include "treeconfig.hxx"
+#include "export.hxx"
+#include <dirent.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+using namespace std;
+
+namespace transex3
+{
+
+bool Treeconfig::parseConfig(){
+
+ string source_config_file = string( static_cast<ByteString>( Export::GetEnv("SOURCE_ROOT_DIR") ).GetBuffer() );
+ if( source_config_file.empty() )
+ {
+ cerr << "Error: no suitable environment set?!?";
+ exit( -1 );
+ }
+ source_config_file += string("/source_config");
+ if( isConfigFilePresent() )
+ {
+ inireader.read( map , source_config_file );
+ return true;
+ }
+ else return false;
+}
+
+// ALWAYS add all repositories from source_config file to the container active_repos
+// if a config_file is present ALWAYS return false
+// if you are in the root of a repository also add it to the container active_repos
+// if you are far inside a repository /my/path/ooo/sw/source then don't add it to the container but return true
+// if you are in some misc place like /tmp then return true
+// => the application can decide what to do in case the function returns true thus how to handle pwd() path
+bool Treeconfig::getActiveRepositories( vector<string>& active_repos ){
+
+ bool isPresent = isConfigFilePresent();
+ bool hasPath = false;
+ string pwd;
+ string guessedRepo;
+ Export::getCurrentDir( pwd );
+ string source_root = Export::GetEnv( "SOURCE_ROOT_DIR" );
+ string solarsrc = Export::GetEnv( "SOLARSRC" );
+ string partial;
+
+ // if we are inside of a repository root then active it otherwise let the app handle the return!
+ unsigned int pos = pwd.find_first_of( source_root );
+ if( pos != string::npos && ( pos + source_root.length() +1 ) < pwd.length()){ // I am within SOURCE_ROOT_DIR
+ partial = pwd.substr( pos + source_root.length() +1 , pwd.length());
+ unsigned int nextPart = partial.find_first_of( "/" );
+ if( nextPart != string::npos )
+ hasPath = true;
+ else
+ guessedRepo = partial;
+ }
+ else // I am NOT within SOURCE_ROOT_DIR
+ hasPath = true;
+
+ if( isPresent )
+ {
+ hasPath = false; // if config_file is present don't care about pwd
+ stringmap* repos = static_cast<stringmap*>( map[ string("repositories") ] );
+ if( repos != 0 )
+ {
+ for( stringmap::iterator iter = repos->begin() ; iter != repos->end() ; ++iter )
+ {
+ if( static_cast<string>( iter->second ) == string( "active" ) )
+ {
+ active_repos.push_back( iter->first );
+ if( static_cast<string>( iter->first ) == guessedRepo )
+ {
+ guessedRepo.clear(); // don't add double in case it is present in config_file
+ }
+ }
+ }
+ }
+ else
+ {
+ cerr << "Error: source_config files doesn't contain a 'repositories' section ?!?";
+ exit( -1 );
+ }
+ }
+ if( !guessedRepo.empty() ){
+ active_repos.push_back( guessedRepo ); // add myrepo
+ }
+ return hasPath; // are we deep inside of a source tree or outside of SOURCE_ROOT_DIR?
+}
+
+void Treeconfig::getCurrentDir( string& dir )
+{
+ char buffer[64000];
+ if( getcwd( buffer , sizeof( buffer ) ) == 0 ){
+ cerr << "Error: getcwd failed!\n";
+ exit( -1 );
+ }
+ dir = string( buffer );
+}
+
+bool Treeconfig::isConfigFilePresent()
+{
+ string config_file = Export::GetEnv( "SOURCE_ROOT_DIR" );
+ config_file += "/source_config";
+
+ struct stat status;
+ if( stat( config_file.c_str() , &status ) < 0 )
+ {
+ return false;
+ }
+ return ( status.st_mode & S_IFREG ) && ( access( config_file.c_str() , R_OK ) >= 0 ) ;
+}
+
+
+
+}
diff --git a/transex3/source/txtconv.cxx b/transex3/source/txtconv.cxx
deleted file mode 100644
index 2f442b80a83d..000000000000
--- a/transex3/source/txtconv.cxx
+++ /dev/null
@@ -1,168 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: txtconv.cxx,v $
- * $Revision: 1.8 $
- *
- * This file is part of OpenOffice.org.
- *
- * 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.
- *
- * 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).
- *
- * 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.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_transex3.hxx"
-#include <stdio.h>
-#include <tools/fsys.hxx>
-#include <tools/stream.hxx>
-
-// local includes
-#include "utf8conv.hxx"
-
-extern void ConvertHalfwitdhToFullwidth( String& rString );
-
-/*****************************************************************************/
-void Help()
-/*****************************************************************************/
-{
- fprintf( stdout, "\n" );
- fprintf( stdout, "txtconv (c)2001 by StarOffice Entwicklungs GmbH\n" );
- fprintf( stdout, "===============================================\n" );
- fprintf( stdout, "\n" );
- fprintf( stdout, "txtconv converts textfiles from or to UTF-8\n" );
- fprintf( stdout, "\n" );
- fprintf( stdout, "Syntax: txtconv -t|-f charset filename (destinationfile)\n" );
- fprintf( stdout, "Switches: -t => conversion from charset to UTF-8\n" );
- fprintf( stdout, " -f => conversion from UTF-8 to charset\n" );
- fprintf( stdout, "\n" );
- fprintf( stdout, "Allowed charsets:\n" );
- fprintf( stdout, " MS_932 => Japanese\n" );
- fprintf( stdout, " MS_936 => Chinese Simplified\n" );
- fprintf( stdout, " MS_949 => Korean\n" );
- fprintf( stdout, " MS_950 => Chinese Traditional\n" );
- fprintf( stdout, " MS_1250 => East Europe\n" );
- fprintf( stdout, " MS_1251 => Cyrillic\n" );
- fprintf( stdout, " MS_1252 => West Europe\n" );
- fprintf( stdout, " MS_1253 => Greek\n" );
- fprintf( stdout, " MS_1254 => Turkish\n" );
- fprintf( stdout, " MS_1255 => Hebrew\n" );
- fprintf( stdout, " MS_1256 => Arabic\n" );
- fprintf( stdout, " HW2FW => Only with -t, converts half to full width katakana" );
- fprintf( stdout, "\n" );
-}
-
-/*****************************************************************************/
-#if defined(UNX) || defined(OS2)
-int main( int argc, char *argv[] )
-#else
-int _cdecl main( int argc, char *argv[] )
-#endif
-/*****************************************************************************/
-{
- if (( argc != 4 ) && ( argc != 5 )) {
- Help();
- exit ( 0 );
- }
-
- if ( ByteString( argv[ 1 ] ) == "-t" || ByteString( argv[ 1 ] ) == "-f" ) {
- rtl_TextEncoding nEncoding = RTL_TEXTENCODING_MS_1252;
-
- BOOL bHW2FW = FALSE;
-
- ByteString sCharset( argv[ 2 ] );
- sCharset.ToUpperAscii();
-
- if ( sCharset == "MS_932" ) nEncoding = RTL_TEXTENCODING_MS_932;
- else if ( sCharset == "MS_936" ) nEncoding = RTL_TEXTENCODING_MS_936;
- else if ( sCharset == "MS_949" ) nEncoding = RTL_TEXTENCODING_MS_949;
- else if ( sCharset == "MS_950" ) nEncoding = RTL_TEXTENCODING_MS_950;
- else if ( sCharset == "MS_1250" ) nEncoding = RTL_TEXTENCODING_MS_1250;
- else if ( sCharset == "MS_1251" ) nEncoding = RTL_TEXTENCODING_MS_1251;
- else if ( sCharset == "MS_1252" ) nEncoding = RTL_TEXTENCODING_MS_1252;
- else if ( sCharset == "MS_1253" ) nEncoding = RTL_TEXTENCODING_MS_1253;
- else if ( sCharset == "MS_1254" ) nEncoding = RTL_TEXTENCODING_MS_1254;
- else if ( sCharset == "MS_1255" ) nEncoding = RTL_TEXTENCODING_MS_1255;
- else if ( sCharset == "MS_1256" ) nEncoding = RTL_TEXTENCODING_MS_1256;
- else if ( sCharset == "MS_1257" ) nEncoding = RTL_TEXTENCODING_MS_1257;
- else if (( sCharset == "HW2FW" ) && ( ByteString( argv[ 1 ] ) == "-t" )) bHW2FW = TRUE;
-
- else {
- Help();
- exit ( 1 );
- }
-
- DirEntry aSource = DirEntry( String( argv[ 3 ], RTL_TEXTENCODING_ASCII_US ));
- if ( !aSource.Exists()) {
- fprintf( stderr, "\nERROR: File %s not found!\n\n", ByteString( argv[ 3 ] ).GetBuffer());
- exit ( 2 );
- }
-
- String sOutput;
- SvFileStream aOutput;
- if ( argc == 5 ) {
- sOutput= String( argv[ 4 ], RTL_TEXTENCODING_ASCII_US );
- aOutput.Open( sOutput, STREAM_STD_WRITE | STREAM_TRUNC );
- if ( !aOutput.IsOpen()) {
- fprintf( stderr, "\nERROR: Could not open output file %s!\n\n", argv[ 4 ]);
- exit ( 3 );
- }
- }
-
- String sGSI( argv[ 3 ], RTL_TEXTENCODING_ASCII_US );
- SvFileStream aGSI( sGSI, STREAM_STD_READ );
- if ( !aGSI.IsOpen()) {
- fprintf( stderr, "\nERROR: Could not open input file %s!\n\n", argv[ 3 ]);
- exit ( 3 );
- }
-
- ByteString sGSILine;
- while ( !aGSI.IsEof()) {
-
- aGSI.ReadLine( sGSILine );
- if ( bHW2FW ) {
- String sConverter( sGSILine, RTL_TEXTENCODING_UTF8 );
- ConvertHalfwitdhToFullwidth( sConverter );
- sGSILine = ByteString( sConverter, RTL_TEXTENCODING_UTF8 );
- }
- else {
- if ( ByteString( argv[ 1 ] ) == "-t" )
- sGSILine = UTF8Converter::ConvertToUTF8( sGSILine, nEncoding );
- else
- sGSILine = UTF8Converter::ConvertFromUTF8( sGSILine, nEncoding );
- }
-
- if ( aOutput.IsOpen())
- aOutput.WriteLine( sGSILine );
- else
- fprintf( stdout, "%s\n", sGSILine.GetBuffer());
- }
-
- aGSI.Close();
- if ( aOutput.IsOpen())
- aOutput.Close();
- }
- else {
- Help();
- exit( 1 );
- }
-
- return 0;
-}
diff --git a/transex3/source/xrmmerge.cxx b/transex3/source/xrmmerge.cxx
index 4daf94e2357a..35797a49a0b5 100644
--- a/transex3/source/xrmmerge.cxx
+++ b/transex3/source/xrmmerge.cxx
@@ -163,9 +163,9 @@ extern char *GetOutputFile( int argc, char* argv[])
Export::sLanguages = ByteString( argv[ i ]);
}
break;
- case STATE_ISOCODE99: {
- Export::sIsoCode99 = ByteString( argv[ i ]);
- }
+// case STATE_ISOCODE99: {
+// Export::sIsoCode99 = ByteString( argv[ i ]);
+// }
break;
}
}