diff --git a/wmnet/drivers.c b/wmnet/drivers.c
index 4b798e7..a6ab0a0 100644
--- a/wmnet/drivers.c
+++ b/wmnet/drivers.c
@@ -316,36 +316,25 @@ int updateStats_ipchains(void) {
int updateStats_dev(void) {
FILE *dev;
- char *ptr;
- unsigned int flag = 0;
- static char interface[16];
rx = False;
tx = False;
-
- if ((dev = fopen("/proc/net/dev", "r")) == NULL) {
- fprintf(stderr, "/proc/net/dev does not exist?\n"
- "Perhaps we are not running Linux?\n");
+ dev = fopen("/proc/net/dev", "r");
+ if (!dev) {
+ fprintf(stderr, "/proc/net/dev does not exist\n");
exit(4);
}
+
/* the first two lines we can skip */
fgets(buffer, 256, dev);
fgets(buffer, 256, dev);
- /* IP Chain Rules for Linux kernel 2_1.x */
- while(flag != (ACCOUNT_IN_FOUND|ACCOUNT_OUT_FOUND) && fgets(buffer, 256, dev)) {
+ while(fgets(buffer, 256, dev)) {
- sscanf(buffer, "%16s %llu %llu %*d %*d %*d %*d %*d %*d %llu %llu %*d %*d %*d %*d %*d %*d",
- interface, &totalbytes_in, &totalpackets_in, &totalbytes_out, &totalpackets_out);
+ if (strcmp(buffer, device) > 0){
- /* strip trailing colon */
- ptr = interface;
- while(*ptr != ':') ptr++;
- *ptr = '\0';
-
- if (!strcmp(interface, device)) {
-
- flag = (ACCOUNT_IN_FOUND|ACCOUNT_OUT_FOUND);
+ sscanf(buffer, "%*s %llu %llu %*d %*d %*d %*d %*d %*d %llu %llu %*d %*d %*d %*d %*d %*d",
+ &totalbytes_in, &totalpackets_in, &totalbytes_out, &totalpackets_out);
if (totalpackets_in != lastpackets_in) {
diffbytes_in += totalbytes_in - lastbytes_in;
@@ -360,6 +349,8 @@ int updateStats_dev(void) {
lastbytes_out = totalbytes_out;
tx = True;
}
+
+ break;
}
}