summaryrefslogtreecommitdiff
path: root/l10ntools/source/export2.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'l10ntools/source/export2.cxx')
-rw-r--r--l10ntools/source/export2.cxx600
1 files changed, 0 insertions, 600 deletions
diff --git a/l10ntools/source/export2.cxx b/l10ntools/source/export2.cxx
deleted file mode 100644
index 08f4406793..0000000000
--- a/l10ntools/source/export2.cxx
+++ /dev/null
@@ -1,600 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * 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_l10ntools.hxx"
-#include "export.hxx"
-#include <tools/datetime.hxx>
-#include <tools/isofallback.hxx>
-#include <stdio.h>
-#include <osl/time.h>
-#include <osl/process.h>
-#include <rtl/ustring.hxx>
-#include <sal/macros.h>
-#include <iostream>
-#include <iomanip>
-#include <tools/urlobj.hxx>
-#include <time.h>
-#include <stdlib.h>
-
-using namespace std;
-//
-// class ResData();
-//
-
-/*****************************************************************************/
-ResData::~ResData()
-/*****************************************************************************/
-{
- if ( pStringList ) {
- // delete existing res. of type StringList
- for ( size_t i = 0; i < pStringList->size(); i++ ) {
- ExportListEntry* test = (*pStringList)[ i ];
- if( test != NULL ) delete test;
- }
- delete pStringList;
- }
- if ( pFilterList ) {
- // delete existing res. of type FilterList
- for ( size_t i = 0; i < pFilterList->size(); i++ ) {
- ExportListEntry* test = (*pFilterList)[ i ];
- delete test;
- }
- delete pFilterList;
- }
- if ( pItemList ) {
- // delete existing res. of type ItemList
- for ( size_t i = 0; i < pItemList->size(); i++ ) {
- ExportListEntry* test = (*pItemList)[ i ];
- delete test;
- }
- delete pItemList;
- }
- if ( pUIEntries ) {
- // delete existing res. of type UIEntries
- for ( size_t i = 0; i < pUIEntries->size(); i++ ) {
- ExportListEntry* test = (*pUIEntries)[ i ];
- delete test;
- }
- delete pUIEntries;
- }
-}
-
-//
-// class Export
-//
-
-/*****************************************************************************/
-ByteString Export::sLanguages;
-ByteString Export::sForcedLanguages;
-//ByteString Export::sIsoCode99;
-/*****************************************************************************/
-
-void Export::DumpExportList( ByteString& sListName , ExportList& aList ){
- printf( "%s\n", sListName.GetBuffer() );
- ByteString l("");
- ExportListEntry* aEntry;
- for( unsigned int x = 0; x < aList.size() ; x++ ){
- aEntry = (ExportListEntry*) aList[ x ];
- Export::DumpMap( l , *aEntry );
- }
- printf("\n");
-}
-ByteString Export::DumpMap( ByteString& sMapName , ByteStringHashMap& aMap ){
- ByteStringHashMap::const_iterator idbg;
- ByteString sReturn;
-
- if( sMapName.Len() )
- printf("MapName %s\n", sMapName.GetBuffer());
- if( aMap.size() < 1 ) return ByteString();
- for( idbg = aMap.begin() ; idbg != aMap.end(); ++idbg ){
- ByteString a( idbg->first );
- ByteString b( idbg->second );
- printf("[%s]= %s",a.GetBuffer(),b.GetBuffer());
- printf("\n");
- }
- printf("\n");
- return sReturn;
-}
-/*****************************************************************************/
-void Export::SetLanguages( std::vector<ByteString> val ){
-/*****************************************************************************/
- aLanguages = val;
- isInitialized = true;
-}
-/*****************************************************************************/
-std::vector<ByteString> Export::GetLanguages(){
-/*****************************************************************************/
- return aLanguages;
-}
-/*****************************************************************************/
-std::vector<ByteString> Export::GetForcedLanguages(){
-/*****************************************************************************/
- return aForcedLanguages;
-}
-std::vector<ByteString> Export::aLanguages = std::vector<ByteString>();
-std::vector<ByteString> Export::aForcedLanguages = std::vector<ByteString>();
-
-/*****************************************************************************/
-void Export::QuotHTML( ByteString &rString )
-/*****************************************************************************/
-{
- ByteString sReturn;
- for ( sal_uInt16 i = 0; i < rString.Len(); i++ ) {
- ByteString sTemp = rString.Copy( i );
- if ( sTemp.Search( "<Arg n=" ) == 0 ) {
- while ( i < rString.Len() && rString.GetChar( i ) != '>' ) {
- sReturn += rString.GetChar( i );
- i++;
- }
- if ( rString.GetChar( i ) == '>' ) {
- sReturn += ">";
- i++;
- }
- }
- if ( i < rString.Len()) {
- switch ( rString.GetChar( i )) {
- case '<':
- sReturn += "&lt;";
- break;
-
- case '>':
- sReturn += "&gt;";
- break;
-
- case '\"':
- sReturn += "&quot;";
- break;
-
- case '\'':
- sReturn += "&apos;";
- break;
-
- case '&':
- if ((( i + 4 ) < rString.Len()) &&
- ( rString.Copy( i, 5 ) == "&amp;" ))
- sReturn += rString.GetChar( i );
- else
- sReturn += "&amp;";
- break;
-
- default:
- sReturn += rString.GetChar( i );
- break;
- }
- }
- }
- rString = sReturn;
-}
-
-void Export::RemoveUTF8ByteOrderMarker( ByteString &rString ){
- if( hasUTF8ByteOrderMarker( rString ) )
- rString.Erase( 0 , 3 );
-}
-
-bool Export::hasUTF8ByteOrderMarker( const ByteString &rString ){
- // Byte order marker signature
-
- const unsigned char c1 = 0xEF;
- const unsigned char c2 = 0xBB;
- const unsigned char c3 = 0xBF;
-
- const char bom[ 3 ] = { c1 , c2 , c3 };
-
- return rString.Len() >= 3 &&
- rString.GetChar( 0 ) == bom[ 0 ] &&
- rString.GetChar( 1 ) == bom[ 1 ] &&
- rString.GetChar( 2 ) == bom[ 2 ] ;
-}
-bool Export::fileHasUTF8ByteOrderMarker( const ByteString &rString ){
- SvFileStream aFileIn( String( rString , RTL_TEXTENCODING_ASCII_US ) , STREAM_READ );
- ByteString sLine;
- if( !aFileIn.IsEof() ) {
- aFileIn.ReadLine( sLine );
- if( aFileIn.IsOpen() ) aFileIn.Close();
- return hasUTF8ByteOrderMarker( sLine );
- }
- if( aFileIn.IsOpen() ) aFileIn.Close();
- return false;
-}
-void Export::RemoveUTF8ByteOrderMarkerFromFile( const ByteString &rFilename ){
- SvFileStream aFileIn( String( rFilename , RTL_TEXTENCODING_ASCII_US ) , STREAM_READ );
- ByteString sLine;
- if( !aFileIn.IsEof() ) {
- aFileIn.ReadLine( sLine );
- // Test header
- if( hasUTF8ByteOrderMarker( sLine ) ){
- DirEntry aTempFile = Export::GetTempFile();
- ByteString sTempFile = ByteString( aTempFile.GetFull() , RTL_TEXTENCODING_ASCII_US );
- SvFileStream aNewFile( String( sTempFile , RTL_TEXTENCODING_ASCII_US ) , STREAM_WRITE );
- // Remove header
- RemoveUTF8ByteOrderMarker( sLine );
- aNewFile.WriteLine( sLine );
- // Copy the rest
- while( !aFileIn.IsEof() ){
- aFileIn.ReadLine( sLine );
- aNewFile.WriteLine( sLine );
- }
- if( aFileIn.IsOpen() ) aFileIn.Close();
- if( aNewFile.IsOpen() ) aNewFile.Close();
- DirEntry aEntry( rFilename.GetBuffer() );
- aEntry.Kill();
- DirEntry( sTempFile ).MoveTo( DirEntry( rFilename.GetBuffer() ) );
- }
- }
- if( aFileIn.IsOpen() ) aFileIn.Close();
-}
-
-bool Export::CopyFile( const ByteString& source , const ByteString& dest )
-{
- const int BUFFERSIZE = 8192;
- char buf[ BUFFERSIZE ];
-
- FILE* IN_FILE = fopen( source.GetBuffer() , "r" );
- if( IN_FILE == NULL )
- {
- cerr << "Export::CopyFile WARNING: Could not open " << source.GetBuffer() << "\n";
- return false;
- }
-
- FILE* OUT_FILE = fopen( dest.GetBuffer() , "w" );
- if( OUT_FILE == NULL )
- {
- cerr << "Export::CopyFile WARNING: Could not open/create " << dest.GetBuffer() << " for writing\n";
- fclose( IN_FILE );
- return false;
- }
-
- while( fgets( buf , BUFFERSIZE , IN_FILE ) != NULL )
- {
- if( fputs( buf , OUT_FILE ) == EOF )
- {
- cerr << "Export::CopyFile WARNING: Write problems " << source.GetBuffer() << "\n";
- fclose( IN_FILE );
- fclose( OUT_FILE );
- return false;
- }
- }
- if( ferror( IN_FILE ) )
- {
- cerr << "Export::CopyFile WARNING: Read problems " << dest.GetBuffer() << "\n";
- fclose( IN_FILE );
- fclose( OUT_FILE );
- return false;
- }
- fclose ( IN_FILE );
- fclose ( OUT_FILE );
-
- return true;
-}
-
-/*****************************************************************************/
-void Export::UnquotHTML( ByteString &rString )
-/*****************************************************************************/
-{
- ByteString sReturn;
- while ( rString.Len()) {
- if ( rString.Copy( 0, 5 ) == "&amp;" ) {
- sReturn += "&";
- rString.Erase( 0, 5 );
- }
- else if ( rString.Copy( 0, 4 ) == "&lt;" ) {
- sReturn += "<";
- rString.Erase( 0, 4 );
- }
- else if ( rString.Copy( 0, 4 ) == "&gt;" ) {
- sReturn += ">";
- rString.Erase( 0, 4 );
- }
- else if ( rString.Copy( 0, 6 ) == "&quot;" ) {
- sReturn += "\"";
- rString.Erase( 0, 6 );
- }
- else if ( rString.Copy( 0, 6 ) == "&apos;" ) {
- sReturn += "\'";
- rString.Erase( 0, 6 );
- }
- else {
- sReturn += rString.GetChar( 0 );
- rString.Erase( 0, 1 );
- }
- }
- rString = sReturn;
-}
-bool Export::isSourceLanguage( const ByteString &sLanguage )
-{
- return !isAllowed( sLanguage );
-}
-bool Export::isAllowed( const ByteString &sLanguage ){
- return ! ( sLanguage.EqualsIgnoreCaseAscii("en-US") );
-}
-
-bool Export::isInitialized = false;
-
-/*****************************************************************************/
-void Export::InitLanguages( bool bMergeMode ){
-/*****************************************************************************/
- if( !isInitialized ){
- ByteString sTmp;
- ByteStringBoolHashMap aEnvLangs;
- for ( sal_uInt16 x = 0; x < sLanguages.GetTokenCount( ',' ); x++ ){
- sTmp = sLanguages.GetToken( x, ',' ).GetToken( 0, '=' );
- sTmp.EraseLeadingAndTrailingChars();
- if( bMergeMode && !isAllowed( sTmp ) ){}
- else if( !( (sTmp.GetChar(0)=='x' || sTmp.GetChar(0)=='X') && sTmp.GetChar(1)=='-' ) ){
- aLanguages.push_back( sTmp );
- }
- }
- InitForcedLanguages( bMergeMode );
- isInitialized = true;
- }
-}
-/*****************************************************************************/
-void Export::InitForcedLanguages( bool bMergeMode ){
-/*****************************************************************************/
- ByteString sTmp;
- ByteStringBoolHashMap aEnvLangs;
- for ( sal_uInt16 x = 0; x < sForcedLanguages.GetTokenCount( ',' ); x++ ){
- sTmp = sForcedLanguages.GetToken( x, ',' ).GetToken( 0, '=' );
- sTmp.EraseLeadingAndTrailingChars();
- if( bMergeMode && isAllowed( sTmp ) ){}
- else if( !( (sTmp.GetChar(0)=='x' || sTmp.GetChar(0)=='X') && sTmp.GetChar(1)=='-' ) )
- aForcedLanguages.push_back( sTmp );
- }
-}
-
-/*****************************************************************************/
-ByteString Export::GetFallbackLanguage( const ByteString nLanguage )
-/*****************************************************************************/
-{
- rtl::OString sFallback=nLanguage;
- GetIsoFallback( sFallback );
- return sFallback;
-}
-
-/*****************************************************************************/
-void Export::FillInFallbacks( ResData *pResData )
-/*****************************************************************************/
-{
- for (size_t n = 0; n < aLanguages.size(); ++n)
- {
- ByteString sCur = aLanguages[ n ];
- if (isAllowed(sCur))
- {
- ByteString nFallbackIndex = GetFallbackLanguage( sCur );
- if( nFallbackIndex.Len() )
- {
- if (pResData->sText[ sCur ].isEmpty())
- pResData->sText[ sCur ] =
- pResData->sText[ nFallbackIndex ];
-
- if (pResData->sHelpText[ sCur ].isEmpty())
- pResData->sHelpText[ sCur ] =
- pResData->sHelpText[ nFallbackIndex ];
-
- if (pResData->sQuickHelpText[ sCur ].isEmpty())
- pResData->sQuickHelpText[ sCur ] =
- pResData->sQuickHelpText[ nFallbackIndex ];
-
- if (!pResData->sTitle[ sCur ].isEmpty())
- pResData->sTitle[ sCur ] =
- pResData->sTitle[ nFallbackIndex ];
-
- if ( pResData->pStringList )
- FillInListFallbacks(
- pResData->pStringList, sCur, nFallbackIndex );
-
- if ( pResData->pPairedList )
- FillInListFallbacks(
- pResData->pPairedList, sCur, nFallbackIndex );
-
- if ( pResData->pFilterList )
- FillInListFallbacks(
- pResData->pFilterList, sCur, nFallbackIndex );
-
- if ( pResData->pItemList )
- FillInListFallbacks(
- pResData->pItemList, sCur, nFallbackIndex );
-
- if ( pResData->pUIEntries )
- FillInListFallbacks(
- pResData->pUIEntries, sCur, nFallbackIndex );
- }
- }
- }
-}
-
-/*****************************************************************************/
-void Export::FillInListFallbacks(
- ExportList *pList, const ByteString &nSource, const ByteString &nFallback )
-/*****************************************************************************/
-{
- for (size_t i = 0; i < pList->size(); ++i)
- {
- ExportListEntry *pEntry = (*pList)[ i ];
- if ( (*pEntry )[nSource].isEmpty() )
- {
- ( *pEntry )[ nSource ] = ( *pEntry )[ nFallback ];
- ByteString x = ( *pEntry )[ nSource ];
- ByteString y = ( *pEntry )[ nFallback ];
- }
- }
-}
-
-/*****************************************************************************/
-ByteString Export::GetTimeStamp()
-/*****************************************************************************/
-{
-// return "xx.xx.xx";
- char buf[20];
- Time aTime;
-
- snprintf(buf, sizeof(buf), "%8d %02d:%02d:%02d", int(Date().GetDate()),
- int(aTime.GetHour()), int(aTime.GetMin()), int(aTime.GetSec()));
- return ByteString(buf);
-}
-
-/*****************************************************************************/
-sal_Bool Export::ConvertLineEnds(
- ByteString sSource, ByteString sDestination )
-/*****************************************************************************/
-{
- String sSourceFile( sSource, RTL_TEXTENCODING_ASCII_US );
- String sDestinationFile( sDestination, RTL_TEXTENCODING_ASCII_US );
-
- SvFileStream aSource( sSourceFile, STREAM_READ );
- if ( !aSource.IsOpen())
- return sal_False;
- SvFileStream aDestination( sDestinationFile, STREAM_STD_WRITE | STREAM_TRUNC );
- if ( !aDestination.IsOpen()) {
- aSource.Close();
- return sal_False;
- }
-
- ByteString sLine;
-
- while ( !aSource.IsEof()) {
- aSource.ReadLine( sLine );
- if ( !aSource.IsEof()) {
- sLine.EraseAllChars( '\r' );
- aDestination.WriteLine( sLine );
- }
- else
- aDestination.WriteByteString( sLine );
- }
-
- aSource.Close();
- aDestination.Close();
-
- return sal_True;
-}
-
-/*****************************************************************************/
-ByteString Export::GetNativeFile( ByteString sSource )
-/*****************************************************************************/
-{
- DirEntry aTemp( GetTempFile());
- ByteString sReturn( aTemp.GetFull(), RTL_TEXTENCODING_ASCII_US );
-
- for ( sal_uInt16 i = 0; i < 10; i++ )
- if ( ConvertLineEnds( sSource, sReturn ))
- return sReturn;
-
- return "";
-}
-
-const char* Export::GetEnv( const char *pVar )
-{
- char *pRet = getenv( pVar );
- if ( !pRet )
- pRet = 0;
- return pRet;
-}
-
-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
-
-#define RAND_NAME_LENGTH 6
-
-void Export::getRandomName( const ByteString& sPrefix , ByteString& sRandStr , const ByteString& sPostfix )
-{
- static const char LETTERS[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
- static const int COUNT_OF_LETTERS = SAL_N_ELEMENTS(LETTERS) - 1;
- sRandStr.Append( sPrefix );
-
- static sal_uInt64 value;
- char buffer[RAND_NAME_LENGTH];
-
- TimeValue tv;
- sal_uInt64 v;
- int i;
-
- osl_getSystemTime( &tv );
- oslProcessInfo proInfo;
- proInfo.Size = sizeof(oslProcessInfo);
- osl_getProcessInfo( 0 , osl_Process_IDENTIFIER , &proInfo );
-
- value += ((sal_uInt64) ( tv.Nanosec / 1000 ) << 16) ^ ( tv.Nanosec / 1000 ) ^ proInfo.Ident;
-
- v = value;
-
- for (i = 0; i < RAND_NAME_LENGTH; i++)
- {
- buffer[i] = LETTERS[v % COUNT_OF_LETTERS];
- v /= COUNT_OF_LETTERS;
- }
-
- sRandStr.Append( buffer , RAND_NAME_LENGTH );
- sRandStr.Append( sPostfix );
-}
-
-/*****************************************************************************/
-DirEntry Export::GetTempFile()
-/*****************************************************************************/
-{
- rtl::OUString* sTempFilename = new rtl::OUString();
-
- // Create a temp file
- int nRC = osl::FileBase::createTempFile( 0 , 0 , sTempFilename );
- if( nRC ) printf(" osl::FileBase::createTempFile RC = %d",nRC);
-
- String strTmp( *sTempFilename );
-
- INetURLObject::DecodeMechanism eMechanism = INetURLObject::DECODE_TO_IURI;
- String sDecodedStr = INetURLObject::decode( strTmp , '%' , eMechanism );
- ByteString sTmp( sDecodedStr , RTL_TEXTENCODING_UTF8 );
-
-#if defined(WNT)
- sTmp.SearchAndReplace("file:///","");
- sTmp.SearchAndReplaceAll('/','\\');
-#else
- // Set file permission to 644
- const sal_uInt64 nPerm = osl_File_Attribute_OwnRead | osl_File_Attribute_OwnWrite |
- osl_File_Attribute_GrpRead | osl_File_Attribute_OthRead ;
-
- nRC = osl::File::setAttributes( *sTempFilename , nPerm );
- if( nRC ) printf(" osl::File::setAttributes RC = %d",nRC);
-
- sTmp.SearchAndReplace("file://","");
-#endif
- DirEntry aDirEntry( sTmp );
- delete sTempFilename;
- return aDirEntry;
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */