diff --git a/src/fastfetch.c b/src/fastfetch.c index 6524bfc5b..9ba0b6782 100644 --- a/src/fastfetch.c +++ b/src/fastfetch.c @@ -653,6 +653,7 @@ static void migrateConfig(FFdata* data) { ffOptionsGenerateLogoJsonConfig(&instance.config.logo, instance.state.migrateConfigDoc); ffOptionsGenerateDisplayJsonConfig(&instance.config.display, instance.state.migrateConfigDoc); + ffOptionsGenerateGeneralJsonConfig(&instance.config.general, instance.state.migrateConfigDoc); ffMigrateCommandOptionToJsonc(data); } diff --git a/src/options/general.c b/src/options/general.c index 459db3eda..c95062887 100644 --- a/src/options/general.c +++ b/src/options/general.c @@ -1,6 +1,7 @@ #include "fastfetch.h" -#include "util/stringUtils.h" +#include "common/jsonconfig.h" #include "options/general.h" +#include "util/stringUtils.h" #include @@ -96,3 +97,44 @@ void ffOptionsDestroyGeneral(FF_MAYBE_UNUSED FFOptionsGeneral* options) ffStrbufDestroy(&options->osFile); #endif } + +void ffOptionsGenerateGeneralJsonConfig(FFOptionsGeneral* options, yyjson_mut_doc* doc) +{ + __attribute__((__cleanup__(ffOptionsDestroyGeneral))) FFOptionsGeneral defaultOptions; + ffOptionsInitGeneral(&defaultOptions); + + yyjson_mut_val* obj = yyjson_mut_obj(doc); + + if (options->allowSlowOperations != defaultOptions.allowSlowOperations) + yyjson_mut_obj_add_bool(doc, obj, "allowSlowOperations", options->allowSlowOperations); + + if (options->multithreading != defaultOptions.multithreading) + yyjson_mut_obj_add_bool(doc, obj, "thread", options->multithreading); + + if (options->processingTimeout != defaultOptions.processingTimeout) + yyjson_mut_obj_add_int(doc, obj, "processingTimeout", options->processingTimeout); + + #if defined(__linux__) || defined(__FreeBSD__) + + if (options->escapeBedrock != defaultOptions.escapeBedrock) + yyjson_mut_obj_add_bool(doc, obj, "escapeBedrock", options->escapeBedrock); + + if (!ffStrbufEqual(&options->playerName, &defaultOptions.playerName)) + yyjson_mut_obj_add_strbuf(doc, obj, "playerName", &options->playerName); + + if (!ffStrbufEqual(&options->osFile, &defaultOptions.osFile)) + yyjson_mut_obj_add_strbuf(doc, obj, "osFile", &options->osFile); + + if (options->dsForceDrm != defaultOptions.dsForceDrm) + yyjson_mut_obj_add_bool(doc, obj, "dsForceDrm", options->dsForceDrm); + + #elif defined(_WIN32) + + if (options->wmiTimeout != defaultOptions.wmiTimeout) + yyjson_mut_obj_add_int(doc, obj, "wmiTimeout", options->wmiTimeout); + + #endif + + if (yyjson_mut_obj_size(obj) > 0) + yyjson_mut_obj_add_val(doc, doc->root, "general", obj); +} diff --git a/src/options/general.h b/src/options/general.h index d9e976245..cb57719d2 100644 --- a/src/options/general.h +++ b/src/options/general.h @@ -23,3 +23,4 @@ const char* ffOptionsParseGeneralJsonConfig(FFOptionsGeneral* options, yyjson_va bool ffOptionsParseGeneralCommandLine(FFOptionsGeneral* options, const char* key, const char* value); void ffOptionsInitGeneral(FFOptionsGeneral* options); void ffOptionsDestroyGeneral(FFOptionsGeneral* options); +void ffOptionsGenerateGeneralJsonConfig(FFOptionsGeneral* options, yyjson_mut_doc* doc);