diff options
Diffstat (limited to 'l10ntools/source/merge.cxx')
-rw-r--r-- | l10ntools/source/merge.cxx | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/l10ntools/source/merge.cxx b/l10ntools/source/merge.cxx index 4f065fb2ef7e..d7c5353f929b 100644 --- a/l10ntools/source/merge.cxx +++ b/l10ntools/source/merge.cxx @@ -29,13 +29,18 @@ namespace { - static ::rtl::OString lcl_NormalizeFilename(const ::rtl::OString& rFilename) + static sal_Int32 lcl_BasenameIndex(const OString& rFilename) { - return rFilename.copy( - std::max( - rFilename.lastIndexOf( '\\' ), - rFilename.lastIndexOf( '/' ))+1); - }; + sal_Int32 index; + for(index = rFilename.getLength() - 1; index >= 0 ; --index) + { + if(rFilename[index] == '/' || rFilename[index] == '\\') + { + break; + } + } + return index + 1; + } static bool lcl_ReadPoChecked( PoEntry& o_rPoEntry, PoIfstream& rPoFile, @@ -165,7 +170,7 @@ MergeDataFile::MergeDataFile( while( !aInputStream.eof() ) { const OString sHack("HACK"); - const OString sFileName( lcl_NormalizeFilename(rFile) ); + const OString sFileName( rFile.getStr() + lcl_BasenameIndex(rFile) ); const bool bReadAll = sFileName.isEmpty(); const OString sPoFileName(sPoFile.data(), sPoFile.length()); PoIfstream aPoInput; @@ -379,13 +384,7 @@ rtl::OString MergeDataFile::CreateKey(const rtl::OString& rTYP, const rtl::OStri const rtl::OString& rLID, const rtl::OString& rFilename, bool bCaseSensitive) { static const ::rtl::OString sStroke('-'); - ::rtl::OString sKey( rTYP ); - sKey += sStroke; - sKey += rGID; - sKey += sStroke; - sKey += rLID; - sKey += sStroke; - sKey += lcl_NormalizeFilename(rFilename); + ::rtl::OString sKey = rTYP + "-" + rGID + "-" + rLID + "-" + (rFilename.getStr() + lcl_BasenameIndex(rFilename) ); OSL_TRACE("created key: %s", sKey.getStr()); if(bCaseSensitive) return sKey; // officecfg case sensitive identifier |