X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=src%2Fget_wireless_info.c;h=1f13764b46b5c3368e8f47f032a3d0bc6643b2ac;hb=1d122f32e6d2b0ae1f964dd755d769885c7bf1c2;hp=529ba71a44e2d242c9df7f6e2a0149f4105c5608;hpb=bb52b40c8ed5b3c938f6bb157b08bcb18bb067c2;p=i3%2Fi3status diff --git a/src/get_wireless_info.c b/src/get_wireless_info.c index 529ba71..1f13764 100644 --- a/src/get_wireless_info.c +++ b/src/get_wireless_info.c @@ -4,9 +4,29 @@ #include #include #include +#include #include "i3status.h" +const char *get_wireless_essid() { + static char part[512]; +#ifdef LINUX + int skfd; + if ((skfd = iw_sockets_open()) < 0) { + perror("socket"); + exit(-1); + } + struct wireless_config cfg; + if (iw_get_basic_config(skfd, wlan_interface, &cfg) >= 0) + snprintf(part, sizeof(part), "%s", cfg.essid); + else part[0] = '\0'; + (void)close(skfd); +#else + part[0] = '\0'; +#endif + return part; +} + /* * Just parses /proc/net/wireless looking for lines beginning with * wlan_interface, extracting the quality of the link and adding the @@ -33,11 +53,9 @@ const char *get_wireless_info() { if (sscanf(interfaces, "%*[^:]: 0000 %d", &quality) != 1) continue; if ((quality == UCHAR_MAX) || (quality == 0)) { - if (use_colors) - (void)snprintf(part, sizeof(part), "%sW: down%s", color("#FF0000"), endcolor()); - else (void)snprintf(part, sizeof(part), "W: down"); - } else (void)snprintf(part, sizeof(part), "%sW: (%03d%%) %s%s", - color("#00FF00"), quality, get_ip_addr(wlan_interface), endcolor()); + (void)snprintf(part, sizeof(part), "%sW: down%s", color("#FF0000"), endcolor()); + } else (void)snprintf(part, sizeof(part), "%sW: (%03d%% at %s) %s%s", + color("#00FF00"), quality, get_wireless_essid(), get_ip_addr(wlan_interface), endcolor()); return part; }