diff options
-rw-r--r-- | packages/opensync/wbxml2/00-fix-includes.patch | 24 | ||||
-rw-r--r-- | packages/opensync/wbxml2/01-anonymous-support-and-misc-fixes.patch | 304 | ||||
-rw-r--r-- | packages/opensync/wbxml2/02-namespaces.patch | 164 | ||||
-rw-r--r-- | packages/opensync/wbxml2/04_saxlike_entity_parsing.patch | 90 | ||||
-rw-r--r-- | packages/opensync/wbxml2/05-syncml-fixes.patch | 124 | ||||
-rw-r--r-- | packages/opensync/wbxml2/06-no-install-docs.patch | 14 | ||||
-rw-r--r-- | packages/opensync/wbxml2/07-current_attr_null.patch | 22 | ||||
-rw-r--r-- | packages/opensync/wbxml2/08-maxsize-translation-table.patch | 17 | ||||
-rw-r--r-- | packages/opensync/wbxml2_0.9.0.bb | 24 | ||||
-rw-r--r-- | packages/opensync/wbxml2_0.9.2.bb | 29 |
10 files changed, 788 insertions, 24 deletions
diff --git a/packages/opensync/wbxml2/00-fix-includes.patch b/packages/opensync/wbxml2/00-fix-includes.patch new file mode 100644 index 0000000000..8fe415dab7 --- /dev/null +++ b/packages/opensync/wbxml2/00-fix-includes.patch @@ -0,0 +1,24 @@ +diff -urN wbxml2-0.9.2.orig/src/Makefile.am wbxml2-0.9.2/src/Makefile.am +--- wbxml2-0.9.2.orig/src/Makefile.am 2006-07-11 13:47:44.000000000 +0200 ++++ wbxml2-0.9.2/src/Makefile.am 2008-11-25 08:26:35.000000000 +0100 +@@ -1,7 +1,7 @@ + ## Process this file with automake to produce Makefile.in + + INCLUDES =\ +- -I. -I/usr/include ++ -I. + + CFLAGS =\ + -DHAVE_CONFIG_H\ +diff -urN wbxml2-0.9.2.orig/tools/Makefile.am wbxml2-0.9.2/tools/Makefile.am +--- wbxml2-0.9.2.orig/tools/Makefile.am 2006-07-11 13:47:46.000000000 +0200 ++++ wbxml2-0.9.2/tools/Makefile.am 2008-11-25 08:36:54.000000000 +0100 +@@ -1,7 +1,7 @@ + ## Process this file with automake to produce Makefile.in + + INCLUDES =\ +- -I. -I../src -I/usr/include ++ -I. -I../src + + CFLAGS =\ + -DHAVE_CONFIG_H\ diff --git a/packages/opensync/wbxml2/01-anonymous-support-and-misc-fixes.patch b/packages/opensync/wbxml2/01-anonymous-support-and-misc-fixes.patch new file mode 100644 index 0000000000..225c581c38 --- /dev/null +++ b/packages/opensync/wbxml2/01-anonymous-support-and-misc-fixes.patch @@ -0,0 +1,304 @@ +diff -Nru wbxml2-0.9.2.orig/bootstrap wbxml2-0.9.2/bootstrap +--- wbxml2-0.9.2.orig/bootstrap 2008-01-10 19:03:28.000000000 +0000 ++++ wbxml2-0.9.2/bootstrap 2008-01-10 19:03:44.000000000 +0000 +@@ -1,8 +1,2 @@ +-#! /bin/sh +-libtoolize +-aclocal +-autoheader +-# automake --foreign --add-missing --copy +-automake --add-missing +-autoconf +-./configure --prefix=/usr ++#!/bin/sh ++autoreconf -i +diff -Nru wbxml2-0.9.2.orig/configure.in wbxml2-0.9.2/configure.in +--- wbxml2-0.9.2.orig/configure.in 2008-01-10 19:03:28.000000000 +0000 ++++ wbxml2-0.9.2/configure.in 2008-01-10 19:03:44.000000000 +0000 +@@ -1,11 +1,11 @@ + dnl Process this file with autoconf to produce a configure script. + AC_INIT(doxygen.h) +-AM_INIT_AUTOMAKE(wbxml2, 0.9.0) ++AM_INIT_AUTOMAKE(wbxml2, 0.9.2) + AM_CONFIG_HEADER(config.h) + + + dnl Define common variables +-VERSION="0.9.0" ++VERSION="0.9.2" + AC_SUBST(VERSION) + RELEASE="1" + AC_SUBST(RELEASE) +diff -Nru wbxml2-0.9.2.orig/libwbxml2.pc.in wbxml2-0.9.2/libwbxml2.pc.in +--- wbxml2-0.9.2.orig/libwbxml2.pc.in 2008-01-10 19:03:28.000000000 +0000 ++++ wbxml2-0.9.2/libwbxml2.pc.in 2008-01-10 19:03:44.000000000 +0000 +@@ -8,4 +8,4 @@ + Version: @VERSION@ + Requires: libxml-2.0 >= 2.6 + Libs: -L${libdir} -lwbxml2 +-Cflags: -I${includedir} ++Cflags: -I${includedir} -DHAVE_EXPAT -D_REENTRANT -DWBXML_ENCODER_USE_STRTBL -DWBXML_SUPPORT_WML -DWBXML_SUPPORT_WTA -DWBXML_SUPPORT_SI -DWBXML_SUPPORT_SL -DWBXML_SUPPORT_CO -DWBXML_SUPPORT_PROV -DWBXML_SUPPORT_EMN -DWBXML_SUPPORT_DRMREL -DWBXML_SUPPORT_OTA_SETTINGS -DWBXML_SUPPORT_SYNCML -DWBXML_SUPPORT_WV -DWBXML_SUPPORT_AIRSYNC +--- wbxml2-0.9.2.orig/src/Makefile.am 2008-01-10 19:03:28.000000000 +0000 ++++ wbxml2-0.9.2/src/Makefile.am 2008-01-10 19:03:44.000000000 +0000 +@@ -3,7 +3,7 @@ + INCLUDES =\ + -I. -I/usr/include + +-CFLAGS =\ ++AM_CFLAGS =\ + -DHAVE_CONFIG_H\ + -DHAVE_EXPAT\ + -D_REENTRANT\ +@@ -20,9 +20,7 @@ + -DWBXML_SUPPORT_SYNCML\ + -DWBXML_SUPPORT_WV\ + -DWBXML_SUPPORT_AIRSYNC\ +- -Wall -Wimplicit -Wreturn-type -Wunused -Wswitch -Wcomment -Wuninitialized -Wparentheses -Wpointer-arith -Wmissing-prototypes\ +- -O3\ +- -g ++ -Wall -g + + lib_LTLIBRARIES = libwbxml2.la + +diff -Nru wbxml2-0.9.2.orig/src/wbxml_encoder.c wbxml2-0.9.2/src/wbxml_encoder.c +--- wbxml2-0.9.2.orig/src/wbxml_encoder.c 2008-01-10 19:03:28.000000000 +0000 ++++ wbxml2-0.9.2/src/wbxml_encoder.c 2008-01-10 19:03:44.000000000 +0000 +@@ -153,6 +153,7 @@ + WB_BOOL use_strtbl; /**< Do we use String Table when generating WBXML output ? (default: YES) */ + #endif /* WBXML_ENCODER_USE_STRTBL */ + WB_BOOL xml_encode_header; /**< Do we generate XML Header ? */ ++ WB_BOOL produce_anonymous; /**< Do we produce anonymous documents? (default: NO) */ + WBXMLVersion wbxml_version; /**< WBXML Version to use (when generating WBXML output) */ + WBXMLCharsetMIBEnum output_charset; /**< Output charset encoding */ + WB_BOOL flow_mode; /**< Is Flow Mode encoding activated ? */ +@@ -400,6 +401,7 @@ + encoder->cdata = NULL; + + encoder->xml_encode_header = TRUE; ++ encoder->produce_anonymous = FALSE; + + /* Default Version: WBXML 1.3 */ + encoder->wbxml_version = WBXML_VERSION_13; +@@ -509,6 +511,15 @@ + } + + ++WBXML_DECLARE(void) wbxml_encoder_set_produce_anonymous(WBXMLEncoder *encoder, WB_BOOL set_anonymous) ++{ ++ if (encoder == NULL) ++ return; ++ ++ encoder->produce_anonymous = set_anonymous; ++} ++ ++ + WBXML_DECLARE(void) wbxml_encoder_set_wbxml_version(WBXMLEncoder *encoder, WBXMLVersion version) + { + if (encoder == NULL) +@@ -1464,7 +1475,8 @@ + + /* Encode Public ID */ + /* If WBXML Public Id is '0x01' (unknown), or we forced it, add the XML Public ID in the String Table */ +- if (encoder->textual_publicid || (public_id == WBXML_PUBLIC_ID_UNKNOWN)) ++ if ((encoder->textual_publicid || (public_id == WBXML_PUBLIC_ID_UNKNOWN)) && ++ !encoder->produce_anonymous) + { + if (encoder->lang->publicID->xmlPublicID != NULL) + { +@@ -1601,7 +1613,7 @@ + } + else { + /* Search tag in Tags Table */ +- if ((tag = wbxml_tables_get_tag_from_xml(encoder->lang, wbxml_tag_get_xml_name(node->name))) != NULL) ++ if ((tag = wbxml_tables_get_tag_from_xml(encoder->lang, encoder->tagCodePage, wbxml_tag_get_xml_name(node->name))) != NULL) + { + token = tag->wbxmlToken; + page = tag->wbxmlCodePage; +@@ -2897,7 +2909,7 @@ + /* Date and time can be encoded as OPAQUE data or as a string as specified in [ISO8601]. For now we + * keep the string... but if someone wants to code the Date and time encoding function :-) + */ +- /* return wbxml_encode_wv_datetime(encoder, buffer); */ ++ return wbxml_encode_wv_datetime(encoder, buffer); + break; + case WBXML_WV_DATA_TYPE_BINARY: + /** @todo Binary Encoding !! */ +diff -Nru wbxml2-0.9.2.orig/src/wbxml_encoder.h wbxml2-0.9.2/src/wbxml_encoder.h +--- wbxml2-0.9.2.orig/src/wbxml_encoder.h 2008-01-10 19:03:28.000000000 +0000 ++++ wbxml2-0.9.2/src/wbxml_encoder.h 2008-01-10 19:03:44.000000000 +0000 +@@ -118,6 +118,13 @@ + WBXML_DECLARE(void) wbxml_encoder_set_use_strtbl(WBXMLEncoder *encoder, WB_BOOL use_strtbl); + + /** ++ * @brief Set if we want to produce anonymous WBXML documents [Default: FALSE] ++ * @param encoder [in] The WBXML encoder ++ * @param set_anonymous [in] TRUE to produce anonymous documents, FALSE otherwise ++ */ ++WBXML_DECLARE(void) wbxml_encoder_set_produce_anonymous(WBXMLEncoder *encoder, WB_BOOL set_anonymous); ++ ++/** + * @brief Set the WBXML Version of the output document, when generating WBXML [Default: 'WBXML_VERSION_TOKEN_13' (1.3)] + * @param encoder [in] The WBXML Encoder + * @param version [in] The WBXML Version +diff -Nru wbxml2-0.9.2.orig/src/wbxml.h wbxml2-0.9.2/src/wbxml.h +--- wbxml2-0.9.2.orig/src/wbxml.h 2008-01-10 19:03:28.000000000 +0000 ++++ wbxml2-0.9.2/src/wbxml.h 2008-01-10 19:03:44.000000000 +0000 +@@ -285,6 +285,7 @@ + WBXMLVersion wbxml_version; /**< WBXML Version */ + WB_BOOL keep_ignorable_ws; /**< Keep Ignorable Whitespaces (Default: FALSE) */ + WB_BOOL use_strtbl; /**< Generate String Table (Default: TRUE) */ ++ WB_BOOL produce_anonymous; /**< Produce an anonymous document (Default: FALSE) */ + } WBXMLGenWBXMLParams; + + +diff -Nru wbxml2-0.9.2.orig/src/wbxml_tables.c wbxml2-0.9.2/src/wbxml_tables.c +--- wbxml2-0.9.2.orig/src/wbxml_tables.c 2008-01-10 19:03:28.000000000 +0000 ++++ wbxml2-0.9.2/src/wbxml_tables.c 2008-01-10 19:03:44.000000000 +0000 +@@ -2992,17 +2992,40 @@ + + + WBXML_DECLARE(const WBXMLTagEntry *) wbxml_tables_get_tag_from_xml(const WBXMLLangEntry *lang_table, ++ const int cur_code_page, + const WB_UTINY *xml_name) + { +- WB_ULONG i = 0; ++ WB_ULONG i; ++ WB_BOOL found_current = FALSE; + + if ((lang_table == NULL) || (lang_table->tagTable == NULL) || (xml_name == NULL)) + return NULL; + +- while (lang_table->tagTable[i].xmlName != NULL) { +- if (WBXML_STRCMP(lang_table->tagTable[i].xmlName, xml_name) == 0) +- return &(lang_table->tagTable[i]); +- i++; ++ /* First off, try to find it in the current code page, if provided */ ++ for (i = 0; cur_code_page >= 0 && lang_table->tagTable[i].xmlName != NULL; i++) { ++ const WBXMLTagEntry *entry = &lang_table->tagTable[i]; ++ ++ if (entry->wbxmlCodePage == cur_code_page) { ++ found_current = TRUE; ++ ++ if (WBXML_STRCMP(entry->xmlName, xml_name) == 0) ++ return entry; ++ } else { ++ if (found_current) ++ break; ++ } ++ } ++ ++ /* Then try all others */ ++ for (i = 0; lang_table->tagTable[i].xmlName != NULL; i++) { ++ const WBXMLTagEntry *entry = &lang_table->tagTable[i]; ++ ++ /* We've already searched the current code page */ ++ if (cur_code_page >= 0 && entry->wbxmlCodePage == cur_code_page) ++ continue; ++ ++ if (WBXML_STRCMP(entry->xmlName, xml_name) == 0) ++ return entry; + } + + return NULL; +diff -Nru wbxml2-0.9.2.orig/src/wbxml_tables.h wbxml2-0.9.2/src/wbxml_tables.h +--- wbxml2-0.9.2.orig/src/wbxml_tables.h 2008-01-10 19:03:28.000000000 +0000 ++++ wbxml2-0.9.2/src/wbxml_tables.h 2008-01-10 19:03:44.000000000 +0000 +@@ -255,10 +255,12 @@ + /** + * @brief Search for a Tag Entry in Language Table, given the XML Name of the Tag + * @param lang_table The Language Table to search in ++ * @param cur_code_page The current code page so that it can be searched first, or -1 to start from the first one. + * @param xml_name The XML Name of the Tag to search + * @return The Tag Entry of this XML Name in Language Table, or NULL if not found + */ + WBXML_DECLARE(const WBXMLTagEntry *) wbxml_tables_get_tag_from_xml(const WBXMLLangEntry *lang_table, ++ const int cur_code_page, + const WB_UTINY *xml_name); + + /** +diff -Nru wbxml2-0.9.2.orig/src/wbxml_tree.c wbxml2-0.9.2/src/wbxml_tree.c +--- wbxml2-0.9.2.orig/src/wbxml_tree.c 2008-01-10 19:03:28.000000000 +0000 ++++ wbxml2-0.9.2/src/wbxml_tree.c 2008-01-10 19:03:44.000000000 +0000 +@@ -137,6 +137,9 @@ + + /* Use String Table */ + wbxml_encoder_set_use_strtbl(wbxml_encoder, TRUE); ++ ++ /* Don't produce an anonymous document by default */ ++ wbxml_encoder_set_produce_anonymous(wbxml_encoder, FALSE); + } + else { + /* WBXML Version */ +@@ -154,6 +157,10 @@ + /* String Table */ + wbxml_encoder_set_use_strtbl(wbxml_encoder, params->use_strtbl); + ++ /* Produce an anonymous document? */ ++ wbxml_encoder_set_produce_anonymous(wbxml_encoder, ++ params->produce_anonymous); ++ + /** @todo Add parameter to call : wbxml_encoder_set_output_charset() */ + } + +@@ -455,7 +462,7 @@ + WBXMLTag *tag = NULL; + + /* Search for XML Tag Name in Table */ +- if ((tag_entry = wbxml_tables_get_tag_from_xml(lang_table, name)) != NULL) { ++ if ((tag_entry = wbxml_tables_get_tag_from_xml(lang_table, -1, name)) != NULL) { + /* Found : token tag */ + tag = wbxml_tag_create_token(tag_entry); + } +@@ -921,6 +928,7 @@ + result->lang = wbxml_tables_get_table(lang); + result->root = NULL; + result->orig_charset = orig_charset; ++ result->cur_code_page = 0; + + return result; + } +@@ -1085,7 +1093,9 @@ + WBXMLTag *tag = NULL; + + /* Search for XML Tag Name in Table */ +- if ((tag_entry = wbxml_tables_get_tag_from_xml(tree->lang, (const WB_UTINY *) name)) != NULL) { ++ if ((tag_entry = wbxml_tables_get_tag_from_xml(tree->lang, tree->cur_code_page, (const WB_UTINY *) name)) != NULL) { ++ tree->cur_code_page = tag_entry->wbxmlCodePage; ++ + /* Found : token tag */ + tag = wbxml_tag_create_token(tag_entry); + } +diff -Nru wbxml2-0.9.2.orig/src/wbxml_tree.h wbxml2-0.9.2/src/wbxml_tree.h +--- wbxml2-0.9.2.orig/src/wbxml_tree.h 2008-01-10 19:03:28.000000000 +0000 ++++ wbxml2-0.9.2/src/wbxml_tree.h 2008-01-10 19:03:44.000000000 +0000 +@@ -97,6 +97,7 @@ + const WBXMLLangEntry *lang; /**< Language Table */ + WBXMLTreeNode *root; /**< Root Element */ + WBXMLCharsetMIBEnum orig_charset; /**< Charset encoding of original document */ ++ WB_UTINY cur_code_page;/**< Last seen code page */ + } WBXMLTree; + + +diff -Nru wbxml2-0.9.2.orig/tools/Makefile.am wbxml2-0.9.2/tools/Makefile.am +--- wbxml2-0.9.2.orig/tools/Makefile.am 2008-01-10 19:03:28.000000000 +0000 ++++ wbxml2-0.9.2/tools/Makefile.am 2008-01-10 19:03:44.000000000 +0000 +@@ -3,7 +3,7 @@ + INCLUDES =\ + -I. -I../src -I/usr/include + +-CFLAGS =\ ++AM_CFLAGS =\ + -DHAVE_CONFIG_H\ + -DHAVE_EXPAT\ + -D_REENTRANT\ +@@ -20,9 +20,7 @@ + -DWBXML_SUPPORT_SYNCML\ + -DWBXML_SUPPORT_WV\ + -DWBXML_SUPPORT_AIRSYNC\ +- -Wall -Wimplicit -Wreturn-type -Wunused -Wswitch -Wcomment -Wuninitialized -Wparentheses -Wpointer-arith -Wmissing-prototypes\ +- -O3\ +- -g ++ -Wall -g + + bin_PROGRAMS = wbxml2xml xml2wbxml + diff --git a/packages/opensync/wbxml2/02-namespaces.patch b/packages/opensync/wbxml2/02-namespaces.patch new file mode 100644 index 0000000000..3c8efcb350 --- /dev/null +++ b/packages/opensync/wbxml2/02-namespaces.patch @@ -0,0 +1,164 @@ +diff -Nru wbxml2-0.9.2.patched/src/wbxml_tables.c wbxml2-0.9.2/src/wbxml_tables.c +--- wbxml2-0.9.2.patched/src/wbxml_tables.c 2008-01-10 19:05:45.000000000 +0000 ++++ wbxml2-0.9.2/src/wbxml_tables.c 2008-01-10 19:04:55.000000000 +0000 +@@ -2806,6 +2806,46 @@ + { NULL, 0x00, 0x00 } + }; + ++/* NOTE: ++ * These namespace names differ from the Microsoft-assigned namespaces. The ++ * reason for the difference is that the Microsoft-assigned names are not ++ * valid URI's and hence produce warning messages when processed by some ++ * libraries. The mapping is as follows: ++ * ++ * Microsoft Ours ++ * --------- ---- ++ * AirSync: http://synce.org/formats/airsync_wm5/airsync ++ * POOMCONTACTS: http://synce.org/formats/airsync_wm5/contacts ++ * POOMMAIL: http://synce.org/formats/airsync_wm5/mail ++ * AirNotify: http://synce.org/formats/airsync_wm5/airnotify ++ * POOMCAL: http://synce.org/formats/airsync_wm5/calendar ++ * Move: http://synce.org/formats/airsync_wm5/move ++ * GetItemEstimate: http://synce.org/formats/airsync_wm5/getitemestimate ++ * FolderHierarchy: http://synce.org/formats/airsync_wm5/folderhierarchy ++ * MeetingResponse: http://synce.org/formats/airsync_wm5/meetingresponse ++ * POOMTASKS: http://synce.org/formats/airsync_wm5/tasks ++ * ResolveRecipients: http://synce.org/formats/airsync_wm5/resolverecipients ++ * ValidateCert: http://synce.org/formats/airsync_wm5/validatecert ++ * POOMCONTACTS2: http://synce.org/formats/airsync_wm5/contacts2 ++ * ++ */ ++const WBXMLNameSpaceEntry sv_airsync_ns_table[] = { ++ { "http://synce.org/formats/airsync_wm5/airsync", 0x00 }, /**< Code Page 0 */ ++ { "http://synce.org/formats/airsync_wm5/contacts", 0x01 }, /**< Code Page 1 */ ++ { "http://synce.org/formats/airsync_wm5/mail", 0x02 }, /**< Code Page 2 */ ++ { "http://synce.org/formats/airsync_wm5/airnotify", 0x03 }, /**< Code Page 3 */ ++ { "http://synce.org/formats/airsync_wm5/calendar", 0x04 }, /**< Code Page 4 */ ++ { "http://synce.org/formats/airsync_wm5/move", 0x05 }, /**< Code Page 5 */ ++ { "http://synce.org/formats/airsync_wm5/getitemestimate", 0x06 }, /**< Code Page 6 */ ++ { "http://synce.org/formats/airsync_wm5/folderhierarchy", 0x07 }, /**< Code Page 7 */ ++ { "http://synce.org/formats/airsync_wm5/meetingresponse", 0x08 }, /**< Code Page 8 */ ++ { "http://synce.org/formats/airsync_wm5/tasks", 0x09 }, /**< Code Page 9 */ ++ { "http://synce.org/formats/airsync_wm5/resolverecipients", 0x0a }, /**< Code Page 10 */ ++ { "http://synce.org/formats/airsync_wm5/validatecert", 0x0b }, /**< Code Page 11 */ ++ { "http://synce.org/formats/airsync_wm5/contacts2", 0x0c }, /**< Code Page 12 */ ++ { NULL, 0x00 } ++}; ++ + #endif /* WBXML_SUPPORT_AIRSYNC */ + + +@@ -2885,7 +2925,7 @@ + #endif /* WBXML_SUPPORT_WV */ + + #if defined( WBXML_SUPPORT_AIRSYNC ) +- { WBXML_LANG_AIRSYNC, &sv_airsync_public_id, sv_airsync_tag_table, NULL, NULL, NULL, NULL }, ++ { WBXML_LANG_AIRSYNC, &sv_airsync_public_id, sv_airsync_tag_table, sv_airsync_ns_table, NULL, NULL, NULL }, + #endif /* WBXML_SUPPORT_AIRSYNC */ + + { WBXML_LANG_UNKNOWN, NULL, NULL, NULL, NULL, NULL, NULL } +@@ -3169,3 +3209,21 @@ + + return NULL; + } ++ ++WBXML_DECLARE(WB_UTINY) wbxml_tables_get_code_page(const WBXMLNameSpaceEntry *ns_table, const WB_TINY* xmlns) ++{ ++ WB_ULONG i = 0; ++ ++ if (ns_table == NULL) ++ return NULL; ++ ++ while (ns_table[i].xmlNameSpace != NULL) ++ { ++ if (strcmp(ns_table[i].xmlNameSpace, xmlns) == 0) ++ return ns_table[i].wbxmlCodePage; ++ ++ i++; ++ } ++ ++ return NULL; ++} +diff -Nru wbxml2-0.9.2.patched/src/wbxml_tables.h wbxml2-0.9.2/src/wbxml_tables.h +--- wbxml2-0.9.2.patched/src/wbxml_tables.h 2008-01-10 19:05:45.000000000 +0000 ++++ wbxml2-0.9.2/src/wbxml_tables.h 2008-01-10 19:04:55.000000000 +0000 +@@ -310,6 +310,9 @@ + WBXML_DECLARE(const WB_TINY *) wbxml_tables_get_xmlns(const WBXMLNameSpaceEntry *ns_table, + WB_UTINY code_page); + ++WBXML_DECLARE(WB_UTINY) wbxml_tables_get_code_page(const WBXMLNameSpaceEntry *ns_table, ++ const WB_TINY* xmlns); ++ + /** @} */ + + #ifdef __cplusplus +diff -Nru wbxml2-0.9.2.patched/src/wbxml_tree.c wbxml2-0.9.2/src/wbxml_tree.c +--- wbxml2-0.9.2.patched/src/wbxml_tree.c 2008-01-10 19:05:45.000000000 +0000 ++++ wbxml2-0.9.2/src/wbxml_tree.c 2008-01-10 19:04:55.000000000 +0000 +@@ -34,6 +34,7 @@ + + #include "wbxml.h" + ++#define WBXML_NAMESPACE_SEPARATOR ':' + + /*************************************************** + * Public Functions +@@ -201,9 +202,9 @@ + *tree = NULL; + + /* Create Expat XML Parser */ +- if ((xml_parser = XML_ParserCreate(NULL)) == NULL) ++ if ((xml_parser = XML_ParserCreateNS(NULL, WBXML_NAMESPACE_SEPARATOR)) == NULL) + return WBXML_ERROR_NOT_ENOUGH_MEMORY; +- ++ + /* Init context */ + wbxml_tree_clb_ctx.current = NULL; + wbxml_tree_clb_ctx.error = WBXML_OK; +@@ -1091,9 +1092,32 @@ + const WBXMLTagEntry *tag_entry = NULL; + WBXMLTreeNode *node = NULL; + WBXMLTag *tag = NULL; +- ++ WB_UTINY *sep = NULL; ++ const WB_UTINY *namespace_name = NULL; ++ const WB_UTINY *element_name = NULL; ++ ++ /* Separate the namespace from the element name */ ++ sep = (WB_UTINY *)strrchr((const WB_TINY *) name, WBXML_NAMESPACE_SEPARATOR); ++ if (sep != NULL) { ++ /* Temporarily split the string by changing the separater to a null-terminator */ ++ *sep = '\0'; ++ ++ namespace_name = name; ++ element_name = sep+1; ++ } ++ else { ++ /* No namespace, so just set it to an empty string (specifically, the null-terminator at the end of the elemet name */ ++ namespace_name = name + strlen((const WB_TINY *) name); ++ element_name = name; ++ } ++ ++ WBXML_DEBUG((WBXML_CONV, "Parsed element name: Namespace='%s', Element='%s'", namespace_name, element_name)); ++ ++ /* Update the current code page to match the one specified by the namespace */ ++ tree->cur_code_page = wbxml_tables_get_code_page(tree->lang->nsTable, (const WB_TINY *) namespace_name); ++ + /* Search for XML Tag Name in Table */ +- if ((tag_entry = wbxml_tables_get_tag_from_xml(tree->lang, tree->cur_code_page, (const WB_UTINY *) name)) != NULL) { ++ if ((tag_entry = wbxml_tables_get_tag_from_xml(tree->lang, tree->cur_code_page, element_name)) != NULL) { + tree->cur_code_page = tag_entry->wbxmlCodePage; + + /* Found : token tag */ +@@ -1104,6 +1128,11 @@ + tag = wbxml_tag_create_literal(name); + } + ++ if (sep != NULL) { ++ /* We are done with the element and namespace names, so put the separator character back */ ++ *sep = WBXML_NAMESPACE_SEPARATOR; ++ } ++ + if (tag == NULL) + return NULL; + diff --git a/packages/opensync/wbxml2/04_saxlike_entity_parsing.patch b/packages/opensync/wbxml2/04_saxlike_entity_parsing.patch new file mode 100644 index 0000000000..43d915b8b7 --- /dev/null +++ b/packages/opensync/wbxml2/04_saxlike_entity_parsing.patch @@ -0,0 +1,90 @@ +diff --git a/src/wbxml_parser.c b/src/wbxml_parser.c +index c022e00..bea2062 100644 +--- a/src/wbxml_parser.c ++++ b/src/wbxml_parser.c +@@ -43,6 +43,7 @@ + */ + + #include "wbxml.h" ++#include <assert.h> + + + /* Memory management related defines */ +@@ -56,10 +57,6 @@ + /** For unknown Tag Name or Attribute Name (in Best Effort Mode) */ + #define WBXML_PARSER_UNKNOWN_STRING ((WB_UTINY *)"unknown") + +-/** If you want to modify this define, change the 'entcode' variable length in parse_entity() too please */ +-#define WBXML_PARSER_MAX_ENTITY_CODE 999999 +- +- + /** + * @brief The WBXML Application Token types + */ +@@ -1661,7 +1658,6 @@ static WBXMLError parse_extension(WBXMLParser *parser, WBXMLTokenType code_space + */ + static WBXMLError parse_entity(WBXMLParser *parser, WBXMLBuffer **result) + { +- WB_TINY entity[10]; + WB_ULONG code = 0; + WBXMLError ret = WBXML_OK; + +@@ -1674,23 +1670,44 @@ static WBXMLError parse_entity(WBXMLParser *parser, WBXMLBuffer **result) + return ret; + } + +- /* Build Entity */ +- if ( code > WBXML_PARSER_MAX_ENTITY_CODE ) { +- return WBXML_ERROR_ENTITY_CODE_OVERFLOW; +- } +- +- /** +- * WARNING: If you change the entity variable length (10 chars), change too +- * 'WBXML_PARSER_MAX_ENTITY_CODE' defined in this file ! ++ /* ++ * Convert the UCS-4 code to a UTF-8 encoded string. + */ +- sprintf(entity, "&#%u;", code); + +- /* Create result buffer */ +- if ( (*result = wbxml_buffer_create_from_cstr(entity)) == NULL ) { +- return WBXML_ERROR_NOT_ENOUGH_MEMORY; ++ assert(code < 0x80000000); ++ ++ if (code < 0x80) ++ { ++ /* For codes under 0x80, we don't need any fancy formatting. */ ++ WB_TINY entity[2] = {(WB_TINY)code, 0}; ++ ++ /* Create result buffer */ ++ if ( (*result = wbxml_buffer_create_from_cstr(entity)) == NULL ) { ++ return WBXML_ERROR_NOT_ENOUGH_MEMORY; ++ } ++ ++ return WBXML_OK; ++ } ++ else ++ { ++ WB_TINY masks[5] = {0xFC, 0xF8, 0xF0, 0xE0, 0xC0}; ++ WB_TINY entity[7] = {0, 0, 0, 0, 0, 0, 0}; ++ ++ int index = 5; ++ while (code >= 0x40) ++ { ++ entity[index] = 0x80 | (code & 0x3F); ++ code >>= 6; index--; ++ } ++ entity[index] = masks[index] | code; ++ ++ /* Create result buffer */ ++ if ( (*result = wbxml_buffer_create_from_cstr(entity + index)) == NULL ) { ++ return WBXML_ERROR_NOT_ENOUGH_MEMORY; ++ } ++ ++ return WBXML_OK; + } +- +- return WBXML_OK; + } + + diff --git a/packages/opensync/wbxml2/05-syncml-fixes.patch b/packages/opensync/wbxml2/05-syncml-fixes.patch new file mode 100644 index 0000000000..855b100779 --- /dev/null +++ b/packages/opensync/wbxml2/05-syncml-fixes.patch @@ -0,0 +1,124 @@ +diff -ru wbxml2-0.9.2-original/src/wbxml_encoder.c wbxml2-0.9.2/src/wbxml_encoder.c +--- wbxml2-0.9.2-original/src/wbxml_encoder.c 2006-07-11 13:47:45.000000000 +0200 ++++ wbxml2-0.9.2/src/wbxml_encoder.c 2008-06-20 11:24:17.000000000 +0200 +@@ -1936,7 +1936,8 @@ + #if defined( WBXML_SUPPORT_SYNCML ) + /* If this is a SyncML document ? */ + if ((encoder->lang->langID == WBXML_LANG_SYNCML_SYNCML10) || +- (encoder->lang->langID == WBXML_LANG_SYNCML_SYNCML11)) ++ (encoder->lang->langID == WBXML_LANG_SYNCML_SYNCML11) || ++ (encoder->lang->langID == WBXML_LANG_SYNCML_SYNCML12)) + { + /** @todo We must check too if we are in a <Type> */ + +@@ -4019,7 +4020,8 @@ + #if defined( WBXML_SUPPORT_SYNCML ) + /* Change text in <Type> from "application/vnd.syncml-devinf+wbxml" to "application/vnd.syncml-devinf+xml" */ + if (((encoder->lang->langID == WBXML_LANG_SYNCML_SYNCML10) || +- (encoder->lang->langID == WBXML_LANG_SYNCML_SYNCML11)) && ++ (encoder->lang->langID == WBXML_LANG_SYNCML_SYNCML11) || ++ (encoder->lang->langID == WBXML_LANG_SYNCML_SYNCML12)) && + (encoder->current_tag != NULL) && + (encoder->current_tag->wbxmlCodePage == 0x01 ) && + (encoder->current_tag->wbxmlToken == 0x13 ) && +diff -ru wbxml2-0.9.2-original/src/wbxml_tables.c wbxml2-0.9.2/src/wbxml_tables.c +--- wbxml2-0.9.2-original/src/wbxml_tables.c 2006-07-11 13:47:45.000000000 +0200 ++++ wbxml2-0.9.2/src/wbxml_tables.c 2008-06-20 11:28:18.000000000 +0200 +@@ -1601,21 +1601,21 @@ + #if defined( WBXML_SUPPORT_SYNCML ) + + const WBXMLNameSpaceEntry sv_syncml_syncml10_ns_table[] = { +- { "syncml:SYNCML1.0", 0x00 }, /**< Code Page 0: SYNCML1.0 */ ++ { "SYNCML:SYNCML1.0", 0x00 }, /**< Code Page 0: SYNCML1.0 */ + { "syncml:metinf", 0x01 }, /**< Code Page 1: metinf */ + { NULL, 0x00 } + }; + + + const WBXMLNameSpaceEntry sv_syncml_syncml11_ns_table[] = { +- { "syncml:SYNCML1.1", 0x00 }, /**< Code Page 0: SYNCML1.1 */ ++ { "SYNCML:SYNCML1.1", 0x00 }, /**< Code Page 0: SYNCML1.1 */ + { "syncml:metinf", 0x01 }, /**< Code Page 1: metinf */ + { NULL, 0x00 } + }; + + + const WBXMLNameSpaceEntry sv_syncml_syncml12_ns_table[] = { +- { "syncml:SYNCML1.2", 0x00 }, /**< Code Page 0: SYNCML1.2 */ ++ { "SYNCML:SYNCML1.2", 0x00 }, /**< Code Page 0: SYNCML1.2 */ + { "syncml:metinf", 0x01 }, /**< Code Page 1: metinf */ + { NULL, 0x00 } + }; +diff -ru wbxml2-0.9.2-original/src/wbxml_tree.c wbxml2-0.9.2/src/wbxml_tree.c +--- wbxml2-0.9.2-original/src/wbxml_tree.c 2006-07-11 13:47:45.000000000 +0200 ++++ wbxml2-0.9.2/src/wbxml_tree.c 2008-06-20 11:33:54.000000000 +0200 +@@ -244,7 +244,10 @@ + } + else { + if ((ret = wbxml_tree_clb_ctx.error) != WBXML_OK) ++ { ++ WBXML_ERROR((WBXML_CONV, "xml2wbxml conversion failed - context error %i", ret)); + wbxml_tree_destroy(wbxml_tree_clb_ctx.tree); ++ } + else + *tree = wbxml_tree_clb_ctx.tree; + } +@@ -798,11 +801,20 @@ + { + /* Check <Type> value */ + if ((tmp_node->children != NULL) && (tmp_node->children->type == WBXML_TREE_TEXT_NODE)) { ++ /* This function is used by wbxml and xml callbacks. ++ * So content types must be handled for both situations. ++ */ ++ + /* application/vnd.syncml-devinf+wbxml */ + if (wbxml_buffer_compare_cstr(tmp_node->children->content, "application/vnd.syncml-devinf+wbxml") == 0) { + return WBXML_SYNCML_DATA_TYPE_WBXML; + } + ++ /* application/vnd.syncml-devinf+xml */ ++ if (wbxml_buffer_compare_cstr(tmp_node->children->content, "application/vnd.syncml-devinf+xml") == 0) { ++ return WBXML_SYNCML_DATA_TYPE_NORMAL; ++ } ++ + /* text/clear */ + if (wbxml_buffer_compare_cstr(tmp_node->children->content, "text/clear") == 0) { + return WBXML_SYNCML_DATA_TYPE_CLEAR; +diff -ru wbxml2-0.9.2-original/src/wbxml_tree_clb_xml.c wbxml2-0.9.2/src/wbxml_tree_clb_xml.c +--- wbxml2-0.9.2-original/src/wbxml_tree_clb_xml.c 2006-07-11 13:47:46.000000000 +0200 ++++ wbxml2-0.9.2/src/wbxml_tree_clb_xml.c 2008-06-20 11:39:27.000000000 +0200 +@@ -142,7 +142,7 @@ + #if defined( WBXML_SUPPORT_SYNCML ) + + /* If this is an embedded (not root) "DevInf" document, skip it */ +- if ((WBXML_STRCMP(localName, "DevInf") == 0) && ++ if ((WBXML_STRCMP(localName, "syncml:devinf:DevInf") == 0) && + (tree_ctx->current != NULL)) + { + tree_ctx->skip_start = XML_GetCurrentByteIndex(tree_ctx->xml_parser); +@@ -192,7 +192,7 @@ + /* End of skipped node */ + + #if defined( WBXML_SUPPORT_SYNCML ) +- if (WBXML_STRCMP(localName, "DevInf") == 0) { ++ if (WBXML_STRCMP(localName, "syncml:devinf:DevInf") == 0) { + /* Get embedded DevInf Document */ + devinf_doc = wbxml_buffer_create(tree_ctx->input_buff + tree_ctx->skip_start, + XML_GetCurrentByteIndex(tree_ctx->xml_parser) - tree_ctx->skip_start, +@@ -210,6 +210,16 @@ + return; + } + ++ /* Add doctype to give the XML parser a chance ++ * SyncML 1.2 is downward compatible to older versions. ++ */ ++ if (!wbxml_buffer_insert_cstr(devinf_doc, "<!DOCTYPE DevInf PUBLIC '-//SYNCML//DTD DevInf 1.2//EN' 'http://www.openmobilealliance.org/tech/DTD/OMA-SyncML-Device_Information-DTD-1.2.dtd' >\n", 0)) ++ { ++ tree_ctx->error = WBXML_ERROR_NOT_ENOUGH_MEMORY; ++ wbxml_buffer_destroy(devinf_doc); ++ return; ++ } ++ + WBXML_DEBUG((WBXML_PARSER, "\t DevInf Doc : '%s'", wbxml_buffer_get_cstr(devinf_doc))); + + /* Parse 'DevInf' Document */ diff --git a/packages/opensync/wbxml2/06-no-install-docs.patch b/packages/opensync/wbxml2/06-no-install-docs.patch new file mode 100644 index 0000000000..acfe692d90 --- /dev/null +++ b/packages/opensync/wbxml2/06-no-install-docs.patch @@ -0,0 +1,14 @@ +diff -urP wbxml2-0.9.2/Makefile.am wbxml2-0.9.2.x/Makefile.am +--- wbxml2-0.9.2/Makefile.am 2006-07-11 14:47:43.000000000 +0300 ++++ wbxml2-0.9.2.x/Makefile.am 2006-08-08 22:26:18.000000000 +0300 +@@ -24,10 +24,6 @@ + TODO\ + doxygen.h + +-install-data-local: +- $(mkinstalldirs) $(DESTDIR)$(wbxmldocdir)/manual +- cp -Rp doc/* $(DESTDIR)$(wbxmldocdir)/manual +- + dist-bz2: distdir + sed -e "s/tar.gz/tar.bz2/g" $(distdir)/wbxml2.spec > $(distdir)/wbxml2.spec.aux + mv $(distdir)/wbxml2.spec.aux $(distdir)/wbxml2.spec diff --git a/packages/opensync/wbxml2/07-current_attr_null.patch b/packages/opensync/wbxml2/07-current_attr_null.patch new file mode 100644 index 0000000000..2b74f594d3 --- /dev/null +++ b/packages/opensync/wbxml2/07-current_attr_null.patch @@ -0,0 +1,22 @@ +--- wbxml2-0.9.2/src/wbxml_encoder.orig.c 2008-01-20 01:25:46.000000000 +0100 ++++ wbxml2-0.9.2/src/wbxml_encoder.c 2008-01-20 01:26:25.000000000 +0100 +@@ -1875,6 +1875,9 @@ + #if defined( WBXML_SUPPORT_SI ) + case WBXML_LANG_SI10: + /* SI 1.0: Encode date for 'created' and 'si-expires' attributes */ ++ if (encoder->current_attr == NULL) ++ break; ++ + if ((encoder->current_attr->wbxmlCodePage == 0x00) && + ((encoder->current_attr->wbxmlToken == 0x0a) || (encoder->current_attr->wbxmlToken == 0x10))) + { +@@ -1886,6 +1889,9 @@ + #if defined( WBXML_SUPPORT_EMN ) + case WBXML_LANG_EMN10: + /* EMN 1.0: Encode date for 'timestamp' attribute */ ++ if (encoder->current_attr == NULL) ++ break; ++ + if ((encoder->current_attr->wbxmlCodePage == 0x00) && (encoder->current_attr->wbxmlToken == 0x05)) + { + return wbxml_encode_datetime(encoder, buffer); diff --git a/packages/opensync/wbxml2/08-maxsize-translation-table.patch b/packages/opensync/wbxml2/08-maxsize-translation-table.patch new file mode 100644 index 0000000000..ebcda89c72 --- /dev/null +++ b/packages/opensync/wbxml2/08-maxsize-translation-table.patch @@ -0,0 +1,17 @@ +#libwbxml2-0: Size changed to MaxSize in OMA DS 1.2 DevInf +# +#The normale Size tag was changed to MaxSize in OMA DS 1.2 Device +#Information. The number in the stringtable does not changed. So +#the order looks a little bit "funny". + +--- src/wbxml_tables.c.orig 2008-09-01 15:05:22.000000000 +0200 ++++ src/wbxml_tables.c 2008-09-01 15:05:58.000000000 +0200 +@@ -1891,7 +1891,7 @@ + { "Rx", 0x00, 0x19 }, + { "Rx-Pref", 0x00, 0x1a }, + { "SharedMem", 0x00, 0x1b }, +- { "Size", 0x00, 0x1c }, ++ { "MaxSize", 0x00, 0x1c }, + { "SourceRef", 0x00, 0x1d }, + { "SwV", 0x00, 0x1e }, + { "SyncCap", 0x00, 0x1f }, diff --git a/packages/opensync/wbxml2_0.9.0.bb b/packages/opensync/wbxml2_0.9.0.bb deleted file mode 100644 index 3f45b35711..0000000000 --- a/packages/opensync/wbxml2_0.9.0.bb +++ /dev/null @@ -1,24 +0,0 @@ -DESCRIPTION = "parser for wbxml" -LICENSE = "GPLv2" - -DEPENDS = "libxml2 sed-native" - -SRC_URI = "${SOURCEFORGE_MIRROR}/wbxmllib/${P}-src.tar.gz" - -inherit autotools pkgconfig - -do_configure_append() { - sed -i s:-I/usr/include::g Makefile - sed -i s:-I/usr/include::g */Makefile -} - -do_stage() { - autotools_stage_all -} - -PACKAGES += "${PN}-tools" - -FILES_${PN}-tools = "${bindir}" -FILES_${PN} = "${libdir}/*.so.*" - - diff --git a/packages/opensync/wbxml2_0.9.2.bb b/packages/opensync/wbxml2_0.9.2.bb new file mode 100644 index 0000000000..a45e1c6d66 --- /dev/null +++ b/packages/opensync/wbxml2_0.9.2.bb @@ -0,0 +1,29 @@ +DESCRIPTION = "WBXML parsing and encoding library" +LICENSE = "LGPL" + +DEPENDS = "expat popt" + +SRC_URI = "${SOURCEFORGE_MIRROR}/wbxmllib/${PN}-${PV}.tar.gz \ + file://00-fix-includes.patch;patch=1 \ + file://01-anonymous-support-and-misc-fixes.patch;patch=1 \ + file://02-namespaces.patch;patch=1 \ + file://04_saxlike_entity_parsing.patch;patch=1 \ + file://05-syncml-fixes.patch;patch=1 \ + file://06-no-install-docs.patch;patch=1 \ + file://07-current_attr_null.patch;patch=1 \ + file://08-maxsize-translation-table.patch;patch=1;pnum=0 \ + " + +inherit autotools pkgconfig + +do_stage() { + autotools_stage_all +} + +PACKAGES += "${PN}-tools" + +FILES_${PN}-tools = "${bindir}" +FILES_${PN} = "${libdir}/*.so.*" + + + |