⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xltdevinf.c

📁 SyncML ToolKits,学习syncml的参考工具包.非常好用.
💻 C
📖 第 1 页 / 共 3 页
字号:
    while (pScanner->curtok->type != TOK_TAG_END) {        switch (pScanner->curtok->tagid) {            case TN_DEVINF_CTTYPE:                rc = buildPCData(pDecoder, (VoidPtr_t)&pElem->cttype);                break;            default:                rc = SML_ERR_XLT_INVAL_SYNCML_DOC;        }        if (rc != SML_ERR_OK) {            smlLibFree(pElem);            return rc;        }        if (((rc = nextToken(pDecoder)) != SML_ERR_OK)) {            smlLibFree(pElem);            return rc;        }    }    *ppElem = pElem;    return SML_ERR_OK;}Ret_t buildDevInfSyncCapCmd(XltDecoderPtr_t pDecoder, VoidPtr_t *ppElem) {    XltDecScannerPtr_t pScanner;    SmlDevInfSyncCapPtr_t pElem;    Ret_t rc;    pScanner = pDecoder->scanner;    if (*ppElem != NULL)        return SML_ERR_XLT_INVAL_SYNCML_DOC;    if ((pElem = (SmlDevInfSyncCapPtr_t)smlLibMalloc(sizeof(SmlDevInfSyncCap_t))) == NULL)        return SML_ERR_NOT_ENOUGH_SPACE;    smlLibMemset(pElem, 0, sizeof(SmlDevInfSyncCap_t));    if (IS_EMPTY(pScanner->curtok)) {        *ppElem = pElem;        return SML_ERR_OK;    }    if (((rc = nextToken(pDecoder)) != SML_ERR_OK)) {        smlLibFree(pElem);        return rc;    }    while (pScanner->curtok->type != TOK_TAG_END) {        switch (pScanner->curtok->tagid) {            case TN_DEVINF_SYNCTYPE:                rc = buildPCDataList(pDecoder, (VoidPtr_t)&pElem->synctype);                break;            default:                rc = SML_ERR_XLT_INVAL_SYNCML_DOC;        }        if (rc != SML_ERR_OK) {            smlLibFree(pElem);            return rc;        }        if (((rc = nextToken(pDecoder)) != SML_ERR_OK)) {            smlLibFree(pElem);            return rc;        }    }    *ppElem = pElem;    return SML_ERR_OK;}Ret_t buildDevInfExtCmd(XltDecoderPtr_t pDecoder, VoidPtr_t *ppElem) {    XltDecScannerPtr_t pScanner;    SmlDevInfExtPtr_t pElem;    Ret_t rc;    pScanner = pDecoder->scanner;    if (*ppElem != NULL)        return SML_ERR_XLT_INVAL_SYNCML_DOC;    if ((pElem = (SmlDevInfExtPtr_t)smlLibMalloc(sizeof(SmlDevInfExt_t))) == NULL)        return SML_ERR_NOT_ENOUGH_SPACE;    smlLibMemset(pElem, 0, sizeof(SmlDevInfExt_t));    if (IS_EMPTY(pScanner->curtok)) {        *ppElem = pElem;        return SML_ERR_OK;    }    if (((rc = nextToken(pDecoder)) != SML_ERR_OK)) {        smlLibFree(pElem);        return rc;    }    while (pScanner->curtok->type != TOK_TAG_END) {        switch (pScanner->curtok->tagid) {            case TN_DEVINF_XNAM:                rc = buildPCData(pDecoder, (VoidPtr_t)&pElem->xnam);                break;            case TN_DEVINF_XVAL:                rc = buildPCDataList(pDecoder, (VoidPtr_t)&pElem->xval);                break;            default:                rc = SML_ERR_XLT_INVAL_SYNCML_DOC;        }        if (rc != SML_ERR_OK) {            smlLibFree(pElem);            return rc;        }        if (((rc = nextToken(pDecoder)) != SML_ERR_OK)) {            smlLibFree(pElem);            return rc;        }    }    *ppElem = pElem;    return SML_ERR_OK;}/* see xltenc.c:XltEncBlock for description of parameters */Ret_t devinfEncBlock(XltTagID_t tagId, XltRO_t reqOptFlag, const VoidPtr_t pContent, SmlEncoding_t enc, BufferMgmtPtr_t pBufMgr, SmlPcdataExtension_t attFlag) {	//Return variable	Ret_t _err;	SmlPcdataListPtr_t           pList     = NULL, p2List = NULL;    SmlDevInfDatastoreListPtr_t  dsList    = NULL;    SmlDevInfCtcapListPtr_t      ctList    = NULL;    SmlDevInfExtListPtr_t        exList    = NULL;    SmlDevInfXmitListPtr_t       xmList    = NULL;    SmlDevInfCTDataPropListPtr_t propList  = NULL;    SmlDevInfCTDataListPtr_t     paramList = NULL;    //Check if pContent of a required field is missing	if ((reqOptFlag == REQUIRED) && (pContent == NULL))		return SML_ERR_XLT_MISSING_CONT;	//Check if pContent of a optional field is missing -> if yes we are done	else if (pContent == NULL)		return SML_ERR_OK;  	//Generate the commands -> see DTD	switch (tagId) {  	case TN_DEVINF_EXT:  		if ((_err = xltGenerateTag(TN_DEVINF_EXT, TT_BEG, enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;  		if ((_err = devinfEncBlock(TN_DEVINF_XNAM, REQUIRED, ((SmlDevInfExtPtr_t) pContent)->xnam, enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;  		pList = ((SmlDevInfExtPtr_t)pContent)->xval;          while (pList != NULL) {                      if ((_err = devinfEncBlock(TN_DEVINF_XVAL, OPTIONAL, pList->data, enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;              pList = pList->next;          };  		if ((_err = xltGenerateTag(TN_DEVINF_EXT, TT_END, enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;  		break;  	case TN_DEVINF_SYNCCAP:  		if ((_err = xltGenerateTag(TN_DEVINF_SYNCCAP, TT_BEG, enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;  		pList = ((SmlDevInfSyncCapPtr_t)pContent)->synctype;          while (pList != NULL) {                      if ((_err = devinfEncBlock(TN_DEVINF_SYNCTYPE, OPTIONAL, pList->data, enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;              pList = pList->next;          };  		if ((_err = xltGenerateTag(TN_DEVINF_SYNCCAP, TT_END, enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;  		break;  	case TN_DEVINF_SHAREDMEM:                        //set the flag in the (WB)XML document if the flag is in the pContent      if ((*((Flag_t *) pContent)) & (SmlDevInfSharedMem_f))          if ((_err = xltGenerateTag(tagId, TT_ALL, enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;      break;    // %%% luz:2003-04-28 added missing 1.1 devinf tags here	  case TN_DEVINF_UTC:	    //set the flag in the (WB)XML document if the flag is in the pContent      if ((*((Flag_t *) pContent)) & (SmlDevInfUTC_f)) {        if ((_err = xltGenerateTag(tagId, TT_ALL, enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;      }      break;	  case TN_DEVINF_NOFM:	    //set the flag in the (WB)XML document if the flag is in the pContent      if ((*((Flag_t *) pContent)) & (SmlDevInfNOfM_f)) {        if ((_err = xltGenerateTag(tagId, TT_ALL, enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;      }      break;	  case TN_DEVINF_LARGEOBJECT:	    //set the flag in the (WB)XML document if the flag is in the pContent      if ((*((Flag_t *) pContent)) & (SmlDevInfLargeObject_f)) {        if ((_err = xltGenerateTag(tagId, TT_ALL, enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;      }      break;    // %%% end luz    case TN_DEVINF_CTCAP:		if ((_err = xltGenerateTag(TN_DEVINF_CTCAP, TT_BEG, enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;        ctList = ((SmlDevInfCtcapListPtr_t)pContent);        if (ctList == NULL) return SML_ERR_XLT_INVAL_INPUT_DATA;        while (ctList != NULL) {             if (ctList->data == NULL) return SML_ERR_XLT_INVAL_INPUT_DATA;            if ((_err = devinfEncBlock(TN_DEVINF_CTTYPE, OPTIONAL, ctList->data->cttype, enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;            /* now the propList */            // %%% luz 2002-11-27: made property list optional (e.g. text/message of P800 has none)            propList = ctList->data->prop;            // %%% original: if (propList == NULL) return SML_ERR_XLT_INVAL_INPUT_DATA;            while (propList != NULL) {                if (propList->data == NULL) return SML_ERR_XLT_INVAL_INPUT_DATA;                if (propList->data->prop == NULL) return SML_ERR_XLT_INVAL_INPUT_DATA;                /* -- Propname */                if ((_err = devinfEncBlock(TN_DEVINF_PROPNAME, REQUIRED, propList->data->prop->name, enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;                /* -- (ValEnum+ | (Datatype, Size?))? */                //if (propList->data->prop->valenum == NULL && propList->data->prop->datatype == NULL) return SML_ERR_XLT_INVAL_INPUT_DATA;                if (propList->data->prop->valenum != NULL && propList->data->prop->datatype != NULL) return SML_ERR_XLT_INVAL_INPUT_DATA;                if (propList->data->prop->valenum != NULL) {                    // ValEnum+                    pList = propList->data->prop->valenum;                    while (pList != NULL) {                                if ((_err = devinfEncBlock(TN_DEVINF_VALENUM, REQUIRED, pList->data, enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;                        pList = pList->next;                    };                } else if (propList->data->prop->datatype != NULL) {                    // Datatype, Size?                    if ((_err = devinfEncBlock(TN_DEVINF_DATATYPE, REQUIRED, propList->data->prop->datatype, enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;                    if ((_err = devinfEncBlock(TN_DEVINF_SIZE,     OPTIONAL, propList->data->prop->size,     enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;                }                /* -- DisplayName ? */                if ((_err = devinfEncBlock(TN_DEVINF_DISPLAYNAME, OPTIONAL, propList->data->prop->dname, enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;                /* -- now the paramList */                paramList = propList->data->param;                while (paramList != NULL) {                    if ((_err = devinfEncBlock(TN_DEVINF_PARAMNAME, REQUIRED, paramList->data->name, enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;                    /* -- (ValEnum+ | (Datatype, Size?))? */                    //if (paramList->data->valenum == NULL && paramList->data->datatype == NULL) return SML_ERR_XLT_INVAL_INPUT_DATA;                    if (paramList->data->valenum != NULL && paramList->data->datatype != NULL) return SML_ERR_XLT_INVAL_INPUT_DATA;                    if (paramList->data->valenum != NULL) {                        // ValEnum+                        p2List = paramList->data->valenum;                        while (p2List != NULL) {                                    if ((_err = devinfEncBlock(TN_DEVINF_VALENUM, REQUIRED, p2List->data, enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;                            p2List = p2List->next;                        };                    } else if (paramList->data->datatype != NULL) {                        // Datatype, Size?                        if ((_err = devinfEncBlock(TN_DEVINF_DATATYPE, REQUIRED, paramList->data->datatype, enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;                        if ((_err = devinfEncBlock(TN_DEVINF_SIZE,     OPTIONAL, paramList->data->size,     enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;                    }                    /* -- DisplayName ? */                    if ((_err = devinfEncBlock(TN_DEVINF_DISPLAYNAME, OPTIONAL, paramList->data->dname, enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;                    paramList = paramList->next;                }                propList = propList->next;            }            /* eof propList */            ctList = ctList->next;        };                if ((_err = xltGenerateTag(TN_DEVINF_CTCAP, TT_END, enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;		break;    case TN_DEVINF_DSMEM:		if ((_err = xltGenerateTag(TN_DEVINF_DSMEM, TT_BEG, enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;		if ((_err = devinfEncBlock(TN_DEVINF_SHAREDMEM, OPTIONAL, &(((SmlDevInfDSMemPtr_t) pContent)->flags), enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;		if ((_err = devinfEncBlock(TN_DEVINF_MAXMEM,    OPTIONAL, ((SmlDevInfDSMemPtr_t) pContent)->maxmem, enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;		if ((_err = devinfEncBlock(TN_DEVINF_MAXID,     OPTIONAL, ((SmlDevInfDSMemPtr_t) pContent)->maxid,  enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;		if ((_err = xltGenerateTag(TN_DEVINF_DSMEM, TT_END, enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;		break;        // special case, the following 4 have the same structure, only the tag name differs    case TN_DEVINF_RX:    case TN_DEVINF_TX:    case TN_DEVINF_RXPREF:    case TN_DEVINF_TXPREF:		if ((_err = xltGenerateTag(tagId, TT_BEG, enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;		if ((_err = devinfEncBlock(TN_DEVINF_CTTYPE, REQUIRED, ((SmlDevInfXmitPtr_t) pContent)->cttype, enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;		if ((_err = devinfEncBlock(TN_DEVINF_VERCT,  REQUIRED, ((SmlDevInfXmitPtr_t) pContent)->verct,  enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;		if ((_err = xltGenerateTag(tagId, TT_END, enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;		break;    case TN_DEVINF_DATASTORE:		if ((_err = xltGenerateTag(TN_DEVINF_DATASTORE, TT_BEG, enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;		if ((_err = devinfEncBlock(TN_DEVINF_SOURCEREF,    REQUIRED, ((SmlDevInfDatastorePtr_t) pContent)->sourceref,    enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;		if ((_err = devinfEncBlock(TN_DEVINF_DISPLAYNAME,  OPTIONAL, ((SmlDevInfDatastorePtr_t) pContent)->displayname,  enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;		if ((_err = devinfEncBlock(TN_DEVINF_MAXGUIDSIZE,  OPTIONAL, ((SmlDevInfDatastorePtr_t) pContent)->maxguidsize,  enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;		if ((_err = devinfEncBlock(TN_DEVINF_RXPREF,       REQUIRED, ((SmlDevInfDatastorePtr_t) pContent)->rxpref,       enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;		xmList = ((SmlDevInfDatastorePtr_t)pContent)->rx;        while (xmList != NULL) {                    if ((_err = devinfEncBlock(TN_DEVINF_RX, OPTIONAL, xmList->data, enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;            xmList = xmList->next;        };		if ((_err = devinfEncBlock(TN_DEVINF_TXPREF,       REQUIRED, ((SmlDevInfDatastorePtr_t) pContent)->txpref,       enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;		xmList = ((SmlDevInfDatastorePtr_t)pContent)->tx;        while (xmList != NULL) {                    if ((_err = devinfEncBlock(TN_DEVINF_TX, OPTIONAL, xmList->data, enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;            xmList = xmList->next;        };		if ((_err = devinfEncBlock(TN_DEVINF_DSMEM,        OPTIONAL, ((SmlDevInfDatastorePtr_t) pContent)->dsmem,        enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;		if ((_err = devinfEncBlock(TN_DEVINF_SYNCCAP,      REQUIRED, ((SmlDevInfDatastorePtr_t) pContent)->synccap,      enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;		if ((_err = xltGenerateTag(TN_DEVINF_DATASTORE, TT_END, enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;		break;    case TN_DEVINF_DEVINF:		if ((_err = xltGenerateTag(TN_DEVINF_DEVINF, TT_BEG, enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;		if ((_err = devinfEncBlock(TN_DEVINF_VERDTD,  REQUIRED, ((SmlDevInfDevInfPtr_t) pContent)->verdtd,  enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;		if ((_err = devinfEncBlock(TN_DEVINF_MAN,     OPTIONAL, ((SmlDevInfDevInfPtr_t) pContent)->man,     enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;		if ((_err = devinfEncBlock(TN_DEVINF_MOD,     OPTIONAL, ((SmlDevInfDevInfPtr_t) pContent)->mod,     enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;		if ((_err = devinfEncBlock(TN_DEVINF_OEM,     OPTIONAL, ((SmlDevInfDevInfPtr_t) pContent)->oem,     enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;		if ((_err = devinfEncBlock(TN_DEVINF_FWV,     OPTIONAL, ((SmlDevInfDevInfPtr_t) pContent)->fwv,     enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;		if ((_err = devinfEncBlock(TN_DEVINF_SWV,     OPTIONAL, ((SmlDevInfDevInfPtr_t) pContent)->swv,     enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;		if ((_err = devinfEncBlock(TN_DEVINF_HWV,     OPTIONAL, ((SmlDevInfDevInfPtr_t) pContent)->hwv,     enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;		if ((_err = devinfEncBlock(TN_DEVINF_DEVID,   REQUIRED, ((SmlDevInfDevInfPtr_t) pContent)->devid,   enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;		if ((_err = devinfEncBlock(TN_DEVINF_DEVTYP,  REQUIRED, ((SmlDevInfDevInfPtr_t) pContent)->devtyp,  enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;		// %%% luz:2003-04-28 added missing SyncML 1.1 devinf tags				if ((_err = devinfEncBlock(TN_DEVINF_UTC,     OPTIONAL, &(((SmlDevInfDevInfPtr_t) pContent)->flags),     enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;		if ((_err = devinfEncBlock(TN_DEVINF_NOFM,    OPTIONAL, &(((SmlDevInfDevInfPtr_t) pContent)->flags),     enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;		if ((_err = devinfEncBlock(TN_DEVINF_LARGEOBJECT, OPTIONAL, &(((SmlDevInfDevInfPtr_t) pContent)->flags), enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;    // %%% end luz						dsList = ((SmlDevInfDevInfPtr_t)pContent)->datastore;        if (dsList == NULL) return SML_ERR_XLT_MISSING_CONT;        if ((_err = devinfEncBlock(TN_DEVINF_DATASTORE, REQUIRED, dsList->data, enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;        dsList = dsList->next;        while (dsList != NULL) {                    if ((_err = devinfEncBlock(TN_DEVINF_DATASTORE, OPTIONAL, dsList->data, enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;            dsList = dsList->next;        };          if ((_err = devinfEncBlock(TN_DEVINF_CTCAP, OPTIONAL, ((SmlDevInfDevInfPtr_t)pContent)->ctcap, enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;		exList = ((SmlDevInfDevInfPtr_t)pContent)->ext;        while (exList != NULL) {                    if ((_err = devinfEncBlock(TN_DEVINF_EXT, OPTIONAL, exList->data, enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;            exList = exList->next;        };		if ((_err = xltGenerateTag(TN_DEVINF_DEVINF, TT_END, enc, pBufMgr, SML_EXT_DEVINF)) != SML_ERR_OK) return _err;		break;	default: { // all leaf nodes (PCDATA#)        return xltEncPcdata(tagId, reqOptFlag, pContent, enc, pBufMgr, attFlag);	 } //* eof default statement from switch tagid 	} // eof switch tagid 	return SML_ERR_OK;}#endif /* __USE_DEVINF__ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -