summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/sfx2/objsh.hxx2
-rw-r--r--sfx2/source/doc/objstor.cxx41
2 files changed, 15 insertions, 28 deletions
diff --git a/include/sfx2/objsh.hxx b/include/sfx2/objsh.hxx
index 38a9aa1424cf..e0b0d3f411a3 100644
--- a/include/sfx2/objsh.hxx
+++ b/include/sfx2/objsh.hxx
@@ -446,7 +446,7 @@ public:
bool SetModifyPasswordInfo( const css::uno::Sequence< css::beans::PropertyValue >& aInfo );
static void DetectCharSet(SvStream& stream, rtl_TextEncoding& eCharSet, SvStreamEndian& endian);
- static void DetectCsvSeparators(SvStream& stream, rtl_TextEncoding& eCharSet, OUString& separators, sal_Unicode cStringDelimiter, bool bForceCommonSeps = true, bool bAllowMultipleSeps = false);
+ static void DetectCsvSeparators(SvStream& stream, rtl_TextEncoding& eCharSet, OUString& separators, sal_Unicode cStringDelimiter);
static void DetectCsvFilterOptions(SvStream& stream, OUString& aFilterOptions);
static void DetectFilterOptions(SfxMedium* pMedium);
static ErrCode HandleFilter( SfxMedium* pMedium, SfxObjectShell const * pDoc );
diff --git a/sfx2/source/doc/objstor.cxx b/sfx2/source/doc/objstor.cxx
index b73802ca32b7..720e939e3885 100644
--- a/sfx2/source/doc/objstor.cxx
+++ b/sfx2/source/doc/objstor.cxx
@@ -948,7 +948,7 @@ void SfxObjectShell::DetectCharSet(SvStream& stream, rtl_TextEncoding& eCharSet,
ucsdet_close(ucd);
}
-void SfxObjectShell::DetectCsvSeparators(SvStream& stream, rtl_TextEncoding& eCharSet, OUString& separators, sal_Unicode cStringDelimiter, bool bForceCommonSeps, bool bAllowMultipleSeps)
+void SfxObjectShell::DetectCsvSeparators(SvStream& stream, rtl_TextEncoding& eCharSet, OUString& separators, sal_Unicode cStringDelimiter)
{
OUString sLine;
std::vector<std::unordered_map<sal_Unicode, sal_uInt32>> aLinesCharsCount;
@@ -968,9 +968,8 @@ void SfxObjectShell::DetectCsvSeparators(SvStream& stream, rtl_TextEncoding& eCh
if (!cStringDelimiter)
cStringDelimiter = '\"';
- if (bForceCommonSeps)
- for (sal_Int32 nComSepIdx = sCommonSeps.getLength() - 1; nComSepIdx >= 0; nComSepIdx --)
- usetCommonSeps.insert(sCommonSeps[nComSepIdx]);
+ for (sal_Int32 nComSepIdx = sCommonSeps.getLength() - 1; nComSepIdx >= 0; nComSepIdx --)
+ usetCommonSeps.insert(sCommonSeps[nComSepIdx]);
aLinesCharsCount.reserve(nMaxLinesToProcess);
separators = "";
@@ -1008,7 +1007,7 @@ void SfxObjectShell::DetectCsvSeparators(SvStream& stream, rtl_TextEncoding& eCh
continue;
// If restricted only to common separators then skip the rest
- if (bForceCommonSeps && usetCommonSeps.find(*p) == usetCommonSeps.end())
+ if (usetCommonSeps.find(*p) == usetCommonSeps.end())
continue;
auto it_elem = aCharsCount.find(*p);
@@ -1067,34 +1066,22 @@ void SfxObjectShell::DetectCsvSeparators(SvStream& stream, rtl_TextEncoding& eCh
sInitSeps += OUStringChar(it->first);
// If forced to most common or there are multiple separators then pick up only the most common by importance.
- if (bForceCommonSeps || sInitSeps.getLength() > 1)
+ sal_Int32 nInitSepIdx;
+ sal_Int32 nComSepIdx;
+ for (nComSepIdx = 0; nComSepIdx < sCommonSeps.getLength(); nComSepIdx++)
{
- sal_Int32 nInitSepIdx;
- sal_Int32 nComSepIdx;
- for (nComSepIdx = 0; nComSepIdx < sCommonSeps.getLength(); nComSepIdx++)
+ sal_Unicode c = sCommonSeps[nComSepIdx];
+ for (nInitSepIdx = sInitSeps.getLength() - 1; nInitSepIdx >= 0; nInitSepIdx --)
{
- sal_Unicode c = sCommonSeps[nComSepIdx];
- for (nInitSepIdx = sInitSeps.getLength() - 1; nInitSepIdx >= 0; nInitSepIdx --)
+ if (c == sInitSeps[nInitSepIdx])
{
- if (c == sInitSeps[nInitSepIdx])
- {
- separators += OUStringChar(c);
- break;
- }
- }
-
- if (!bAllowMultipleSeps && nInitSepIdx >= 0)
+ separators += OUStringChar(c);
break;
+ }
}
- }
- // If there are no most common separators then keep the initial list.
- if (!bForceCommonSeps && !separators.getLength())
- {
- if (bAllowMultipleSeps)
- separators = sInitSeps;
- else
- separators = OUStringChar(sInitSeps[0]);
+ if (nInitSepIdx >= 0)
+ break;
}
stream.Seek(nInitPos);