79 lines
2.4 KiB
C
79 lines
2.4 KiB
C
#include "netstatus.h"
|
|
|
|
const char *
|
|
_netstatus_proc_getrstatus(Instance *inst)
|
|
{
|
|
long in, dummy, tot_in = 0;
|
|
long diffin;
|
|
char buf[4096], rin[4096], dummys[64];
|
|
FILE *f;
|
|
|
|
f = fopen("/proc/net/dev", "r");
|
|
if (f)
|
|
{
|
|
while(fgets(buf, sizeof(buf), f) != NULL)
|
|
{
|
|
if (sscanf (buf, "%s %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu "
|
|
"%lu %lu %lu %lu\n", dummys, &in, &dummy, &dummy,
|
|
&dummy, &dummy, &dummy, &dummy, &dummy, &dummy, &dummy,
|
|
&dummy, &dummy, &dummy, &dummy, &dummy, &dummy) < 17)
|
|
continue;
|
|
tot_in += in;
|
|
}
|
|
fclose(f);
|
|
}
|
|
diffin = tot_in - inst->cfg->netstatus.in;
|
|
inst->cfg->netstatus.in = tot_in;
|
|
if (!diffin) return NULL;
|
|
else
|
|
{
|
|
diffin /= 0.5;
|
|
if (diffin > 1048576)
|
|
snprintf(rin, sizeof(rin), "Rx: %.2f MB/s", ((float)diffin / 1048576));
|
|
else if ((diffin > 1024) && (diffin < 1048576))
|
|
snprintf(rin, sizeof(rin), "Rx: %lu KB/s", (diffin / 1024));
|
|
else
|
|
snprintf(rin, sizeof(rin), "Rx: %lu B/s", diffin);
|
|
}
|
|
return eina_stringshare_add(rin);
|
|
}
|
|
|
|
const char *
|
|
_netstatus_proc_gettstatus(Instance *inst)
|
|
{
|
|
long out, dummy, tot_out = 0;
|
|
long diffout;
|
|
char buf[4096], rout[4096], dummys[64];
|
|
FILE *f;
|
|
|
|
f = fopen("/proc/net/dev", "r");
|
|
if (f)
|
|
{
|
|
while(fgets(buf, sizeof(buf), f) != NULL)
|
|
{
|
|
if (sscanf (buf, "%s %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu %lu "
|
|
"%lu %lu %lu %lu\n", dummys, &dummy, &dummy, &dummy,
|
|
&dummy, &dummy, &dummy, &dummy, &dummy, &out, &dummy,
|
|
&dummy, &dummy, &dummy, &dummy, &dummy, &dummy) < 17)
|
|
continue;
|
|
tot_out += out;
|
|
}
|
|
fclose(f);
|
|
}
|
|
diffout = tot_out - inst->cfg->netstatus.out;
|
|
inst->cfg->netstatus.out = tot_out;
|
|
if (!diffout) return NULL;
|
|
else
|
|
{
|
|
diffout /= 0.5;
|
|
if (diffout > 1048576)
|
|
snprintf(rout, sizeof(rout), "Tx: %.2f MB/s", ((float)diffout / 1048576));
|
|
else if ((diffout > 1024) && (diffout < 1048576))
|
|
snprintf(rout, sizeof(rout), "Tx: %lu KB/s", (diffout / 1024));
|
|
else
|
|
snprintf(rout, sizeof(rout), "Tx: %lu B/s", diffout);
|
|
}
|
|
return eina_stringshare_add(rout);
|
|
}
|
|
|