mirror of
https://github.com/switchbrew/switch-tools.git
synced 2025-06-21 13:32:39 +02:00
Support SystemResourceSize property in NPDM META (#26)
This commit is contained in:
parent
ad647397ef
commit
e607ced3e2
@ -76,7 +76,8 @@ typedef struct {
|
||||
u8 _0xD;
|
||||
u8 MainThreadPriority;
|
||||
u8 DefaultCpuId;
|
||||
u64 _0x10;
|
||||
u32 _0x10;
|
||||
u32 SystemResourceSize;
|
||||
u32 ProcessCategory;
|
||||
u32 MainThreadStackSize;
|
||||
char Name[0x10];
|
||||
@ -219,6 +220,32 @@ int cJSON_GetU64(const cJSON *obj, const char *field, u64 *out) {
|
||||
}
|
||||
}
|
||||
|
||||
int cJSON_GetU32(const cJSON *obj, const char *field, u32 *out) {
|
||||
const cJSON *config = cJSON_GetObjectItemCaseSensitive(obj, field);
|
||||
if (cJSON_IsString(config) && (config->valuestring != NULL)) {
|
||||
char *endptr = NULL;
|
||||
*out = strtoul(config->valuestring, &endptr, 16);
|
||||
if (config->valuestring == endptr) {
|
||||
fprintf(stderr, "Failed to get %s (empty string)\n", field);
|
||||
return 0;
|
||||
} else if (errno == ERANGE) {
|
||||
fprintf(stderr, "Failed to get %s (value out of range)\n", field);
|
||||
return 0;
|
||||
} else if (errno == EINVAL) {
|
||||
fprintf(stderr, "Failed to get %s (not base16 string)\n", field);
|
||||
return 0;
|
||||
} else if (errno) {
|
||||
fprintf(stderr, "Failed to get %s (unknown error)\n", field);
|
||||
return 0;
|
||||
} else {
|
||||
return 1;
|
||||
}
|
||||
} else {
|
||||
fprintf(stderr, "Failed to get %s (field not present).\n", field);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
int cJSON_GetU64FromObjectValue(const cJSON *config, u64 *out) {
|
||||
if (cJSON_IsString(config) && (config->valuestring != NULL)) {
|
||||
char *endptr = NULL;
|
||||
@ -305,6 +332,9 @@ int CreateNpdm(const char *json, void **dst, u32 *dst_size) {
|
||||
status = 0;
|
||||
goto NPDM_BUILD_END;
|
||||
}
|
||||
|
||||
cJSON_GetU32(npdm_json, "system_resource_size", &header.SystemResourceSize); // optional
|
||||
|
||||
if (!cJSON_GetU8(npdm_json, "process_category", (u8 *)&header.ProcessCategory)) {
|
||||
status = 0;
|
||||
goto NPDM_BUILD_END;
|
||||
|
Loading…
Reference in New Issue
Block a user