Kaydet (Commit) 2fce3372 authored tarafından Stephan Bergmann's avatar Stephan Bergmann

l10ntools now only depends on sal and externals

Still room for further improvement.
Includes some fixes for regressions introduced with previous commits.
üst 7c3fab1b
......@@ -70,8 +70,6 @@ public:
, const std::vector<rtl::OString>& aLanguages , MergeDataFile& aMergeDataFile , bool bCreateDir );
private:
static rtl::OString makeAbsolutePath(const rtl::OString& sHelpFile , const rtl::OString& rRoot_in);
rtl::OString GetOutpath( const rtl::OString& rPathX , const rtl::OString& sCur , const rtl::OString& rPathY );
bool MergeSingleFile( XMLFile* file , MergeDataFile& aMergeDataFile , const rtl::OString& sLanguage , rtl::OString const & sPath );
......
......@@ -222,7 +222,6 @@ public:
/// returns file name
rtl::OUString GetName() { return sFileName; }
void SetName( const rtl::OUString &rFilename ) { sFileName = rFilename; }
void SetFullName( const rtl::OUString &rFullFilename ) { sFullName = rFullFilename; }
const std::vector<rtl::OString> getOrder(){ return order; }
protected:
......@@ -233,7 +232,6 @@ protected:
// DATA
rtl::OUString sFileName;
rtl::OUString sFullName;
const rtl::OString ID, OLDREF, XML_LANG;
......@@ -487,7 +485,6 @@ public:
/// parse a file, returns NULL on criticall errors
XMLFile *Execute(
const rtl::OUString &rFullFileName,
const rtl::OUString &rFileName, // the file name
XMLFile *pXMLFileIn // the XMLFile
);
......
tr l10ntools : tools LIBXSLT:libxslt BERKELEYDB:berkeleydb LUCENE:lucene NULL
tr l10ntools : BERKELEYDB:berkeleydb EXPAT:expat LIBXSLT:libxslt LUCENE:lucene sal NULL
tr l10ntools usr1 - all tr_mkout NULL
tr l10ntools\inc nmake - all tr_inc NULL
tr l10ntools\source nmake - all tr_src tr_inc NULL
......
......@@ -32,6 +32,7 @@ eval 'exec perl -S $0 ${1+"$@"}'
#
use strict;
use File::Basename;
use Getopt::Std;
use Cwd;
......@@ -40,7 +41,8 @@ getopts("ep:r:i:o:l:", \%options);
unless ( $options{i} =~ m/en_US/ ) {exit 0;}
my $file = substr ( Cwd::abs_path($options{i}), length(Cwd::abs_path($options{r})) + 1 );
my ($unsued1, $dir, $unused2) = File::Basename::fileparse($options{i});
my $file = substr ( Cwd::abs_path($options{i}), length(Cwd::abs_path($dir . $options{r})) + 1 );
$file =~ s|/|\\|g;
open (INFILE, "<$options{i}") || die "propex: cannot open input file: $options{i}";
......
This diff is collapsed.
......@@ -38,7 +38,6 @@
#include <sal/macros.h>
#include <iostream>
#include <iomanip>
#include <tools/urlobj.hxx>
#include <time.h>
#include <stdlib.h>
......
......@@ -87,6 +87,18 @@ inline bool endsWithAsciiL(
search, searchLength, text.getLength() - searchLength);
}
inline sal_Int32 countOccurrences(rtl::OString const & text, char c) {
sal_Int32 n = 0;
for (sal_Int32 i = 0;; ++i) {
i = text.indexOf(c, i);
if (i == -1) {
break;
}
++n;
}
return n;
}
inline rtl::OString trimAscii(rtl::OString const & text) {
sal_Int32 i1 = 0;
while (i1 != text.getLength() && isAsciiWhitespace(text[i1])) {
......
......@@ -31,7 +31,6 @@
#include <fstream>
#include <functional>
#include <tools/fsys.hxx>
#include <osl/file.hxx>
// local includes
#include <stdio.h>
......@@ -44,13 +43,13 @@
#include <fstream>
#include <vector>
#include <rtl/strbuf.hxx>
#include <comphelper/string.hxx>
#ifdef WNT
#include <windows.h>
#undef CopyFile
#include <direct.h>
#endif
#include "common.hxx"
#include "helper.hxx"
#if OSL_DEBUG_LEVEL > 2
......@@ -93,16 +92,7 @@ bool HelpParser::CreateSDF(
rtl::OStringToOUString(sHelpFile, RTL_TEXTENCODING_ASCII_US));
//TODO: explicit BOM handling?
rtl::OString fullFilePath = rPrj_in;
fullFilePath += "\\";
fullFilePath += makeAbsolutePath( sHelpFile , rRoot_in );
fullFilePath = fullFilePath.replace('\\', '/');
rtl::OUString strFullPath(
rtl::OStringToOUString(fullFilePath, RTL_TEXTENCODING_ASCII_US));
//printf( "%s\n", fullFilePath.GetBuffer() );
std::auto_ptr <XMLFile> file ( aParser.Execute( strFullPath , sXmlFile, pXmlFile ) );
std::auto_ptr <XMLFile> file ( aParser.Execute( sXmlFile, pXmlFile ) );
if(file.get() == NULL)
{
......@@ -121,7 +111,8 @@ bool HelpParser::CreateSDF(
return false;
}
rtl::OString sActFileName = makeAbsolutePath( sHelpFile , rRoot_in );
rtl::OString sActFileName(
common::pathnameToken(sHelpFile.getStr(), rRoot_in.getStr()));
XMLHashMap* aXMLStrHM = file->GetStrings();
LangHashMap* pElem;
......@@ -189,21 +180,6 @@ bool HelpParser::CreateSDF(
return sal_True;
}
rtl::OString HelpParser::makeAbsolutePath(const rtl::OString& sHelpFile, const rtl::OString& rRoot_in)
{
DirEntry aEntry(rtl::OStringToOUString(sHelpFile, RTL_TEXTENCODING_ASCII_US));
aEntry.ToAbs();
rtl::OUString sFullEntry(aEntry.GetFull());
aEntry += DirEntry(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("..")));
aEntry += DirEntry( rRoot_in );
rtl::OString sPrjEntry(rtl::OUStringToOString(aEntry.GetFull(), osl_getThreadTextEncoding()));
rtl::OString sActFileName(rtl::OUStringToOString(
sFullEntry.copy(sPrjEntry.getLength() + 1),
osl_getThreadTextEncoding()));
return sActFileName.replace('/', '\\');
}
bool HelpParser::Merge( const rtl::OString &rSDFFile, const rtl::OString &rDestinationFile ,
const rtl::OString& rLanguage , MergeDataFile& aMergeDataFile )
{
......@@ -217,10 +193,7 @@ bool HelpParser::Merge( const rtl::OString &rSDFFile, const rtl::OString &rDesti
rtl::OStringToOUString(sHelpFile, RTL_TEXTENCODING_ASCII_US));
//TODO: explicit BOM handling?
OUString sOUHelpFile( sXmlFile );
DirEntry aFile( sXmlFile );
XMLFile* xmlfile = ( aParser.Execute( aFile.GetFull() , sOUHelpFile, new XMLFile( rtl::OUString('0') ) ) );
XMLFile* xmlfile = ( aParser.Execute( sXmlFile, new XMLFile( rtl::OUString('0') ) ) );
hasNoError = MergeSingleFile( xmlfile , aMergeDataFile , rLanguage , rDestinationFile );
delete xmlfile;
return hasNoError;
......@@ -268,10 +241,7 @@ bool HelpParser::Merge(
rtl::OStringToOUString(sHelpFile, RTL_TEXTENCODING_ASCII_US));
//TODO: explicit BOM handling?
OUString sOUHelpFile( sXmlFile );
DirEntry aFile( sXmlFile );
XMLFile* xmlfile = ( aParser.Execute( aFile.GetFull() , sOUHelpFile, new XMLFile( rtl::OUString('0') ) ) );
XMLFile* xmlfile = aParser.Execute( sXmlFile, new XMLFile( rtl::OUString('0') ) );
xmlfile->Extract();
if( xmlfile == NULL)
......@@ -329,127 +299,38 @@ bool HelpParser::MergeSingleFile( XMLFile* file , MergeDataFile& aMergeDataFile
ProcessHelp( aLangHM , sLanguage, &pResData , aMergeDataFile );
}
// Init temp and target file
rtl::OString sTempFile;
rtl::OString sTargetFile( sPath );
rtl::OString sTempFileCopy;
static const rtl::OString INPATH = Export::GetEnv("INPATH");
sTempFile = Export::getRandomName(sPath, INPATH);
sTempFileCopy = Export::getRandomName(sPath, INPATH);
// Write in the temp file
file->Write ( sTempFile );
DirEntry aTmp( sTempFile );
DirEntry aTmp2( sTempFileCopy );
DirEntry aTar( sTargetFile );
if( !Export::CopyFile( sTempFile , sTempFileCopy ) )
{
#if defined(UNX)
sleep( 3 );
#else
Sleep( 3 );
#endif
if( !Export::CopyFile( sTempFile , sTempFileCopy ) )
{
cerr << "ERROR: Can not copy file from " << sTempFile.getStr() << " to " << sTempFileCopy.getStr() << "\n";
return false;
}
}
FileStat aFSTest( aTar );
if( aFSTest.GetSize() < 1 )
{
remove( sTargetFile.getStr() );
}
int rc;
#if defined(UNX)
rc = rename( sTempFile.getStr() , sTargetFile.getStr() );
#else
rc = MoveFileEx( sTempFile.getStr() , sTargetFile.getStr(), MOVEFILE_REPLACE_EXISTING );
#endif
FileStat aFS( aTar );
//cout << "mv " << sTempFile.GetBuffer() << " " << sTargetFile.GetBuffer() << "\n";
//cout << "rc -> " << rc << " filesize -> " << aFS.GetSize() << "\n";
// Windows rename returns -1 if the file already exits
//#ifdef UNX
if( rc < 0 || aFS.GetSize() < 1 )
//#else
// if( aFS.GetSize() < 1 )
//#endif
{
#if defined(UNX)
sleep( 3 );
#else
Sleep( 3 );
#endif
aFSTest.Update( aTar );
if( aFSTest.GetSize() < 1 )
{
remove( sTargetFile.getStr() );
}
#if defined(UNX)
rc = rename( sTempFileCopy.getStr() , sTargetFile.getStr() );
#else
rc = MoveFileEx( sTempFileCopy.getStr() , sTargetFile.getStr() , MOVEFILE_REPLACE_EXISTING );
#endif
aFS.Update( aTar );
//cout << "mv2 " << sTempFileCopy.GetBuffer() << " " << sTargetFile.GetBuffer() << "\n";
//cout << "rc -> " << rc << " filesize -> " << aFS.GetSize() << "\n";
// Windows rename returns -1 if the file already exits
//#ifdef WNT
// if( aFS.GetSize() < 1 )
//#else
if( rc < 0 || aFS.GetSize() < 1 )
//#endif
{
cerr << "ERROR: helpex Can't rename file " << sTempFileCopy.getStr() << " to " << sTargetFile.getStr() << " rename rc=" << rc << " filesize=" << aFS.GetSize() << "\n";
aTmp.Kill();
aTmp2.Kill();
if( aFS.GetSize() < 1 )
aTar.Kill();
return false;
}
}
aTmp.Kill();
aTmp2.Kill();
file->Write(sPath);
return true;
}
rtl::OString HelpParser::GetOutpath( const rtl::OString& rPathX , const rtl::OString& sCur , const rtl::OString& rPathY )
{
rtl::OString testpath = rPathX;
static const rtl::OString sDelimiter(rtl::OUStringToOString(DirEntry::GetAccessDelimiter(), RTL_TEXTENCODING_ASCII_US));
testpath = comphelper::string::stripEnd(testpath, '/');
testpath = comphelper::string::stripEnd(testpath, '\\');
testpath += sDelimiter;
if (!helper::endsWith(testpath, "/")) {
testpath += "/";
}
testpath += sCur;
testpath += sDelimiter;
testpath += "/";
rtl::OString sRelativePath( rPathY );
sRelativePath = comphelper::string::stripStart(sRelativePath, '/');
sRelativePath = comphelper::string::stripStart(sRelativePath, '\\');
if (sRelativePath.getLength() != 0 && sRelativePath[0] == '/') {
sRelativePath = sRelativePath.copy(1);
}
testpath += sRelativePath;
testpath += sDelimiter;
testpath += "/";
return testpath;
}
void HelpParser::MakeDir(const rtl::OString& rPath)
{
rtl::OString sDelimiter(rtl::OUStringToOString(DirEntry::GetAccessDelimiter(),
RTL_TEXTENCODING_ASCII_US));
rtl::OString sTPath(comphelper::string::replace(rPath, sDelimiter, rtl::OString('/')));
sal_uInt16 cnt = comphelper::string::getTokenCount(sTPath, '/');
rtl::OString sTPath(rPath);
helper::searchAndReplaceAll(&sTPath, "\\", "/");
sal_Int32 cnt = helper::countOccurrences(sTPath, '/');
rtl::OStringBuffer sCreateDir;
for (sal_uInt16 i = 0; i < cnt; ++i)
for (sal_uInt16 i = 0; i <= cnt; ++i)
{
sCreateDir.append(comphelper::string::getToken(sTPath, i , '/'));
sCreateDir.append(sDelimiter);
sal_Int32 n = 0;
sCreateDir.append(sTPath.getToken(i , '/', n));
sCreateDir.append('/');
#ifdef WNT
_mkdir( sCreateDir.getStr() );
#else
......
......@@ -75,7 +75,6 @@ APP1TARGET= transex3
APP1OBJS= $(OBJ)$/src_yy_wrapper.obj
APP1RPATH= NONE
APP1STDLIBS+= \
$(COMPHELPERLIB) \
$(SALLIB)
APP1LIBS+= $(LB)$/$(TARGET).lib
......@@ -86,8 +85,6 @@ APP2OBJS= $(OBJ)$/helpmerge.obj $(OBJ)$/xmlparse.obj $(OBJ)$/export2.obj $(OBJ)
APP2RPATH= NONE
APP2STDLIBS+= \
$(EXPATASCII3RDLIB) \
$(TOOLSLIB) \
$(COMPHELPERLIB) \
$(SALLIB)
# extractor and merger for *.lng and *.lng
......@@ -116,8 +113,6 @@ APP7TARGET= xrmex
APP7OBJS= $(OBJ)$/xrmmerge.obj $(OBJ)$/xrm_yy_wrapper.obj $(OBJ)$/merge.obj $(OBJ)$/export2.obj
APP7RPATH= NONE
APP7STDLIBS+= \
$(TOOLSLIB) \
$(COMPHELPERLIB) \
$(SALLIB)
# localizer for l10n framework
......
......@@ -233,8 +233,9 @@ void yyerror( char *s )
}
SAL_IMPLEMENT_MAIN_WITH_ARGS(argc, argv) {
int e;
yyin = init(argc, argv);
yylex();
e = GetError();
Close();
return GetError();
}
......@@ -466,7 +466,7 @@ void XMLFile::InsertL10NElement( XMLElement* pElement ){
elem=pos->second;
if ( (*elem)[ language ] )
{
fprintf(stdout,"Error: Duplicated entry. ID = %s LANG = %s in File %s\n", id.getStr(), language.getStr(), rtl::OUStringToOString(sFullName, RTL_TEXTENCODING_ASCII_US).getStr() );
fprintf(stdout,"Error: Duplicated entry. ID = %s LANG = %s in File %s\n", id.getStr(), language.getStr(), rtl::OUStringToOString(sFileName, RTL_TEXTENCODING_ASCII_US).getStr() );
exit( -1 );
}
(*elem)[ language ]=pElement;
......@@ -1113,7 +1113,7 @@ void SimpleXMLParser::Default(
}
/*****************************************************************************/
XMLFile *SimpleXMLParser::Execute( const rtl::OUString &rFullFileName , const rtl::OUString &rFileName, XMLFile* pXMLFileIn )
XMLFile *SimpleXMLParser::Execute( const rtl::OUString &rFileName, XMLFile* pXMLFileIn )
/*****************************************************************************/
{
aErrorInformation.eCode = XML_ERROR_NONE;
......@@ -1150,7 +1150,6 @@ XMLFile *SimpleXMLParser::Execute( const rtl::OUString &rFullFileName , const rt
pXMLFile = pXMLFileIn;
pXMLFile->SetName( rFileName );
pXMLFile->SetFullName( rFullFileName );
pCurNode = pXMLFile;
pCurData = NULL;
......
......@@ -30,11 +30,9 @@
#include <cstring>
#include <comphelper/string.hxx>
#include <stdio.h>
#include <tools/fsys.hxx>
// local includes
#include "common.hxx"
#include "export.hxx"
#include "helper.hxx"
#include "xrmmerge.hxx"
......@@ -209,22 +207,10 @@ extern FILE *GetXrmFile()
sInputFileName.getStr());
}
else {
// this is a valid file which can be opened, so
// create path to project root
DirEntry aEntry( rtl::OStringToOUString( sInputFileName, RTL_TEXTENCODING_ASCII_US ));
aEntry.ToAbs();
rtl::OString sFullEntry(rtl::OUStringToOString(aEntry.GetFull(), RTL_TEXTENCODING_ASCII_US));
aEntry += DirEntry(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("..")));
aEntry += DirEntry( sPrjRoot );
rtl::OString sPrjEntry(rtl::OUStringToOString(aEntry.GetFull(), RTL_TEXTENCODING_ASCII_US));
// create file name, beginnig with project root
// (e.g.: source\ui\src\menue.src)
sActFileName = sFullEntry.copy(sPrjEntry.getLength() + 1);
sActFileName = sActFileName.replace('/', '\\');
if (!bMergeMode) {
sActFileName = common::pathnameToken(
sInputFileName.getStr(), sPrjRoot.getStr());
}
return pFile;
}
}
......@@ -404,7 +390,8 @@ rtl::OString XRMResParser::GetAttribute( const rtl::OString &rToken, const rtl::
if ( nPos != -1 )
{
sTmp = sTmp.copy( nPos );
rtl::OString sId = comphelper::string::getToken(sTmp, 1, '\"');
sal_Int32 n = 0;
rtl::OString sId = sTmp.getToken(1, '"', n);
return sId;
}
return "";
......@@ -422,14 +409,7 @@ void XRMResParser::Error( const rtl::OString &rError )
void XRMResParser::ConvertStringToDBFormat( rtl::OString &rString )
/*****************************************************************************/
{
rtl::OString sResult;
do {
sResult = rString;
rString = comphelper::string::stripStart(rString, _LF);
rString = comphelper::string::stripStart(rString, '\t');
rString = comphelper::string::stripEnd(rString, '\t');
} while ( sResult != rString );
rString = helper::trimAscii(rString);
helper::searchAndReplaceAll(&rString, "\t", "\\t");
}
......@@ -500,9 +480,7 @@ void XRMResExport::WorkOnDesc(
)
/*****************************************************************************/
{
DirEntry aEntry( rtl::OStringToOUString( sInputFileName, RTL_TEXTENCODING_ASCII_US ));
aEntry.ToAbs();
rtl::OString sDescFileName(rtl::OUStringToOString(aEntry.GetFull(), RTL_TEXTENCODING_ASCII_US));
rtl::OString sDescFileName(sInputFileName);
helper::searchAndReplaceAll(&sDescFileName, "description.xml", "");
sDescFileName += GetAttribute( rOpenTag, "xlink:href" );
int size;
......@@ -559,7 +537,7 @@ void XRMResExport::EndOfText(
sCur = aLanguages[ n ];
rtl::OString sAct = pResData->sText[ sCur ];
sAct = comphelper::string::remove(sAct, 0x0A);
helper::searchAndReplaceAll(&sAct, "\x0A", rtl::OString());
rtl::OString sOutput( sPrj ); sOutput += "\t";
sOutput += sPath;
......@@ -667,17 +645,25 @@ void XRMResMerge::WorkOnDesc(
Output( sAdditionalLine );
DirEntry aEntry( rtl::OStringToOUString( sOutputFile, RTL_TEXTENCODING_ASCII_US ));
aEntry.ToAbs();
rtl::OString sOutputDescFile(rtl::OUStringToOString(aEntry.GetPath().GetFull(), RTL_TEXTENCODING_ASCII_US));
rtl::OString sDel(rtl::OUStringToOString(DirEntry::GetAccessDelimiter(), RTL_TEXTENCODING_ASCII_US));
sOutputDescFile += sDel;
sOutputDescFile += sLocDescFilename;
sal_Int32 i = sOutputFile.lastIndexOf('/');
if (i == -1) {
std::cerr
<< "Error: output file " << sOutputFile.getStr()
<< " does not contain any /\n";
throw false; //TODO
}
rtl::OString sOutputDescFile(
sOutputFile.copy(0, i + 1) + sLocDescFilename);
helper::searchAndReplaceAll(&sText, "\\n", "\n");
ofstream file(sOutputDescFile.getStr());
if (file.is_open()) {
file << sText.getStr();
file.close();
} else {
std::cerr
<< "Error: cannot write "
<< sOutputDescFile.getStr() << '\n';
throw false; //TODO
}
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment