📄 capiclnt.c
字号:
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 + -