mirror of
https://github.com/openharmony/developtools_syscap_codec.git
synced 2026-08-27 02:11:19 -04:00
+4
-1
@@ -16,7 +16,10 @@
|
||||
"name": "syscap_codec",
|
||||
"subsystem": "developtools",
|
||||
"syscap": [ "SystemCapability.Developtools.Syscap" ],
|
||||
"feature": [ "syscap_codec_config_path" ],
|
||||
"feature": [
|
||||
"syscap_codec_config_path",
|
||||
"syscap_codec_config_extern_path"
|
||||
],
|
||||
"adapted_system_type": [ "small", "standard" ],
|
||||
"rom": "0",
|
||||
"ram": "0",
|
||||
|
||||
@@ -249,6 +249,7 @@ bool DecodePrivateSyscap(char *input, char (**output)[SINGLE_SYSCAP_LEN], int *o
|
||||
*bufferPos = '\0';
|
||||
if (sprintf_s(*outputArray, SINGLE_SYSCAP_LEN, "SystemCapability.%s", buffer) == -1) {
|
||||
free(outputArray);
|
||||
outputArray = NULL;
|
||||
return false;
|
||||
}
|
||||
bufferPos = buffer;
|
||||
@@ -515,7 +516,10 @@ char *DecodeRpcidToStringFormat(const char *inputFile)
|
||||
}
|
||||
|
||||
PartSysCapAndOutBuffer(freeAfterDecodeRpcidInfo, outBuffer, priSyscapArray, sysCapArray);
|
||||
|
||||
free(priSyscapArray);
|
||||
priSyscapArray = NULL;
|
||||
|
||||
return FreeAfterDecodeRpcidToString(freeAfterDecodeRpcidInfo, FREE_MALLOC_PRISYSCAP_AFTER_DECODE_RPCID, outBuffer);
|
||||
}
|
||||
|
||||
|
||||
@@ -112,7 +112,7 @@ static char* GetSystemCapability()
|
||||
bool retBool;
|
||||
int retError, priOutputLen, priCapArrayCnt;
|
||||
char osOutput[SINGLE_SYSCAP_LEN] = {};
|
||||
|
||||
|
||||
uint32_t *osCapU32 = nullptr;
|
||||
char *priOutput = nullptr;
|
||||
|
||||
@@ -149,14 +149,13 @@ FREE_PRIOUTPUT:
|
||||
return allSyscapBuffer;
|
||||
}
|
||||
|
||||
napi_value QuerySystemCapability(napi_env env, napi_callback_info info)
|
||||
napi_value PreHandleSystemCapability(
|
||||
napi_env env, napi_callback_info info, SystemCapabilityAsyncContext *asyncContext)
|
||||
{
|
||||
GET_PARAMS(env, info, 1);
|
||||
NAPI_ASSERT(env, argc <= 1, "too many parameters");
|
||||
napi_value result = nullptr;
|
||||
|
||||
SystemCapabilityAsyncContext* asyncContext = new SystemCapabilityAsyncContext();
|
||||
|
||||
asyncContext->env = env;
|
||||
|
||||
napi_valuetype valueType = napi_undefined;
|
||||
@@ -172,6 +171,13 @@ napi_value QuerySystemCapability(napi_env env, napi_callback_info info)
|
||||
} else {
|
||||
napi_get_undefined(env, &result);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
napi_value QuerySystemCapability(napi_env env, napi_callback_info info)
|
||||
{
|
||||
SystemCapabilityAsyncContext *asyncContext = new SystemCapabilityAsyncContext();
|
||||
napi_value result = PreHandleSystemCapability(env, info, asyncContext);
|
||||
napi_value resource = nullptr;
|
||||
napi_create_string_utf8(env, "napi_value QuerySystemCapability", NAPI_AUTO_LENGTH, &resource);
|
||||
|
||||
|
||||
+2
-3
@@ -344,7 +344,6 @@ int32_t GetOsSyscap(PCIDMain *pcidMain, cJSON *sysCapObject)
|
||||
return -1;
|
||||
}
|
||||
|
||||
cJSON_Delete(capVectorPtr);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -362,7 +361,7 @@ int32_t GetPriSyscap(PCIDMain *pcidMain, cJSON *sysCapObject, size_t contextBufL
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (contextBufLen < 0 || contextBufLen > UINT32_MAX) {
|
||||
if (contextBufLen > UINT32_MAX) {
|
||||
PRINT_ERR("the data privateSyscapLen is out of scope.");
|
||||
return GetPriSyscapResult(capVectorPtr, -1);
|
||||
}
|
||||
@@ -898,7 +897,7 @@ int32_t EncodePcidscToString(char *inputFile, char *outDirPath)
|
||||
freePcidInfo.priSyscapFull = (char *)malloc(priSyscapCount * SINGLE_SYSCAP_LEN);
|
||||
if (freePcidInfo.priSyscapFull == NULL) {
|
||||
PRINT_ERR("malloc failed\n");
|
||||
return FreeAfterEncodePCID(freePcidInfo, FREE_ENCODE_PCID_PRISYSCAP_FULL_OUT, ret);
|
||||
return FreeAfterEncodePCID(freePcidInfo, FREE_ENCODE_PCID_CONTEXT_OUT, ret);
|
||||
}
|
||||
(void)memset_s(freePcidInfo.priSyscapFull, priSyscapCount * SINGLE_SYSCAP_LEN,
|
||||
0, priSyscapCount * SINGLE_SYSCAP_LEN);
|
||||
|
||||
+9
-7
@@ -121,11 +121,13 @@ static int32_t FillOsCapLength(char *convertedBuffer, char *contextBuffer, struc
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int32_t FreeAfterRPCIDEncode(char *convertedBuffer, char *contextBuffer, int32_t type, int32_t ret)
|
||||
static int32_t FreeAfterRPCIDEncode(
|
||||
cJSON *cjsonObjectRoot, char *convertedBuffer, char *contextBuffer, int32_t type, int32_t ret)
|
||||
{
|
||||
if (type == FREE_CONVERT_OUT_RPCID_ENCODE) {
|
||||
free(convertedBuffer);
|
||||
}
|
||||
cJSON_Delete(cjsonObjectRoot);
|
||||
FreeContextBuffer(contextBuffer);
|
||||
return ret;
|
||||
}
|
||||
@@ -150,19 +152,19 @@ int32_t RPCIDEncode(char *inputFile, char *outputPath)
|
||||
gJsonObjectSysCap.cjsonObjectRoot = cJSON_ParseWithLength(contextBuffer, bufferLen);
|
||||
if (gJsonObjectSysCap.cjsonObjectRoot == NULL) {
|
||||
PRINT_ERR("cJSON_Parse failed, context buffer is:\n%s\n", contextBuffer);
|
||||
return FreeAfterRPCIDEncode(convertedBuffer, contextBuffer, FREE_CONTEXT_OUT_RPCID_ENCODE, -1);
|
||||
return FreeAfterRPCIDEncode(gJsonObjectSysCap.cjsonObjectRoot, convertedBuffer, contextBuffer, FREE_CONTEXT_OUT_RPCID_ENCODE, -1);
|
||||
}
|
||||
|
||||
gJsonObjectSysCap.sysCapPtr = cJSON_GetObjectItem(gJsonObjectSysCap.cjsonObjectRoot, "syscap");
|
||||
if (gJsonObjectSysCap.sysCapPtr == NULL || !cJSON_IsArray(gJsonObjectSysCap.sysCapPtr)) {
|
||||
PRINT_ERR("get \"syscap\" object failed.\n");
|
||||
return FreeAfterRPCIDEncode(convertedBuffer, contextBuffer, FREE_CONTEXT_OUT_RPCID_ENCODE, -1);
|
||||
return FreeAfterRPCIDEncode(gJsonObjectSysCap.cjsonObjectRoot, convertedBuffer, contextBuffer, FREE_CONTEXT_OUT_RPCID_ENCODE, -1);
|
||||
}
|
||||
|
||||
ret = cJSON_GetArraySize(gJsonObjectSysCap.sysCapPtr);
|
||||
if (ret < 0) {
|
||||
PRINT_ERR("get \"syscap\" array size failed\n");
|
||||
return FreeAfterRPCIDEncode(convertedBuffer, contextBuffer, FREE_CONTEXT_OUT_RPCID_ENCODE, -1);
|
||||
return FreeAfterRPCIDEncode(gJsonObjectSysCap.cjsonObjectRoot, convertedBuffer, contextBuffer, FREE_CONTEXT_OUT_RPCID_ENCODE, -1);
|
||||
}
|
||||
sysCapSize = (uint32_t)ret;
|
||||
// 2, to save SysCaptype & SysCapLength
|
||||
@@ -171,19 +173,19 @@ int32_t RPCIDEncode(char *inputFile, char *outputPath)
|
||||
convertedBuffer = (char *)malloc(convertedBufLen);
|
||||
if (convertedBuffer == NULL) {
|
||||
PRINT_ERR("malloc failed\n");
|
||||
return FreeAfterRPCIDEncode(convertedBuffer, contextBuffer, FREE_CONTEXT_OUT_RPCID_ENCODE, -1);
|
||||
return FreeAfterRPCIDEncode(gJsonObjectSysCap.cjsonObjectRoot, convertedBuffer, contextBuffer, FREE_CONTEXT_OUT_RPCID_ENCODE, -1);
|
||||
}
|
||||
(void)memset_s(convertedBuffer, convertedBufLen, 0, convertedBufLen);
|
||||
|
||||
ret = FillOsCapLength(convertedBuffer, contextBuffer, gJsonObjectSysCap, sysCapSize, ret);
|
||||
if (ret == -1) {
|
||||
return FreeAfterRPCIDEncode(convertedBuffer, contextBuffer, FREE_CONVERT_OUT_RPCID_ENCODE, ret);
|
||||
return FreeAfterRPCIDEncode(gJsonObjectSysCap.cjsonObjectRoot, convertedBuffer, contextBuffer,FREE_CONVERT_OUT_RPCID_ENCODE, ret);
|
||||
}
|
||||
ret = ConvertedContextSaveAsFile(outputPath, "rpcid.sc", convertedBuffer, convertedBufLen);
|
||||
if (ret != 0) {
|
||||
PRINT_ERR("ConvertedContextSaveAsFile failed, outputPath:%s, filename:rpcid.sc\n", outputPath);
|
||||
}
|
||||
return FreeAfterRPCIDEncode(convertedBuffer, contextBuffer, FREE_CONVERT_OUT_RPCID_ENCODE, ret);
|
||||
return FreeAfterRPCIDEncode(gJsonObjectSysCap.cjsonObjectRoot, convertedBuffer, contextBuffer,FREE_CONVERT_OUT_RPCID_ENCODE, ret);
|
||||
}
|
||||
|
||||
static int32_t ParseRpcidToJson(char *input, uint32_t inputLen, cJSON *rpcidJson)
|
||||
|
||||
Reference in New Issue
Block a user