wifi: OS split
authorQuentin Rameau <quinq@fifth.space>
Mon, 30 Apr 2018 13:14:39 +0000 (15:14 +0200)
committerAaron Marcher <me@drkhsh.at>
Mon, 30 Apr 2018 13:42:16 +0000 (15:42 +0200)
Makefile
components/Linux/wifi.c [new file with mode: 0644]
components/OpenBSD/wifi.c [new file with mode: 0644]
components/wifi.c [deleted file]

index 067ef57e00ca03b6cf263b49a70ad309e81afb7f..7d80893bc3aba5e6eeec2f183d41fa17c6853a63 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -25,7 +25,7 @@ COM =\
        components/$(OS)/uptime \
        components/user\
        components/volume\
-       components/wifi
+       components/$(OS)/wifi
 
 all: slstatus
 
diff --git a/components/Linux/wifi.c b/components/Linux/wifi.c
new file mode 100644 (file)
index 0000000..e86fcbc
--- /dev/null
@@ -0,0 +1,90 @@
+/* See LICENSE file for copyright and license details. */
+#include <errno.h>
+#include <ifaddrs.h>
+#include <linux/wireless.h>
+#include <sys/socket.h>
+#include <stdio.h>
+#include <limits.h>
+#include <string.h>
+#include <sys/ioctl.h>
+#include <unistd.h>
+
+#include "../../util.h"
+
+const char *
+wifi_perc(const char *iface)
+{
+       int i, cur;
+       float perc;
+       int total = 70; /* the max of /proc/net/wireless */
+       char *p, *datastart;
+       char path[PATH_MAX];
+       char status[5];
+       FILE *fp;
+
+       snprintf(path, sizeof(path), "%s%s%s", "/sys/class/net/", iface, "/operstate");
+       fp = fopen(path, "r");
+       if (fp == NULL) {
+               fprintf(stderr, "fopen '%s': %s\n", path, strerror(errno));
+               return NULL;
+       }
+       p = fgets(status, 5, fp);
+       fclose(fp);
+       if(!p || strcmp(status, "up\n") != 0) {
+               return NULL;
+       }
+
+       fp = fopen("/proc/net/wireless", "r");
+       if (fp == NULL) {
+               fprintf(stderr, "fopen '/proc/net/wireless': %s\n", strerror(errno));
+               return NULL;
+       }
+
+       for (i = 0; i < 3; i++) {
+               if (!(p = fgets(buf, sizeof(buf) - 1, fp)))
+                       break;
+       }
+       fclose(fp);
+       if (i < 2 || !p)
+               return NULL;
+
+       if ((datastart = strstr(buf, iface)) == NULL)
+               return NULL;
+
+       datastart = (datastart+(strlen(iface)+1));
+       sscanf(datastart + 1, " %*d   %d  %*d  %*d                %*d      %*d          %*d              %*d      %*d            %*d", &cur);
+
+       perc = (float)cur / total * 100.0;
+
+       return bprintf("%.0f", perc);
+}
+
+const char *
+wifi_essid(const char *iface)
+{
+       static char id[IW_ESSID_MAX_SIZE+1];
+       int sockfd = socket(AF_INET, SOCK_DGRAM, 0);
+       struct iwreq wreq;
+
+       memset(&wreq, 0, sizeof(struct iwreq));
+       wreq.u.essid.length = IW_ESSID_MAX_SIZE+1;
+       snprintf(wreq.ifr_name, sizeof(wreq.ifr_name), "%s", iface);
+
+       if (sockfd == -1) {
+               fprintf(stderr, "socket 'AF_INET': %s\n", strerror(errno));
+               return NULL;
+       }
+       wreq.u.essid.pointer = id;
+       if (ioctl(sockfd,SIOCGIWESSID, &wreq) == -1) {
+               fprintf(stderr, "ioctl 'SIOCGIWESSID': %s\n", strerror(errno));
+               close(sockfd);
+               return NULL;
+       }
+
+       close(sockfd);
+
+       if (strcmp(id, "") == 0)
+               return NULL;
+       else
+               return id;
+}
diff --git a/components/OpenBSD/wifi.c b/components/OpenBSD/wifi.c
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/components/wifi.c b/components/wifi.c
deleted file mode 100644 (file)
index 388a30d..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-/* See LICENSE file for copyright and license details. */
-#if defined(__linux__)
-#include <errno.h>
-#include <ifaddrs.h>
-#include <linux/wireless.h>
-#include <sys/socket.h>
-#include <stdio.h>
-#include <limits.h>
-#include <string.h>
-#include <sys/ioctl.h>
-#include <unistd.h>
-
-#include "../util.h"
-
-const char *
-wifi_perc(const char *iface)
-{
-       int i, cur;
-       float perc;
-       int total = 70; /* the max of /proc/net/wireless */
-       char *p, *datastart;
-       char path[PATH_MAX];
-       char status[5];
-       FILE *fp;
-
-       snprintf(path, sizeof(path), "%s%s%s", "/sys/class/net/", iface, "/operstate");
-       fp = fopen(path, "r");
-       if (fp == NULL) {
-               fprintf(stderr, "fopen '%s': %s\n", path, strerror(errno));
-               return NULL;
-       }
-       p = fgets(status, 5, fp);
-       fclose(fp);
-       if(!p || strcmp(status, "up\n") != 0) {
-               return NULL;
-       }
-
-       fp = fopen("/proc/net/wireless", "r");
-       if (fp == NULL) {
-               fprintf(stderr, "fopen '/proc/net/wireless': %s\n", strerror(errno));
-               return NULL;
-       }
-
-       for (i = 0; i < 3; i++) {
-               if (!(p = fgets(buf, sizeof(buf) - 1, fp)))
-                       break;
-       }
-       fclose(fp);
-       if (i < 2 || !p)
-               return NULL;
-
-       if ((datastart = strstr(buf, iface)) == NULL)
-               return NULL;
-
-       datastart = (datastart+(strlen(iface)+1));
-       sscanf(datastart + 1, " %*d   %d  %*d  %*d                %*d      %*d          %*d              %*d      %*d            %*d", &cur);
-
-       perc = (float)cur / total * 100.0;
-
-       return bprintf("%.0f", perc);
-}
-
-const char *
-wifi_essid(const char *iface)
-{
-       static char id[IW_ESSID_MAX_SIZE+1];
-       int sockfd = socket(AF_INET, SOCK_DGRAM, 0);
-       struct iwreq wreq;
-
-       memset(&wreq, 0, sizeof(struct iwreq));
-       wreq.u.essid.length = IW_ESSID_MAX_SIZE+1;
-       snprintf(wreq.ifr_name, sizeof(wreq.ifr_name), "%s", iface);
-
-       if (sockfd == -1) {
-               fprintf(stderr, "socket 'AF_INET': %s\n", strerror(errno));
-               return NULL;
-       }
-       wreq.u.essid.pointer = id;
-       if (ioctl(sockfd,SIOCGIWESSID, &wreq) == -1) {
-               fprintf(stderr, "ioctl 'SIOCGIWESSID': %s\n", strerror(errno));
-               close(sockfd);
-               return NULL;
-       }
-
-       close(sockfd);
-
-       if (strcmp(id, "") == 0)
-               return NULL;
-       else
-               return id;
-}
-#endif