refoctor: refoctor the code to reduce function complexity.

Signed-off-by: yudechen <chenyude@huawei.com>
Change-Id: I9abd347e414395c44300a8e927332f7101c05c38
This commit is contained in:
yudechen
2023-06-26 11:30:18 +08:00
parent 5226783173
commit 2a1fedee7c
4 changed files with 398 additions and 346 deletions
+21 -23
View File
@@ -242,53 +242,52 @@ bool DecodeOsSyscap(const char input[PCID_MAIN_BYTES], char (**output)[SINGLE_SY
return true;
}
bool DecodePrivateSyscap(char *input, char (**output)[SINGLE_SYSCAP_LEN], int *outputCnt)
int32_t GetPriSyscapCount(char *input)
{
char (*outputArray)[SINGLE_SYSCAP_LEN] = NULL;
int32_t syscapCnt = 0;
char *inputPos = input;
int bufferLen, ret;
int syscapCnt = 0;
if (input == NULL) {
*output = outputArray;
*outputCnt = syscapCnt;
return false;
}
while (*inputPos != '\0') {
if (*inputPos == ',') {
syscapCnt++;
}
inputPos++;
}
return syscapCnt;
}
bool DecodePrivateSyscap(char *input, char (**output)[SINGLE_SYSCAP_LEN], int *outputCnt)
{
char *inputPos = input;
char (*outputArray)[SINGLE_SYSCAP_LEN] = NULL;
if (input == NULL) {
return false;
}
int syscapCnt = GetPriSyscapCount(inputPos);
*outputCnt = syscapCnt;
if (syscapCnt == 0) {
*output = outputArray;
*outputCnt = syscapCnt;
return true;
}
inputPos = input;
bufferLen = SINGLE_SYSCAP_LEN * syscapCnt;
int bufferLen = SINGLE_SYSCAP_LEN * syscapCnt;
outputArray = (char (*)[SINGLE_SYSCAP_LEN])malloc(bufferLen);
if (outputArray == NULL) {
PRINT_ERR("malloc buffer failed, size = %d, errno = %d\n", bufferLen, errno);
*outputCnt = 0;
return false;
}
(void)memset_s(outputArray, bufferLen, 0, bufferLen);
*output = outputArray;
inputPos = input;
char buffer[SINGLE_FEAT_LEN] = {0};
char *bufferPos = buffer;
while (*inputPos != '\0') {
if (*inputPos == ',') {
*bufferPos = '\0';
ret = sprintf_s(*outputArray, SINGLE_SYSCAP_LEN, "SystemCapability.%s", buffer);
if (ret == -1) {
PRINT_ERR("sprintf_s failed\n");
*outputCnt = 0;
if (sprintf_s(*outputArray, SINGLE_SYSCAP_LEN, "SystemCapability.%s", buffer) == -1) {
free(outputArray);
outputArray = NULL;
return false;
}
bufferPos = buffer;
@@ -299,7 +298,6 @@ bool DecodePrivateSyscap(char *input, char (**output)[SINGLE_SYSCAP_LEN], int *o
*bufferPos++ = *inputPos++;
}
*outputCnt = syscapCnt;
return true;
}