mirror of
https://github.com/fastfetch-cli/fastfetch.git
synced 2026-09-12 10:22:12 +02:00
DNS (Linux): parse /etc/resolv.conf directly
This commit is contained in:
+2
-1
@@ -489,7 +489,7 @@ elseif(ANDROID)
|
||||
src/detection/cursor/cursor_nosupport.c
|
||||
src/detection/cpuusage/cpuusage_linux.c
|
||||
src/detection/disk/disk_linux.c
|
||||
src/detection/dns/dns_nosupport.c
|
||||
src/detection/dns/dns_linux.c
|
||||
src/detection/physicaldisk/physicaldisk_linux.c
|
||||
src/detection/physicalmemory/physicalmemory_nosupport.c
|
||||
src/detection/diskio/diskio_linux.c
|
||||
@@ -1007,6 +1007,7 @@ if(LINUX)
|
||||
)
|
||||
elseif(APPLE)
|
||||
target_link_libraries(libfastfetch
|
||||
PRIVATE "resolv"
|
||||
PRIVATE "-framework AVFoundation"
|
||||
PRIVATE "-framework Cocoa"
|
||||
PRIVATE "-framework CoreFoundation"
|
||||
|
||||
@@ -1,32 +1,27 @@
|
||||
#include "detection/dns/dns.h"
|
||||
|
||||
#include <arpa/inet.h>
|
||||
#include <resolv.h>
|
||||
#include "common/io/io.h"
|
||||
#include "util/mallocHelper.h"
|
||||
#include "util/stringUtils.h"
|
||||
|
||||
const char* ffDetectDNS(FFlist* results)
|
||||
{
|
||||
if (res_init() < 0)
|
||||
return "res_init() failed";
|
||||
FF_AUTO_CLOSE_FILE FILE* file = fopen(FASTFETCH_TARGET_DIR_ROOT "/etc/resolv.conf", "r");
|
||||
if (!file)
|
||||
return "fopen (" FASTFETCH_TARGET_DIR_ROOT "/etc/resolv.conf) failed";
|
||||
|
||||
for (int i = 0; i < _res.nscount; ++i)
|
||||
FF_AUTO_FREE char* line = NULL;
|
||||
size_t len = 0;
|
||||
|
||||
while (getline(&line, &len, file) != -1)
|
||||
{
|
||||
struct sockaddr_in* addr = &_res.nsaddr_list[i];
|
||||
char addressBuffer[INET_ADDRSTRLEN + 4];
|
||||
inet_ntop(AF_INET, &addr->sin_addr, addressBuffer, INET_ADDRSTRLEN);
|
||||
|
||||
FFstrbuf* result = (FFstrbuf*) ffListAdd(results);
|
||||
ffStrbufInitS(result, addressBuffer);
|
||||
if (ffStrStartsWith(line, "nameserver "))
|
||||
{
|
||||
FFstrbuf* item = (FFstrbuf*) ffListAdd(results);
|
||||
ffStrbufInitS(item, line + strlen("nameserver "));
|
||||
ffStrbufTrimRightSpace(item);
|
||||
ffStrbufTrimLeft(item, ' ');
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < _res._u._ext.nscount; ++i)
|
||||
{
|
||||
struct sockaddr_in6* addr = _res._u._ext.nsaddrs[i];
|
||||
char addressBuffer[INET6_ADDRSTRLEN + 4];
|
||||
inet_ntop(AF_INET6, &addr->sin6_addr, addressBuffer, INET6_ADDRSTRLEN);
|
||||
|
||||
FFstrbuf* result = (FFstrbuf*) ffListAdd(results);
|
||||
ffStrbufInitS(result, addressBuffer);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user