JsonConfig: refactor string buffer JSON handling for robustness

This commit is contained in:
李通洲
2025-08-02 17:41:19 +08:00
parent 6d86813647
commit 3cef51ec4a
21 changed files with 90 additions and 64 deletions
+3 -3
View File
@@ -86,19 +86,19 @@ void ffParseCommandJsonObject(FFCommandOptions* options, yyjson_val* module)
if (ffStrEqualsIgnCase(key, "shell"))
{
ffStrbufSetS(&options->shell, yyjson_get_str(val));
ffStrbufSetJsonVal(&options->shell, val);
continue;
}
if (ffStrEqualsIgnCase(key, "param"))
{
ffStrbufSetS(&options->param, yyjson_get_str(val));
ffStrbufSetJsonVal(&options->param, val);
continue;
}
if (ffStrEqualsIgnCase(key, "text"))
{
ffStrbufSetS(&options->text, yyjson_get_str(val));
ffStrbufSetJsonVal(&options->text, val);
continue;
}
+3 -3
View File
@@ -312,19 +312,19 @@ void ffParseDiskJsonObject(FFDiskOptions* options, yyjson_val* module)
if (ffStrEqualsIgnCase(key, "folders"))
{
ffStrbufSetS(&options->folders, yyjson_get_str(val));
ffStrbufSetJsonVal(&options->folders, val);
continue;
}
if (ffStrEqualsIgnCase(key, "hideFolders"))
{
ffStrbufSetS(&options->hideFolders, yyjson_get_str(val));
ffStrbufSetJsonVal(&options->hideFolders, val);
continue;
}
if (ffStrEqualsIgnCase(key, "hideFS"))
{
ffStrbufSetS(&options->hideFS, yyjson_get_str(val));
ffStrbufSetJsonVal(&options->hideFS, val);
continue;
}
+1 -1
View File
@@ -138,7 +138,7 @@ void ffParseDiskIOJsonObject(FFDiskIOOptions* options, yyjson_val* module)
if (ffStrEqualsIgnCase(key, "namePrefix"))
{
ffStrbufSetS(&options->namePrefix, yyjson_get_str(val));
ffStrbufSetJsonVal(&options->namePrefix, val);
continue;
}
+1 -1
View File
@@ -407,7 +407,7 @@ void ffParseLocalIpJsonObject(FFLocalIpOptions* options, yyjson_val* module)
if (ffStrEqualsIgnCase(key, "namePrefix"))
{
ffStrbufSetS(&options->namePrefix, yyjson_get_str(val));
ffStrbufSetJsonVal(&options->namePrefix, val);
continue;
}
+1 -1
View File
@@ -152,7 +152,7 @@ void ffParseNetIOJsonObject(FFNetIOOptions* options, yyjson_val* module)
if (ffStrEqualsIgnCase(key, "namePrefix"))
{
ffStrbufSetS(&options->namePrefix, yyjson_get_str(val));
ffStrbufSetJsonVal(&options->namePrefix, val);
continue;
}
+6 -1
View File
@@ -345,7 +345,12 @@ void ffParsePackagesJsonObject(FFPackagesOptions* options, yyjson_val* module)
size_t flagIdx, flagMax;
yyjson_arr_foreach(val, flagIdx, flagMax, flagObj)
{
const char* flag = yyjson_get_str(flagObj);
if (!yyjson_is_str(flagObj))
{
ffPrintError(FF_PACKAGES_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Invalid JSON value for %s", key);
continue;
}
const char* flag = unsafe_yyjson_get_str(flagObj);
#define FF_TEST_PACKAGE_NAME(name) else if (ffStrEqualsIgnCase(flag, #name)) { options->disabled |= FF_PACKAGES_FLAG_ ## name ## _BIT; }
switch (toupper(flag[0]))
+1 -1
View File
@@ -167,7 +167,7 @@ void ffParsePhysicalDiskJsonObject(FFPhysicalDiskOptions* options, yyjson_val* m
if (ffStrEqualsIgnCase(key, "namePrefix"))
{
ffStrbufSetS(&options->namePrefix, yyjson_get_str(val));
ffStrbufSetJsonVal(&options->namePrefix, val);
continue;
}
+1 -1
View File
@@ -82,7 +82,7 @@ void ffParsePublicIpJsonObject(FFPublicIpOptions* options, yyjson_val* module)
if (ffStrEqualsIgnCase(key, "url"))
{
ffStrbufSetS(&options->url, yyjson_get_str(val));
ffStrbufSetJsonVal(&options->url, val);
continue;
}
+1 -1
View File
@@ -152,7 +152,7 @@ void ffParseSeparatorJsonObject(FFSeparatorOptions* options, yyjson_val* module)
if (ffStrEqualsIgnCase(key, "string"))
{
ffStrbufSetS(&options->string, yyjson_get_str(val));
ffStrbufSetJsonVal(&options->string, val);
continue;
}
+2 -2
View File
@@ -72,13 +72,13 @@ void ffParseWeatherJsonObject(FFWeatherOptions* options, yyjson_val* module)
if (ffStrEqualsIgnCase(key, "location"))
{
ffStrbufSetS(&options->location, yyjson_get_str(val));
ffStrbufSetJsonVal(&options->location, val);
continue;
}
if (ffStrEqualsIgnCase(key, "outputFormat"))
{
ffStrbufSetS(&options->outputFormat, yyjson_get_str(val));
ffStrbufSetJsonVal(&options->outputFormat, val);
continue;
}