[hackers] [slstatus][PATCH] Return actual percentage for wifi_perc()

From: parazyd <parazyd_AT_dyne.org>
Date: Tue, 24 Oct 2017 01:20:23 +0200

Implement basic percentage calculation for wifi_perc. With this
commit, the function returns correct percentage, since the max
of what /proc/net/wireless returns is 70.
---
 components/wifi.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/components/wifi.c b/components/wifi.c
index 30b57ab..9ecb8e1 100644
--- a/components/wifi.c
+++ b/components/wifi.c
_AT_@ -14,7 +14,9 @@
 const char *
 wifi_perc(const char *iface)
 {
-	int i, perc;
+	int i, cur;
+	float perc;
+	int total = 70; /* the max of /proc/net/wireless */
 	char *p, *datastart;
 	char path[PATH_MAX];
 	char status[5];
_AT_@ -50,9 +52,11 @@ wifi_perc(const char *iface)
 		return NULL;
 
 	datastart = (datastart+(strlen(iface)+1));
-	sscanf(datastart + 1, " %*d   %d  %*d  %*d		  %*d	   %*d		%*d		 %*d	  %*d		 %*d", &perc);
+	sscanf(datastart + 1, " %*d   %d  %*d  %*d		  %*d	   %*d		%*d		 %*d	  %*d		 %*d", &cur);
 
-	return bprintf("%d", perc);
+	perc = (float)cur / total * 100.0;
+
+	return bprintf("%.0f", perc);
 }
 
 const char *
-- 
2.14.3
Received on Tue Oct 24 2017 - 01:20:23 CEST

This archive was generated by hypermail 2.3.0 : Tue Oct 24 2017 - 01:24:20 CEST