📄 xltdec.c
字号:
if (((rc = nextToken(pDecoder)) != SML_ERR_OK)) { smlLibFree(pExec); return rc; } while (pScanner->curtok->type != TOK_TAG_END) { switch (pScanner->curtok->tagid) { /* PCData */ case TN_CMDID: rc = buildPCData(pDecoder, (VoidPtr_t)&pExec->cmdID); cmdid++; break; case TN_META: rc = buildPCData(pDecoder, (VoidPtr_t)&pExec->meta); break; /* child tags */ case TN_CRED: rc = buildCred(pDecoder, (VoidPtr_t)&pExec->cred); break; case TN_ITEM: rc = buildItem(pDecoder, (VoidPtr_t)&pExec->item); items++; break; /* flags */ case TN_NORESP: pExec->flags |= SmlNoResp_f; break; default: rc = SML_ERR_XLT_INVAL_SYNCML_DOC; } if (rc != SML_ERR_OK) { smlFreeExec(pExec); return rc; } if (((rc = nextToken(pDecoder)) != SML_ERR_OK)) { smlFreeExec(pExec); return rc; } } if ((items == 0) || (cmdid == 0)) { smlFreeExec(pExec); return SML_ERR_XLT_INVAL_SYNCML_DOC; } *ppElem = pExec; return SML_ERR_OK;}#endifRet_tbuildGenericCmd(XltDecoderPtr_t pDecoder, VoidPtr_t *ppElem){ XltDecScannerPtr_t pScanner; SmlGenericCmdPtr_t pGenCmd; Ret_t rc; Long_t items = 0, cmdid = 0; pScanner = pDecoder->scanner; if (*ppElem != NULL) return SML_ERR_XLT_INVAL_SYNCML_DOC; /* initialize a new GenericCmd */ if ((pGenCmd = (SmlGenericCmdPtr_t)smlLibMalloc(sizeof(SmlGenericCmd_t))) == NULL) return SML_ERR_NOT_ENOUGH_SPACE; smlLibMemset(pGenCmd, 0, sizeof(SmlGenericCmd_t)); /* initialize the element type field */ pGenCmd->elementType = SML_PE_GENERIC; if (IS_EMPTY(pScanner->curtok)) { smlLibFree(pGenCmd); return SML_ERR_XLT_INVAL_SYNCML_DOC; } if (((rc = nextToken(pDecoder)) != SML_ERR_OK)) { smlLibFree(pGenCmd); return rc; } while (pScanner->curtok->type != TOK_TAG_END) { switch (pScanner->curtok->tagid) { /* PCDATA elements */ case TN_CMDID: rc = buildPCData(pDecoder, (VoidPtr_t)&pGenCmd->cmdID); cmdid++; break; case TN_META: rc = buildPCData(pDecoder, (VoidPtr_t)&pGenCmd->meta); break; /* child tags */ case TN_CRED: rc = buildCred(pDecoder, (VoidPtr_t)&pGenCmd->cred); break; /* flags (empty tags) */ case TN_NORESP: pGenCmd->flags |= SmlNoResp_f; break; case TN_ARCHIVE: pGenCmd->flags |= SmlArchive_f; break; case TN_SFTDEL: pGenCmd->flags |= SmlSftDel_f; break; /* Lists */ case TN_ITEM: rc = appendItemList(pDecoder, &pGenCmd->itemList); items++; break; default: rc = SML_ERR_XLT_INVAL_SYNCML_DOC; } if (rc != SML_ERR_OK) { smlFreeGeneric(pGenCmd); return rc; } if (((rc = nextToken(pDecoder)) != SML_ERR_OK)) { smlFreeGeneric(pGenCmd); return rc; } } if ((items == 0) || (cmdid == 0)) { smlFreeGeneric(pGenCmd); return SML_ERR_XLT_INVAL_SYNCML_DOC; } *ppElem = pGenCmd; return SML_ERR_OK;}Ret_tbuildAlert(XltDecoderPtr_t pDecoder, VoidPtr_t *ppElem){ XltDecScannerPtr_t pScanner; SmlAlertPtr_t pAlert; Ret_t rc; Long_t cmdid = 0; pScanner = pDecoder->scanner; if (*ppElem != NULL) return SML_ERR_XLT_INVAL_SYNCML_DOC; if ((pAlert = (SmlAlertPtr_t)smlLibMalloc(sizeof(SmlAlert_t))) == NULL) return SML_ERR_NOT_ENOUGH_SPACE; smlLibMemset(pAlert, 0, sizeof(SmlAlert_t)); /* initialize the element type field */ pAlert->elementType = SML_PE_ALERT; if (IS_EMPTY(pScanner->curtok)) { smlLibFree(pAlert); return SML_ERR_XLT_INVAL_SYNCML_DOC; } if (((rc = nextToken(pDecoder)) != SML_ERR_OK)) { smlLibFree(pAlert); return rc; } while (pScanner->curtok->type != TOK_TAG_END) { switch (pScanner->curtok->tagid) { /* PCDATA elements */ case TN_CMDID: rc = buildPCData(pDecoder, (VoidPtr_t)&pAlert->cmdID); cmdid++; break; case TN_DATA: rc = buildPCData(pDecoder, (VoidPtr_t)&pAlert->data); break; /* child tags */ case TN_CRED: rc = buildCred(pDecoder, (VoidPtr_t)&pAlert->cred); break; /* flags (empty tags) */ case TN_NORESP: pAlert->flags |= SmlNoResp_f; break; /* Lists */ case TN_ITEM: rc = appendItemList(pDecoder, &pAlert->itemList); break; default: rc = SML_ERR_XLT_INVAL_SYNCML_DOC; } if (rc != SML_ERR_OK) { smlFreeAlert(pAlert); return rc; } if (((rc = nextToken(pDecoder)) != SML_ERR_OK)) { smlFreeAlert(pAlert); return rc; } } if (cmdid == 0) { smlFreeAlert(pAlert); return SML_ERR_XLT_INVAL_SYNCML_DOC; } *ppElem = pAlert; return SML_ERR_OK;}#ifdef MAP_RECEIVERet_tbuildMap(XltDecoderPtr_t pDecoder, VoidPtr_t *ppElem){ XltDecScannerPtr_t pScanner; SmlMapPtr_t pMap; Ret_t rc; Long_t target = 0, source = 0, mapitems = 0, cmdid = 0; pScanner = pDecoder->scanner; if (*ppElem != NULL) return SML_ERR_XLT_INVAL_SYNCML_DOC; if ((pMap = (SmlMapPtr_t)smlLibMalloc(sizeof(SmlMap_t))) == NULL) return SML_ERR_NOT_ENOUGH_SPACE; smlLibMemset(pMap, 0, sizeof(SmlMap_t)); /* initialize the element type field */ pMap->elementType = SML_PE_MAP; /* Source is required */ if (IS_EMPTY(pScanner->curtok)) { smlLibFree(pMap); return SML_ERR_XLT_INVAL_SYNCML_DOC; } if (((rc = nextToken(pDecoder)) != SML_ERR_OK)) { smlLibFree(pMap); return rc; } while (pScanner->curtok->type != TOK_TAG_END) { switch (pScanner->curtok->tagid) { /* PCDATA elements */ case TN_CMDID: rc = buildPCData(pDecoder, (VoidPtr_t)&pMap->cmdID); cmdid++; break; case TN_META: rc = buildPCData(pDecoder, (VoidPtr_t)&pMap->meta); break; /* child tags */ case TN_CRED: rc = buildCred(pDecoder, (VoidPtr_t)&pMap->cred); break; case TN_SOURCE: rc = buildTargetOrSource(pDecoder, (VoidPtr_t)&pMap->source); source++; break; case TN_TARGET: rc = buildTargetOrSource(pDecoder, (VoidPtr_t)&pMap->target); target++; break;#ifdef MAPITEM_RECEIVE /* Lists */ case TN_MAPITEM: rc = appendMapItemList(pDecoder, &pMap->mapItemList); mapitems++; break;#endif default: rc = SML_ERR_XLT_INVAL_SYNCML_DOC; } if (rc != SML_ERR_OK) { smlFreeMap(pMap); return rc; } if (((rc = nextToken(pDecoder)) != SML_ERR_OK)) { smlFreeMap(pMap); return rc; } } if ((source == 0) || (mapitems == 0) || (target == 0) || (cmdid == 0)) { smlFreeMap(pMap); return SML_ERR_XLT_INVAL_SYNCML_DOC; } *ppElem = pMap; return SML_ERR_OK;}#endif#ifdef SEARCH_RECEIVERet_tbuildSearch(XltDecoderPtr_t pDecoder, VoidPtr_t *ppSearch){ XltDecScannerPtr_t pScanner; SmlSearchPtr_t pSearch; Ret_t rc; Long_t source = 0, meta = 0, data = 0, cmdid = 0; pScanner = pDecoder->scanner; if (*ppSearch != NULL) return SML_ERR_XLT_INVAL_SYNCML_DOC; if ((pSearch = (SmlSearchPtr_t)smlLibMalloc(sizeof(SmlSearch_t))) == NULL) return SML_ERR_NOT_ENOUGH_SPACE; smlLibMemset(pSearch, 0, sizeof(SmlSearch_t)); /* initialize the element type field */ pSearch->elementType = SML_PE_SEARCH; /* Meta is required */ if (IS_EMPTY(pScanner->curtok)) { smlLibFree(pSearch); return SML_ERR_XLT_INVAL_SYNCML_DOC; } if (((rc = nextToken(pDecoder)) != SML_ERR_OK)) { smlLibFree(pSearch); return rc; } while (pScanner->curtok->type != TOK_TAG_END) { switch (pScanner->curtok->tagid) { /* PCDATA elements */ case TN_CMDID: rc = buildPCData(pDecoder, (VoidPtr_t)&pSearch->cmdID); cmdid++; break; case TN_LANG: rc = buildPCData(pDecoder, (VoidPtr_t)&pSearch->lang); break; case TN_META: rc = buildPCData(pDecoder, (VoidPtr_t)&pSearch->meta); meta++; break; case TN_DATA: rc = buildPCData(pDecoder, (VoidPtr_t)&pSearch->data); data++; break; /* child tags */ case TN_CRED: rc = buildCred(pDecoder, (VoidPtr_t)&pSearch->cred); break; case TN_TARGET: rc = buildTargetOrSource(pDecoder, (VoidPtr_t)&pSearch->target); break; /* flags */ case TN_NORESP: pSearch->flags |= SmlNoResp_f; break; case TN_NORESULTS: pSearch->flags |= SmlNoResults_f; break; /* Lists */ case TN_SOURCE: rc = appendSourceList(pDecoder, &pSearch->sourceList); source++; break; default: rc = SML_ERR_XLT_INVAL_SYNCML_DOC; } if (rc != SML_ERR_OK) { smlFreeSearch(pSearch); return rc; } if (((rc = nextToken(pDecoder)) != SML_ERR_OK)) { smlFreeSearch(pSearch); return rc; } } if ((source == 0) || (meta == 0) || (data == 0) || (cmdid == 0)) { smlFreeSearch(pSearch); return SML_ERR_XLT_INVAL_SYNCML_DOC; } *ppSearch = pSearch; return SML_ERR_OK;}#endifRet_tbuildPutOrGet(XltDecoderPtr_t pDecoder, VoidPtr_t *ppElem){ XltDecScannerPtr_t pScanner; SmlGetPtr_t pGet; Ret_t rc; Long_t items = 0, cmdid = 0; pScanner = pDecoder->scanner; if (*ppElem != NULL) return SML_ERR_XLT_INVAL_SYNCML_DOC; if ((pGet = (SmlGetPtr_t)smlLibMalloc(sizeof(SmlGet_t))) == NULL) return SML_ERR_NOT_ENOUGH_SPACE; smlLibMemset(pGet, 0, sizeof(SmlGet_t)); /* initialize the element type field */ pGet->elementType = SML_PE_PUT_GET;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -