!83 修复字符串形式pcid转json形式可能出现的错误。

Merge pull request !83 from chenyude/interfaces
This commit is contained in:
openharmony_ci
2022-07-05 07:51:25 +00:00
committed by Gitee
4 changed files with 44 additions and 48 deletions
+1 -3
View File
@@ -19,8 +19,6 @@
#include <stdint.h>
#define OS_SYSCAP_BYTES 120
#define TYPE_FILE 1
#define TYPE_STRING 2
typedef struct ProductCompatibilityID {
uint16_t apiVersion : 15;
@@ -41,6 +39,6 @@ typedef struct pcidHeader {
int32_t CreatePCID(char *inputFile, char *outDirPath);
int32_t DecodePCID(char *inputFile, char *outDirPath);
int32_t DecodeStringPCIDToJson(char *input, char *outDirPath, int type);
int32_t DecodeStringPCIDToJson(char *input, char *outDirPath);
int32_t EncodePcidscToString(char *inputFile, char *outDirPath);
#endif
+13 -15
View File
@@ -30,7 +30,7 @@ typedef enum SystemCapabilityNum {
ACCOUNT_APPACCOUNT,
ACCOUNT_OSACCOUNT,
ACE_ACEENGINELITE,
ACE_UI_APPEARANCE,
ACE_UIAPPEARANCE,
AI_AIENGINE,
APPLICATIONS_CONTACTSDATA,
BARRIERFREE_ACCESSIBILITY_CORE,
@@ -62,11 +62,10 @@ typedef enum SystemCapabilityNum {
DISTRIBUTEDDATAMANAGER_PREFERENCES_CORE,
DISTRIBUTEDDATAMANAGER_RELATIONALSTORE_CORE,
DISTRIBUTEDHARDWARE_DEVICEMANAGER,
DISTRIBUTEDHARDWARE_DISTRIBUTED_CAMERA,
DISTRIBUTEDHARDWARE_DISTRIBUTED_AUDIO,
DISTRIBUTEDHARDWARE_DISTRIBUTED_HARDWARE_FWK,
DISTRIBUTEDHARDWARE_DISTRIBUTED_SCREEN,
DISTRIBUTEDHARDWARE_DISTRIBUTED_INPUT,
DISTRIBUTEDHARDWARE_DISTRIBUTEDCAMERA,
DISTRIBUTEDHARDWARE_DISTRIBUTEDHARDWAREFWK,
DISTRIBUTEDHARDWARE_DISTRIBUTEDSCREEN,
DISTRIBUTEDHARDWARE_DISTRIBUTEDINPUT,
FILEMANAGEMENT_FILEMANAGERSERVICE,
FILEMANAGEMENT_REMOTEFILESHARE,
FILEMANAGEMENT_STORAGESERVICE_BACKUP,
@@ -147,7 +146,7 @@ typedef enum SystemCapabilityNum {
RESOURCESCHEDULE_USAGESTATISTICS_APPGROUP,
RESOURCESCHEDULE_WORKSCHEDULER,
SECURITY_ACCESSTOKEN,
SECURITY_DLP_PERMISSION_SERVICE,
SECURITY_DLPPERMISSIONSERVICE,
SECURITY_APPVERIFY,
SECURITY_DATATRANSITMANAGER,
SECURITY_DEVICEAUTH,
@@ -184,7 +183,7 @@ typedef enum SystemCapabilityNum {
const static SyscapWithNum arraySyscap[] = {
{"SystemCapability.Account.AppAccount", ACCOUNT_APPACCOUNT},
{"SystemCapability.Account.OsAccount", ACCOUNT_OSACCOUNT},
{"SystemCapability.Ace.UiAppearance", ACE_UI_APPEARANCE},
{"SystemCapability.Ace.UiAppearance", ACE_UIAPPEARANCE},
{"SystemCapability.Ace.AceEngineLite", ACE_ACEENGINELITE},
{"SystemCapability.Ai.AiEngine", AI_AIENGINE},
{"SystemCapability.Applications.ContactsData", APPLICATIONS_CONTACTSDATA},
@@ -217,11 +216,10 @@ const static SyscapWithNum arraySyscap[] = {
{"SystemCapability.DistributedDataManager.Preferences.Core", DISTRIBUTEDDATAMANAGER_PREFERENCES_CORE},
{"SystemCapability.DistributedDataManager.RelationalStore.Core", DISTRIBUTEDDATAMANAGER_RELATIONALSTORE_CORE},
{"SystemCapability.DistributedHardware.DeviceManager", DISTRIBUTEDHARDWARE_DEVICEMANAGER},
{"SystemCapability.DistributedHardware.DistributedCamera", DISTRIBUTEDHARDWARE_DISTRIBUTED_CAMERA},
{"SystemCapability.DistributedHardware.DistributedAudio", DISTRIBUTEDHARDWARE_DISTRIBUTED_AUDIO},
{"SystemCapability.DistributedHardware.DistributedHardwareFWK", DISTRIBUTEDHARDWARE_DISTRIBUTED_HARDWARE_FWK},
{"SystemCapability.DistributedHardware.DistributedScreen", DISTRIBUTEDHARDWARE_DISTRIBUTED_SCREEN},
{"SystemCapability.DistributedHardware.DistributedInput", DISTRIBUTEDHARDWARE_DISTRIBUTED_INPUT},
{"SystemCapability.DistributedHardware.DistributedCamera", DISTRIBUTEDHARDWARE_DISTRIBUTEDCAMERA},
{"SystemCapability.DistributedHardware.DistributedHardwareFWK", DISTRIBUTEDHARDWARE_DISTRIBUTEDHARDWAREFWK},
{"SystemCapability.DistributedHardware.DistributedScreen", DISTRIBUTEDHARDWARE_DISTRIBUTEDSCREEN},
{"SystemCapability.DistributedHardware.DistributedInput", DISTRIBUTEDHARDWARE_DISTRIBUTEDINPUT},
{"SystemCapability.FileManagement.FileManagerService", FILEMANAGEMENT_FILEMANAGERSERVICE},
{"SystemCapability.FileManagement.RemoteFileShare", FILEMANAGEMENT_REMOTEFILESHARE},
{"SystemCapability.FileManagement.StorageService.Backup", FILEMANAGEMENT_STORAGESERVICE_BACKUP},
@@ -229,7 +227,7 @@ const static SyscapWithNum arraySyscap[] = {
{"SystemCapability.Graphic.Graphic2D.EGL", GRAPHIC_GRAPHIC2D_EGL},
{"SystemCapability.Graphic.Graphic2D.GLES3", GRAPHIC_GRAPHIC2D_GLES3},
{"SystemCapability.Graphic.Graphic2D.NativeDrawing", GRAPHIC_GRAPHIC2D_NATIVEDRAWING},
{"SystemCapability.Graphic.Graphic2D.NativeWindow", GRAPHIC_GRAPHIC2D_NATIVEDRAWING},
{"SystemCapability.Graphic.Graphic2D.NativeWindow", GRAPHIC_GRAPHIC2D_NATIVEWINDOW},
{"SystemCapability.Graphic.Graphic2D.WebGL", GRAPHIC_GRAPHIC2D_WEBGL},
{"SystemCapability.Graphic.Graphic2D.WebGL2", GRAPHIC_GRAPHIC2D_WEBGL2},
{"SystemCapability.Graphic.Surface", GRAPHIC_SURFACE},
@@ -302,7 +300,7 @@ const static SyscapWithNum arraySyscap[] = {
{"SystemCapability.ResourceSchedule.UsageStatistics.AppGroup", RESOURCESCHEDULE_USAGESTATISTICS_APPGROUP},
{"SystemCapability.ResourceSchedule.WorkScheduler", RESOURCESCHEDULE_WORKSCHEDULER},
{"SystemCapability.Security.AccessToken", SECURITY_ACCESSTOKEN},
{"SystemCapability.Security.DlpPermissionService", SECURITY_DLP_PERMISSION_SERVICE},
{"SystemCapability.Security.DlpPermissionService", SECURITY_DLPPERMISSIONSERVICE},
{"SystemCapability.Security.AppVerify", SECURITY_APPVERIFY},
{"SystemCapability.Security.DataTransitManager", SECURITY_DATATRANSITMANAGER},
{"SystemCapability.Security.DeviceAuth", SECURITY_DEVICEAUTH},
+26 -28
View File
@@ -533,12 +533,15 @@ static int32_t ParseStringSyscap(char *input, uint32_t *osSyscap, uint32_t osSys
return -1;
}
while (sscanf_s(input, "%u,%s", &tempNum, input, inputLen) == 2) { // 2, return val of "%u,%s"
if (i >= OS_SYSCAP_NUM) {
PRINT_ERR("Get os syscap numbers(%u) greater than %u.\n", i + 1, osSyscapNum);
return -1;
}
while (sscanf_s(input, "%u,%s", &tempNum, input, inputLen)) {
osSyscap[i++] = tempNum;
if (i >= OS_SYSCAP_NUM) {
break;
}
}
if (strlen(input) <= 1) {
*input = '\0';
}
return 0;
@@ -635,6 +638,14 @@ static int32_t AddPriSyscapToJsonObj(char *priSyscapString, uint32_t priSyscapSt
free(sysCapArray);
return -1;
}
if (priSyscapStringLen == 0) {
if (!cJSON_AddItemToObject(sysCapObj, "private", sysCapArray)) {
PRINT_ERR("Add private syscap array to json failed.\n");
free(sysCapArray);
return -1;
}
return 0;
}
token = strtok(priSyscapString, ",");
while (token != NULL) {
@@ -653,7 +664,7 @@ static int32_t AddPriSyscapToJsonObj(char *priSyscapString, uint32_t priSyscapSt
return 0;
}
int32_t DecodeStringPCIDToJson(char *input, char *outDirPath, int type)
int32_t DecodeStringPCIDToJson(char *input, char *outDirPath)
{
int32_t ret = -1;
uint32_t osSyscapUintArray[OS_SYSCAP_NUM] = {0};
@@ -662,27 +673,16 @@ int32_t DecodeStringPCIDToJson(char *input, char *outDirPath, int type)
char *fileContext = NULL;
char *priSyscapStr = NULL;
// judge input type
if (type == TYPE_FILE) {
if (GetFileContext(input, &fileContext, &fileContextLen)) {
PRINT_ERR("GetFileContext failed, input file : %s\n", input);
goto PARSE_FAILED;
}
if (ParseStringSyscap(fileContext, osSyscapUintArray, OS_SYSCAP_NUM, pcidHeader, PCID_HEADER)) {
PRINT_ERR("Parse string syscap failed.\n");
goto PARSE_FAILED;
}
priSyscapStr = fileContext;
} else if (type == TYPE_STRING) {
if (ParseStringSyscap(input, osSyscapUintArray, OS_SYSCAP_NUM, pcidHeader, PCID_HEADER)) {
PRINT_ERR("Parse string syscap failed.\n");
goto PARSE_FAILED;
}
priSyscapStr = input;
} else {
PRINT_ERR("Input type failed.\n");
if (GetFileContext(input, &fileContext, &fileContextLen)) {
PRINT_ERR("GetFileContext failed, input file : %s\n", input);
goto PARSE_FAILED;
}
if (ParseStringSyscap(fileContext, osSyscapUintArray, OS_SYSCAP_NUM, pcidHeader, PCID_HEADER)) {
PRINT_ERR("Parse string syscap failed.\n");
goto PARSE_FAILED;
}
priSyscapStr = fileContext;
// add to json object
cJSON *sysCapObj = cJSON_CreateObject();
cJSON *rootObj = cJSON_CreateObject();
@@ -716,9 +716,7 @@ SAVE_FAILED:
ADD_JSON_FAILED:
cJSON_Delete(rootObj);
PARSE_FAILED:
if (type == TYPE_FILE) {
free(fileContext);
}
free(fileContext);
return ret;
}
+4 -2
View File
@@ -29,7 +29,7 @@
printf("ERROR: [%s: %d] -> ", __FILE__, __LINE__); \
printf(__VA_ARGS__); \
} while (0)
#define SYSCAP_VERSION "1.0.0"
#define SYSCAP_VERSION "1.0.1"
#define OUTPUT_VERSION_LEN 200
#define ENCODE 0
#define DECODE 1
@@ -136,7 +136,9 @@ int main(int argc, char **argv)
case 0x112: // 0x112, -Pdi inputfile
ret = DecodePCID(inputfile, outputpath); break;
case 0x116: // 0x116, -Pdsi inputfile
ret = DecodeStringPCIDToJson(inputfile, outputpath, TYPE_FILE); break;
ret = DecodeStringPCIDToJson(inputfile, outputpath); break;
case 0x10E: // 0x10E, -Rdsi inputfile
printf("-Rdsi is not support currently.\n"); break;
case 0x80: // 0x80, -v
(void)OutputVersion(argv[optind], optind); break;
default: