From 0bfa12c38c9aa963989c6c0a040db4754291fb44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Thu, 20 Feb 2025 15:59:28 +0800 Subject: [PATCH] OS: allow customize key format with kernel name and distro name --- src/modules/os/os.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/modules/os/os.c b/src/modules/os/os.c index b26ef8600..9edde8749 100644 --- a/src/modules/os/os.c +++ b/src/modules/os/os.c @@ -63,6 +63,19 @@ void ffPrintOS(FFOSOptions* options) return; } + FF_STRBUF_AUTO_DESTROY key = ffStrbufCreate(); + + if(options->moduleArgs.key.length == 0) + ffStrbufSetStatic(&key, FF_OS_MODULE_NAME); + else + { + FF_PARSE_FORMAT_STRING_CHECKED(&key, &options->moduleArgs.key, ((FFformatarg[]) { + FF_FORMAT_ARG(instance.state.platform.sysinfo.name, "sysname"), + FF_FORMAT_ARG(os->name, "name"), + FF_FORMAT_ARG(options->moduleArgs.keyIcon, "icon"), + })); + } + if(options->moduleArgs.outputFormat.length == 0) { FF_STRBUF_AUTO_DESTROY result = ffStrbufCreate(); @@ -79,12 +92,12 @@ void ffPrintOS(FFOSOptions* options) ffStrbufAppend(&result, &instance.state.platform.sysinfo.architecture); } - ffPrintLogoAndKey(FF_OS_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT); + ffPrintLogoAndKey(key.chars, 0, &options->moduleArgs, FF_PRINT_TYPE_NO_CUSTOM_KEY); ffStrbufPutTo(&result, stdout); } else { - FF_PRINT_FORMAT_CHECKED(FF_OS_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, ((FFformatarg[]){ + FF_PRINT_FORMAT_CHECKED(key.chars, 0, &options->moduleArgs, FF_PRINT_TYPE_NO_CUSTOM_KEY, ((FFformatarg[]){ FF_FORMAT_ARG(instance.state.platform.sysinfo.name, "sysname"), FF_FORMAT_ARG(os->name, "name"), FF_FORMAT_ARG(os->prettyName, "pretty-name"), @@ -96,7 +109,8 @@ void ffPrintOS(FFOSOptions* options) FF_FORMAT_ARG(os->versionID, "version-id"), FF_FORMAT_ARG(os->codename, "codename"), FF_FORMAT_ARG(os->buildID, "build-id"), - FF_FORMAT_ARG(instance.state.platform.sysinfo.architecture, "arch") + FF_FORMAT_ARG(instance.state.platform.sysinfo.architecture, "arch"), + FF_FORMAT_ARG(instance.state.platform.sysinfo.release, "kernel-release"), })); } }