11 const char *get_wireless_essid() {
12 static char part[512];
15 if ((skfd = iw_sockets_open()) < 0) {
19 struct wireless_config cfg;
20 if (iw_get_basic_config(skfd, wlan_interface, &cfg) >= 0)
21 snprintf(part, sizeof(part), "%s", cfg.essid);
30 * Just parses /proc/net/wireless looking for lines beginning with
31 * wlan_interface, extracting the quality of the link and adding the
32 * current IP address of wlan_interface.
35 const char *get_wireless_info() {
37 static char part[512];
39 memset(buf, 0, sizeof(buf));
40 memset(part, 0, sizeof(part));
42 if (!slurp("/proc/net/wireless", buf, sizeof(buf)))
43 die("Could not open \"/proc/net/wireless\"\n");
45 interfaces = skip_character(buf, '\n', 1) + 1;
46 while ((interfaces = skip_character(interfaces, '\n', 1)+1) < buf+strlen(buf)) {
47 while (isspace((int)*interfaces))
49 if (!BEGINS_WITH(interfaces, wlan_interface))
52 if (sscanf(interfaces, "%*[^:]: 0000 %d", &quality) != 1)
54 if ((quality == UCHAR_MAX) || (quality == 0)) {
55 (void)snprintf(part, sizeof(part), "%sW: down%s", color("#FF0000"), endcolor());
56 } else (void)snprintf(part, sizeof(part), "%sW: (%03d%% at %s) %s%s",
57 color("#00FF00"), quality, get_wireless_essid(), get_ip_addr(wlan_interface), endcolor());