Package: ttyload
Version: 0.5-1
Severity: normal
Hi,
ttyload currently fails to build on Debian GNU/Hurd. The attached patch
resolves the issue. (I just copied arch/Linux/* to arch/GNU/).
Thank you,
Barry deFreese
diff -u ttyload-0.5/debian/rules ttyload-0.5/debian/rules
--- ttyload-0.5/debian/rules
+++ ttyload-0.5/debian/rules
@@ -39,7 +39,7 @@
# Commands to clean up after the build process.
# $(MAKE) clean
- rm -f *.o arch/Linux/*.o arch/default/*.o $(PACKAGE)
+ rm -f *.o arch/Linux/*.o arch/default/*.o arch/GNU/*.o $(PACKAGE)
rm -f archtest archtest.o
rm -f arch/Darwin arch/Isilon-OneFS arch/thisarch
rm -f debian/*.$(MANSECT)
only in patch2:
unchanged:
--- ttyload-0.5.orig/arch/GNU/getload.c
+++ ttyload-0.5/arch/GNU/getload.c
@@ -0,0 +1,64 @@
+#define LOADFILE "/proc/loadavg"
+
+/* What the contents of the proc file look like, as an example:
+ * 0.00 0.00 0.00 1/59 10941
+ */
+
+#include "ttyload.h"
+
+#include <stdio.h> /* for perror */
+#include <stdlib.h> /* for exit() */
+#include <unistd.h> /* for sleep() */
+
+void getload(load_list *loadavgs)
+{
+ float theload[3];
+ FILE *loadfile;
+ int ret;
+
+ /* just for sanity: */
+ if(!loadavgs)
+ {
+ fprintf(stderr, "getload called without loadavgs pointer.\n");
+ exit(2);
+ }
+
+ if(!(loadfile = fopen(LOADFILE, "r")))
+ {
+ perror("Open of " LOADFILE " failed");
+ exit(1);
+ }
+
+ ret = fscanf(loadfile, "%f %f %f ", &(theload[0]), &(theload[1]),
&(theload[2]));
+
+ if(fclose(loadfile) != 0)
+ {
+ perror("Close of " LOADFILE " failed?!");
+ exit(1);
+ }
+
+ /* so the caller _can_ (maybe not _will_) know how we did */
+ loadavgs->numloads = ret;
+ loadavgs->one_minute = theload[0] * 1024;
+ loadavgs->five_minute = theload[1] * 1024;
+ loadavgs->fifteen_minute = theload[2] * 1024;
+
+ /* a little warning thing... should probably be re-written
+ * for the Linux/fscanf stuff, this is a hold-over from the
+ * solaris stuff. */
+ switch(ret)
+ {
+ case 2:
+ fprintf(stderr, "15 minute Load average is unreliable.\n");
+ sleep(5);
+ break;
+ case 1:
+ fprintf(stderr, "5 and 15 minute load averages are unreliable.\n");
+ sleep(5);
+ break;
+ case 0:
+ fprintf(stderr, "Sorry, couldn't get any load "
+ "averages. This is, therefore, pointless.\n");
+ exit(1);
+ }
+}
only in patch2:
unchanged:
--- ttyload-0.5.orig/arch/GNU/terminfo.c
+++ ttyload-0.5/arch/GNU/terminfo.c
@@ -0,0 +1,28 @@
+/*
+ * arch/Linux/terminfo.c -- routines for getting terminal
+ * information on Linux machines.
+ *
+ * Copyright 2001, David Lindes. All rights reserved.
+ */
+
+#include <sys/ioctl.h> /* for ioctl() */
+
+/* globals */
+extern int rows;
+extern int cols;
+
+void gettermsize()
+{
+ struct winsize info;
+
+ /* try to get data via IOCTL: */
+ if (ioctl(1 /* stdout */, TIOCGWINSZ, &info) != -1)
+ {
+ /* if successful, and the data seems sane, set the
+ * program's globals: */
+ if(info.ws_col > 0)
+ cols = info.ws_col;
+ if(info.ws_row > 0)
+ rows = info.ws_row;
+ }
+}