From af107bc67aab2009b8799126bab32a386dcc8ee1 Mon Sep 17 00:00:00 2001 From: marha Date: Fri, 6 Nov 2009 15:14:39 +0000 Subject: Added xload-1.0.2 --- apps/xload/get_rload.c | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 apps/xload/get_rload.c (limited to 'apps/xload/get_rload.c') diff --git a/apps/xload/get_rload.c b/apps/xload/get_rload.c new file mode 100644 index 000000000..9629d01f9 --- /dev/null +++ b/apps/xload/get_rload.c @@ -0,0 +1,76 @@ +/* $XFree86: xc/programs/xload/get_rload.c,v 1.4 2002/01/07 20:38:31 dawes Exp $ */ + +#include +#include +#include +#include +#include +#include "xload.h" + +/* Not all OS supports get_rload + steal the STUB idea from get_load + */ +#if defined(QNX4) || defined(__CYGWIN__) +#define RLOADSTUB +#endif + +#ifdef RLOADSTUB +void GetRLoadPoint( w, closure, call_data ) + Widget w; /* unused */ + XtPointer closure; /* unused */ + XtPointer call_data; /* pointer to (double) return value */ + +{ + *(double *)call_data = 1.0; +} +#else /* RLOADSTUB */ + +#include +#ifndef _PATH_RWHODIR +#define _PATH_RWHODIR "/var/spool/rwho" +#endif + +typedef struct _XLoadResources { + Boolean show_label; + Boolean use_lights; + String remote; +} XLoadResources; + +extern XLoadResources resources ; + +#define WHDRSIZE ((int)(sizeof (buf) - sizeof (buf.wd_we))) + +void GetRLoadPoint( w, closure, call_data ) + Widget w; /* unused */ + XtPointer closure; /* unused */ + XtPointer call_data; /* pointer to (double) return value */ + +{ + int f; + static char *fname = NULL; + static struct whod buf; + int cc; + + *(double *)call_data = 0.0; /* to be on the safe side */ + + if (fname == NULL) { + if ((fname = malloc(strlen(_PATH_RWHODIR)+strlen("/whod.")+strlen(resources.remote)+1)) == NULL) { + fprintf(stderr,"GetRLoadPoint: malloc() failed\n"); + exit(1); + } + strcpy(fname,_PATH_RWHODIR); + strcat(fname,"/whod."); + strcat(fname,resources.remote); + } + if ((f = open(fname, O_RDONLY, 0)) < 0) + return; + + cc = read(f, &buf, sizeof(buf)); + close(f); + if (cc < WHDRSIZE) + return; + + *(double *)call_data = buf.wd_loadav[0] / 100.0; +} + +#endif /* RLOADSTUB */ -- cgit v1.2.3