[Libreoffice-commits] core.git: starmath/source
Marcos Paulo de Souza
marcos.souza.org at gmail.com
Fri Jul 5 14:57:03 PDT 2013
starmath/source/smdetect.cxx | 42 ++++++++++++++++++++++++------------------
1 file changed, 24 insertions(+), 18 deletions(-)
New commits:
commit 05530423d3cff1391769192a62ae470500978ee6
Author: Marcos Paulo de Souza <marcos.souza.org at gmail.com>
Date: Fri Jul 5 12:03:01 2013 -0300
Solve one more issue of fdo#59642
The old MathML XML style could begin just with <math. So this commit fixes that.
This commits also fixes some documents that have the BOM marker at begin of file.
Thanks a lot to Bjoern, Caolan and Eike!
Change-Id: Ia2c3b51556e615c1e68e5e8aab4f883124c6adca
Reviewed-on: https://gerrit.libreoffice.org/4742
Reviewed-by: Björn Michaelsen <bjoern.michaelsen at canonical.com>
Tested-by: Björn Michaelsen <bjoern.michaelsen at canonical.com>
diff --git a/starmath/source/smdetect.cxx b/starmath/source/smdetect.cxx
index d82fa03..a0fc6ec 100644
--- a/starmath/source/smdetect.cxx
+++ b/starmath/source/smdetect.cxx
@@ -309,30 +309,36 @@ OUString SAL_CALL SmFilterDetect::detect( Sequence< PropertyValue >& lDescriptor
}
else
{
- const sal_uInt16 nSize = 5;
+ // 200 should be enough for the XML
+ // version, encoding and !DOCTYPE
+ // stuff I hope?
+ const sal_uInt16 nSize = 200;
sal_Char aBuffer[nSize+1];
aBuffer[nSize] = 0;
pStrm->Seek( STREAM_SEEK_TO_BEGIN );
+ pStrm->StartReadingUnicodeText(RTL_TEXTENCODING_DONTKNOW); // avoid BOM marker
sal_uLong nBytesRead = pStrm->Read( aBuffer, nSize );
- if (nBytesRead == nSize)
+ if (nBytesRead >= 6)
{
- if (0 == strncmp( "<?xml",aBuffer,nSize))
+ bool bIsMathType = false;
+ if (0 == strncmp( "<?xml", aBuffer, 5))
{
- // 200 should be enough for the XML
- // version, encoding and !DOCTYPE
- // stuff I hope?
- sal_Char aBuffer2[200];
- nBytesRead = pStrm->Read( aBuffer2, sizeof(aBuffer2) - 1);
- aBuffer2[nBytesRead] = 0;
- if (strstr( aBuffer2, "<math>" ) ||
- strstr( aBuffer2, "<math " ) ||
- strstr( aBuffer2, "<math:math " ))
- {
- static const sal_Char sFltrNm_2[] = MATHML_XML;
- static const sal_Char sTypeNm_2[] = "math_MathML_XML_Math";
- aFilterName.AssignAscii( sFltrNm_2 );
- aTypeName.AssignAscii( sTypeNm_2 );
- }
+ if (strstr( aBuffer, "<math>" ) ||
+ strstr( aBuffer, "<math " ) ||
+ strstr( aBuffer, "<math:math " ))
+ bIsMathType = true;
+ }
+ // this is the old <math tag to MathML in the beginning of the XML file
+ else if (0 == strncmp( "<math ", aBuffer, 6) ||
+ 0 == strncmp( "<math> ", aBuffer, 7) ||
+ 0 == strncmp( "<math:math> ", aBuffer, 12))
+ bIsMathType = true;
+
+ if (bIsMathType){
+ static const sal_Char sFltrNm_2[] = MATHML_XML;
+ static const sal_Char sTypeNm_2[] = "math_MathML_XML_Math";
+ aFilterName.AssignAscii( sFltrNm_2 );
+ aTypeName.AssignAscii( sTypeNm_2 );
}
}
}
More information about the Libreoffice-commits
mailing list