summaryrefslogtreecommitdiff
path: root/sc/source
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2018-03-05 13:56:59 +0100
committerEike Rathke <erack@redhat.com>2018-03-06 12:35:02 +0100
commitdb7dae40a2082d5d2b1ac22008d32ef9ebf86f4e (patch)
treeaf21312b9eba1295e6c0c1dd094ff7d97098a0d5 /sc/source
parenta0d74ae3c7c2a555fd633b86269605df89a13138 (diff)
tdf#116171: Tunnel arbitrary rtl_TextEncoding from sc to sdbc:dbase connection
...including those that have no corresponding textual IANA character set name representation, like RTL_TEXTENCODING_MS_950 which is apparently used in some DBase files. In the past, if eCharSet was RTL_TEXTENCODING_DONTKNOW in lcl_getDBaseConnection it was sent as an empty string CharSet property, which the receiving OConnection::construct translated back to else m_nTextEncoding = RTL_TEXTENCODING_DONTKNOW; so the net effect remains the same for that special case. Change-Id: I84eec8a93d000752b3c429976c58721ea9ea32a4 Reviewed-on: https://gerrit.libreoffice.org/50772 Reviewed-by: Lionel Elie Mamane <lionel@mamane.lu> Tested-by: Jenkins <ci@libreoffice.org> (cherry picked from commit 5ad62544bce42396faaae2bc79c7517af6ff085b) Reviewed-on: https://gerrit.libreoffice.org/50780 Reviewed-by: Eike Rathke <erack@redhat.com>
Diffstat (limited to 'sc/source')
-rw-r--r--sc/source/ui/docshell/docsh8.cxx27
1 files changed, 5 insertions, 22 deletions
diff --git a/sc/source/ui/docshell/docsh8.cxx b/sc/source/ui/docshell/docsh8.cxx
index 198cc709debe..6fcce1eafc4d 100644
--- a/sc/source/ui/docshell/docsh8.cxx
+++ b/sc/source/ui/docshell/docsh8.cxx
@@ -30,10 +30,6 @@
#include <svx/txenctab.hxx>
#include <unotools/sharedunocomponent.hxx>
-#if HAVE_FEATURE_DBCONNECTIVITY
-#include <svx/dbcharsethelper.hxx>
-#endif
-
#include <com/sun/star/sdb/CommandType.hpp>
#include <com/sun/star/sdbc/DataType.hpp>
#include <com/sun/star/sdbc/SQLException.hpp>
@@ -124,26 +120,13 @@ namespace
OUString aConnUrl("sdbc:dbase:");
aConnUrl += aPath;
- ::std::vector< rtl_TextEncoding > aEncodings;
- svxform::charset_helper::getSupportedTextEncodings( aEncodings );
- ::std::vector< rtl_TextEncoding >::iterator aIter = ::std::find(aEncodings.begin(),aEncodings.end(), eCharSet);
- if ( aIter == aEncodings.end() )
- {
- OSL_FAIL( "DBaseImport: dbtools::OCharsetMap doesn't know text encoding" );
- return SCERR_IMPORT_CONNECT;
- } // if ( aIter == aMap.end() )
- OUString aCharSetStr;
- if ( RTL_TEXTENCODING_DONTKNOW != *aIter )
- { // it's not the virtual "system charset"
- const char* pIanaName = rtl_getMimeCharsetFromTextEncoding( *aIter );
- OSL_ENSURE( pIanaName, "invalid mime name!" );
- if ( pIanaName )
- aCharSetStr = OUString::createFromAscii( pIanaName );
- }
-
+ // sdbc:dbase is based on the css.sdbc.FILEConnectionProperties UNOIDL service, so we can
+ // transport the raw rtl_TextEncoding value instead of having to translate it into a IANA
+ // character set name string (which might not exist for certain eCharSet values, like
+ // RTL_TEXTENCODING_MS_950):
uno::Sequence<beans::PropertyValue> aProps( comphelper::InitPropertySequence({
{ SC_DBPROP_EXTENSION, uno::Any(aExtension) },
- { SC_DBPROP_CHARSET, uno::Any(aCharSetStr) }
+ { SC_DBPROP_CHARSET, uno::Any(eCharSet) }
}));
_rConnection = _rDrvMgr->getConnectionWithInfo( aConnUrl, aProps );