From: <svn...@op...> - 2009-02-19 17:19:30
|
Author: bellmich Date: Thu Feb 19 18:20:05 2009 New Revision: 934 URL: http://libsyncml.opensync.org/changeset/934 Log: added parser support for SupportHierarchicalSync Modified: trunk/libsyncml/parser/sml_xml_parse.c trunk/libsyncml/sml_devinf_internals.h Modified: trunk/libsyncml/parser/sml_xml_parse.c ============================================================================== --- trunk/libsyncml/parser/sml_xml_parse.c Thu Feb 19 18:15:54 2009 (r933) +++ trunk/libsyncml/parser/sml_xml_parse.c Thu Feb 19 18:20:05 2009 (r934) @@ -3224,8 +3224,20 @@ } else if (!strcmp((char *)xmlTextReaderConstName(parser->reader), SML_ELEMENT_DSMEM)) { if (!_smlXmlDevInfDataStoreParseDSMem(parser, datastore, error)) goto error_free_datastore; + } else if (!strcmp((char *)xmlTextReaderConstName(parser->reader), SML_ELEMENT_SUPPORT_HIERARCHICAL_SYNC)) { + if (devinf->version < SML_DEVINF_VERSION_12) { + smlErrorSet(error, SML_ERROR_GENERIC, "SupportHierarchicalSync is only supported in OMA DS 1.2 DevInf and later."); + goto error; + } + datastore->supportsHierarchicalSync = TRUE; + if (!xmlTextReaderIsEmptyElement(parser->reader)) { + if (!_smlXmlParserStep(parser)) { + smlErrorSet(error, SML_ERROR_GENERIC, "The closing element of %s is missing.", SML_ELEMENT_SUPPORT_HIERARCHICAL_SYNC); + goto error; + } + } } else { - smlErrorSet(error, SML_ERROR_GENERIC, "wrong initial node (%s)", (char *)xmlTextReaderConstName(parser->reader)); + smlErrorSet(error, SML_ERROR_GENERIC, "A DataStore within DevInf includes the unsupported element %s.", (char *)xmlTextReaderConstName(parser->reader)); goto error_free_datastore; } Modified: trunk/libsyncml/sml_devinf_internals.h ============================================================================== --- trunk/libsyncml/sml_devinf_internals.h Thu Feb 19 18:15:54 2009 (r933) +++ trunk/libsyncml/sml_devinf_internals.h Thu Feb 19 18:20:05 2009 (r934) @@ -54,6 +54,8 @@ struct SmlDevInfDataStore { gint refCount; + + SmlBool supportsHierarchicalSync; char *sourceref; char *displayname; |