11 static const char *get_wireless_essid(const char *interface) {
12 static char part[512];
15 if ((skfd = iw_sockets_open()) < 0) {
19 struct wireless_config wcfg;
20 if (iw_get_basic_config(skfd, interface, &wcfg) >= 0)
21 snprintf(part, sizeof(part), "%s", wcfg.essid);
31 * Just parses /proc/net/wireless looking for lines beginning with
32 * wlan_interface, extracting the quality of the link and adding the
33 * current IP address of wlan_interface.
36 void print_wireless_info(const char *interface, const char *format_up, const char *format_down) {
41 memset(buf, 0, sizeof(buf));
43 if (!slurp("/proc/net/wireless", buf, sizeof(buf)))
44 die("Could not open \"/proc/net/wireless\"\n");
46 interfaces = skip_character(buf, '\n', 1) + 1;
47 while ((interfaces = skip_character(interfaces, '\n', 1)+1) < buf+strlen(buf)) {
48 while (isspace((int)*interfaces))
50 if (!BEGINS_WITH(interfaces, interface))
52 if (sscanf(interfaces, "%*[^:]: 0000 %d", &quality) != 1)
57 /* Interface could not be found */
61 if ((quality == UCHAR_MAX) || (quality == 0)) {
63 printf("%s", color("#FF0000"));
65 printf("%s", color("#00FF00"));
69 for (; *walk != '\0'; walk++) {
75 if (BEGINS_WITH(walk+1, "quality")) {
76 (void)printf("%03d%%", quality);
77 walk += strlen("quality");
80 if (BEGINS_WITH(walk+1, "essid")) {
81 (void)printf("%s", get_wireless_essid(interface));
82 walk += strlen("essid");
85 if (BEGINS_WITH(walk+1, "ip")) {
86 (void)printf("%s", get_ip_addr(interface));
91 (void)printf("%s", endcolor());