SML_API SmlItemListPtr_t smlAllocItemList() { SmlItemListPtr_t p = (SmlItemListPtr_t)smlLibMalloc(sizeof(SmlItemList_t)); if (p == NULL) return NULL; smlLibMemset(p, 0, sizeof(SmlItemList_t)); p->item = smlAllocItem(); if (p->item == NULL) { smlFreeItemList(p); return NULL; } return p; }
SmlReplacePtr_t get_device_info(internals_t * internP) { SmlReplacePtr_t replaceP = NULL; SmlItemListPtr_t listP = NULL; if (internP == NULL) { goto error; } // Mandatory nodes if (OMADM_SYNCML_ERROR_SUCCESS != prv_get_to_list(internP, "./DevInfo/Mod", &listP)) goto error; if (OMADM_SYNCML_ERROR_SUCCESS != prv_get_to_list(internP, "./DevInfo/Man", &listP)) goto error; if (OMADM_SYNCML_ERROR_SUCCESS != prv_get_to_list(internP, "./DevInfo/DevId", &listP)) goto error; if (OMADM_SYNCML_ERROR_SUCCESS != prv_get_to_list(internP, "./DevInfo/Lang", &listP)) goto error; if (OMADM_SYNCML_ERROR_SUCCESS != prv_get_to_list(internP, "./DevInfo/DmV", &listP)) goto error; // Optional nodes prv_get_tree_to_list(internP, "./DevInfo/Bearer", &listP); prv_get_tree_to_list(internP, "./DevInfo/Ext", &listP); replaceP = smlAllocReplace(); if (replaceP) { smlFreeItemList(replaceP->itemList); replaceP->itemList = listP; listP = NULL; } error: if (listP) smlFreeItemList(listP); return replaceP; }
SML_API void smlFreeAlert(SmlAlertPtr_t pAlert) { if (! pAlert) return; smlFreePcdata(pAlert->cmdID); smlFreePcdata(pAlert->data); smlFreeCredPtr(pAlert->cred); smlFreeItemList(pAlert->itemList); smlLibFree(pAlert); }
SML_API void smlFreeGeneric(SmlGenericCmdPtr_t pGenericCmd) { if (! pGenericCmd) return; smlFreePcdata(pGenericCmd->cmdID); smlFreePcdata(pGenericCmd->meta); smlFreeCredPtr(pGenericCmd->cred); smlFreeItemList(pGenericCmd->itemList); smlLibFree(pGenericCmd); }
SML_API void smlFreeGetPut(SmlPutPtr_t pGetPut) { if (! pGetPut) return; smlFreePcdata(pGetPut->cmdID); smlFreePcdata(pGetPut->meta); smlFreePcdata(pGetPut->lang); smlFreeCredPtr(pGetPut->cred); smlFreeItemList(pGetPut->itemList); smlLibFree(pGetPut); }
SML_API void smlFreeResults(SmlResultsPtr_t pResults) { if (! pResults) return; smlFreePcdata(pResults->cmdID); smlFreePcdata(pResults->msgRef); smlFreePcdata(pResults->cmdRef); smlFreePcdata(pResults->meta); smlFreePcdata(pResults->targetRef); smlFreePcdata(pResults->sourceRef); smlFreeItemList(pResults->itemList); smlLibFree(pResults); }
SML_API void smlFreeStatus(SmlStatusPtr_t pStatus) { if (! pStatus) return; smlFreePcdata(pStatus->cmdID); smlFreePcdata(pStatus->msgRef); smlFreePcdata(pStatus->cmdRef); smlFreePcdata(pStatus->cmd); smlFreePcdata(pStatus->data); smlFreeCredPtr(pStatus->cred); smlFreeChalPtr(pStatus->chal); smlFreeTargetRefList(pStatus->targetRefList); smlFreeSourceRefList(pStatus->sourceRefList); smlFreeItemList(pStatus->itemList); smlLibFree(pStatus); }
static void prvCreatePacket1(internals_t * internP) { // this is the beginning of the session SmlAlertPtr_t alertP; alertP = smlAllocAlert(); if (alertP) { SmlReplacePtr_t replaceP; switch(internP->state) { case STATE_CLIENT_INIT: alertP->data = smlString2Pcdata("1201"); break; case STATE_SERVER_INIT: alertP->data = smlString2Pcdata("1200"); break; default: smlFreeProtoElement((basicElement_t *)alertP); return; } smlFreeItemList(alertP->itemList); alertP->itemList = NULL; replaceP = get_device_info(internP); if (replaceP) { add_element(internP, (basicElement_t *)alertP); add_element(internP, (basicElement_t *)replaceP); internP->state = STATE_IN_SESSION; } else { smlFreeProtoElement((basicElement_t *)alertP); } } }