📄 xltdec.c
字号:
if (IS_EMPTY(pScanner->curtok)) { smlLibFree(pGet); return SML_ERR_XLT_INVAL_SYNCML_DOC; } if (((rc = nextToken(pDecoder)) != SML_ERR_OK)) { smlLibFree(pGet); return rc; } while (pScanner->curtok->type != TOK_TAG_END) { switch (pScanner->curtok->tagid) { /* PCDATA elements */ case TN_CMDID: rc = buildPCData(pDecoder, (VoidPtr_t)&pGet->cmdID); cmdid++; break; case TN_LANG: rc = buildPCData(pDecoder, (VoidPtr_t)&pGet->lang); break; case TN_META: rc = buildPCData(pDecoder, (VoidPtr_t)&pGet->meta); break; /* child tags */ case TN_CRED: rc = buildCred(pDecoder, (VoidPtr_t)&pGet->cred); break; /* flags */ case TN_NORESP: pGet->flags |= SmlNoResp_f; break; /* Lists */ case TN_ITEM: rc = appendItemList(pDecoder, &pGet->itemList); items++; break; default: rc = SML_ERR_XLT_INVAL_SYNCML_DOC; } if (rc != SML_ERR_OK) { smlFreeGetPut(pGet); return rc; } if (((rc = nextToken(pDecoder)) != SML_ERR_OK)) { smlFreeGetPut(pGet); return rc; } } if ((items == 0) || (cmdid == 0)) { smlFreeGetPut(pGet); return SML_ERR_XLT_INVAL_SYNCML_DOC; } *ppElem = pGet; return SML_ERR_OK;}Ret_tbuildTargetOrSource(XltDecoderPtr_t pDecoder, VoidPtr_t *ppTarget){ XltDecScannerPtr_t pScanner; SmlTargetPtr_t pTarget; Long_t locuri = 0; Ret_t rc; pScanner = pDecoder->scanner; if (*ppTarget != NULL) return SML_ERR_XLT_INVAL_SYNCML_DOC; if ((pTarget = (SmlTargetPtr_t)smlLibMalloc(sizeof(SmlTarget_t))) == NULL) return SML_ERR_NOT_ENOUGH_SPACE; smlLibMemset(pTarget, 0, sizeof(SmlTarget_t)); if (IS_EMPTY(pScanner->curtok)) { smlLibFree(pTarget); return SML_ERR_OK; } if (((rc = nextToken(pDecoder)) != SML_ERR_OK)) { smlLibFree(pTarget); return rc; } while (pScanner->curtok->type != TOK_TAG_END) { switch (pScanner->curtok->tagid) { /* PCDATA elements */ case TN_LOCURI: rc = buildPCData(pDecoder, (VoidPtr_t)&pTarget->locURI); locuri++; break; case TN_LOCNAME: rc = buildPCData(pDecoder, (VoidPtr_t)&pTarget->locName); break; default: rc = SML_ERR_XLT_INVAL_SYNCML_DOC; } if (rc != SML_ERR_OK) { smlFreeSourceTargetPtr(pTarget); return rc; } if (((rc = nextToken(pDecoder)) != SML_ERR_OK)) { smlFreeSourceTargetPtr(pTarget); return rc; } } if (locuri == 0) { smlFreeSourceTargetPtr(pTarget); return SML_ERR_XLT_INVAL_SYNCML_DOC; } *ppTarget = pTarget; return SML_ERR_OK;}Ret_tbuildChal(XltDecoderPtr_t pDecoder, VoidPtr_t *ppChal){ XltDecScannerPtr_t pScanner; SmlChalPtr_t pChal; Long_t meta = 0; Ret_t rc; pScanner = pDecoder->scanner; if (*ppChal != NULL) return SML_ERR_XLT_INVAL_SYNCML_DOC; if ((pChal = (SmlChalPtr_t)smlLibMalloc(sizeof(SmlChal_t))) == NULL) return SML_ERR_NOT_ENOUGH_SPACE; smlLibMemset(pChal, 0, sizeof(SmlChal_t)); if (IS_EMPTY(pScanner->curtok)) { *ppChal = pChal; return SML_ERR_OK; } if (((rc = nextToken(pDecoder)) != SML_ERR_OK)) { smlLibFree(pChal); return rc; } while (pScanner->curtok->type != TOK_TAG_END) { switch (pScanner->curtok->tagid) { /* PCDATA elements */ case TN_META: rc = buildPCData(pDecoder, (VoidPtr_t)&pChal->meta); meta++; break; default: rc = SML_ERR_XLT_INVAL_SYNCML_DOC; } if (rc != SML_ERR_OK) { smlFreeChalPtr(pChal); return rc; } if (((rc = nextToken(pDecoder)) != SML_ERR_OK)) { smlFreeChalPtr(pChal); return rc; } } if (meta == 0) { smlFreeChalPtr(pChal); return SML_ERR_XLT_INVAL_SYNCML_DOC; } *ppChal = pChal; return SML_ERR_OK;}Ret_tbuildCred(XltDecoderPtr_t pDecoder, VoidPtr_t *ppCred){ XltDecScannerPtr_t pScanner; SmlCredPtr_t pCred; Ret_t rc; Long_t data = 0; pScanner = pDecoder->scanner; if (*ppCred != NULL) return SML_ERR_XLT_INVAL_SYNCML_DOC; if ((pCred = (SmlCredPtr_t)smlLibMalloc(sizeof(SmlCred_t))) == NULL) return SML_ERR_NOT_ENOUGH_SPACE; smlLibMemset(pCred, 0, sizeof(SmlCred_t)); if (IS_EMPTY(pScanner->curtok)) { *ppCred = pCred; return SML_ERR_OK; } if (((rc = nextToken(pDecoder)) != SML_ERR_OK)) { smlLibFree(pCred); return rc; } while (pScanner->curtok->type != TOK_TAG_END) { switch (pScanner->curtok->tagid) { /* PCDATA elements */ case TN_DATA: rc = buildPCData(pDecoder, (VoidPtr_t)&pCred->data); data++; break; case TN_META: rc = buildPCData(pDecoder, (VoidPtr_t)&pCred->meta); break; default: rc = SML_ERR_XLT_INVAL_SYNCML_DOC; } if (rc != SML_ERR_OK) { smlFreeCredPtr(pCred); return rc; } if (((rc = nextToken(pDecoder)) != SML_ERR_OK)) { smlFreeCredPtr(pCred); return rc; } } if (data == 0) { smlFreeCredPtr(pCred); return SML_ERR_XLT_INVAL_SYNCML_DOC; } *ppCred = pCred; return SML_ERR_OK;}Ret_tbuildItem(XltDecoderPtr_t pDecoder, VoidPtr_t *ppElem){ XltDecScannerPtr_t pScanner; SmlItemPtr_t pItem; Ret_t rc; pScanner = pDecoder->scanner; if (*ppElem != NULL) return SML_ERR_XLT_INVAL_SYNCML_DOC; if ((pItem = (SmlItemPtr_t)smlLibMalloc(sizeof(SmlItem_t))) == NULL) return SML_ERR_NOT_ENOUGH_SPACE; smlLibMemset(pItem, 0, sizeof(SmlItem_t)); /* Item might be empty */ if (IS_EMPTY(pScanner->curtok)) { *ppElem = pItem; return SML_ERR_OK; } if (((rc = nextToken(pDecoder)) != SML_ERR_OK)) { smlLibFree(pItem); return rc; } while (pScanner->curtok->type != TOK_TAG_END) { switch (pScanner->curtok->tagid) { /* PCDATA elements */ case TN_META: rc = buildPCData(pDecoder, (VoidPtr_t)&pItem->meta); break; case TN_DATA: rc = buildPCData(pDecoder, (VoidPtr_t)&pItem->data);#ifdef __USE_EXTENSIONS__#ifdef __SML_WBXML__ if (pItem->data && pItem->data->contentType == SML_PCDATA_OPAQUE) subdtdDecodeWbxml(pDecoder, (SmlPcdataPtr_t*)&pItem->data);#endif#endif break; /* child tags */ case TN_TARGET: rc = buildTargetOrSource(pDecoder, (VoidPtr_t)&pItem->target); break; case TN_SOURCE: rc = buildTargetOrSource(pDecoder, (VoidPtr_t)&pItem->source); break; /* flags */ case TN_MOREDATA: pItem->flags |= SmlMoreData_f; break; default: rc = SML_ERR_XLT_INVAL_SYNCML_DOC; } if (rc != SML_ERR_OK) { smlFreeItemPtr(pItem); return rc; } if (((rc = nextToken(pDecoder)) != SML_ERR_OK)) { smlFreeItemPtr(pItem); return rc; } } *ppElem = pItem; return SML_ERR_OK;}#ifdef MAPITEM_RECEIVERet_tbuildMapItem(XltDecoderPtr_t pDecoder, VoidPtr_t *ppElem){ XltDecScannerPtr_t pScanner; SmlMapItemPtr_t pMapItem; Long_t target = 0, source = 0; Ret_t rc; if (*ppElem != NULL) return SML_ERR_XLT_INVAL_SYNCML_DOC; pScanner = pDecoder->scanner; if ((pMapItem = (SmlMapItemPtr_t)smlLibMalloc(sizeof(SmlMapItem_t))) == NULL) return SML_ERR_NOT_ENOUGH_SPACE; smlLibMemset(pMapItem, 0, sizeof(SmlMapItem_t)); if (IS_EMPTY(pScanner->curtok)) { smlLibFree(pMapItem); return SML_ERR_XLT_INVAL_SYNCML_DOC; } if (((rc = nextToken(pDecoder)) != SML_ERR_OK)) { smlLibFree(pMapItem); return rc; } while (pScanner->curtok->type != TOK_TAG_END) { switch (pScanner->curtok->tagid) { /* child tags */ case TN_TARGET: rc = buildTargetOrSource(pDecoder, (VoidPtr_t)&pMapItem->target); target++; break; case TN_SOURCE: rc = buildTargetOrSource(pDecoder, (VoidPtr_t)&pMapItem->source); source++; break; default: rc = SML_ERR_XLT_INVAL_SYNCML_DOC; } if (rc != SML_ERR_OK) { smlFreeMapItemPtr(pMapItem); return rc; } if (((rc = nextToken(pDecoder)) != SML_ERR_OK)) { smlFreeMapItemPtr(pMapItem); return rc; } } if ((target == 0) || (source == 0)) { smlFreeMapItemPtr(pMapItem); return SML_ERR_XLT_INVAL_SYNCML_DOC; } *ppElem = pMapItem; return SML_ERR_OK;}#endifRet_tbuildStatus(XltDecoderPtr_t pDecoder, VoidPtr_t *ppElem){ XltDecScannerPtr_t pScanner; SmlStatusPtr_t pStatus; Ret_t rc; Long_t cmd = 0, data = 0, cmdid = 0; if (*ppElem != NULL) return SML_ERR_XLT_INVAL_SYNCML_DOC; pScanner = pDecoder->scanner; if ((pStatus = (SmlStatusPtr_t)smlLibMalloc(sizeof(SmlStatus_t))) == NULL) return SML_ERR_NOT_ENOUGH_SPACE; smlLibMemset(pStatus, 0, sizeof(SmlStatus_t)); /* initialize the element type field */ pStatus->elementType = SML_PE_STATUS; if (IS_EMPTY(pScanner->curtok)) { smlLibFree(pStatus); return SML_ERR_XLT_INVAL_SYNCML_DOC; } if (((rc = nextToken(pDecoder)) != SML_ERR_OK)) { smlLibFree(pStatus); return rc; } while (pScanner->curtok->type != TOK_TAG_END) { switch (pScanner->curtok->tagid) { /* PCData elements */ case TN_CMDID: rc = buildPCData(pDecoder, (VoidPtr_t)&pStatus->cmdID); cmdid++; break; case TN_MSGREF: rc = buildPCData(pDecoder, (VoidPtr_t)&pStatus->msgRef); break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -