InitSystem: detect version

This commit is contained in:
李通洲
2024-05-29 14:22:57 +08:00
parent 90690ba315
commit bb11cff700
3 changed files with 62 additions and 6 deletions
+14 -5
View File
@@ -4,14 +4,15 @@
#include "modules/initsystem/initsystem.h"
#include "util/stringUtils.h"
#define FF_INITSYSTEM_NUM_FORMAT_ARGS 3
#define FF_INITSYSTEM_NUM_FORMAT_ARGS 4
#define FF_INITSYSTEM_DISPLAY_NAME "Init System"
void ffPrintInitSystem(FFInitSystemOptions* options)
{
FFInitSystemResult result = {
.exe = ffStrbufCreate(),
.name = ffStrbufCreate(),
.exe = ffStrbufCreate(),
.version = ffStrbufCreate(),
.pid = 1,
};
@@ -26,13 +27,18 @@ void ffPrintInitSystem(FFInitSystemOptions* options)
if(options->moduleArgs.outputFormat.length == 0)
{
ffPrintLogoAndKey(FF_INITSYSTEM_DISPLAY_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT);
ffStrbufPutTo(&result.name, stdout);
ffStrbufWriteTo(&result.name, stdout);
if (result.version.length)
printf(" (%s)\n", result.version.chars);
else
putchar('\n');
}
else
{
FF_PRINT_FORMAT_CHECKED(FF_INITSYSTEM_DISPLAY_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, FF_INITSYSTEM_NUM_FORMAT_ARGS, ((FFformatarg[]) {
{FF_FORMAT_ARG_TYPE_STRBUF, &result.name, "name"},
{FF_FORMAT_ARG_TYPE_STRBUF, &result.exe, "exe"},
{FF_FORMAT_ARG_TYPE_STRBUF, &result.version, "version"},
{FF_FORMAT_ARG_TYPE_UINT, &result.pid, "pid"},
}));
}
@@ -80,8 +86,9 @@ void ffGenerateInitSystemJsonConfig(FFInitSystemOptions* options, yyjson_mut_doc
void ffGenerateInitSystemJsonResult(FF_MAYBE_UNUSED FFInitSystemOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module)
{
FFInitSystemResult result = {
.exe = ffStrbufCreate(),
.name = ffStrbufCreate(),
.exe = ffStrbufCreate(),
.version = ffStrbufCreate(),
.pid = 1,
};
@@ -96,6 +103,7 @@ void ffGenerateInitSystemJsonResult(FF_MAYBE_UNUSED FFInitSystemOptions* options
yyjson_mut_val* obj = yyjson_mut_obj_add_obj(doc, module, "result");
yyjson_mut_obj_add_strbuf(doc, obj, "name", &result.name);
yyjson_mut_obj_add_strbuf(doc, obj, "exe", &result.exe);
yyjson_mut_obj_add_strbuf(doc, obj, "version", &result.version);
yyjson_mut_obj_add_uint(doc, obj, "pid", result.pid);
exit:
@@ -108,6 +116,7 @@ void ffPrintInitSystemHelpFormat(void)
FF_PRINT_MODULE_FORMAT_HELP_CHECKED(FF_INITSYSTEM_DISPLAY_NAME, "{1}", FF_INITSYSTEM_NUM_FORMAT_ARGS, ((const char* []) {
"init system name - name",
"init system exe path - exe",
"init system version path - version",
"init system pid - pid",
}));
}
@@ -117,7 +126,7 @@ void ffInitInitSystemOptions(FFInitSystemOptions* options)
ffOptionInitModuleBaseInfo(
&options->moduleInfo,
FF_INITSYSTEM_MODULE_NAME,
"Print init system (pid 1) name",
"Print init system (pid 1) name and version",
ffParseInitSystemCommandOptions,
ffParseInitSystemJsonObject,
ffPrintInitSystem,