Implement getting the wireless ESSID
This adds a dependency for libiw
This commit is contained in:
parent
cdb450376e
commit
b2292e770e
1
Makefile
1
Makefile
@ -10,6 +10,7 @@ VERSION=$(shell git describe --tags --abbrev=0)
|
|||||||
ifeq ($(shell uname),Linux)
|
ifeq ($(shell uname),Linux)
|
||||||
CFLAGS+=-DLINUX
|
CFLAGS+=-DLINUX
|
||||||
CFLAGS+=-D_GNU_SOURCE
|
CFLAGS+=-D_GNU_SOURCE
|
||||||
|
LDFLAGS+=-liw
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(shell uname),GNU/kFreeBSD)
|
ifeq ($(shell uname),GNU/kFreeBSD)
|
||||||
|
2
debian/control
vendored
2
debian/control
vendored
@ -3,7 +3,7 @@ Section: utils
|
|||||||
Priority: extra
|
Priority: extra
|
||||||
Maintainer: Michael Stapelberg <michael@stapelberg.de>
|
Maintainer: Michael Stapelberg <michael@stapelberg.de>
|
||||||
DM-Upload-Allowed: yes
|
DM-Upload-Allowed: yes
|
||||||
Build-Depends: debhelper (>= 5)
|
Build-Depends: debhelper (>= 5), libiw-dev
|
||||||
Standards-Version: 3.8.2
|
Standards-Version: 3.8.2
|
||||||
Homepage: http://i3.zekjur.net/i3status
|
Homepage: http://i3.zekjur.net/i3status
|
||||||
|
|
||||||
|
@ -4,9 +4,28 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
|
#include <iwlib.h>
|
||||||
|
|
||||||
#include "i3status.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
|
* Just parses /proc/net/wireless looking for lines beginning with
|
||||||
* wlan_interface, extracting the quality of the link and adding the
|
* wlan_interface, extracting the quality of the link and adding the
|
||||||
@ -34,8 +53,8 @@ const char *get_wireless_info() {
|
|||||||
continue;
|
continue;
|
||||||
if ((quality == UCHAR_MAX) || (quality == 0)) {
|
if ((quality == UCHAR_MAX) || (quality == 0)) {
|
||||||
(void)snprintf(part, sizeof(part), "%sW: down%s", color("#FF0000"), endcolor());
|
(void)snprintf(part, sizeof(part), "%sW: down%s", color("#FF0000"), endcolor());
|
||||||
} else (void)snprintf(part, sizeof(part), "%sW: (%03d%%) %s%s",
|
} else (void)snprintf(part, sizeof(part), "%sW: (%03d%% at %s) %s%s",
|
||||||
color("#00FF00"), quality, get_ip_addr(wlan_interface), endcolor());
|
color("#00FF00"), quality, get_wireless_essid(), get_ip_addr(wlan_interface), endcolor());
|
||||||
return part;
|
return part;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user