]> git.sur5r.net Git - i3/i3status/blobdiff - src/get_wireless_info.c
Add debian changelog entry to keep updates from overwriting local versions
[i3/i3status] / src / get_wireless_info.c
index 529ba71a44e2d242c9df7f6e2a0149f4105c5608..1f13764b46b5c3368e8f47f032a3d0bc6643b2ac 100644 (file)
@@ -4,9 +4,29 @@
 #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';
+        (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;
         }