Changeset 258
- Timestamp:
- 10/27/07 22:14:12 (1 year ago)
- Files:
-
- trunk/libsyncml/objects/sml_devinf_obj.c (modified) (6 diffs)
- trunk/libsyncml/parser/sml_xml_assm.c (modified) (1 diff)
- trunk/libsyncml/parser/sml_xml_parse.c (modified) (5 diffs)
- trunk/libsyncml/sml_devinf.c (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/libsyncml/objects/sml_devinf_obj.c
r245 r258 98 98 if (smlSessionGetVersion(session) == SML_VERSION_10) 99 99 result = smlDevInfNewResult(get, agent->devinf, SML_DEVINF_VERSION_10, error); 100 else if (smlSessionGetVersion(session) == SML_VERSION_12) 101 result = smlDevInfNewResult(get, agent->devinf, SML_DEVINF_VERSION_12, error); 100 102 else 101 103 result = smlDevInfNewResult(get, agent->devinf, SML_DEVINF_VERSION_11, error); … … 124 126 if (smlSessionGetVersion(session) == SML_VERSION_10) 125 127 cmd = smlDevInfNewPut(agent->devinf, SML_DEVINF_VERSION_10, error); 128 else if (smlSessionGetVersion(session) == SML_VERSION_12) 129 cmd = smlDevInfNewPut(agent->devinf, SML_DEVINF_VERSION_12, error); 126 130 else 127 131 cmd = smlDevInfNewPut(agent->devinf, SML_DEVINF_VERSION_11, error); … … 282 286 if (smlSessionGetVersion(session) == SML_VERSION_10) 283 287 get = smlDevInfNewGet(SML_DEVINF_VERSION_10, error); 288 else if (smlSessionGetVersion(session) == SML_VERSION_12) 289 get = smlDevInfNewGet(SML_DEVINF_VERSION_12, error); 284 290 else 285 291 get = smlDevInfNewGet(SML_DEVINF_VERSION_11, error); … … 309 315 smlAssert(manager); 310 316 317 SmlLocation *devinf12 = smlLocationNew("./devinf12", NULL, error); 311 318 SmlLocation *devinf11 = smlLocationNew("./devinf11", NULL, error); 312 319 SmlLocation *devinf10 = smlLocationNew("./devinf10", NULL, error); 313 320 314 if (!devinf1 1 || !devinf10)321 if (!devinf12 || !devinf11 || !devinf10) 315 322 goto error; 316 323 … … 319 326 if (!smlManagerObjectRegister(manager, SML_COMMAND_TYPE_PUT, session, NULL, devinf11, NULL, _recv_devinf, NULL, agent, error)) 320 327 goto error_free_loc; 328 if (!smlManagerObjectRegister(manager, SML_COMMAND_TYPE_PUT, session, NULL, devinf12, NULL, _recv_devinf, NULL, agent, error)) 329 goto error_free_loc; 321 330 322 331 if (!smlManagerObjectRegister(manager, SML_COMMAND_TYPE_GET, session, devinf10, NULL, NULL, _request_devinf, NULL, agent, error)) 323 332 goto error_free_loc; 324 333 if (!smlManagerObjectRegister(manager, SML_COMMAND_TYPE_GET, session, devinf11, NULL, NULL, _request_devinf, NULL, agent, error)) 334 goto error_free_loc; 335 if (!smlManagerObjectRegister(manager, SML_COMMAND_TYPE_GET, session, devinf12, NULL, NULL, _request_devinf, NULL, agent, error)) 325 336 goto error_free_loc; 326 337 327 338 smlLocationUnref(devinf10); 328 339 smlLocationUnref(devinf11); 340 smlLocationUnref(devinf12); 329 341 330 342 smlTrace(TRACE_EXIT, "%s", __func__); … … 336 348 if (devinf11) 337 349 smlLocationUnref(devinf11); 350 if (devinf12) 351 smlLocationUnref(devinf11); 338 352 error: 339 353 smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, smlErrorPrint(error)); trunk/libsyncml/parser/sml_xml_assm.c
r254 r258 1873 1873 //Verdtd 1874 1874 switch (version) { 1875 case SML_DEVINF_VERSION_12: 1876 if (!_smlXmlAssemblerAddString(assm, SML_ELEMENT_VERDTD, "1.2", error)) 1877 goto error_free_writer; 1878 break; 1875 1879 case SML_DEVINF_VERSION_11: 1876 1880 if (!_smlXmlAssemblerAddString(assm, SML_ELEMENT_VERDTD, "1.1", error)) trunk/libsyncml/parser/sml_xml_parse.c
r247 r258 193 193 goto error_free_buffer; 194 194 } 195 196 /* SyncML 1.2 allows empty data elements <Data /> */ 197 if (xmlTextReaderIsEmptyElement(parser->reader)) 198 goto out; 195 199 196 200 while (1) { … … 2106 2110 } 2107 2111 2112 static SmlBool _smlXmlDevInfDataStoreParseCTCap(SmlXmlParser *parser, SmlDevInf *devinf, SmlError **error) 2113 { 2114 smlTrace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, parser, devinf, error); 2115 smlAssert(parser); 2116 smlAssert(devinf); 2117 2118 if (!_smlXmlParserStep(parser)) { 2119 smlErrorSet(error, SML_ERROR_GENERIC, "Missing nodes"); 2120 goto error; 2121 } 2122 2123 while (1) { 2124 /* Contrary to previous versions, SyncML 1.2 encloses properties in <PropName>-tags and parameters 2125 and parameters in <ParamName>-tags, so we will ignore these tags */ 2126 2127 const char *elem_name; 2128 elem_name = (const char*)xmlTextReaderConstName(parser->reader); 2129 2130 smlTrace(TRACE_INTERNAL, "read: %s\n", elem_name); 2131 if (!strcmp(elem_name, SML_ELEMENT_CTCAP) && 2132 xmlTextReaderNodeType(parser->reader) == XML_NODE_CLOSE) { 2133 break; 2134 } 2135 2136 SmlDevInfCTCapType type; 2137 type = smlDevInfCTCapTypeFromString(elem_name, NULL); 2138 if (xmlTextReaderNodeType(parser->reader) != XML_NODE_START && 2139 type != SML_DEVINF_CTCAP_NOTRUNCATE && 2140 type != SML_DEVINF_CTCAP_PROPERTY && type != SML_DEVINF_CTCAP_PROPPARAM) { 2141 smlErrorSet(error, SML_ERROR_GENERIC, "Not a start node: %s", (char *)xmlTextReaderConstName(parser->reader)); 2142 goto error; 2143 } 2144 2145 char *value = NULL; 2146 if (type != SML_DEVINF_CTCAP_UNKNOWN && 2147 type != SML_DEVINF_CTCAP_PROPERTY && 2148 type != SML_DEVINF_CTCAP_PROPPARAM) { 2149 _smlXmlParserGetString(parser, &value, elem_name, error); 2150 smlDevInfAddCTCap(devinf, type, value); 2151 g_free(value); 2152 } 2153 2154 if (!_smlXmlParserStep(parser)) { 2155 smlErrorSet(error, SML_ERROR_GENERIC, "Missing nodes"); 2156 goto error; 2157 } 2158 } 2159 2160 smlTrace(TRACE_EXIT, "%s", __func__); 2161 return TRUE; 2162 2163 error: 2164 smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, smlErrorPrint(error)); 2165 return FALSE; 2166 } 2167 2108 2168 static SmlBool _smlXmlDevInfDataStoreParseRxTx(SmlXmlParser *parser, const char *element, char **cttype, char **version, SmlError **error) 2109 2169 { … … 2216 2276 if (!_smlXmlDevInfDataStoreParseRxTx(parser, SML_ELEMENT_TX, &(datastore->txContentType), &(datastore->txVersion), error)) 2217 2277 goto error_free_datastore; 2278 } else if (!strcmp((char *)xmlTextReaderConstName(parser->reader), SML_ELEMENT_CTCAP)) { 2279 if (!_smlXmlDevInfDataStoreParseCTCap(parser, devinf, error)) 2280 goto error_free_datastore; 2218 2281 } else if (!strcmp((char *)xmlTextReaderConstName(parser->reader), SML_ELEMENT_SYNCCAP)) { 2219 2282 if (!_smlXmlDevInfDataStoreParseSyncCap(parser, datastore, error)) … … 2302 2365 else if (verdtd && !strcmp(verdtd, "1.0")) 2303 2366 devinf->version = SML_DEVINF_VERSION_10; 2367 else if (verdtd && !strcmp(verdtd, "1.2")) 2368 devinf->version = SML_DEVINF_VERSION_12; 2304 2369 else { 2305 2370 g_free(verdtd); … … 2403 2468 goto error_free_devinf; 2404 2469 } else if (!strcmp((char *)xmlTextReaderConstName(parser->reader), SML_ELEMENT_CTCAP)) { 2405 if (!_smlXmlParserStep(parser)) { 2406 smlErrorSet(error, SML_ERROR_GENERIC, "Missing nodes"); 2470 if (!_smlXmlDevInfDataStoreParseCTCap(parser, devinf, error)) 2407 2471 goto error_free_devinf; 2408 }2409 2410 while (1) {2411 if (!strcmp((char *)xmlTextReaderConstName(parser->reader), SML_ELEMENT_CTCAP) &&2412 xmlTextReaderNodeType(parser->reader) == XML_NODE_CLOSE) {2413 break;2414 } else if (xmlTextReaderNodeType(parser->reader) != XML_NODE_START) {2415 smlErrorSet(error, SML_ERROR_GENERIC, "Not a start node");2416 goto error_free_devinf;2417 }2418 2419 const char *elem_name;2420 char *value = NULL;2421 SmlDevInfCTCapType type;2422 2423 elem_name = (const char*)xmlTextReaderConstName(parser->reader);2424 type = smlDevInfCTCapTypeFromString(elem_name, NULL);2425 if (type != SML_DEVINF_CTCAP_UNKNOWN) {2426 _smlXmlParserGetString(parser, &value, elem_name, error);2427 smlDevInfAddCTCap(devinf, type, value);2428 g_free(value);2429 }2430 2431 if (!_smlXmlParserStep(parser)) {2432 smlErrorSet(error, SML_ERROR_GENERIC, "Missing nodes");2433 goto error_free_devinf;2434 }2435 }2436 2472 } else if (!strcmp((char *)xmlTextReaderConstName(parser->reader), SML_ELEMENT_EXT)) { 2437 2473 /* Ignored for now */ trunk/libsyncml/sml_devinf.c
r241 r258 86 86 case SML_DEVINF_DEVTYPE_WORKSTATION: 87 87 return SML_ELEMENT_DEVTYP_WORKSTATION; 88 default:89 ;90 88 } 91 89 … … 555 553 if (version == SML_DEVINF_VERSION_10) 556 554 source = smlLocationNew("./devinf10", NULL, error); 555 else if (version == SML_DEVINF_VERSION_12) 556 source = smlLocationNew("./devinf12", NULL, error); 557 557 else 558 558 source = smlLocationNew("./devinf11", NULL, error); … … 589 589 if (version == SML_DEVINF_VERSION_10) 590 590 source = smlLocationNew("./devinf10", NULL, error); 591 else if (version == SML_DEVINF_VERSION_12) 592 source = smlLocationNew("./devinf12", NULL, error); 591 593 else 592 594 source = smlLocationNew("./devinf11", NULL, error); … … 631 633 if (version == SML_DEVINF_VERSION_10) 632 634 target = smlLocationNew("./devinf10", NULL, error); 635 else if (version == SML_DEVINF_VERSION_12) 636 target = smlLocationNew("./devinf12", NULL, error); 633 637 else 634 638 target = smlLocationNew("./devinf11", NULL, error); … … 762 766 } else if (!strcmp(name, SML_ELEMENT_PARAMNAME)) { 763 767 return SML_DEVINF_CTCAP_PARAMNAME; 768 } else if (!strcmp(name, SML_ELEMENT_VERCT)) { 769 return SML_DEVINF_CTCAP_VERCT; 770 } else if (!strcmp(name, SML_ELEMENT_PROPERTY)) { 771 return SML_DEVINF_CTCAP_PROPERTY; 772 } else if (!strcmp(name, SML_ELEMENT_PROPPARAM)) { 773 return SML_DEVINF_CTCAP_PROPPARAM; 774 } else if (!strcmp(name, SML_ELEMENT_NOTRUNCATE)) { 775 return SML_DEVINF_CTCAP_NOTRUNCATE; 776 } else if (!strcmp(name, SML_ELEMENT_MAXOCCUR)) { 777 return SML_DEVINF_CTCAP_MAXOCCUR; 764 778 } 765 779 … … 786 800 case SML_DEVINF_CTCAP_PARAMNAME: 787 801 return SML_ELEMENT_PARAMNAME; 788 default: 789 ; 802 case SML_DEVINF_CTCAP_NOTRUNCATE: 803 return SML_ELEMENT_NOTRUNCATE; 804 case SML_DEVINF_CTCAP_MAXOCCUR: 805 return SML_ELEMENT_MAXOCCUR; 790 806 } 791 807
