From: Michael Stapelberg Date: Thu, 1 Oct 2009 15:43:32 +0000 (+0200) Subject: Implement getting the wireless ESSID X-Git-Tag: 2.0~30 X-Git-Url: https://git.sur5r.net/?p=i3%2Fi3status;a=commitdiff_plain;h=b2292e770ef96c8abe8cc7134e8defb0b49e902f;hp=cdb450376e52bad45969c87a44908ef6e9997f39 Implement getting the wireless ESSID This adds a dependency for libiw --- diff --git a/Makefile b/Makefile index b894762..fda8438 100644 --- a/Makefile +++ b/Makefile @@ -10,6 +10,7 @@ VERSION=$(shell git describe --tags --abbrev=0) ifeq ($(shell uname),Linux) CFLAGS+=-DLINUX CFLAGS+=-D_GNU_SOURCE +LDFLAGS+=-liw endif ifeq ($(shell uname),GNU/kFreeBSD) diff --git a/debian/control b/debian/control index 2591831..76971c0 100644 --- a/debian/control +++ b/debian/control @@ -3,7 +3,7 @@ Section: utils Priority: extra Maintainer: Michael Stapelberg DM-Upload-Allowed: yes -Build-Depends: debhelper (>= 5) +Build-Depends: debhelper (>= 5), libiw-dev Standards-Version: 3.8.2 Homepage: http://i3.zekjur.net/i3status diff --git a/src/get_wireless_info.c b/src/get_wireless_info.c index 2cdcb8c..77bb995 100644 --- a/src/get_wireless_info.c +++ b/src/get_wireless_info.c @@ -4,9 +4,28 @@ #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'; +#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 @@ -34,8 +53,8 @@ const char *get_wireless_info() { continue; if ((quality == UCHAR_MAX) || (quality == 0)) { (void)snprintf(part, sizeof(part), "%sW: down%s", color("#FF0000"), endcolor()); - } else (void)snprintf(part, sizeof(part), "%sW: (%03d%%) %s%s", - color("#00FF00"), quality, get_ip_addr(wlan_interface), 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; }