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


Attachment: 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

Reply via email to