mirror of
https://github.com/openharmony/developtools_syscap_codec.git
synced 2026-08-27 02:11:19 -04:00
!83 修复字符串形式pcid转json形式可能出现的错误。
Merge pull request !83 from chenyude/interfaces
This commit is contained in:
@@ -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
@@ -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
@@ -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
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user