diff options
| -rw-r--r-- | Makefile | 1 | ||||
| -rw-r--r-- | debian/control | 2 | ||||
| -rw-r--r-- | src/get_wireless_info.c | 23 | 
3 files changed, 23 insertions, 3 deletions
| @@ -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 <michael@stapelberg.de>  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 <string.h>  #include <ctype.h>  #include <limits.h> +#include <iwlib.h>  #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;          } | 
