mirror of
https://github.com/openharmony/developtools_syscap_codec.git
synced 2026-08-28 04:40:02 -04:00
+14
-23
@@ -29,9 +29,6 @@ constexpr size_t PCID_MAIN_U32 = OS_SYSCAP_U32_NUM + 2;
|
||||
constexpr size_t U32_TO_STR_MAX_LEN = 11;
|
||||
constexpr size_t KEY_BUFFER_SIZE = 32;
|
||||
|
||||
#define FREE_PRICAP_ARRAY_AFTER_GET_SYS_CAP 1
|
||||
#define FREE_PRIOUTPUT_AFTER_GET_SYS_CAP 2
|
||||
|
||||
#define GET_PARAMS(env, info, num) \
|
||||
size_t argc = num; \
|
||||
napi_value argv[num] = {0}; \
|
||||
@@ -53,16 +50,15 @@ struct SystemCapabilityAsyncContext {
|
||||
int status = 0;
|
||||
};
|
||||
|
||||
static char* CalculateAllStringLength(char *priOutput, char osCapArray[PCID_MAIN_U32][U32_TO_STR_MAX_LEN],
|
||||
char (*priCapArray)[SINGLE_SYSCAP_LEN], char *allSyscapBuffer)
|
||||
static char* CalculateAllStringLength(char osCapArray[PCID_MAIN_U32][U32_TO_STR_MAX_LEN],
|
||||
char (*priCapArray)[SINGLE_SYSCAP_LEN], bool retBool, int priCapArrayCnt)
|
||||
{
|
||||
bool retBool;
|
||||
errno_t err = EOK;
|
||||
char *temp = nullptr;
|
||||
int retError, priCapArrayCnt;
|
||||
int retError;
|
||||
int sumLen = 0;
|
||||
char *allSyscapBuffer = nullptr;
|
||||
|
||||
retBool = DecodePrivateSyscap(priOutput, &priCapArray, &priCapArrayCnt);
|
||||
if (!retBool) {
|
||||
PRINT_ERR("get encoded private syscap failed.");
|
||||
return allSyscapBuffer;
|
||||
@@ -111,20 +107,10 @@ static char* CalculateAllStringLength(char *priOutput, char osCapArray[PCID_MAIN
|
||||
return allSyscapBuffer;
|
||||
}
|
||||
|
||||
static char* FreeAfterGetSysCap(char *priOutput, char (*priCapArray)[SINGLE_SYSCAP_LEN], char *allSyscapBuffer,
|
||||
int32_t type)
|
||||
{
|
||||
if (type == FREE_PRICAP_ARRAY_AFTER_GET_SYS_CAP) {
|
||||
free(priCapArray);
|
||||
}
|
||||
free(priOutput);
|
||||
return allSyscapBuffer;
|
||||
}
|
||||
|
||||
static char* GetSystemCapability()
|
||||
{
|
||||
bool retBool;
|
||||
int retError, priOutputLen;
|
||||
int retError, priOutputLen, priCapArrayCnt;
|
||||
char osOutput[SINGLE_SYSCAP_LEN] = {};
|
||||
|
||||
uint32_t *osCapU32 = nullptr;
|
||||
@@ -142,7 +128,7 @@ static char* GetSystemCapability()
|
||||
retBool = EncodePrivateSyscap(&priOutput, &priOutputLen);
|
||||
if (!retBool) {
|
||||
PRINT_ERR("get encoded private syscap failed.");
|
||||
return FreeAfterGetSysCap(priOutput, priCapArray, allSyscapBuffer, FREE_PRIOUTPUT_AFTER_GET_SYS_CAP);
|
||||
goto FREE_PRIOUTPUT;
|
||||
}
|
||||
|
||||
osCapU32 = reinterpret_cast<uint32_t *>(osOutput);
|
||||
@@ -150,12 +136,17 @@ static char* GetSystemCapability()
|
||||
retError = sprintf_s(osCapArray[i], U32_TO_STR_MAX_LEN, "%u", osCapU32[i]);
|
||||
if (retError == -1) {
|
||||
PRINT_ERR("get uint32_t syscap string failed.");
|
||||
return FreeAfterGetSysCap(priOutput, priCapArray, allSyscapBuffer, FREE_PRIOUTPUT_AFTER_GET_SYS_CAP);
|
||||
goto FREE_PRIOUTPUT;
|
||||
}
|
||||
}
|
||||
retBool = DecodePrivateSyscap(priOutput, &priCapArray, &priCapArrayCnt);
|
||||
allSyscapBuffer = CalculateAllStringLength(osCapArray, priCapArray, retBool, priCapArrayCnt);
|
||||
free(priCapArray);
|
||||
|
||||
allSyscapBuffer = CalculateAllStringLength(priOutput, osCapArray, priCapArray, allSyscapBuffer);
|
||||
return FreeAfterGetSysCap(priOutput, priCapArray, allSyscapBuffer, FREE_PRICAP_ARRAY_AFTER_GET_SYS_CAP);
|
||||
FREE_PRIOUTPUT:
|
||||
free(priOutput);
|
||||
|
||||
return allSyscapBuffer;
|
||||
}
|
||||
|
||||
napi_value QuerySystemCapability(napi_env env, napi_callback_info info)
|
||||
|
||||
Reference in New Issue
Block a user