Hello, As Jussi reported in [1], SyncEvolution failed during XML processing for Nokia OVI. I later thought the error is gone because I used wbxml. This time I can reproduce the problem by using plain XML and here is the simple patch. I added a smlLibStrnCasecmp (no __PALM_OS__ version) and a HTML entity for '+'. This just worked for me, feel free to tweak it better for merging...
from bf4be3cb15aaa6b17f76c054ccd34959b48628f2 Mon Sep 17 00:00:00 2001 From: Chen Congwu <[email protected]> Date: Thu, 11 Feb 2010 09:56:32 +0800 Subject: [PATCH] xmltk fixes for Nokia ovi service It uses syncml:syncml as the namespace where we only support SYNCML:SYNCML before; It sends '+' as an html entity "#43" which the libary did not handles. --- diff --git a/src/syncml_tk/src/sml/lib/all/libstr.c b/src/syncml_tk/src/sml/lib/all/libstr.c index 6c6a31f..9224a58 100755 --- a/src/syncml_tk/src/sml/lib/all/libstr.c +++ b/src/syncml_tk/src/sml/lib/all/libstr.c @@ -108,6 +108,9 @@ SML_API int smlLibStrcmp(const char *pTarget, const char *pSource){ SML_API int smlLibStrncmp(const char *pTarget, const char *pSource, int count){ return strncmp((char *)pTarget, (char *)pSource, count); } +SML_API int smlLibStrnCasecmp(const char *pTarget, const char *pSource, int count){ + return strncasecmp((char *)pTarget, (char *)pSource, count); +} SML_API String_t smlLibStrchr(const char *pString, char character){ return strchr((char *)pString, character); } diff --git a/src/syncml_tk/src/sml/lib/inc/libstr.h b/src/syncml_tk/src/sml/lib/inc/libstr.h index f3ed1ed..9aba120 100755 --- a/src/syncml_tk/src/sml/lib/inc/libstr.h +++ b/src/syncml_tk/src/sml/lib/inc/libstr.h @@ -86,6 +86,7 @@ SML_API_DEF String_t smlLibStrcat(const char *pTarget, const char *pSource) LIB_FUNC; SML_API_DEF int smlLibStrcmp(const char *pTarget, const char *pSource) LIB_FUNC; SML_API_DEF int smlLibStrncmp(const char *pTarget, const char *pSource, int count) LIB_FUNC; + SML_API_DEF int smlLibStrnCasecmp(const char *pTarget, const char *pSource, int count) LIB_FUNC; SML_API_DEF String_t smlLibStrchr(const char *pString, char character) LIB_FUNC; SML_API_DEF int smlLibStrlen(const char *pString) LIB_FUNC; #endif diff --git a/src/syncml_tk/src/sml/xlt/all/xltdecxml.c b/src/syncml_tk/src/sml/xlt/all/xltdecxml.c index f35b300..427bf25 100755 --- a/src/syncml_tk/src/sml/xlt/all/xltdecxml.c +++ b/src/syncml_tk/src/sml/xlt/all/xltdecxml.c @@ -629,7 +629,8 @@ xmlHTMLEntity(xmlScannerPrivPtr_t pScanner, MemPtr_t *begin, int *len) { "gt", '>' }, { "lt", '<' }, { "apos", '\'' }, - { "quot", '"' } + { "quot", '"' }, + { "#43", '+'} }; MemPtr_t entity = pScanner->pos + 1; int i; diff --git a/src/syncml_tk/src/sml/xlt/all/xlttags.c b/src/syncml_tk/src/sml/xlt/all/xlttags.c index da3741d..52493f6 100755 --- a/src/syncml_tk/src/sml/xlt/all/xlttags.c +++ b/src/syncml_tk/src/sml/xlt/all/xlttags.c @@ -179,7 +179,7 @@ SmlPcdataExtension_t getExtByName(String_t ns) { for (;dtd->ext != SML_EXT_LAST; dtd++) { const char *dtdname=dtd->name; if (!dtdname) continue; /* skip empty names (should not appear but better be on the safe side) */ - if (dtd->ext==SML_EXT_UNDEFINED && smlLibStrncmp("SYNCML:SYNCML",ns,13)==0) { + if (dtd->ext==SML_EXT_UNDEFINED && smlLibStrnCasecmp("SYNCML:SYNCML",ns,13)==0) { // SyncML namespace is ok without checking version! ext = SML_EXT_UNDEFINED; break; -- 1.6.3.3 [1] http://bugzilla.moblin.org/show_bug.cgi?id=3182#c0 Best Regards, Congwu
0001-xmltk-fixes-for-Nokia-ovi-service.patch
Description: 0001-xmltk-fixes-for-Nokia-ovi-service.patch
_______________________________________________ os-libsynthesis mailing list [email protected] http://lists.synthesis.ch/mailman/listinfo/os-libsynthesis
