Xinqi Bao's Git
projects
/
slstatus.git
/ blobdiff
summary
|
log
|
commit
|
diff
|
tree
raw
|
inline
| side by side
Consistent paramter naming for components
[slstatus.git]
/
components
/
wifi.c
diff --git
a/components/wifi.c
b/components/wifi.c
index
b3e1723
..
9de543b
100644
(file)
--- a/
components/wifi.c
+++ b/
components/wifi.c
@@
-1,5
+1,4
@@
/* See LICENSE file for copyright and license details. */
/* See LICENSE file for copyright and license details. */
-#include <errno.h>
#include <ifaddrs.h>
#include <stdio.h>
#include <string.h>
#include <ifaddrs.h>
#include <stdio.h>
#include <string.h>
@@
-14,7
+13,7
@@
#include <linux/wireless.h>
const char *
#include <linux/wireless.h>
const char *
- wifi_perc(const char *iface)
+ wifi_perc(const char *i
nter
face)
{
int i, cur;
int total = 70; /* the max of /proc/net/wireless */
{
int i, cur;
int total = 70; /* the max of /proc/net/wireless */
@@
-25,7
+24,7
@@
if (esnprintf(path, sizeof(path),
"/sys/class/net/%s/operstate",
if (esnprintf(path, sizeof(path),
"/sys/class/net/%s/operstate",
- iface) < 0) {
+ i
nter
face) < 0) {
return NULL;
}
if (!(fp = fopen(path, "r"))) {
return NULL;
}
if (!(fp = fopen(path, "r"))) {
@@
-52,11
+51,11
@@
return NULL;
}
return NULL;
}
- if (!(datastart = strstr(buf, iface))) {
+ if (!(datastart = strstr(buf, i
nter
face))) {
return NULL;
}
return NULL;
}
- datastart = (datastart+(strlen(iface)+1));
+ datastart = (datastart+(strlen(i
nter
face)+1));
sscanf(datastart + 1, " %*d %d %*d %*d\t\t %*d\t "
"%*d\t\t%*d\t\t %*d\t %*d\t\t %*d", &cur);
sscanf(datastart + 1, " %*d %d %*d %*d\t\t %*d\t "
"%*d\t\t%*d\t\t %*d\t %*d\t\t %*d", &cur);
@@
-64,7
+63,7
@@
}
const char *
}
const char *
- wifi_essid(const char *iface)
+ wifi_essid(const char *i
nter
face)
{
static char id[IW_ESSID_MAX_SIZE+1];
int sockfd;
{
static char id[IW_ESSID_MAX_SIZE+1];
int sockfd;
@@
-73,7
+72,7
@@
memset(&wreq, 0, sizeof(struct iwreq));
wreq.u.essid.length = IW_ESSID_MAX_SIZE+1;
if (esnprintf(wreq.ifr_name, sizeof(wreq.ifr_name),
memset(&wreq, 0, sizeof(struct iwreq));
wreq.u.essid.length = IW_ESSID_MAX_SIZE+1;
if (esnprintf(wreq.ifr_name, sizeof(wreq.ifr_name),
- "%s", iface) < 0) {
+ "%s", i
nter
face) < 0) {
return NULL;
}
return NULL;
}
@@
-106,10
+105,11
@@
#include <sys/types.h>
static int
#include <sys/types.h>
static int
- load_ieee80211_nodereq(const char *iface, struct ieee80211_nodereq *nr)
+ load_ieee80211_nodereq(const char *i
nter
face, struct ieee80211_nodereq *nr)
{
struct ieee80211_bssid bssid;
int sockfd;
{
struct ieee80211_bssid bssid;
int sockfd;
+ uint8_t zero_bssid[IEEE80211_ADDR_LEN];
memset(&bssid, 0, sizeof(bssid));
memset(nr, 0, sizeof(struct ieee80211_nodereq));
memset(&bssid, 0, sizeof(bssid));
memset(nr, 0, sizeof(struct ieee80211_nodereq));
@@
-117,13
+117,19
@@
warn("socket 'AF_INET':");
return 0;
}
warn("socket 'AF_INET':");
return 0;
}
- strlcpy(bssid.i_name, iface, sizeof(bssid.i_name));
+ strlcpy(bssid.i_name, i
nter
face, sizeof(bssid.i_name));
if ((ioctl(sockfd, SIOCG80211BSSID, &bssid)) < 0) {
warn("ioctl 'SIOCG80211BSSID':");
close(sockfd);
return 0;
}
if ((ioctl(sockfd, SIOCG80211BSSID, &bssid)) < 0) {
warn("ioctl 'SIOCG80211BSSID':");
close(sockfd);
return 0;
}
- strlcpy(nr->nr_ifname, iface, sizeof(nr->nr_ifname));
+ memset(&zero_bssid, 0, sizeof(zero_bssid));
+ if (memcmp(bssid.i_bssid, zero_bssid,
+ IEEE80211_ADDR_LEN) == 0) {
+ close(sockfd);
+ return 0;
+ }
+ strlcpy(nr->nr_ifname, interface, sizeof(nr->nr_ifname));
memcpy(&nr->nr_macaddr, bssid.i_bssid, sizeof(nr->nr_macaddr));
if ((ioctl(sockfd, SIOCG80211NODE, nr)) < 0 && nr->nr_rssi) {
warn("ioctl 'SIOCG80211NODE':");
memcpy(&nr->nr_macaddr, bssid.i_bssid, sizeof(nr->nr_macaddr));
if ((ioctl(sockfd, SIOCG80211NODE, nr)) < 0 && nr->nr_rssi) {
warn("ioctl 'SIOCG80211NODE':");
@@
-135,12
+141,12
@@
}
const char *
}
const char *
- wifi_perc(const char *iface)
+ wifi_perc(const char *i
nter
face)
{
struct ieee80211_nodereq nr;
int q;
{
struct ieee80211_nodereq nr;
int q;
- if (load_ieee80211_nodereq(iface, &nr)) {
+ if (load_ieee80211_nodereq(i
nter
face, &nr)) {
if (nr.nr_max_rssi) {
q = IEEE80211_NODEREQ_RSSI(&nr);
} else {
if (nr.nr_max_rssi) {
q = IEEE80211_NODEREQ_RSSI(&nr);
} else {
@@
-154,11
+160,11
@@
}
const char *
}
const char *
- wifi_essid(const char *iface)
+ wifi_essid(const char *i
nter
face)
{
struct ieee80211_nodereq nr;
{
struct ieee80211_nodereq nr;
- if (load_ieee80211_nodereq(iface, &nr)) {
+ if (load_ieee80211_nodereq(i
nter
face, &nr)) {
return bprintf("%s", nr.nr_nwid);
}
return bprintf("%s", nr.nr_nwid);
}