Patch by Peter Samuelson <[email protected]>. First appeared in Debian package version 1.3b1-14.
For more information, see: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=226689 --- wmifs/wmifs/wmifs.c | 43 ++++++++++++++++++++++++++++++++----------- 1 file changed, 32 insertions(+), 11 deletions(-) diff --git a/wmifs/wmifs/wmifs.c b/wmifs/wmifs/wmifs.c index 972321c..9f5374b 100644 --- a/wmifs/wmifs/wmifs.c +++ b/wmifs/wmifs/wmifs.c @@ -74,6 +74,9 @@ ---- Changes: --- + 01/08/2004 (Peter Samuelson, [email protected]) + * Patch to make make sampling and scrolling intervals + customizable, adds new options -I and -s. 01/15/2002 (Matyas Koszik, [email protected]) * Patch that fixes segfaults on long interface names. 08/31/2001 (Davi Leal, [email protected]) @@ -183,6 +186,7 @@ #include <sys/types.h> #include <sys/ioctl.h> #include <sys/socket.h> +#include <sys/time.h> #include <X11/Xlib.h> #include <X11/xpm.h> @@ -197,8 +201,11 @@ #include "wmifs-master.xpm" #include "wmifs-mask.xbm" -/* How often to check for new network interface, in seconds */ -#define CHECK_INTERFACE_INTERVAL 5 +/* How often to check for new network interface, in ms */ +#define CHECK_INTERFACE_INTERVAL 5000 + +/* How often to query the interfaces, in ms */ +#define DEFAULT_SAMPLE_INTERVAL 50 /***********/ /* Defines */ @@ -234,6 +241,8 @@ char *active_interface = NULL; int TimerDivisor=60; int WaveForm=0; int LockMode=0; +int SampleInt = DEFAULT_SAMPLE_INTERVAL; +int ScrollSpeed = CHECK_INTERFACE_INTERVAL; /*****************/ /* PPP variables */ @@ -296,9 +305,17 @@ int main(int argc, char *argv[]) { active_interface = argv[i+1]; i++; break; + case 'I' : + SampleInt = atof(argv[i+1]) * 1000; + i++; + break; case 'l' : LockMode = 1; break; + case 's' : + ScrollSpeed = atof(argv[i+1]) * 1000; + i++; + break; case 'v' : printversion(); exit(0); @@ -361,9 +378,9 @@ void wmifs_routine(int argc, char **argv) { int stat_online; int stat_current; - time_t starttime; - time_t curtime; - time_t nexttime; + unsigned int curtime; + unsigned int nexttime; + struct timeval tv, tv2; long ipacket, opacket, istat, ostat; @@ -410,8 +427,8 @@ void wmifs_routine(int argc, char **argv) { AddMouseRegion(0, 5, 5, 35, 15); AddMouseRegion(1, 5, 20, 58, 58); - starttime = time(0); - nexttime = starttime + CHECK_INTERFACE_INTERVAL; + gettimeofday(&tv2, NULL); + nexttime = ScrollSpeed; for (i=0; i<stat_online; i++) { get_statistics(stat_devices[i].name, &ipacket, &opacket, &istat, &ostat); @@ -422,7 +439,10 @@ void wmifs_routine(int argc, char **argv) { DrawActiveIFS(stat_devices[stat_current].name); while (1) { - curtime = time(0); + gettimeofday(&tv, NULL); + curtime = (tv.tv_sec - tv2.tv_sec) * 1000 + + (tv.tv_usec - tv2.tv_usec) / 1000; + waitpid(0, NULL, WNOHANG); for (i=0; i<stat_online; i++) { @@ -455,8 +475,7 @@ void wmifs_routine(int argc, char **argv) { } if (curtime >= nexttime) { - - nexttime=curtime+CHECK_INTERFACE_INTERVAL; + nexttime=curtime+ScrollSpeed; for (i=0; i<stat_online; i++) { if (i == stat_current) { @@ -538,7 +557,7 @@ void wmifs_routine(int argc, char **argv) { } } - usleep(50000L); /* 50 milliseconds */ + usleep(SampleInt * 1000); } } @@ -880,7 +899,9 @@ void usage(void) { fprintf(stderr, "\t-d <display name>\n"); fprintf(stderr, "\t-h\tthis help screen\n"); fprintf(stderr, "\t-i <interface name>\tdefault (as it appears in /proc/net/route)\n"); + fprintf(stderr, "\t-I <interval>\tsampling interval, in seconds (default: 0.05)\n"); fprintf(stderr, "\t-l\tstarts in lock mode\n"); + fprintf(stderr, "\t-s <interval>\tscrolling interval, in seconds (default: 5)\n"); fprintf(stderr, "\t-v\tprint the version number\n"); fprintf(stderr, "\t-w\twaveform load\n"); fprintf(stderr, "\n"); -- 1.9.1 -- To unsubscribe, send mail to [email protected].
