mirror of
https://github.com/fastfetch-cli/fastfetch.git
synced 2025-02-20 11:43:27 +08:00
Options (Library): split code
This commit is contained in:
parent
3c5b002414
commit
2c49dcceaf
@ -357,6 +357,7 @@ set(LIBFASTFETCH_SRC
|
||||
src/options/modules.c
|
||||
src/options/logo.c
|
||||
src/options/general.c
|
||||
src/options/library.c
|
||||
src/util/edidHelper.c
|
||||
src/util/FFlist.c
|
||||
src/util/FFstrbuf.c
|
||||
|
@ -7,7 +7,7 @@
|
||||
|
||||
static bool loadLibSymbols(FFDBusLibrary* lib)
|
||||
{
|
||||
FF_LIBRARY_LOAD(dbus, &instance.config.libDBus, false, "libdbus-1" FF_LIBRARY_EXTENSION, 4);
|
||||
FF_LIBRARY_LOAD(dbus, &instance.config.library.libDBus, false, "libdbus-1" FF_LIBRARY_EXTENSION, 4);
|
||||
FF_LIBRARY_LOAD_SYMBOL_PTR(dbus, lib, dbus_bus_get, false)
|
||||
FF_LIBRARY_LOAD_SYMBOL_PTR(dbus, lib, dbus_message_new_method_call, false)
|
||||
FF_LIBRARY_LOAD_SYMBOL_PTR(dbus, lib, dbus_message_iter_init, false)
|
||||
|
@ -65,30 +65,7 @@ static void defaultConfig(void)
|
||||
instance.config.percentType = 1;
|
||||
instance.config.percentNdigits = 0;
|
||||
|
||||
ffStrbufInit(&instance.config.libPCI);
|
||||
ffStrbufInit(&instance.config.libVulkan);
|
||||
ffStrbufInit(&instance.config.libWayland);
|
||||
ffStrbufInit(&instance.config.libXcbRandr);
|
||||
ffStrbufInit(&instance.config.libXcb);
|
||||
ffStrbufInit(&instance.config.libXrandr);
|
||||
ffStrbufInit(&instance.config.libX11);
|
||||
ffStrbufInit(&instance.config.libGIO);
|
||||
ffStrbufInit(&instance.config.libDConf);
|
||||
ffStrbufInit(&instance.config.libDBus);
|
||||
ffStrbufInit(&instance.config.libXFConf);
|
||||
ffStrbufInit(&instance.config.libSQLite3);
|
||||
ffStrbufInit(&instance.config.librpm);
|
||||
ffStrbufInit(&instance.config.libImageMagick);
|
||||
ffStrbufInit(&instance.config.libZ);
|
||||
ffStrbufInit(&instance.config.libChafa);
|
||||
ffStrbufInit(&instance.config.libEGL);
|
||||
ffStrbufInit(&instance.config.libGLX);
|
||||
ffStrbufInit(&instance.config.libOSMesa);
|
||||
ffStrbufInit(&instance.config.libOpenCL);
|
||||
ffStrbufInit(&instance.config.libfreetype);
|
||||
ffStrbufInit(&instance.config.libPulse);
|
||||
ffStrbufInit(&instance.config.libnm);
|
||||
ffStrbufInit(&instance.config.libDdcutil);
|
||||
ffOptionsInitLibrary(&instance.config.library);
|
||||
}
|
||||
|
||||
void ffInitInstance(void)
|
||||
@ -219,30 +196,7 @@ static void destroyConfig(void)
|
||||
ffStrbufDestroy(&instance.config.barCharElapsed);
|
||||
ffStrbufDestroy(&instance.config.barCharTotal);
|
||||
|
||||
ffStrbufDestroy(&instance.config.libPCI);
|
||||
ffStrbufDestroy(&instance.config.libVulkan);
|
||||
ffStrbufDestroy(&instance.config.libWayland);
|
||||
ffStrbufDestroy(&instance.config.libXcbRandr);
|
||||
ffStrbufDestroy(&instance.config.libXcb);
|
||||
ffStrbufDestroy(&instance.config.libXrandr);
|
||||
ffStrbufDestroy(&instance.config.libX11);
|
||||
ffStrbufDestroy(&instance.config.libGIO);
|
||||
ffStrbufDestroy(&instance.config.libDConf);
|
||||
ffStrbufDestroy(&instance.config.libDBus);
|
||||
ffStrbufDestroy(&instance.config.libXFConf);
|
||||
ffStrbufDestroy(&instance.config.libSQLite3);
|
||||
ffStrbufDestroy(&instance.config.librpm);
|
||||
ffStrbufDestroy(&instance.config.libImageMagick);
|
||||
ffStrbufDestroy(&instance.config.libZ);
|
||||
ffStrbufDestroy(&instance.config.libChafa);
|
||||
ffStrbufDestroy(&instance.config.libEGL);
|
||||
ffStrbufDestroy(&instance.config.libGLX);
|
||||
ffStrbufDestroy(&instance.config.libOSMesa);
|
||||
ffStrbufDestroy(&instance.config.libOpenCL);
|
||||
ffStrbufDestroy(&instance.config.libfreetype);
|
||||
ffStrbufDestroy(&instance.config.libPulse);
|
||||
ffStrbufDestroy(&instance.config.libnm);
|
||||
ffStrbufDestroy(&instance.config.libDdcutil);
|
||||
ffOptionsDestroyLibrary(&instance.config.library);
|
||||
}
|
||||
|
||||
static void destroyState(void)
|
||||
|
@ -366,79 +366,6 @@ const char* ffParseDisplayJsonConfig(FFconfig* config)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
const char* ffParseLibraryJsonConfig(FFconfig* config)
|
||||
{
|
||||
yyjson_val* const root = yyjson_doc_get_root(instance.state.configDoc);
|
||||
assert(root);
|
||||
|
||||
if (!yyjson_is_obj(root))
|
||||
return "Invalid JSON config format. Root value must be an object";
|
||||
|
||||
yyjson_val* object = yyjson_obj_get(root, "library");
|
||||
if (!object) return NULL;
|
||||
if (!yyjson_is_obj(object)) return "Property 'library' must be an object";
|
||||
|
||||
yyjson_val *key_, *val;
|
||||
size_t idx, max;
|
||||
yyjson_obj_foreach(object, idx, max, key_, val)
|
||||
{
|
||||
const char* key = yyjson_get_str(key_);
|
||||
|
||||
if (ffStrEqualsIgnCase(key, "pci"))
|
||||
ffStrbufSetS(&config->libPCI, yyjson_get_str(val));
|
||||
else if (ffStrEqualsIgnCase(key, "vulkan"))
|
||||
ffStrbufSetS(&config->libVulkan, yyjson_get_str(val));
|
||||
else if (ffStrEqualsIgnCase(key, "freetype"))
|
||||
ffStrbufSetS(&config->libfreetype, yyjson_get_str(val));
|
||||
else if (ffStrEqualsIgnCase(key, "wayland"))
|
||||
ffStrbufSetS(&config->libWayland, yyjson_get_str(val));
|
||||
else if (ffStrEqualsIgnCase(key, "xcbRandr"))
|
||||
ffStrbufSetS(&config->libXcbRandr, yyjson_get_str(val));
|
||||
else if (ffStrEqualsIgnCase(key, "xcb"))
|
||||
ffStrbufSetS(&config->libXcb, yyjson_get_str(val));
|
||||
else if (ffStrEqualsIgnCase(key, "Xrandr"))
|
||||
ffStrbufSetS(&config->libXrandr, yyjson_get_str(val));
|
||||
else if (ffStrEqualsIgnCase(key, "X11"))
|
||||
ffStrbufSetS(&config->libX11, yyjson_get_str(val));
|
||||
else if (ffStrEqualsIgnCase(key, "gio"))
|
||||
ffStrbufSetS(&config->libGIO, yyjson_get_str(val));
|
||||
else if (ffStrEqualsIgnCase(key, "DConf"))
|
||||
ffStrbufSetS(&config->libDConf, yyjson_get_str(val));
|
||||
else if (ffStrEqualsIgnCase(key, "dbus"))
|
||||
ffStrbufSetS(&config->libDBus, yyjson_get_str(val));
|
||||
else if (ffStrEqualsIgnCase(key, "XFConf"))
|
||||
ffStrbufSetS(&config->libXFConf, yyjson_get_str(val));
|
||||
else if (ffStrEqualsIgnCase(key, "sqlite") || ffStrEqualsIgnCase(key, "sqlite3"))
|
||||
ffStrbufSetS(&config->libSQLite3, yyjson_get_str(val));
|
||||
else if (ffStrEqualsIgnCase(key, "rpm"))
|
||||
ffStrbufSetS(&config->librpm, yyjson_get_str(val));
|
||||
else if (ffStrEqualsIgnCase(key, "imagemagick"))
|
||||
ffStrbufSetS(&config->libImageMagick, yyjson_get_str(val));
|
||||
else if (ffStrEqualsIgnCase(key, "z"))
|
||||
ffStrbufSetS(&config->libZ, yyjson_get_str(val));
|
||||
else if (ffStrEqualsIgnCase(key, "chafa"))
|
||||
ffStrbufSetS(&config->libChafa, yyjson_get_str(val));
|
||||
else if (ffStrEqualsIgnCase(key, "egl"))
|
||||
ffStrbufSetS(&config->libEGL, yyjson_get_str(val));
|
||||
else if (ffStrEqualsIgnCase(key, "glx"))
|
||||
ffStrbufSetS(&config->libGLX, yyjson_get_str(val));
|
||||
else if (ffStrEqualsIgnCase(key, "osmesa"))
|
||||
ffStrbufSetS(&config->libOSMesa, yyjson_get_str(val));
|
||||
else if (ffStrEqualsIgnCase(key, "opencl"))
|
||||
ffStrbufSetS(&config->libOpenCL, yyjson_get_str(val));
|
||||
else if (ffStrEqualsIgnCase(key, "pulse"))
|
||||
ffStrbufSetS(&config->libPulse, yyjson_get_str(val));
|
||||
else if (ffStrEqualsIgnCase(key, "nm"))
|
||||
ffStrbufSetS(&config->libnm, yyjson_get_str(val));
|
||||
else if (ffStrEqualsIgnCase(key, "ddcutil"))
|
||||
ffStrbufSetS(&config->libDdcutil, yyjson_get_str(val));
|
||||
else
|
||||
return "Unknown library property";
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void ffPrintJsonConfig(bool prepare)
|
||||
{
|
||||
const char* error = printJsonConfig(prepare);
|
||||
|
@ -6,7 +6,6 @@ bool ffJsonConfigParseModuleArgs(const char* key, yyjson_val* val, FFModuleArgs*
|
||||
const char* ffJsonConfigParseEnum(yyjson_val* val, int* result, FFKeyValuePair pairs[]);
|
||||
void ffPrintJsonConfig(bool prepare);
|
||||
const char* ffParseDisplayJsonConfig(FFconfig* config);
|
||||
const char* ffParseLibraryJsonConfig(FFconfig* config);
|
||||
void ffJsonConfigGenerateModuleArgsConfig(yyjson_mut_doc* doc, yyjson_mut_val* module, FFModuleArgs* defaultModuleArgs, FFModuleArgs* moduleArgs);
|
||||
|
||||
yyjson_api_inline bool yyjson_mut_obj_add_strbuf(yyjson_mut_doc *doc,
|
||||
|
@ -99,7 +99,7 @@ typedef struct GSettingsData
|
||||
|
||||
static const GSettingsData* getGSettingsData(void)
|
||||
{
|
||||
FF_LIBRARY_DATA_LOAD_INIT(GSettingsData, instance.config.libGIO, "libgio-2.0" FF_LIBRARY_EXTENSION, 1);
|
||||
FF_LIBRARY_DATA_LOAD_INIT(GSettingsData, instance.config.library.libGIO, "libgio-2.0" FF_LIBRARY_EXTENSION, 1);
|
||||
|
||||
FF_LIBRARY_DATA_LOAD_SYMBOL(g_settings_schema_source_lookup)
|
||||
FF_LIBRARY_DATA_LOAD_SYMBOL(g_settings_schema_has_key)
|
||||
@ -172,7 +172,7 @@ typedef struct DConfData
|
||||
|
||||
static const DConfData* getDConfData(void)
|
||||
{
|
||||
FF_LIBRARY_DATA_LOAD_INIT(DConfData, instance.config.libDConf, "libdconf" FF_LIBRARY_EXTENSION, 2);
|
||||
FF_LIBRARY_DATA_LOAD_INIT(DConfData, instance.config.library.libDConf, "libdconf" FF_LIBRARY_EXTENSION, 2);
|
||||
|
||||
FF_LIBRARY_DATA_LOAD_SYMBOL(dconf_client_read_full)
|
||||
FF_LIBRARY_DATA_LOAD_SYMBOL(dconf_client_new)
|
||||
@ -243,7 +243,7 @@ typedef struct XFConfData
|
||||
|
||||
static const XFConfData* getXFConfData(void)
|
||||
{
|
||||
FF_LIBRARY_DATA_LOAD_INIT(XFConfData, instance.config.libXFConf, "libxfconf-0" FF_LIBRARY_EXTENSION, 4);
|
||||
FF_LIBRARY_DATA_LOAD_INIT(XFConfData, instance.config.library.libXFConf, "libxfconf-0" FF_LIBRARY_EXTENSION, 4);
|
||||
|
||||
FF_LIBRARY_DATA_LOAD_SYMBOL(xfconf_channel_get)
|
||||
FF_LIBRARY_DATA_LOAD_SYMBOL(xfconf_channel_has_property)
|
||||
@ -305,7 +305,7 @@ typedef struct SQLiteData
|
||||
|
||||
static const SQLiteData* getSQLiteData(void)
|
||||
{
|
||||
FF_LIBRARY_DATA_LOAD_INIT(SQLiteData, instance.config.libSQLite3, "libsqlite3" FF_LIBRARY_EXTENSION, 1);
|
||||
FF_LIBRARY_DATA_LOAD_INIT(SQLiteData, instance.config.library.libSQLite3, "libsqlite3" FF_LIBRARY_EXTENSION, 1);
|
||||
|
||||
FF_LIBRARY_DATA_LOAD_SYMBOL(sqlite3_open_v2)
|
||||
FF_LIBRARY_DATA_LOAD_SYMBOL(sqlite3_prepare_v2)
|
||||
|
@ -100,7 +100,7 @@ double ddca_set_default_sleep_multiplier(double multiplier); // ddcutil 1.4
|
||||
|
||||
static const char* detectWithDdcci(FFBrightnessOptions* options, FFlist* result)
|
||||
{
|
||||
FF_LIBRARY_LOAD(libddcutil, &instance.config.libDdcutil, "dlopen ddcutil failed", "libddcutil" FF_LIBRARY_EXTENSION, 5);
|
||||
FF_LIBRARY_LOAD(libddcutil, &instance.config.library.libDdcutil, "dlopen ddcutil failed", "libddcutil" FF_LIBRARY_EXTENSION, 5);
|
||||
FF_LIBRARY_LOAD_SYMBOL_MESSAGE(libddcutil, ddca_get_display_info_list2)
|
||||
FF_LIBRARY_LOAD_SYMBOL_MESSAGE(libddcutil, ddca_open_display2)
|
||||
FF_LIBRARY_LOAD_SYMBOL_MESSAGE(libddcutil, ddca_get_any_vcp_value_using_explicit_type)
|
||||
|
@ -276,7 +276,7 @@ static void waylandGlobalAddListener(void* data, struct wl_registry* registry, u
|
||||
|
||||
bool detectWayland(FFDisplayServerResult* result)
|
||||
{
|
||||
FF_LIBRARY_LOAD(wayland, &instance.config.libWayland, false, "libwayland-client" FF_LIBRARY_EXTENSION, 1)
|
||||
FF_LIBRARY_LOAD(wayland, &instance.config.library.libWayland, false, "libwayland-client" FF_LIBRARY_EXTENSION, 1)
|
||||
|
||||
FF_LIBRARY_LOAD_SYMBOL(wayland, wl_display_connect, false)
|
||||
FF_LIBRARY_LOAD_SYMBOL(wayland, wl_display_get_fd, false)
|
||||
|
@ -100,7 +100,7 @@ static void xcbDetectWMfromEWMH(XcbPropertyData* data, xcb_connection_t* connect
|
||||
|
||||
void ffdsConnectXcb(FFDisplayServerResult* result)
|
||||
{
|
||||
FF_LIBRARY_LOAD(xcb, &instance.config.libXcb, , "libxcb" FF_LIBRARY_EXTENSION, 2)
|
||||
FF_LIBRARY_LOAD(xcb, &instance.config.library.libXcb, , "libxcb" FF_LIBRARY_EXTENSION, 2)
|
||||
FF_LIBRARY_LOAD_SYMBOL(xcb, xcb_connect,)
|
||||
FF_LIBRARY_LOAD_SYMBOL(xcb, xcb_get_setup,)
|
||||
FF_LIBRARY_LOAD_SYMBOL(xcb, xcb_setup_roots_iterator,)
|
||||
@ -429,7 +429,7 @@ static void xcbRandrHandleScreen(XcbRandrData* data, xcb_screen_t* screen)
|
||||
|
||||
void ffdsConnectXcbRandr(FFDisplayServerResult* result)
|
||||
{
|
||||
FF_LIBRARY_LOAD(xcbRandr, &instance.config.libXcbRandr, , "libxcb-randr" FF_LIBRARY_EXTENSION, 1)
|
||||
FF_LIBRARY_LOAD(xcbRandr, &instance.config.library.libXcbRandr, , "libxcb-randr" FF_LIBRARY_EXTENSION, 1)
|
||||
FF_LIBRARY_LOAD_SYMBOL(xcbRandr, xcb_connect,)
|
||||
FF_LIBRARY_LOAD_SYMBOL(xcbRandr, xcb_get_setup,)
|
||||
FF_LIBRARY_LOAD_SYMBOL(xcbRandr, xcb_setup_roots_iterator,)
|
||||
|
@ -60,7 +60,7 @@ static void x11DetectWMFromEWMH(X11PropertyData* data, Display* display, FFDispl
|
||||
|
||||
void ffdsConnectXlib(FFDisplayServerResult* result)
|
||||
{
|
||||
FF_LIBRARY_LOAD(x11, &instance.config.libX11, , "libX11" FF_LIBRARY_EXTENSION, 7, "libX11-xcb" FF_LIBRARY_EXTENSION, 2)
|
||||
FF_LIBRARY_LOAD(x11, &instance.config.library.libX11, , "libX11" FF_LIBRARY_EXTENSION, 7, "libX11-xcb" FF_LIBRARY_EXTENSION, 2)
|
||||
FF_LIBRARY_LOAD_SYMBOL(x11, XOpenDisplay,)
|
||||
FF_LIBRARY_LOAD_SYMBOL(x11, XCloseDisplay,)
|
||||
|
||||
@ -338,7 +338,7 @@ static void xrandrHandleScreen(XrandrData* data, Screen* screen)
|
||||
|
||||
void ffdsConnectXrandr(FFDisplayServerResult* result)
|
||||
{
|
||||
FF_LIBRARY_LOAD(xrandr, &instance.config.libXrandr, , "libXrandr" FF_LIBRARY_EXTENSION, 3)
|
||||
FF_LIBRARY_LOAD(xrandr, &instance.config.library.libXrandr, , "libXrandr" FF_LIBRARY_EXTENSION, 3)
|
||||
|
||||
FF_LIBRARY_LOAD_SYMBOL(xrandr, XOpenDisplay,)
|
||||
FF_LIBRARY_LOAD_SYMBOL(xrandr, XCloseDisplay,)
|
||||
|
@ -270,7 +270,7 @@ static const char* pciDetectGPUs(const FFGPUOptions* options, FFlist* gpus)
|
||||
{
|
||||
PCIData pci;
|
||||
|
||||
FF_LIBRARY_LOAD(libpci, &instance.config.libPCI, "dlopen libpci.so failed", "libpci" FF_LIBRARY_EXTENSION, 4);
|
||||
FF_LIBRARY_LOAD(libpci, &instance.config.library.libPCI, "dlopen libpci.so failed", "libpci" FF_LIBRARY_EXTENSION, 4);
|
||||
FF_LIBRARY_LOAD_SYMBOL_MESSAGE(libpci, pci_alloc);
|
||||
FF_LIBRARY_LOAD_SYMBOL_MESSAGE(libpci, pci_init);
|
||||
FF_LIBRARY_LOAD_SYMBOL_MESSAGE(libpci, pci_scan_bus);
|
||||
|
@ -55,7 +55,7 @@ static const char* getSshdVersion(FFstrbuf* version)
|
||||
|
||||
static const char* getSddmVersion(FFstrbuf* version)
|
||||
{
|
||||
FF_LIBRARY_LOAD(zlib, &instance.config.libZ, "dlopen libz failed", "libz" FF_LIBRARY_EXTENSION, 2)
|
||||
FF_LIBRARY_LOAD(zlib, &instance.config.library.libZ, "dlopen libz failed", "libz" FF_LIBRARY_EXTENSION, 2)
|
||||
FF_LIBRARY_LOAD_SYMBOL_MESSAGE(zlib, gzopen);
|
||||
FF_LIBRARY_LOAD_SYMBOL_MESSAGE(zlib, gzread);
|
||||
FF_LIBRARY_LOAD_SYMBOL_MESSAGE(zlib, gzerror);
|
||||
|
@ -72,7 +72,7 @@ const char* ffDetectOpenCL(FFOpenCLResult* result)
|
||||
|
||||
OpenCLData data;
|
||||
|
||||
FF_LIBRARY_LOAD(opencl, &instance.config.libOpenCL, "dlopen libOpenCL"FF_LIBRARY_EXTENSION" failed",
|
||||
FF_LIBRARY_LOAD(opencl, &instance.config.library.libOpenCL, "dlopen libOpenCL"FF_LIBRARY_EXTENSION" failed",
|
||||
#ifdef _WIN32
|
||||
"OpenCL"FF_LIBRARY_EXTENSION, -1,
|
||||
#endif
|
||||
|
@ -122,7 +122,7 @@ static const char* eglPrint(FFOpenGLResult* result)
|
||||
{
|
||||
EGLData eglData;
|
||||
|
||||
FF_LIBRARY_LOAD(egl, &instance.config.libEGL, "dlopen egl failed", "libEGL" FF_LIBRARY_EXTENSION, 1);
|
||||
FF_LIBRARY_LOAD(egl, &instance.config.library.libEGL, "dlopen egl failed", "libEGL" FF_LIBRARY_EXTENSION, 1);
|
||||
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(egl, eglData, eglGetProcAddress);
|
||||
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(egl, eglData, eglGetDisplay);
|
||||
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(egl, eglData, eglInitialize);
|
||||
@ -239,7 +239,7 @@ static const char* glxPrint(FFOpenGLResult* result)
|
||||
{
|
||||
GLXData data;
|
||||
|
||||
FF_LIBRARY_LOAD(glx, &instance.config.libGLX, "dlopen glx failed", "libGLX" FF_LIBRARY_EXTENSION, 1);
|
||||
FF_LIBRARY_LOAD(glx, &instance.config.library.libGLX, "dlopen glx failed", "libGLX" FF_LIBRARY_EXTENSION, 1);
|
||||
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(glx, data, glXGetProcAddress);
|
||||
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(glx, data, XOpenDisplay);
|
||||
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(glx, data, glXChooseVisual);
|
||||
@ -303,7 +303,7 @@ static const char* osMesaPrint(FFOpenGLResult* result)
|
||||
{
|
||||
OSMesaData data;
|
||||
|
||||
FF_LIBRARY_LOAD(osmesa, &instance.config.libOSMesa, "dlopen osmesa failed", "libOSMesa" FF_LIBRARY_EXTENSION, 8);
|
||||
FF_LIBRARY_LOAD(osmesa, &instance.config.library.libOSMesa, "dlopen osmesa failed", "libOSMesa" FF_LIBRARY_EXTENSION, 8);
|
||||
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(osmesa, data, OSMesaGetProcAddress);
|
||||
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(osmesa, data, OSMesaCreateContext);
|
||||
FF_LIBRARY_LOAD_SYMBOL_VAR_MESSAGE(osmesa, data, OSMesaMakeCurrent);
|
||||
|
@ -226,7 +226,7 @@ static uint32_t getFlatpak(FFstrbuf* baseDir, const char* dirname)
|
||||
|
||||
static uint32_t getRpmFromLibrpm(void)
|
||||
{
|
||||
FF_LIBRARY_LOAD(rpm, &instance.config.librpm, 0, "librpm" FF_LIBRARY_EXTENSION, 12)
|
||||
FF_LIBRARY_LOAD(rpm, &instance.config.library.librpm, 0, "librpm" FF_LIBRARY_EXTENSION, 12)
|
||||
FF_LIBRARY_LOAD_SYMBOL(rpm, rpmReadConfigFiles, 0)
|
||||
FF_LIBRARY_LOAD_SYMBOL(rpm, rpmtsCreate, 0)
|
||||
FF_LIBRARY_LOAD_SYMBOL(rpm, rpmtsInitIterator, 0)
|
||||
|
@ -38,7 +38,7 @@ static void paServerInfoCallback(pa_context *c, const pa_server_info *i, void *u
|
||||
|
||||
static const char* detectSound(FFlist* devices)
|
||||
{
|
||||
FF_LIBRARY_LOAD(pulse, &instance.config.libPulse, "Failed to load libpulse" FF_LIBRARY_EXTENSION, "libpulse" FF_LIBRARY_EXTENSION, 0)
|
||||
FF_LIBRARY_LOAD(pulse, &instance.config.library.libPulse, "Failed to load libpulse" FF_LIBRARY_EXTENSION, "libpulse" FF_LIBRARY_EXTENSION, 0)
|
||||
FF_LIBRARY_LOAD_SYMBOL_MESSAGE(pulse, pa_mainloop_new)
|
||||
FF_LIBRARY_LOAD_SYMBOL_MESSAGE(pulse, pa_mainloop_get_api)
|
||||
FF_LIBRARY_LOAD_SYMBOL_MESSAGE(pulse, pa_mainloop_iterate)
|
||||
|
@ -15,7 +15,7 @@ const char* detectTermux(FFTerminalFontResult* terminalFont)
|
||||
{
|
||||
#ifdef FF_HAVE_FREETYPE
|
||||
|
||||
FF_LIBRARY_LOAD(freetype, &instance.config.libfreetype, "dlopen libfreetype"FF_LIBRARY_EXTENSION " failed", "libfreetype"FF_LIBRARY_EXTENSION, 2)
|
||||
FF_LIBRARY_LOAD(freetype, &instance.config.library.libfreetype, "dlopen libfreetype"FF_LIBRARY_EXTENSION " failed", "libfreetype"FF_LIBRARY_EXTENSION, 2)
|
||||
FF_LIBRARY_LOAD_SYMBOL_MESSAGE(freetype, FT_Init_FreeType);
|
||||
FF_LIBRARY_LOAD_SYMBOL_MESSAGE(freetype, FT_New_Face);
|
||||
FF_LIBRARY_LOAD_SYMBOL_MESSAGE(freetype, FT_Done_Face);
|
||||
|
@ -40,7 +40,7 @@ static void applyDriverName(VkPhysicalDeviceDriverProperties* properties, FFstrb
|
||||
|
||||
static const char* detectVulkan(FFVulkanResult* result)
|
||||
{
|
||||
FF_LIBRARY_LOAD(vulkan, &instance.config.libVulkan, "dlopen libvulkan"FF_LIBRARY_EXTENSION " failed",
|
||||
FF_LIBRARY_LOAD(vulkan, &instance.config.library.libVulkan, "dlopen libvulkan"FF_LIBRARY_EXTENSION " failed",
|
||||
#ifdef __APPLE__
|
||||
"libMoltenVK"FF_LIBRARY_EXTENSION, -1
|
||||
#elif defined(_WIN32)
|
||||
|
@ -24,7 +24,7 @@ const char* ffDetectWallpaper(FFstrbuf* result)
|
||||
#endif
|
||||
|
||||
if (!ffOsascript("tell application \"Finder\" to get POSIX path of (get desktop picture as alias)", result))
|
||||
return "ffOsascript() failed";
|
||||
return "ffOsascript(get desktop picture) failed";
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
@ -22,7 +22,7 @@
|
||||
|
||||
static const char* detectWifiWithLibnm(FFlist* result)
|
||||
{
|
||||
FF_LIBRARY_LOAD(nm, &instance.config.libnm, "dlopen libnm failed", "libnm" FF_LIBRARY_EXTENSION, 0);
|
||||
FF_LIBRARY_LOAD(nm, &instance.config.library.libnm, "dlopen libnm failed", "libnm" FF_LIBRARY_EXTENSION, 0);
|
||||
FF_LIBRARY_LOAD_SYMBOL_MESSAGE(nm, nm_client_new);
|
||||
FF_LIBRARY_LOAD_SYMBOL_MESSAGE(nm, nm_client_get_devices);
|
||||
FF_LIBRARY_LOAD_SYMBOL_MESSAGE(nm, nm_device_get_iface);
|
||||
|
@ -649,61 +649,7 @@ static void parseOption(FFdata* data, const char* key, const char* value)
|
||||
///////////////////
|
||||
//Library options//
|
||||
///////////////////
|
||||
|
||||
else if(ffStrStartsWithIgnCase(key, "--lib-"))
|
||||
{
|
||||
const char* subkey = key + strlen("--lib-");
|
||||
if(ffStrEqualsIgnCase(subkey, "PCI"))
|
||||
ffOptionParseString(key, value, &instance.config.libPCI);
|
||||
else if(ffStrEqualsIgnCase(subkey, "vulkan"))
|
||||
ffOptionParseString(key, value, &instance.config.libVulkan);
|
||||
else if(ffStrEqualsIgnCase(subkey, "freetype"))
|
||||
ffOptionParseString(key, value, &instance.config.libfreetype);
|
||||
else if(ffStrEqualsIgnCase(subkey, "wayland"))
|
||||
ffOptionParseString(key, value, &instance.config.libWayland);
|
||||
else if(ffStrEqualsIgnCase(subkey, "xcb-randr"))
|
||||
ffOptionParseString(key, value, &instance.config.libXcbRandr);
|
||||
else if(ffStrEqualsIgnCase(subkey, "xcb"))
|
||||
ffOptionParseString(key, value, &instance.config.libXcb);
|
||||
else if(ffStrEqualsIgnCase(subkey, "Xrandr"))
|
||||
ffOptionParseString(key, value, &instance.config.libXrandr);
|
||||
else if(ffStrEqualsIgnCase(subkey, "X11"))
|
||||
ffOptionParseString(key, value, &instance.config.libX11);
|
||||
else if(ffStrEqualsIgnCase(subkey, "gio"))
|
||||
ffOptionParseString(key, value, &instance.config.libGIO);
|
||||
else if(ffStrEqualsIgnCase(subkey, "DConf"))
|
||||
ffOptionParseString(key, value, &instance.config.libDConf);
|
||||
else if(ffStrEqualsIgnCase(subkey, "dbus"))
|
||||
ffOptionParseString(key, value, &instance.config.libDBus);
|
||||
else if(ffStrEqualsIgnCase(subkey, "XFConf"))
|
||||
ffOptionParseString(key, value, &instance.config.libXFConf);
|
||||
else if(ffStrEqualsIgnCase(subkey, "sqlite") || ffStrEqualsIgnCase(subkey, "sqlite3"))
|
||||
ffOptionParseString(key, value, &instance.config.libSQLite3);
|
||||
else if(ffStrEqualsIgnCase(subkey, "rpm"))
|
||||
ffOptionParseString(key, value, &instance.config.librpm);
|
||||
else if(ffStrEqualsIgnCase(subkey, "imagemagick"))
|
||||
ffOptionParseString(key, value, &instance.config.libImageMagick);
|
||||
else if(ffStrEqualsIgnCase(subkey, "z"))
|
||||
ffOptionParseString(key, value, &instance.config.libZ);
|
||||
else if(ffStrEqualsIgnCase(subkey, "chafa"))
|
||||
ffOptionParseString(key, value, &instance.config.libChafa);
|
||||
else if(ffStrEqualsIgnCase(subkey, "egl"))
|
||||
ffOptionParseString(key, value, &instance.config.libEGL);
|
||||
else if(ffStrEqualsIgnCase(subkey, "glx"))
|
||||
ffOptionParseString(key, value, &instance.config.libGLX);
|
||||
else if(ffStrEqualsIgnCase(subkey, "osmesa"))
|
||||
ffOptionParseString(key, value, &instance.config.libOSMesa);
|
||||
else if(ffStrEqualsIgnCase(subkey, "opencl"))
|
||||
ffOptionParseString(key, value, &instance.config.libOpenCL);
|
||||
else if(ffStrEqualsIgnCase(subkey, "pulse"))
|
||||
ffOptionParseString(key, value, &instance.config.libPulse);
|
||||
else if(ffStrEqualsIgnCase(subkey, "nm"))
|
||||
ffOptionParseString(key, value, &instance.config.libnm);
|
||||
else if(ffStrEqualsIgnCase(subkey, "ddcutil"))
|
||||
ffOptionParseString(key, value, &instance.config.libDdcutil);
|
||||
else
|
||||
goto error;
|
||||
}
|
||||
else if(ffOptionsParseLibraryCommandLine(&instance.config.library, key, value)) {}
|
||||
|
||||
///////////////////////
|
||||
//Module args options//
|
||||
@ -796,7 +742,7 @@ static void run(FFdata* data)
|
||||
(error = ffOptionsParseLogoJsonConfig(&instance.config.logo, root)) ||
|
||||
(error = ffOptionsParseGeneralJsonConfig(&instance.config.general, root)) ||
|
||||
(error = ffParseDisplayJsonConfig(&instance.config)) ||
|
||||
(error = ffParseLibraryJsonConfig(&instance.config)) ||
|
||||
(error = ffOptionsParseLibraryJsonConfig(&instance.config.library, root)) ||
|
||||
false
|
||||
) {
|
||||
fputs(error, stderr);
|
||||
|
@ -26,6 +26,7 @@
|
||||
#include "options/modules.h"
|
||||
#include "options/logo.h"
|
||||
#include "options/general.h"
|
||||
#include "options/library.h"
|
||||
|
||||
typedef enum FFBinaryPrefixType
|
||||
{
|
||||
@ -73,30 +74,7 @@ typedef struct FFconfig
|
||||
bool noBuffer;
|
||||
uint32_t keyWidth;
|
||||
|
||||
FFstrbuf libPCI;
|
||||
FFstrbuf libVulkan;
|
||||
FFstrbuf libWayland;
|
||||
FFstrbuf libXcbRandr;
|
||||
FFstrbuf libXcb;
|
||||
FFstrbuf libXrandr;
|
||||
FFstrbuf libX11;
|
||||
FFstrbuf libGIO;
|
||||
FFstrbuf libDConf;
|
||||
FFstrbuf libDBus;
|
||||
FFstrbuf libXFConf;
|
||||
FFstrbuf libSQLite3;
|
||||
FFstrbuf librpm;
|
||||
FFstrbuf libImageMagick;
|
||||
FFstrbuf libZ;
|
||||
FFstrbuf libChafa;
|
||||
FFstrbuf libEGL;
|
||||
FFstrbuf libGLX;
|
||||
FFstrbuf libOSMesa;
|
||||
FFstrbuf libOpenCL;
|
||||
FFstrbuf libfreetype;
|
||||
FFstrbuf libPulse;
|
||||
FFstrbuf libnm;
|
||||
FFstrbuf libDdcutil;
|
||||
FFOptionsLibrary library;
|
||||
} FFconfig;
|
||||
|
||||
typedef struct FFstate
|
||||
|
@ -14,7 +14,7 @@ static void* logoResize(const void* image, size_t width, size_t height, void* ex
|
||||
|
||||
FFLogoImageResult ffLogoPrintImageIM6(FFLogoRequestData* requestData)
|
||||
{
|
||||
FF_LIBRARY_LOAD(imageMagick, &instance.config.libImageMagick, FF_LOGO_IMAGE_RESULT_INIT_ERROR, "libMagickCore-6.Q16HDRI" FF_LIBRARY_EXTENSION, 8, "libMagickCore-6.Q16" FF_LIBRARY_EXTENSION, 8)
|
||||
FF_LIBRARY_LOAD(imageMagick, &instance.config.library.libImageMagick, FF_LOGO_IMAGE_RESULT_INIT_ERROR, "libMagickCore-6.Q16HDRI" FF_LIBRARY_EXTENSION, 8, "libMagickCore-6.Q16" FF_LIBRARY_EXTENSION, 8)
|
||||
FF_LIBRARY_LOAD_SYMBOL_ADDRESS(imageMagick, ffResizeImage, ResizeImage, FF_LOGO_IMAGE_RESULT_INIT_ERROR);
|
||||
|
||||
return ffLogoPrintImageImpl(requestData, &(FFIMData) {
|
||||
|
@ -14,7 +14,7 @@ static void* logoResize(const void* image, size_t width, size_t height, void* ex
|
||||
|
||||
FFLogoImageResult ffLogoPrintImageIM7(FFLogoRequestData* requestData)
|
||||
{
|
||||
FF_LIBRARY_LOAD(imageMagick, &instance.config.libImageMagick, FF_LOGO_IMAGE_RESULT_INIT_ERROR,
|
||||
FF_LIBRARY_LOAD(imageMagick, &instance.config.library.libImageMagick, FF_LOGO_IMAGE_RESULT_INIT_ERROR,
|
||||
"libMagickCore-7.Q16HDRI" FF_LIBRARY_EXTENSION, 11,
|
||||
"libMagickCore-7.Q16" FF_LIBRARY_EXTENSION, 11,
|
||||
"libMagickCore-7.Q16HDRI-10" FF_LIBRARY_EXTENSION, -1 // Required for Windows
|
||||
|
@ -222,7 +222,7 @@ static inline char* realpath(const char* restrict file_name, char* restrict reso
|
||||
|
||||
static bool compressBlob(void** blob, size_t* length)
|
||||
{
|
||||
FF_LIBRARY_LOAD(zlib, &instance.config.libZ, false, "libz" FF_LIBRARY_EXTENSION, 2)
|
||||
FF_LIBRARY_LOAD(zlib, &instance.config.library.libZ, false, "libz" FF_LIBRARY_EXTENSION, 2)
|
||||
FF_LIBRARY_LOAD_SYMBOL(zlib, compressBound, false)
|
||||
FF_LIBRARY_LOAD_SYMBOL(zlib, compress2, false)
|
||||
|
||||
@ -398,7 +398,7 @@ static bool printImageKitty(FFLogoRequestData* requestData, const ImageData* ima
|
||||
#include <chafa.h>
|
||||
static bool printImageChafa(FFLogoRequestData* requestData, const ImageData* imageData)
|
||||
{
|
||||
FF_LIBRARY_LOAD(chafa, &instance.config.libChafa, false,
|
||||
FF_LIBRARY_LOAD(chafa, &instance.config.library.libChafa, false,
|
||||
"libchafa" FF_LIBRARY_EXTENSION, 1,
|
||||
"libchafa-0" FF_LIBRARY_EXTENSION, -1 // Required for Windows
|
||||
)
|
||||
|
188
src/options/library.c
Normal file
188
src/options/library.c
Normal file
@ -0,0 +1,188 @@
|
||||
#include "fastfetch.h"
|
||||
#include "options/library.h"
|
||||
#include "util/stringUtils.h"
|
||||
|
||||
const char* ffOptionsParseLibraryJsonConfig(FFOptionsLibrary* options, yyjson_val* root)
|
||||
{
|
||||
yyjson_val* object = yyjson_obj_get(root, "library");
|
||||
if (!object) return NULL;
|
||||
if (!yyjson_is_obj(object)) return "Property 'library' must be an object";
|
||||
|
||||
yyjson_val *key_, *val;
|
||||
size_t idx, max;
|
||||
yyjson_obj_foreach(object, idx, max, key_, val)
|
||||
{
|
||||
const char* key = yyjson_get_str(key_);
|
||||
|
||||
if (ffStrEqualsIgnCase(key, "pci"))
|
||||
ffStrbufSetS(&options->libPCI, yyjson_get_str(val));
|
||||
else if (ffStrEqualsIgnCase(key, "vulkan"))
|
||||
ffStrbufSetS(&options->libVulkan, yyjson_get_str(val));
|
||||
else if (ffStrEqualsIgnCase(key, "freetype"))
|
||||
ffStrbufSetS(&options->libfreetype, yyjson_get_str(val));
|
||||
else if (ffStrEqualsIgnCase(key, "wayland"))
|
||||
ffStrbufSetS(&options->libWayland, yyjson_get_str(val));
|
||||
else if (ffStrEqualsIgnCase(key, "xcbRandr"))
|
||||
ffStrbufSetS(&options->libXcbRandr, yyjson_get_str(val));
|
||||
else if (ffStrEqualsIgnCase(key, "xcb"))
|
||||
ffStrbufSetS(&options->libXcb, yyjson_get_str(val));
|
||||
else if (ffStrEqualsIgnCase(key, "Xrandr"))
|
||||
ffStrbufSetS(&options->libXrandr, yyjson_get_str(val));
|
||||
else if (ffStrEqualsIgnCase(key, "X11"))
|
||||
ffStrbufSetS(&options->libX11, yyjson_get_str(val));
|
||||
else if (ffStrEqualsIgnCase(key, "gio"))
|
||||
ffStrbufSetS(&options->libGIO, yyjson_get_str(val));
|
||||
else if (ffStrEqualsIgnCase(key, "DConf"))
|
||||
ffStrbufSetS(&options->libDConf, yyjson_get_str(val));
|
||||
else if (ffStrEqualsIgnCase(key, "dbus"))
|
||||
ffStrbufSetS(&options->libDBus, yyjson_get_str(val));
|
||||
else if (ffStrEqualsIgnCase(key, "XFConf"))
|
||||
ffStrbufSetS(&options->libXFConf, yyjson_get_str(val));
|
||||
else if (ffStrEqualsIgnCase(key, "sqlite") || ffStrEqualsIgnCase(key, "sqlite3"))
|
||||
ffStrbufSetS(&options->libSQLite3, yyjson_get_str(val));
|
||||
else if (ffStrEqualsIgnCase(key, "rpm"))
|
||||
ffStrbufSetS(&options->librpm, yyjson_get_str(val));
|
||||
else if (ffStrEqualsIgnCase(key, "imagemagick"))
|
||||
ffStrbufSetS(&options->libImageMagick, yyjson_get_str(val));
|
||||
else if (ffStrEqualsIgnCase(key, "z"))
|
||||
ffStrbufSetS(&options->libZ, yyjson_get_str(val));
|
||||
else if (ffStrEqualsIgnCase(key, "chafa"))
|
||||
ffStrbufSetS(&options->libChafa, yyjson_get_str(val));
|
||||
else if (ffStrEqualsIgnCase(key, "egl"))
|
||||
ffStrbufSetS(&options->libEGL, yyjson_get_str(val));
|
||||
else if (ffStrEqualsIgnCase(key, "glx"))
|
||||
ffStrbufSetS(&options->libGLX, yyjson_get_str(val));
|
||||
else if (ffStrEqualsIgnCase(key, "osmesa"))
|
||||
ffStrbufSetS(&options->libOSMesa, yyjson_get_str(val));
|
||||
else if (ffStrEqualsIgnCase(key, "opencl"))
|
||||
ffStrbufSetS(&options->libOpenCL, yyjson_get_str(val));
|
||||
else if (ffStrEqualsIgnCase(key, "pulse"))
|
||||
ffStrbufSetS(&options->libPulse, yyjson_get_str(val));
|
||||
else if (ffStrEqualsIgnCase(key, "nm"))
|
||||
ffStrbufSetS(&options->libnm, yyjson_get_str(val));
|
||||
else if (ffStrEqualsIgnCase(key, "ddcutil"))
|
||||
ffStrbufSetS(&options->libDdcutil, yyjson_get_str(val));
|
||||
else
|
||||
return "Unknown library property";
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
bool ffOptionsParseLibraryCommandLine(FFOptionsLibrary* options, const char* key, const char* value)
|
||||
{
|
||||
if(ffStrStartsWithIgnCase(key, "--lib-"))
|
||||
{
|
||||
const char* subkey = key + strlen("--lib-");
|
||||
if(ffStrEqualsIgnCase(subkey, "PCI"))
|
||||
ffOptionParseString(key, value, &options->libPCI);
|
||||
else if(ffStrEqualsIgnCase(subkey, "vulkan"))
|
||||
ffOptionParseString(key, value, &options->libVulkan);
|
||||
else if(ffStrEqualsIgnCase(subkey, "freetype"))
|
||||
ffOptionParseString(key, value, &options->libfreetype);
|
||||
else if(ffStrEqualsIgnCase(subkey, "wayland"))
|
||||
ffOptionParseString(key, value, &options->libWayland);
|
||||
else if(ffStrEqualsIgnCase(subkey, "xcb-randr"))
|
||||
ffOptionParseString(key, value, &options->libXcbRandr);
|
||||
else if(ffStrEqualsIgnCase(subkey, "xcb"))
|
||||
ffOptionParseString(key, value, &options->libXcb);
|
||||
else if(ffStrEqualsIgnCase(subkey, "Xrandr"))
|
||||
ffOptionParseString(key, value, &options->libXrandr);
|
||||
else if(ffStrEqualsIgnCase(subkey, "X11"))
|
||||
ffOptionParseString(key, value, &options->libX11);
|
||||
else if(ffStrEqualsIgnCase(subkey, "gio"))
|
||||
ffOptionParseString(key, value, &options->libGIO);
|
||||
else if(ffStrEqualsIgnCase(subkey, "DConf"))
|
||||
ffOptionParseString(key, value, &options->libDConf);
|
||||
else if(ffStrEqualsIgnCase(subkey, "dbus"))
|
||||
ffOptionParseString(key, value, &options->libDBus);
|
||||
else if(ffStrEqualsIgnCase(subkey, "XFConf"))
|
||||
ffOptionParseString(key, value, &options->libXFConf);
|
||||
else if(ffStrEqualsIgnCase(subkey, "sqlite") || ffStrEqualsIgnCase(subkey, "sqlite3"))
|
||||
ffOptionParseString(key, value, &options->libSQLite3);
|
||||
else if(ffStrEqualsIgnCase(subkey, "rpm"))
|
||||
ffOptionParseString(key, value, &options->librpm);
|
||||
else if(ffStrEqualsIgnCase(subkey, "imagemagick"))
|
||||
ffOptionParseString(key, value, &options->libImageMagick);
|
||||
else if(ffStrEqualsIgnCase(subkey, "z"))
|
||||
ffOptionParseString(key, value, &options->libZ);
|
||||
else if(ffStrEqualsIgnCase(subkey, "chafa"))
|
||||
ffOptionParseString(key, value, &options->libChafa);
|
||||
else if(ffStrEqualsIgnCase(subkey, "egl"))
|
||||
ffOptionParseString(key, value, &options->libEGL);
|
||||
else if(ffStrEqualsIgnCase(subkey, "glx"))
|
||||
ffOptionParseString(key, value, &options->libGLX);
|
||||
else if(ffStrEqualsIgnCase(subkey, "osmesa"))
|
||||
ffOptionParseString(key, value, &options->libOSMesa);
|
||||
else if(ffStrEqualsIgnCase(subkey, "opencl"))
|
||||
ffOptionParseString(key, value, &options->libOpenCL);
|
||||
else if(ffStrEqualsIgnCase(subkey, "pulse"))
|
||||
ffOptionParseString(key, value, &options->libPulse);
|
||||
else if(ffStrEqualsIgnCase(subkey, "nm"))
|
||||
ffOptionParseString(key, value, &options->libnm);
|
||||
else if(ffStrEqualsIgnCase(subkey, "ddcutil"))
|
||||
ffOptionParseString(key, value, &options->libDdcutil);
|
||||
else
|
||||
return false;
|
||||
}
|
||||
else
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void ffOptionsInitLibrary(FFOptionsLibrary* options)
|
||||
{
|
||||
ffStrbufInit(&options->libPCI);
|
||||
ffStrbufInit(&options->libVulkan);
|
||||
ffStrbufInit(&options->libWayland);
|
||||
ffStrbufInit(&options->libXcbRandr);
|
||||
ffStrbufInit(&options->libXcb);
|
||||
ffStrbufInit(&options->libXrandr);
|
||||
ffStrbufInit(&options->libX11);
|
||||
ffStrbufInit(&options->libGIO);
|
||||
ffStrbufInit(&options->libDConf);
|
||||
ffStrbufInit(&options->libDBus);
|
||||
ffStrbufInit(&options->libXFConf);
|
||||
ffStrbufInit(&options->libSQLite3);
|
||||
ffStrbufInit(&options->librpm);
|
||||
ffStrbufInit(&options->libImageMagick);
|
||||
ffStrbufInit(&options->libZ);
|
||||
ffStrbufInit(&options->libChafa);
|
||||
ffStrbufInit(&options->libEGL);
|
||||
ffStrbufInit(&options->libGLX);
|
||||
ffStrbufInit(&options->libOSMesa);
|
||||
ffStrbufInit(&options->libOpenCL);
|
||||
ffStrbufInit(&options->libfreetype);
|
||||
ffStrbufInit(&options->libPulse);
|
||||
ffStrbufInit(&options->libnm);
|
||||
ffStrbufInit(&options->libDdcutil);
|
||||
}
|
||||
|
||||
void ffOptionsDestroyLibrary(FFOptionsLibrary* options)
|
||||
{
|
||||
ffStrbufDestroy(&options->libPCI);
|
||||
ffStrbufDestroy(&options->libVulkan);
|
||||
ffStrbufDestroy(&options->libWayland);
|
||||
ffStrbufDestroy(&options->libXcbRandr);
|
||||
ffStrbufDestroy(&options->libXcb);
|
||||
ffStrbufDestroy(&options->libXrandr);
|
||||
ffStrbufDestroy(&options->libX11);
|
||||
ffStrbufDestroy(&options->libGIO);
|
||||
ffStrbufDestroy(&options->libDConf);
|
||||
ffStrbufDestroy(&options->libDBus);
|
||||
ffStrbufDestroy(&options->libXFConf);
|
||||
ffStrbufDestroy(&options->libSQLite3);
|
||||
ffStrbufDestroy(&options->librpm);
|
||||
ffStrbufDestroy(&options->libImageMagick);
|
||||
ffStrbufDestroy(&options->libZ);
|
||||
ffStrbufDestroy(&options->libChafa);
|
||||
ffStrbufDestroy(&options->libEGL);
|
||||
ffStrbufDestroy(&options->libGLX);
|
||||
ffStrbufDestroy(&options->libOSMesa);
|
||||
ffStrbufDestroy(&options->libOpenCL);
|
||||
ffStrbufDestroy(&options->libfreetype);
|
||||
ffStrbufDestroy(&options->libPulse);
|
||||
ffStrbufDestroy(&options->libnm);
|
||||
ffStrbufDestroy(&options->libDdcutil);
|
||||
}
|
36
src/options/library.h
Normal file
36
src/options/library.h
Normal file
@ -0,0 +1,36 @@
|
||||
#pragma once
|
||||
|
||||
#include "util/FFstrbuf.h"
|
||||
|
||||
typedef struct FFOptionsLibrary
|
||||
{
|
||||
FFstrbuf libPCI;
|
||||
FFstrbuf libVulkan;
|
||||
FFstrbuf libWayland;
|
||||
FFstrbuf libXcbRandr;
|
||||
FFstrbuf libXcb;
|
||||
FFstrbuf libXrandr;
|
||||
FFstrbuf libX11;
|
||||
FFstrbuf libGIO;
|
||||
FFstrbuf libDConf;
|
||||
FFstrbuf libDBus;
|
||||
FFstrbuf libXFConf;
|
||||
FFstrbuf libSQLite3;
|
||||
FFstrbuf librpm;
|
||||
FFstrbuf libImageMagick;
|
||||
FFstrbuf libZ;
|
||||
FFstrbuf libChafa;
|
||||
FFstrbuf libEGL;
|
||||
FFstrbuf libGLX;
|
||||
FFstrbuf libOSMesa;
|
||||
FFstrbuf libOpenCL;
|
||||
FFstrbuf libfreetype;
|
||||
FFstrbuf libPulse;
|
||||
FFstrbuf libnm;
|
||||
FFstrbuf libDdcutil;
|
||||
} FFOptionsLibrary;
|
||||
|
||||
const char* ffOptionsParseLibraryJsonConfig(FFOptionsLibrary* options, yyjson_val* root);
|
||||
bool ffOptionsParseLibraryCommandLine(FFOptionsLibrary* options, const char* key, const char* value);
|
||||
void ffOptionsInitLibrary(FFOptionsLibrary* options);
|
||||
void ffOptionsDestroyLibrary(FFOptionsLibrary* options);
|
Loading…
x
Reference in New Issue
Block a user