wmtetris: Remove unused source files wmmon.c and wmtetris.h.
This commit is contained in:
parent
7cf2e5406b
commit
feccccf12c
|
@ -1,739 +0,0 @@
|
||||||
/*
|
|
||||||
Code based on wmppp/wmifs
|
|
||||||
|
|
||||||
[Orig WMPPP comments]
|
|
||||||
|
|
||||||
This code was mainly put together by looking at the
|
|
||||||
following programs:
|
|
||||||
|
|
||||||
asclock
|
|
||||||
A neat piece of equip, used to display the date
|
|
||||||
and time on the screen.
|
|
||||||
Comes with every AfterStep installation.
|
|
||||||
|
|
||||||
Source used:
|
|
||||||
How do I create a not so solid window?
|
|
||||||
How do I open a window?
|
|
||||||
How do I use pixmaps?
|
|
||||||
|
|
||||||
------------------------------------------------------------
|
|
||||||
|
|
||||||
Authors: Martijn Pieterse (pieterse@xs4all.nl)
|
|
||||||
Antoine Nulle (warp@xs4all.nl)
|
|
||||||
|
|
||||||
This program is distributed under the GPL license.
|
|
||||||
(as were asclock and pppstats)
|
|
||||||
|
|
||||||
----
|
|
||||||
Changes:
|
|
||||||
----
|
|
||||||
|
|
||||||
18/05/1998 (Antoine Nulle, warp@xs4all.nl)
|
|
||||||
* MEM/SWAP/UPTIME only updated when visible
|
|
||||||
* Using global file descriptors to reduce file
|
|
||||||
system overhead, both updates are based on a diff
|
|
||||||
supplied by Dave Harden (dharden@wisewire.com)
|
|
||||||
15/05/1998 (Antoine Nulle, warp@xs4all.nl)
|
|
||||||
* Fixed memory overflow in the MEM gaugebar
|
|
||||||
* MEM gauge displays now real used mem
|
|
||||||
(buffered + cached mem removed)
|
|
||||||
14/05/1998 (Antoine Nulle, warp@xs4all.nl)
|
|
||||||
* Added -i & -s kludge for selecting startupmode,
|
|
||||||
tijno, don't hate me for this :)
|
|
||||||
12/05/1998 (Antoine Nulle, warp@xs4all.nl)
|
|
||||||
* Finetuned master-xpm, tijno don't worry, no
|
|
||||||
reprogramming needed this time ;-)
|
|
||||||
07/05/1998 (Martijn Pieterse, pieterse@xs4all.nl)
|
|
||||||
* Added disk i/o
|
|
||||||
03/05/1998 (Antoine Nulle, warp@xs4all.nl)
|
|
||||||
* Added new master-xpm which contains the gfx
|
|
||||||
for the upcoming SysInfo part :P
|
|
||||||
02/05/1998 (Martijn Pieterse, pieterse@xs4all.nl)
|
|
||||||
* Removed a lot of code, that was put in wmgeneral
|
|
||||||
23/04/1998 (Martijn Pieterse, pieterse@xs4all.nl)
|
|
||||||
* Added zombie destroying code (aka wait :) )
|
|
||||||
18/04/1998 (Martijn Pieterse, pieterse@xs4all.nl)
|
|
||||||
* Added CPU-on-screen.
|
|
||||||
* Added -display command line
|
|
||||||
15/04/1998 (Martijn Pieterse, pieterse@xs4all.nl)
|
|
||||||
* Fixed a bug in the stats routine
|
|
||||||
(Top 3 bright pixels were not shown when 100% loaded)
|
|
||||||
* Changed xpm to a no-title one.
|
|
||||||
This included the reprogramming of all positions.
|
|
||||||
warpstah, i hate you! ;)
|
|
||||||
05/04/1998 (Martijn Pieterse, pieterse@xs4all.nl)
|
|
||||||
* First Working Version
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <time.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
#include <sys/wait.h>
|
|
||||||
#include <sys/param.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
|
|
||||||
#include <X11/Xlib.h>
|
|
||||||
#include <X11/xpm.h>
|
|
||||||
#include <X11/extensions/shape.h>
|
|
||||||
|
|
||||||
#include "../wmgeneral/wmgeneral.h"
|
|
||||||
#include "../wmgeneral/misc.h"
|
|
||||||
|
|
||||||
#include "wmmon-master.xpm"
|
|
||||||
#include "wmmon-mask.xbm"
|
|
||||||
|
|
||||||
/***********/
|
|
||||||
/* Defines */
|
|
||||||
/***********/
|
|
||||||
|
|
||||||
#define LEFT_ACTION (NULL)
|
|
||||||
#define RIGHT_ACTION (NULL)
|
|
||||||
#define MIDDLE_ACTION (NULL)
|
|
||||||
|
|
||||||
#define WMMON_VERSION "1.0.b2"
|
|
||||||
|
|
||||||
/********************/
|
|
||||||
/* Global Variables */
|
|
||||||
/********************/
|
|
||||||
|
|
||||||
char *ProgName;
|
|
||||||
int stat_current = 0; /* now global */
|
|
||||||
FILE *fp_meminfo;
|
|
||||||
FILE *fp_stat;
|
|
||||||
FILE *fp_loadavg;
|
|
||||||
|
|
||||||
/* functions */
|
|
||||||
void usage(void);
|
|
||||||
void printversion(void);
|
|
||||||
void DrawStats(int *, int, int, int, int);
|
|
||||||
void DrawStats_io(int *, int, int, int, int);
|
|
||||||
|
|
||||||
void wmmon_routine(int, char **);
|
|
||||||
|
|
||||||
void main(int argc, char *argv[]) {
|
|
||||||
|
|
||||||
int i;
|
|
||||||
|
|
||||||
|
|
||||||
/* Parse Command Line */
|
|
||||||
|
|
||||||
ProgName = argv[0];
|
|
||||||
if (strlen(ProgName) >= 5)
|
|
||||||
ProgName += (strlen(ProgName) - 5);
|
|
||||||
|
|
||||||
for (i=1; i<argc; i++) {
|
|
||||||
char *arg = argv[i];
|
|
||||||
|
|
||||||
if (*arg=='-') {
|
|
||||||
switch (arg[1]) {
|
|
||||||
case 'd' :
|
|
||||||
if (strcmp(arg+1, "display")) {
|
|
||||||
usage();
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 'v' :
|
|
||||||
printversion();
|
|
||||||
exit(0);
|
|
||||||
break;
|
|
||||||
case 'i' :
|
|
||||||
stat_current = 1;
|
|
||||||
break;
|
|
||||||
case 's' :
|
|
||||||
stat_current = 2;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
usage();
|
|
||||||
exit(0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
wmmon_routine(argc, argv);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*******************************************************************************\
|
|
||||||
|* wmmon_routine *|
|
|
||||||
\*******************************************************************************/
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
|
|
||||||
char name[5]; /* "cpu0..cpuz", eventually.. :) */
|
|
||||||
int his[55];
|
|
||||||
int hisaddcnt;
|
|
||||||
long rt_stat;
|
|
||||||
long statlast;
|
|
||||||
long rt_idle;
|
|
||||||
long idlelast;
|
|
||||||
|
|
||||||
} stat_dev;
|
|
||||||
|
|
||||||
#define MAX_STAT_DEVICES (4)
|
|
||||||
stat_dev stat_device[MAX_STAT_DEVICES];
|
|
||||||
|
|
||||||
char *left_action;
|
|
||||||
char *right_action;
|
|
||||||
char *middle_action;
|
|
||||||
|
|
||||||
|
|
||||||
int checksysdevs(void);
|
|
||||||
void get_statistics(char *, long *, long *, long *);
|
|
||||||
void DrawActive(char *);
|
|
||||||
|
|
||||||
void update_stat_cpu(stat_dev *);
|
|
||||||
void update_stat_io(stat_dev *);
|
|
||||||
void update_stat_mem(stat_dev *st, stat_dev *st2);
|
|
||||||
void update_stat_swp(stat_dev *);
|
|
||||||
|
|
||||||
void wmmon_routine(int argc, char **argv) {
|
|
||||||
|
|
||||||
rckeys wmmon_keys[] = {
|
|
||||||
{ "left", &left_action },
|
|
||||||
{ "right", &right_action },
|
|
||||||
{ "middle", &middle_action },
|
|
||||||
{ NULL, NULL }
|
|
||||||
};
|
|
||||||
|
|
||||||
unsigned long i,j;
|
|
||||||
long k;
|
|
||||||
XEvent Event;
|
|
||||||
int but_stat = -1;
|
|
||||||
|
|
||||||
int stat_online;
|
|
||||||
|
|
||||||
long starttime;
|
|
||||||
long curtime;
|
|
||||||
long nexttime;
|
|
||||||
|
|
||||||
long istat;
|
|
||||||
long idle;
|
|
||||||
|
|
||||||
FILE *fp;
|
|
||||||
char temp[128];
|
|
||||||
char *p;
|
|
||||||
|
|
||||||
int xpm_X = 0, xpm_Y = 0;
|
|
||||||
|
|
||||||
long online_time = 0;
|
|
||||||
long ref_time = 0;
|
|
||||||
long cnt_time;
|
|
||||||
|
|
||||||
|
|
||||||
fp = fopen("/proc/uptime", "r");
|
|
||||||
fp_meminfo = fopen("/proc/meminfo", "r");
|
|
||||||
fp_loadavg = fopen("/proc/loadavg", "r");
|
|
||||||
fp_stat = fopen("/proc/stat", "r");
|
|
||||||
|
|
||||||
if (fp) {
|
|
||||||
fscanf(fp, "%ld", &online_time);
|
|
||||||
ref_time = time(0);
|
|
||||||
fclose(fp);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i=0; i<MAX_STAT_DEVICES; i++) {
|
|
||||||
for (j=0; j<55; j++) {
|
|
||||||
stat_device[i].his[j] = 0;
|
|
||||||
}
|
|
||||||
stat_device[i].hisaddcnt = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (LEFT_ACTION) left_action = strdup(LEFT_ACTION);
|
|
||||||
if (RIGHT_ACTION) right_action = strdup(RIGHT_ACTION);
|
|
||||||
if (MIDDLE_ACTION) middle_action = strdup(MIDDLE_ACTION);
|
|
||||||
|
|
||||||
strcpy(temp, "/etc/wmmonrc");
|
|
||||||
parse_rcfile(temp, wmmon_keys);
|
|
||||||
|
|
||||||
p = getenv("HOME");
|
|
||||||
strcpy(temp, p);
|
|
||||||
strcat(temp, "/.wmmonrc");
|
|
||||||
parse_rcfile(temp, wmmon_keys);
|
|
||||||
|
|
||||||
strcpy(temp, "/etc/wmmonrc.fixed");
|
|
||||||
parse_rcfile(temp, wmmon_keys);
|
|
||||||
|
|
||||||
stat_online = checksysdevs();
|
|
||||||
|
|
||||||
|
|
||||||
openXwindow(argc, argv, wmmon_master_xpm, wmmon_mask_bits, wmmon_mask_width, wmmon_mask_height);
|
|
||||||
|
|
||||||
/* add mouse region */
|
|
||||||
AddMouseRegion(0, 12, 13, 58, 57);
|
|
||||||
AddMouseRegion(1, 5, 5, 24, 14);
|
|
||||||
|
|
||||||
starttime = time(0);
|
|
||||||
nexttime = starttime + 10;
|
|
||||||
|
|
||||||
for (i=0; i<stat_online; i++) {
|
|
||||||
get_statistics(stat_device[i].name, &k, &istat, &idle);
|
|
||||||
stat_device[i].statlast = istat;
|
|
||||||
stat_device[i].idlelast = idle;
|
|
||||||
}
|
|
||||||
if (stat_current == 0) DrawStats(stat_device[stat_current].his, 54, 40, 5, 58);
|
|
||||||
if (stat_current == 1) {
|
|
||||||
DrawStats_io(stat_device[stat_current].his, 54, 40, 5, 58);
|
|
||||||
}
|
|
||||||
if (stat_current == 2) {
|
|
||||||
xpm_X = 64;
|
|
||||||
setMaskXY(-64, 0);
|
|
||||||
} else {
|
|
||||||
xpm_X = 0;
|
|
||||||
setMaskXY(0, 0);
|
|
||||||
}
|
|
||||||
DrawActive(stat_device[stat_current].name);
|
|
||||||
|
|
||||||
while (1) {
|
|
||||||
curtime = time(0);
|
|
||||||
|
|
||||||
waitpid(0, NULL, WNOHANG);
|
|
||||||
|
|
||||||
|
|
||||||
update_stat_cpu(&stat_device[0]);
|
|
||||||
update_stat_io(&stat_device[1]);
|
|
||||||
|
|
||||||
if(stat_current == 2) {
|
|
||||||
update_stat_mem(&stat_device[2], &stat_device[3]);
|
|
||||||
// update_stat_swp(&stat_device[3]);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (stat_current < 2) {
|
|
||||||
i = stat_current;
|
|
||||||
|
|
||||||
/* Load ding is 45 pixels hoog */
|
|
||||||
copyXPMArea(0, 64, 32, 12, 28, 4);
|
|
||||||
|
|
||||||
j = (stat_device[i].rt_stat + stat_device[i].rt_idle);
|
|
||||||
if (j != 0) {
|
|
||||||
j = (stat_device[i].rt_stat * 100) / j;
|
|
||||||
}
|
|
||||||
j = j * 0.32;
|
|
||||||
if (j > 32) j = 32;
|
|
||||||
copyXPMArea(32, 64, j, 12, 28, 4);
|
|
||||||
} else {
|
|
||||||
/* Nu zal ie wel 3 zijn. */
|
|
||||||
|
|
||||||
copyXPMArea(0, 64, 32, 12, 28+64, 4);
|
|
||||||
copyXPMArea(0, 64, 32, 12, 28+64, 18);
|
|
||||||
|
|
||||||
j = stat_device[2].rt_idle;
|
|
||||||
if (j != 0) {
|
|
||||||
j = (stat_device[2].rt_stat * 100) / j;
|
|
||||||
}
|
|
||||||
j = j * 0.32;
|
|
||||||
if (j > 32) j = 32;
|
|
||||||
copyXPMArea(32, 64, j, 12, 28+64, 4);
|
|
||||||
/*--------------------- ------------------*/
|
|
||||||
j = stat_device[3].rt_idle;
|
|
||||||
if (j != 0) {
|
|
||||||
j = (stat_device[3].rt_stat * 100) / j;
|
|
||||||
}
|
|
||||||
j = j * 0.32;
|
|
||||||
if (j > 32) j = 32;
|
|
||||||
copyXPMArea(32, 64, j, 12, 28+64, 18);
|
|
||||||
|
|
||||||
/*----------- online tijd neerzetten! ----------*/
|
|
||||||
|
|
||||||
cnt_time = time(0) - ref_time + online_time;
|
|
||||||
|
|
||||||
/* cnt_time = uptime in seconden */
|
|
||||||
/*
|
|
||||||
secs = 108,47
|
|
||||||
mins = 89,47
|
|
||||||
uren = 70,47
|
|
||||||
digits = 40,78, 6breed, 9hoog
|
|
||||||
*/
|
|
||||||
i = cnt_time % 60;
|
|
||||||
cnt_time /= 60;
|
|
||||||
copyXPMArea(40 + (i % 10)*7, 78, 6, 9, 115, 47);
|
|
||||||
copyXPMArea(40 + (i / 10)*7, 78, 6, 9, 108, 47);
|
|
||||||
|
|
||||||
i = cnt_time % 60;
|
|
||||||
cnt_time /= 60;
|
|
||||||
copyXPMArea(40 + (i % 10)*7, 78, 6, 9, 96, 47);
|
|
||||||
copyXPMArea(40 + (i / 10)*7, 78, 6, 9, 89, 47);
|
|
||||||
|
|
||||||
i = cnt_time % 24;
|
|
||||||
cnt_time /= 24;
|
|
||||||
copyXPMArea(40 + (i % 10)*7, 78, 6, 9, 77, 47);
|
|
||||||
copyXPMArea(40 + (i / 10)*7, 78, 6, 9, 70, 47);
|
|
||||||
|
|
||||||
/* De rest is dagen! 5x7*/
|
|
||||||
|
|
||||||
i = cnt_time;
|
|
||||||
copyXPMArea(66 + (i % 10)*6, 66, 5, 7, 88, 35);
|
|
||||||
i /= 10;
|
|
||||||
copyXPMArea(66 + (i % 10)*6, 66, 5, 7, 82, 35);
|
|
||||||
i /= 10;
|
|
||||||
copyXPMArea(66 + (i % 10)*6, 66, 5, 7, 76, 35);
|
|
||||||
i /= 10;
|
|
||||||
copyXPMArea(66 + (i % 10)*6, 66, 5, 7, 70, 35);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (curtime >= nexttime) {
|
|
||||||
nexttime+=10;
|
|
||||||
|
|
||||||
for (i=0; i<stat_online; i++) {
|
|
||||||
if (stat_device[i].his[54])
|
|
||||||
stat_device[i].his[54] /= stat_device[i].hisaddcnt;
|
|
||||||
|
|
||||||
for (j=1; j<55; j++) {
|
|
||||||
stat_device[i].his[j-1] = stat_device[i].his[j];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (i == stat_current) {
|
|
||||||
if (i == 0) DrawStats(stat_device[i].his, 54, 40, 5, 58);
|
|
||||||
if (i == 1) DrawStats_io(stat_device[i].his, 54, 40, 5, 58);
|
|
||||||
}
|
|
||||||
stat_device[i].his[54] = 0;
|
|
||||||
stat_device[i].hisaddcnt = 0;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
RedrawWindowXY(xpm_X, xpm_Y);
|
|
||||||
|
|
||||||
while (XPending(display)) {
|
|
||||||
XNextEvent(display, &Event);
|
|
||||||
switch (Event.type) {
|
|
||||||
case Expose:
|
|
||||||
RedrawWindowXY(xpm_X, xpm_Y);
|
|
||||||
break;
|
|
||||||
case DestroyNotify:
|
|
||||||
XCloseDisplay(display);
|
|
||||||
exit(0);
|
|
||||||
break;
|
|
||||||
case ButtonPress:
|
|
||||||
but_stat = CheckMouseRegion(Event.xbutton.x, Event.xbutton.y);
|
|
||||||
break;
|
|
||||||
case ButtonRelease:
|
|
||||||
i = CheckMouseRegion(Event.xbutton.x, Event.xbutton.y);
|
|
||||||
if (but_stat == i && but_stat >= 0) {
|
|
||||||
switch (but_stat) {
|
|
||||||
case 0:
|
|
||||||
switch (Event.xbutton.button) {
|
|
||||||
case 1:
|
|
||||||
if (left_action)
|
|
||||||
execCommand(left_action);
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
if (middle_action)
|
|
||||||
execCommand(middle_action);
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
if (right_action)
|
|
||||||
execCommand(right_action);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 1:
|
|
||||||
stat_current++;
|
|
||||||
printf("current stat is :%d\n", stat_current);
|
|
||||||
if (stat_current == stat_online)
|
|
||||||
stat_current = 0;
|
|
||||||
|
|
||||||
DrawActive(stat_device[stat_current].name);
|
|
||||||
if (stat_current == 0) DrawStats(stat_device[stat_current].his, 54, 40, 5, 58);
|
|
||||||
if (stat_current == 1) {
|
|
||||||
DrawStats_io(stat_device[stat_current].his, 54, 40, 5, 58);
|
|
||||||
}
|
|
||||||
if (stat_current == 2) {
|
|
||||||
xpm_X = 64;
|
|
||||||
setMaskXY(-64, 0);
|
|
||||||
} else {
|
|
||||||
xpm_X = 0;
|
|
||||||
setMaskXY(0, 0);
|
|
||||||
}
|
|
||||||
RedrawWindowXY(xpm_X, xpm_Y);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
usleep( stat_current == 0 ? 100000L : 200000L);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void update_stat_cpu(stat_dev *st) {
|
|
||||||
|
|
||||||
long k, istat, idle;
|
|
||||||
|
|
||||||
get_statistics(st->name, &k, &istat, &idle);
|
|
||||||
|
|
||||||
st->rt_idle = idle - st->idlelast;
|
|
||||||
st->idlelast = idle;
|
|
||||||
|
|
||||||
st->rt_stat = istat - st->statlast;
|
|
||||||
st->statlast = istat;
|
|
||||||
|
|
||||||
st->his[54] += k;
|
|
||||||
st->hisaddcnt += 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
void update_stat_io(stat_dev *st) {
|
|
||||||
|
|
||||||
long j, k, istat, idle;
|
|
||||||
static long maxdiskio = 0;
|
|
||||||
|
|
||||||
get_statistics(st->name, &k, &istat, &idle);
|
|
||||||
|
|
||||||
st->rt_idle = idle - st->idlelast;
|
|
||||||
st->idlelast = idle;
|
|
||||||
|
|
||||||
st->rt_stat = istat - st->statlast;
|
|
||||||
st->statlast = istat;
|
|
||||||
|
|
||||||
j = st->rt_stat;
|
|
||||||
if (maxdiskio < j) {
|
|
||||||
maxdiskio = j;
|
|
||||||
}
|
|
||||||
st->rt_idle = maxdiskio - j;
|
|
||||||
|
|
||||||
st->his[54] += st->rt_stat;
|
|
||||||
st->hisaddcnt += 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
void update_stat_mem(stat_dev *st, stat_dev *st2) {
|
|
||||||
|
|
||||||
char temp[128];
|
|
||||||
unsigned long free, shared, buffers, cached;
|
|
||||||
|
|
||||||
freopen("/proc/meminfo", "r", fp_meminfo);
|
|
||||||
while (fgets(temp, 128, fp_meminfo)) {
|
|
||||||
if (strstr(temp, "Mem:")) {
|
|
||||||
sscanf(temp, "Mem: %ld %ld %ld %ld %ld %ld",
|
|
||||||
&st->rt_idle, &st->rt_stat,
|
|
||||||
&free, &shared, &buffers, &cached);
|
|
||||||
st->rt_idle >>= 10;
|
|
||||||
st->rt_stat -= buffers+cached;
|
|
||||||
st->rt_stat >>= 10;
|
|
||||||
// break;
|
|
||||||
}
|
|
||||||
if (strstr(temp, "Swap:")) {
|
|
||||||
sscanf(temp, "Swap: %ld %ld", &st2->rt_idle, &st2->rt_stat);
|
|
||||||
st2->rt_idle >>= 10;
|
|
||||||
st2->rt_stat >>= 10;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void update_stat_swp(stat_dev *st) {
|
|
||||||
|
|
||||||
char temp[128];
|
|
||||||
|
|
||||||
fseek(fp_meminfo, 0, SEEK_SET);
|
|
||||||
while (fgets(temp, 128, fp_meminfo)) {
|
|
||||||
if (strstr(temp, "Swap:")) {
|
|
||||||
sscanf(temp, "Swap: %ld %ld", &st->rt_idle, &st->rt_stat);
|
|
||||||
st->rt_idle >>= 10;
|
|
||||||
st->rt_stat >>= 10;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/*******************************************************************************\
|
|
||||||
|* get_statistics *|
|
|
||||||
\*******************************************************************************/
|
|
||||||
|
|
||||||
void get_statistics(char *devname, long *is, long *ds, long *idle) {
|
|
||||||
|
|
||||||
int i;
|
|
||||||
char temp[128];
|
|
||||||
char *p;
|
|
||||||
char *tokens = " \t\n";
|
|
||||||
float f;
|
|
||||||
long maxdiskio=0;
|
|
||||||
|
|
||||||
*is = 0;
|
|
||||||
*ds = 0;
|
|
||||||
*idle = 0;
|
|
||||||
|
|
||||||
if (!strncmp(devname, "cpu", 3)) {
|
|
||||||
fseek(fp_stat, 0, SEEK_SET);
|
|
||||||
while (fgets(temp, 128, fp_stat)) {
|
|
||||||
if (strstr(temp, "cpu")) {
|
|
||||||
p = strtok(temp, tokens);
|
|
||||||
/* 1..3, 4 == idle, we don't want idle! */
|
|
||||||
for (i=0; i<3; i++) {
|
|
||||||
p = strtok(NULL, tokens);
|
|
||||||
*ds += atol(p);
|
|
||||||
}
|
|
||||||
p = strtok(NULL, tokens);
|
|
||||||
*idle = atol(p);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
fp_loadavg = freopen("/proc/loadavg", "r", fp_loadavg);
|
|
||||||
fscanf(fp_loadavg, "%f", &f);
|
|
||||||
*is = (long) (100 * f);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!strncmp(devname, "i/o", 3)) {
|
|
||||||
|
|
||||||
fseek(fp_stat, 0, SEEK_SET);
|
|
||||||
while (fgets(temp, 128, fp_stat)) {
|
|
||||||
if (strstr(temp, "disk_rio") || strstr(temp, "disk_wio")) {
|
|
||||||
p = strtok(temp, tokens);
|
|
||||||
/* 1..4 */
|
|
||||||
for (i=0; i<4; i++) {
|
|
||||||
p = strtok(NULL, tokens);
|
|
||||||
*ds += atol(p);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (*ds > maxdiskio) maxdiskio = *ds;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*******************************************************************************\
|
|
||||||
|* checksysdevs *|
|
|
||||||
\*******************************************************************************/
|
|
||||||
|
|
||||||
int checksysdevs(void) {
|
|
||||||
|
|
||||||
strcpy(stat_device[0].name, "cpu0");
|
|
||||||
strcpy(stat_device[1].name, "i/o");
|
|
||||||
strcpy(stat_device[2].name, "sys");
|
|
||||||
|
|
||||||
return 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************\
|
|
||||||
|* void DrawActive(char *) *|
|
|
||||||
\*******************************************************************************/
|
|
||||||
|
|
||||||
void DrawActive(char *name) {
|
|
||||||
|
|
||||||
/* Alles op X,77
|
|
||||||
CPU: 0
|
|
||||||
I/O: 21
|
|
||||||
|
|
||||||
20 Breed, 10 hoog
|
|
||||||
Destinatie: 5,5
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (name[0] == 'c') {
|
|
||||||
copyXPMArea(0, 77, 19, 10, 5, 5);
|
|
||||||
} else if (name[0] == 'i') {
|
|
||||||
copyXPMArea(19, 77, 19, 10, 5, 5);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/*******************************************************************************\
|
|
||||||
|* DrawStats *|
|
|
||||||
\*******************************************************************************/
|
|
||||||
|
|
||||||
void DrawStats(int *his, int num, int size, int x_left, int y_bottom) {
|
|
||||||
|
|
||||||
int pixels_per_byte;
|
|
||||||
int j,k;
|
|
||||||
int *p;
|
|
||||||
int d;
|
|
||||||
|
|
||||||
pixels_per_byte = 100;
|
|
||||||
p = his;
|
|
||||||
for (j=0; j<num; j++) {
|
|
||||||
if (p[0] > pixels_per_byte)
|
|
||||||
pixels_per_byte += 100;
|
|
||||||
p += 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
p = his;
|
|
||||||
|
|
||||||
for (k=0; k<num; k++) {
|
|
||||||
d = (1.0 * p[0] / pixels_per_byte) * size;
|
|
||||||
|
|
||||||
for (j=0; j<size; j++) {
|
|
||||||
|
|
||||||
if (j < d - 3)
|
|
||||||
copyXPMArea(2, 88, 1, 1, k+x_left, y_bottom-j);
|
|
||||||
else if (j < d)
|
|
||||||
copyXPMArea(2, 89, 1, 1, k+x_left, y_bottom-j);
|
|
||||||
else
|
|
||||||
copyXPMArea(2, 90, 1, 1, k+x_left, y_bottom-j);
|
|
||||||
}
|
|
||||||
p += 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Nu horizontaal op 100/200/300 etc lijntje trekken! */
|
|
||||||
for (j = pixels_per_byte-100; j > 0; j-=100) {
|
|
||||||
for (k=0; k<num; k++) {
|
|
||||||
d = (40.0 / pixels_per_byte) * j;
|
|
||||||
|
|
||||||
copyXPMArea(2, 91, 1, 1, k+x_left, y_bottom-d);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*******************************************************************************\
|
|
||||||
|* DrawStats_io *|
|
|
||||||
\*******************************************************************************/
|
|
||||||
|
|
||||||
void DrawStats_io(int *his, int num, int size, int x_left, int y_bottom) {
|
|
||||||
|
|
||||||
float pixels_per_byte;
|
|
||||||
int j,k;
|
|
||||||
int *p;
|
|
||||||
int d;
|
|
||||||
|
|
||||||
static int global_io_scale = 1;
|
|
||||||
|
|
||||||
p = his;
|
|
||||||
for (j=0; j<num; j++) {
|
|
||||||
if (p[j] > global_io_scale) global_io_scale = p[j];
|
|
||||||
}
|
|
||||||
|
|
||||||
pixels_per_byte = 1.0 * global_io_scale / size;
|
|
||||||
if (pixels_per_byte == 0) pixels_per_byte = 1;
|
|
||||||
|
|
||||||
for (k=0; k<num; k++) {
|
|
||||||
d = (1.0 * p[0] / pixels_per_byte);
|
|
||||||
|
|
||||||
for (j=0; j<size; j++) {
|
|
||||||
|
|
||||||
if (j < d - 3)
|
|
||||||
copyXPMArea(2, 88, 1, 1, k+x_left, y_bottom-j);
|
|
||||||
else if (j < d)
|
|
||||||
copyXPMArea(2, 89, 1, 1, k+x_left, y_bottom-j);
|
|
||||||
else
|
|
||||||
copyXPMArea(2, 90, 1, 1, k+x_left, y_bottom-j);
|
|
||||||
}
|
|
||||||
p += 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************\
|
|
||||||
|* usage *|
|
|
||||||
\*******************************************************************************/
|
|
||||||
|
|
||||||
void usage(void) {
|
|
||||||
|
|
||||||
fprintf(stderr, "\nwmmon - programming: tijno, (de)bugging & design warp, webhosting: bobby\n\n");
|
|
||||||
fprintf(stderr, "usage:\n");
|
|
||||||
fprintf(stderr, "\t-display <display name>\n");
|
|
||||||
fprintf(stderr, "\t-h\tthis screen\n");
|
|
||||||
fprintf(stderr, "\t-v\tprint the version number\n");
|
|
||||||
fprintf(stderr, "\t-i\tstartup in DiskIO mode\n");
|
|
||||||
fprintf(stderr, "\t-s\tstartup in SysInfo mode\n");
|
|
||||||
fprintf(stderr, "\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
/*******************************************************************************\
|
|
||||||
|* printversion *|
|
|
||||||
\*******************************************************************************/
|
|
||||||
|
|
||||||
void printversion(void) {
|
|
||||||
|
|
||||||
if (!strcmp(ProgName, "wmmon")) {
|
|
||||||
fprintf(stderr, "%s\n", WMMON_VERSION);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,40 +0,0 @@
|
||||||
/* wmapm.h -- Header file for WMAPM
|
|
||||||
*
|
|
||||||
* wmapm-1.2 (C) 1998 Chris D. Faulhaber <jedgar@speck.ml.org>
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation; either version 2, or (at your option)
|
|
||||||
* any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program (see the file COPYING); if not, write to the
|
|
||||||
* Free Software Foundation, Inc.,
|
|
||||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
|
||||||
***********************************************************************/
|
|
||||||
|
|
||||||
#define DELAY 250000 /* Delay between refreshes (in microseconds) */
|
|
||||||
|
|
||||||
#define WMAPM_VERSION "1.2"
|
|
||||||
|
|
||||||
typedef struct apm_info {
|
|
||||||
const char driver_version[10];
|
|
||||||
int apm_version_major;
|
|
||||||
int apm_version_minor;
|
|
||||||
int apm_flags;
|
|
||||||
int ac_line_status;
|
|
||||||
int battery_status;
|
|
||||||
int battery_flags;
|
|
||||||
int battery_percentage;
|
|
||||||
int battery_time;
|
|
||||||
int using_minutes;
|
|
||||||
} apm_info;
|
|
||||||
|
|
||||||
#ifndef APM_32_BIT_SUPPORT
|
|
||||||
#define APM_32_BIT_SUPPORT 0x0002
|
|
||||||
#endif
|
|
Loading…
Reference in a new issue