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
+1 -1
View File
@@ -45,7 +45,7 @@ const char* ffDetectCamera(FF_MAYBE_UNUSED FFlist* result)
ffStrbufInitStatic(&camera->name, "Unknown");
}
ffStrbufInit(&camera->vendor);
ffStrbufInitS(&camera->id, yyjson_get_str(yyjson_obj_get(device, "id")));
ffStrbufInitJsonVal(&camera->id, yyjson_obj_get(device, "id"));
yyjson_val* sizes = yyjson_arr_get_first(yyjson_obj_get(device, "jpeg_output_sizes"));
if (yyjson_is_obj(sizes))
{
+2 -2
View File
@@ -59,7 +59,7 @@ static void detectScoop(FFPackagesResult* result)
{
ffStrbufClear(&scoopPath);
if (root)
ffStrbufSetS(&scoopPath, yyjson_get_str(yyjson_obj_get(root, "root_path")));
ffStrbufSetJsonVal(&scoopPath, yyjson_obj_get(root, "root_path"));
if (scoopPath.length == 0)
{
ffStrbufSet(&scoopPath, &instance.state.platform.homeDir);
@@ -72,7 +72,7 @@ static void detectScoop(FFPackagesResult* result)
{
ffStrbufClear(&scoopPath);
if (root)
ffStrbufSetS(&scoopPath, yyjson_get_str(yyjson_obj_get(root, "global_path")));
ffStrbufSetJsonVal(&scoopPath, yyjson_obj_get(root, "global_path"));
if (scoopPath.length == 0)
{
ffStrbufSetS(&scoopPath, getenv("ProgramData"));
+1 -1
View File
@@ -84,7 +84,7 @@ const char* ffDetectPublicIp(FFPublicIpOptions* options, FFPublicIpResult* resul
if (doc)
{
yyjson_val* root = yyjson_doc_get_root(doc);
ffStrbufAppendS(&result->ip, yyjson_get_str(yyjson_obj_get(root, "ip")));
ffStrbufAppendJsonVal(&result->ip, yyjson_obj_get(root, "ip"));
ffStrbufDestroy(&result->location);
ffStrbufInitF(&result->location, "%s, %s", yyjson_get_str(yyjson_obj_get(root, "city")), yyjson_get_str(yyjson_obj_get(root, "country")));
return NULL;
@@ -23,16 +23,14 @@ static const char* detectWTProfile(yyjson_val* profile, FFstrbuf* name, double*
if (name->length == 0)
{
yyjson_val* pface = yyjson_obj_get(font, "face");
if(yyjson_is_str(pface))
ffStrbufAppendS(name, unsafe_yyjson_get_str(pface));
ffStrbufAppendJsonVal(name, yyjson_obj_get(font, "face"));
}
if (*size < 0)
{
yyjson_val* psize = yyjson_obj_get(font, "size");
if (yyjson_is_num(psize))
*size = yyjson_get_num(psize);
*size = unsafe_yyjson_get_num(psize);
}
return NULL;
}
+4 -4
View File
@@ -46,7 +46,7 @@ const char* ffDetectWifi(FFlist* result)
item->conn.channel = 0;
item->conn.frequency = 0;
ffStrbufAppendS(&item->inf.status, yyjson_get_str(yyjson_obj_get(root, "supplicant_state")));
ffStrbufAppendJsonVal(&item->inf.status, yyjson_obj_get(root, "supplicant_state"));
if(!item->inf.status.length)
{
ffStrbufAppendS(&item->inf.status, "Unknown");
@@ -59,9 +59,9 @@ const char* ffDetectWifi(FFlist* result)
double rssi = yyjson_get_num(yyjson_obj_get(root, "rssi"));
item->conn.signalQuality = rssi >= -50 ? 100 : rssi <= -100 ? 0 : (rssi + 100) * 2;
ffStrbufAppendS(&item->inf.description, yyjson_get_str(yyjson_obj_get(root, "ip")));
ffStrbufAppendS(&item->conn.bssid, yyjson_get_str(yyjson_obj_get(root, "bssid")));
ffStrbufAppendS(&item->conn.ssid, yyjson_get_str(yyjson_obj_get(root, "ssid")));
ffStrbufAppendJsonVal(&item->inf.description, yyjson_obj_get(root, "ip"));
ffStrbufAppendJsonVal(&item->conn.bssid, yyjson_obj_get(root, "bssid"));
ffStrbufAppendJsonVal(&item->conn.ssid, yyjson_obj_get(root, "ssid"));
item->conn.frequency = (uint16_t) yyjson_get_int(yyjson_obj_get(root, "frequency_mhz"));
item->conn.txRate = yyjson_get_num(yyjson_obj_get(root, "link_speed_mbps"));
item->conn.channel = ffWifiFreqToChannel(item->conn.frequency);