summaryrefslogtreecommitdiff
path: root/lingucomponent/source/languageguessing/simpleguesser.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'lingucomponent/source/languageguessing/simpleguesser.cxx')
-rw-r--r--lingucomponent/source/languageguessing/simpleguesser.cxx19
1 files changed, 17 insertions, 2 deletions
diff --git a/lingucomponent/source/languageguessing/simpleguesser.cxx b/lingucomponent/source/languageguessing/simpleguesser.cxx
index 5d7caec5a6c0..9fef4a402dbb 100644
--- a/lingucomponent/source/languageguessing/simpleguesser.cxx
+++ b/lingucomponent/source/languageguessing/simpleguesser.cxx
@@ -47,11 +47,26 @@
#include <sal/types.h>
-#include "altstrfunc.hxx"
+#include<rtl/character.hxx>
#include "simpleguesser.hxx"
using namespace std;
+static int startsAsciiCaseInsensitive(const std::string &s1, const std::string &s2){
+ size_t i;
+ int ret = 0;
+
+ size_t min = s1.length();
+ if (min > s2.length())
+ min = s2.length();
+
+ for(i = 0; i < min && s2[i] && s1[i] && !ret; i++){
+ ret = rtl::toAsciiUpperCase(s1[i]) - rtl::toAsciiUpperCase(s2[i]);
+ if(s1[i] == '.' || s2[i] == '.') {ret = 0;} //. is a neutral character
+ }
+ return ret;
+ }
+
/**
* This 3 following structures are from fingerprint.c and textcat.c
*/
@@ -197,7 +212,7 @@ void SimpleGuesser::XableLanguage(const string& lang, char mask)
for (size_t i=0; i<tables->size; i++)
{
string language(fp_Name(tables->fprint[i]));
- if (start(language,lang) == 0)
+ if (startsAsciiCaseInsensitive(language,lang) == 0)
tables->fprint_disable[i] = mask;
}
}