mirror of
https://github.com/fastfetch-cli/fastfetch.git
synced 2026-11-06 05:04:17 +01:00
DNS: add option --dns-show-type
This commit is contained in:
+47
-2
@@ -10,7 +10,7 @@ void ffPrintDNS(FFDNSOptions* options)
|
||||
{
|
||||
FF_LIST_AUTO_DESTROY result = ffListCreate(sizeof(FFstrbuf));
|
||||
|
||||
const char* error = ffDetectDNS(&result);
|
||||
const char* error = ffDetectDNS(options, &result);
|
||||
|
||||
if (error)
|
||||
{
|
||||
@@ -66,6 +66,17 @@ bool ffParseDNSCommandOptions(FFDNSOptions* options, const char* key, const char
|
||||
if (ffOptionParseModuleArgs(key, subKey, value, &options->moduleArgs))
|
||||
return true;
|
||||
|
||||
if (ffStrEqualsIgnCase(subKey, "show-type"))
|
||||
{
|
||||
options->showType = (FFDNSShowType) ffOptionParseEnum(key, value, (FFKeyValuePair[]) {
|
||||
{ "both", FF_DNS_TYPE_BOTH },
|
||||
{ "ipv4", FF_DNS_TYPE_IPV4_BIT },
|
||||
{ "ipv6", FF_DNS_TYPE_IPV6_BIT },
|
||||
{},
|
||||
});
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -82,6 +93,22 @@ void ffParseDNSJsonObject(FFDNSOptions* options, yyjson_val* module)
|
||||
if (ffJsonConfigParseModuleArgs(key, val, &options->moduleArgs))
|
||||
continue;
|
||||
|
||||
if (ffStrEqualsIgnCase(key, "showType"))
|
||||
{
|
||||
int value;
|
||||
const char* error = ffJsonConfigParseEnum(val, &value, (FFKeyValuePair[]) {
|
||||
{ "both", FF_DNS_TYPE_BOTH },
|
||||
{ "ipv4", FF_DNS_TYPE_IPV4_BIT },
|
||||
{ "ipv6", FF_DNS_TYPE_IPV6_BIT },
|
||||
{},
|
||||
});
|
||||
if (error)
|
||||
ffPrintError(FF_DNS_MODULE_NAME, 0, NULL, FF_PRINT_TYPE_NO_CUSTOM_KEY, "Invalid %s value: %s", key, error);
|
||||
else
|
||||
options->showType = (FFDNSShowType) value;
|
||||
continue;
|
||||
}
|
||||
|
||||
ffPrintError(FF_DNS_MODULE_NAME, 0, &options->moduleArgs, FF_PRINT_TYPE_DEFAULT, "Unknown JSON key %s", key);
|
||||
}
|
||||
}
|
||||
@@ -92,13 +119,29 @@ void ffGenerateDNSJsonConfig(FFDNSOptions* options, yyjson_mut_doc* doc, yyjson_
|
||||
ffInitDNSOptions(&defaultOptions);
|
||||
|
||||
ffJsonConfigGenerateModuleArgsConfig(doc, module, &defaultOptions.moduleArgs, &options->moduleArgs);
|
||||
|
||||
if (defaultOptions.showType != options->showType)
|
||||
{
|
||||
switch (options->showType)
|
||||
{
|
||||
case FF_DNS_TYPE_IPV4_BIT:
|
||||
yyjson_mut_obj_add_str(doc, module, "showType", "ipv4");
|
||||
break;
|
||||
case FF_DNS_TYPE_IPV6_BIT:
|
||||
yyjson_mut_obj_add_str(doc, module, "showType", "ipv6");
|
||||
break;
|
||||
case FF_DNS_TYPE_BOTH:
|
||||
yyjson_mut_obj_add_str(doc, module, "showType", "both");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ffGenerateDNSJsonResult(FF_MAYBE_UNUSED FFDNSOptions* options, yyjson_mut_doc* doc, yyjson_mut_val* module)
|
||||
{
|
||||
FF_LIST_AUTO_DESTROY result = ffListCreate(sizeof(FFstrbuf));
|
||||
|
||||
const char* error = ffDetectDNS(&result);
|
||||
const char* error = ffDetectDNS(options, &result);
|
||||
|
||||
if (error)
|
||||
{
|
||||
@@ -141,6 +184,8 @@ void ffInitDNSOptions(FFDNSOptions* options)
|
||||
ffGenerateDNSJsonConfig
|
||||
);
|
||||
ffOptionInitModuleArg(&options->moduleArgs);
|
||||
|
||||
options->showType = FF_DNS_TYPE_BOTH;
|
||||
}
|
||||
|
||||
void ffDestroyDNSOptions(FFDNSOptions* options)
|
||||
|
||||
@@ -4,8 +4,16 @@
|
||||
|
||||
#include "common/option.h"
|
||||
|
||||
typedef enum FFDNSShowType {
|
||||
FF_DNS_TYPE_IPV4_BIT = 1,
|
||||
FF_DNS_TYPE_IPV6_BIT = 2,
|
||||
FF_DNS_TYPE_BOTH = FF_DNS_TYPE_IPV4_BIT | FF_DNS_TYPE_IPV6_BIT,
|
||||
} FFDNSShowType;
|
||||
|
||||
typedef struct FFDNSOptions
|
||||
{
|
||||
FFModuleBaseInfo moduleInfo;
|
||||
FFModuleArgs moduleArgs;
|
||||
|
||||
FFDNSShowType showType;
|
||||
} FFDNSOptions;
|
||||
|
||||
Reference in New Issue
Block a user