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

📄 capiclnt.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 4 页
字号:
        if (value == NULL)
            break;
        if (length != 0 && value[length-1]=='\0')
            length--;
        source = (BYTE*) db_getPtr(ref, (BYTE*) CREDENTIALS, FALSE, &error);
        if (error == DB_err_success) {
            for (s=source+2; *s++;)
                ;
            temp = (BYTE*) OSConnectorAlloc(totLen = length + (s - source) + 1);
            if (temp == NULL)
                return;
            for (s=temp+2, source+=2; *s++ = *source; source++)
                ;
        } else if (error == DB_err_field) {
            temp = (BYTE*) OSConnectorAlloc(totLen = length + 4);
            if (temp == NULL)
                return;
            s = temp + 2;
            *s++ = '\0';
        } else
            return;
        
        for (; length > 0; length--)
            *s++ = (const BYTE) *value++;
        *s = '\0';

        *(UINT16*) temp = totLen; 
        error = db_setMem(ref, (BYTE*) CREDENTIALS, temp);
        break;
    case configAUTH_ID_GW:
        if (value == NULL) {
            db_deleteItem(ref, (BYTE*) CREDENTIALS);
            break;
        }
        if (length != 0 && value[length-1]=='\0')
            length--;
        source = (BYTE*) db_getPtr(ref, (BYTE*) CREDENTIALS, FALSE, &error);
        if (error == DB_err_success) {
            s = source;
            for (source+=2; *source++;)
                ;
            temp = (BYTE*) OSConnectorAlloc(totLen = length + *(UINT16*)s - (source - s) + 3);
        } else if (error == DB_err_field)
            temp = (BYTE*) OSConnectorAlloc(totLen = length + 4);
        else
            return;

        if (temp == NULL)
            return;
        for (s=temp+2; length > 0; length--)
            *s++ = (const BYTE) *value++;
        *s++ = '\0';

        if (error == DB_err_success) {
            for (; *s++ = *source; source++)
                ;
        } else
            *s = '\0';

        *(UINT16*) temp = totLen; 
        error = db_setMem(ref, (BYTE*) CREDENTIALS, temp);
        break;
    case configSTARTPAGE:
		error = db_setStr(ref, (BYTE*) STARTPAGE,  temp = db_createStr(value, (UINT16) length));
        break;
    case configPROXY_PROVIDER_ID:
		error = db_setStr(ref, (BYTE*) PROXY_PROVIDER_ID,  temp = db_createStr(value, (UINT16) length));
        break;
    case configADD_HOST:
        addHost(objectId, channelId, (const BYTE*) value, length);
        break;
    case configDELETE_HOST:
        deleteHost(objectId, channelId, (const BYTE*) value, length);
        break;
    }
    if (error)
        OSConnectorFree(temp);
}



EXPORT_C VOID    CLNTc_file (UINT8 fileId, CHAR *data, UINT16 length, const CHAR *contentType)
{
	XMK_SEND_TMP_VARS

	yPDef_GetFileResponse var;

    CHAR    *pCHAR;

 #if     defined LOG_EXTERNAL
    {
        const CHAR  *_contentType = contentType;
        CHAR    *pData;
        const CHAR  *_data = cszNULL;
        BOOL    bFree = FALSE;
        if (data)
        {
            _data = pData = OctetString2HexString(data, length);
            bFree = TRUE;
        }
        if (!_contentType)
        {
            _contentType = cszNULL;
        }
        CLNTa_log(0, 0, "CLNTc_file\nUINT8 \t fileId \t %u\nCHAR * \t data \t %s\nUINT16 \t length \t %u\nconst CHAR * \t contentType \t %s\n", (int)fileId, _data, (int)length, _contentType);
        if (bFree)
        {
            OSConnectorFree(pData);
        }
    }
#endif

	var.Param1 = fileId;

    pCHAR = NULL;
    if (length)
    {
        if (data)
        {
            pCHAR = (CHAR*)OSConnectorAlloc(length);
            if (!pCHAR)
                return;
            memcpy(pCHAR, data, length);
        }
        else
        {
            length = 0;
        }
    }
    var.Param3 = length;
    var.Param2 = pCHAR;

    pCHAR = NULL;
    if (contentType)
    {
        size_t  len = strlen(contentType);
        /*  Add one extra byte for the terminating zero.*/
        pCHAR = (CHAR*)OSConnectorAlloc(++len);
        if (!pCHAR)
            return;
        memcpy(pCHAR, contentType, len);
    }
    var.Param4 = pCHAR;

    XMK_SEND_ENV( ENV,
                  GetFileResponse,
                  xDefaultPrioSignal,
                  sizeof( yPDef_GetFileResponse ),
                  &var,
                  GLOBALPID(XPTID_RES_FC,0));
}


EXPORT_C VOID    CLNTc_functionResult (UINT8 functionId, const CHAR *data, UINT16 length, const CHAR *contentType, const variableType * const *attributes)
{
	XMK_SEND_TMP_VARS

	yPDef_CallFunctionResult var;
    CHAR    *pCHAR;
    variableType    **ppVariableType;

#if     defined LOG_EXTERNAL
    {
        const CHAR  *_data, *_contentType;
        char    *strData = NULL;
        _data = cszNULL;
        if (length)
        {
            if (data)
            {
                _data = strData = OctetString2HexString(data, length);
            }
        }
        if (contentType)
        {
            _contentType = contentType;
        }
        CLNTa_log(0, 0, "CLNTc_functionResult\nUINT8 \t functionId \t %u\nconst CHAR * \t data \t %s\nUINT16 \t length \t %u\nconst CHAR * \t contentType \t %s\nconst CHAR * \t attributes \t %x\n", (int)functionId, _data, (int)length, _contentType, attributes);
        OSConnectorFree(strData);
    }
#endif

    var.Param1 = functionId;

    pCHAR = NULL;
    if (length)
    {
        if (data)
        {
            pCHAR = (CHAR*)OSConnectorAlloc(length);
            if (!pCHAR)
                return;
            memcpy(pCHAR, data, length);
        }
        else
        {
            length = 0;
        }
    }
    var.Param3 = length;
    var.Param2 = pCHAR;
    pCHAR = NULL;
    if (contentType)
    {
        size_t  len = strlen(contentType);
        if (len)
        {
            /*  Add one for the terminating zero.*/
            pCHAR = (CHAR *)OSConnectorAlloc(++len);
            if (!pCHAR)
                return;
            strncpy(pCHAR, contentType, len);
        }
    }
    var.Param4 = pCHAR;
    ppVariableType = NULL;
    if (attributes)
    {
        const variableType * const  *pcpcVariableType;
        unsigned    i;
        const variableType  *pcvariableType;

        i = 0;
        pcpcVariableType = attributes;
        while (*pcpcVariableType++)
        {
            i++;
        }

        /*  Add one for a terminating NULL.*/
        ++i;
        ppVariableType = (variableType**)OSConnectorAlloc(i * sizeof(variableType*));

        i = 0;
        pcpcVariableType = attributes;
        while (pcvariableType = *pcpcVariableType++)
        {
            variableType    *pVariableType;
            const WCHAR *pcWCHAR;
            WCHAR   *pWCHAR;
            size_t  len;
            pVariableType = (variableType *)OSConnectorAlloc(sizeof(variableType));
            if (!pVariableType)
                return;
            pWCHAR = NULL;
            if (pcWCHAR = pcvariableType->name)
            {
                len = w_strlen(pcWCHAR) + 1;
                pWCHAR = (WCHAR *)OSConnectorAlloc(len * sizeof(WCHAR));
                if (!pWCHAR)
                    return;
                w_strcpy(pWCHAR, pcWCHAR);
            }
            pVariableType->name = pWCHAR;
            pWCHAR = NULL;
            if (pcWCHAR = pcvariableType->value)
            {
                len = w_strlen(pcWCHAR) + 1;
                pWCHAR = (WCHAR *)OSConnectorAlloc(len * sizeof(WCHAR));
                if (!pWCHAR)
                    return;
                w_strcpy(pWCHAR, pcWCHAR);
            }
            pVariableType->value = pWCHAR;
            ppVariableType[i++] = pVariableType;
        }
        ppVariableType[i] = NULL;
    }
    var.Param5 = ppVariableType;

    XMK_SEND_ENV( ENV,
                  CallFunctionResult,
                  xDefaultPrioSignal,
                  sizeof( yPDef_CallFunctionResult ),
                  &var,
                  GLOBALPID(XPTID_RES_FC,0));
}


EXPORT_C VOID    CLNTc_getContent (const CHAR *url, UINT8 urlID, BOOL reload, const CHAR *acceptHeader)
{
	XMK_SEND_TMP_VARS

    yPDef_GetContent var;
    CHAR    *pCHAR;
    size_t  len;

#if     defined LOG_EXTERNAL
    {
        const CHAR  *_url = url;
        const CHAR  *cszAcceptHeader = acceptHeader;
        if (!_url)
        {
            _url = cszNULL;
        }
        if (!acceptHeader)
        {
            cszAcceptHeader = cszNULL;
        }
        CLNTa_log(0, 0, "CLNTc_getContent\nconst CHAR * \t url \t %s\nUINT8 \t urlID \t %u\nBOOL \t reload \t %u\nconst CHAR * \t acceptHeader \t %s\n", _url, (int)urlID, (int)reload, cszAcceptHeader);
    }
#endif

    var.Param2 = urlID;

    pCHAR = NULL;
    if (url)
    {
        len = strlen(url);
        /*  Add one extra byte for the terminating zero.*/
        pCHAR = (CHAR*)OSConnectorAlloc(++len);
        if (!pCHAR)
            return;
        memcpy(pCHAR, url, len);
    }
    var.Param1 = pCHAR;
    var.Param3 = reload;
    pCHAR = NULL;
    if (acceptHeader)
    {
        len = strlen(acceptHeader);
        /*  Add one extra byte for the terminating zero.*/
        pCHAR = (CHAR*)OSConnectorAlloc(++len);
        if (!pCHAR)
            return;
        memcpy(pCHAR, acceptHeader, len);
    }
    var.Param4 = pCHAR;

    XMK_SEND_ENV( ENV,
                  GetContent,
                  xDefaultPrioSignal,
                  sizeof( yPDef_GetContent ),
                  &var,
                  GLOBALPID(XPTID_CONT_UA,0));
}


EXPORT_C VOID    CLNTc_postContent (const CHAR *url, UINT8 urlID, BOOL reload, const CHAR *acceptHeader, const CHAR *data, UINT16 dataLen, BOOL moreData, const CHAR *contentType, UINT8 sendMode, const CHAR *contentDisp, UINT32 totalSize)
{
	XMK_SEND_TMP_VARS

	yPDef_PostContent var;
    size_t  len;
    CHAR    *sz, *pCHAR;

#if     defined LOG_EXTERNAL
    {
        CLNTa_log(0, 0, "CLNTc_postContent\nconst CHAR * \t url \t %s\nUINT8 \t urlID \t %u\nBOOL \t reload \t %u\nconst CHAR * \t acceptHeader \t %s\nUINT16 \t dataLen \t %u\nBOOL \t moreData \t %u\nconst CHAR * \t contentType \t %s\nUINT8 \t sendMode \t %u\nconst CHAR * \t contentDisp \t %s\nUINT32 \t totalSize \t %u\n", url, (int)urlID, (int)reload, acceptHeader, (int)dataLen, (int)moreData, contentType, (int)sendMode, contentDisp, totalSize);
    }
#endif

    sz = NULL;
    if (url)
    {
        len = strlen(url);
        /*  Add one extra byte for the terminating zero.*/
        sz = (CHAR*)OSConnectorAlloc(++len);
        if (!sz)
            return;
        memcpy(sz, url, len);
    }
    var.Param1 = sz;
    var.Param2 = urlID;
    var.Param3 = reload;
    sz = NULL;
    if (acceptHeader)
    {
        len = strlen(acceptHeader);
        /*  Add one extra byte for the terminating zero.*/
        sz = (CHAR*)OSConnectorAlloc(++len);
        if (!sz)
            return;
        memcpy(sz, acceptHeader, len);
    }
    var.Param4 = sz;
    pCHAR = NULL;
    if (dataLen)
    {
        if (data)
        {
            pCHAR = (CHAR*)OSConnectorAlloc(dataLen);
            if (!pCHAR)
                return;
            memcpy(pCHAR, data, dataLen);
        }
        else
        {
            dataLen = 0;
        }
    }
    var.Param5 = pCHAR;
    var.Param6 = dataLen;
	var.Param7 = moreData;
    sz = NULL;
    if (contentType)
    {
        len = strlen(contentType);
        /*  Add one extra byte for the terminating zero.*/
        sz = (CHAR*)OSConnectorAlloc(++len);
        if (!sz)

⌨️ 快捷键说明

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