mirror of
https://github.com/fastfetch-cli/fastfetch.git
synced 2026-10-29 16:26:39 +01:00
Wifi (FreeBSD): add dirty support
This commit is contained in:
+1
-1
@@ -465,7 +465,7 @@ elseif(BSD)
|
||||
src/detection/uptime/uptime_bsd.c
|
||||
src/detection/users/users_linux.c
|
||||
src/detection/wallpaper/wallpaper_linux.c
|
||||
src/detection/wifi/wifi_nosupport.c
|
||||
src/detection/wifi/wifi_bsd.c
|
||||
src/detection/wmtheme/wmtheme_linux.c
|
||||
src/util/platform/FFPlatform_unix.c
|
||||
)
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
#include "wifi.h"
|
||||
#include "common/processing.h"
|
||||
#include "common/properties.h"
|
||||
|
||||
#include <net/if.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
const char* ffDetectWifi(FF_MAYBE_UNUSED const FFinstance* instance, FFlist* result)
|
||||
{
|
||||
struct if_nameindex* infs = if_nameindex();
|
||||
if(!infs)
|
||||
return "if_nameindex() failed";
|
||||
|
||||
for(struct if_nameindex* i = infs; !(i->if_index == 0 && i->if_name == NULL); ++i)
|
||||
{
|
||||
if (strncmp(i->if_name, "wlan", strlen("wlan")) != 0) continue;
|
||||
FF_STRBUF_AUTO_DESTROY ifconfig = ffStrbufCreate();
|
||||
if (ffProcessAppendStdOut(&ifconfig, (char* const[]) {
|
||||
"ifconfig",
|
||||
i->if_name,
|
||||
NULL
|
||||
}) == NULL)
|
||||
{
|
||||
FFWifiResult* item = (FFWifiResult*) ffListAdd(result);
|
||||
ffStrbufInitS(&item->inf.description, i->if_name);
|
||||
ffStrbufInit(&item->inf.status);
|
||||
ffStrbufInit(&item->conn.status);
|
||||
ffStrbufInit(&item->conn.ssid);
|
||||
ffStrbufInit(&item->conn.macAddress);
|
||||
ffStrbufInit(&item->conn.protocol);
|
||||
ffStrbufInit(&item->conn.security);
|
||||
item->conn.signalQuality = 0.0/0.0;
|
||||
item->conn.rxRate = 0.0/0.0;
|
||||
item->conn.txRate = 0.0/0.0;
|
||||
|
||||
ffParsePropLines(ifconfig.chars, "ssid ", &item->conn.ssid);
|
||||
if (item->conn.ssid.length) ffStrbufSubstrBeforeFirstC(&item->conn.ssid, ' ');
|
||||
|
||||
ffParsePropLines(ifconfig.chars, "ether ", &item->conn.macAddress);
|
||||
|
||||
ffParsePropLines(ifconfig.chars, "media: ", &item->conn.protocol);
|
||||
if (item->conn.protocol.length)
|
||||
{
|
||||
uint32_t index = ffStrbufFirstIndexS(&item->conn.protocol, " mode ");
|
||||
if (index == item->conn.protocol.length)
|
||||
ffStrbufClear(&item->conn.protocol);
|
||||
else
|
||||
{
|
||||
ffStrbufSubstrAfter(&item->conn.protocol, index + strlen(" mode ") - 1);
|
||||
ffStrbufPrependS(&item->conn.protocol, "802.");
|
||||
}
|
||||
}
|
||||
|
||||
ffParsePropLines(ifconfig.chars, "status: ", &item->conn.macAddress);
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
#include "wifi.h"
|
||||
|
||||
const char* ffDetectWifi(const FFinstance* instance, FFlist* result)
|
||||
{
|
||||
FF_UNUSED(instance, result);
|
||||
return "Not supported on this platform";
|
||||
}
|
||||
Reference in New Issue
Block a user