+++ /dev/null
-diff -Naur wmgeneral.orig/list.c wmgeneral/list.c
---- wmgeneral.orig/list.c 2016-01-04 13:25:53.717286654 +0100
-+++ wmgeneral/list.c 2016-01-04 13:26:06.948290980 +0100
-@@ -38,7 +38,7 @@
-
- /* Return a cons cell produced from (head . tail) */
-
--INLINE LinkedList*
-+LinkedList*
- list_cons(void* head, LinkedList* tail)
- {
- LinkedList* cell;
-@@ -51,7 +51,7 @@
-
- /* Return the length of a list, list_length(NULL) returns zero */
-
--INLINE int
-+int
- list_length(LinkedList* list)
- {
- int i = 0;
-@@ -66,7 +66,7 @@
- /* Return the Nth element of LIST, where N count from zero. If N
- larger than the list length, NULL is returned */
-
--INLINE void*
-+void*
- list_nth(int index, LinkedList* list)
- {
- while(index-- != 0)
-@@ -81,7 +81,7 @@
-
- /* Remove the element at the head by replacing it by its successor */
-
--INLINE void
-+void
- list_remove_head(LinkedList** list)
- {
- if (!*list) return;
-@@ -101,7 +101,7 @@
-
- /* Remove the element with `car' set to ELEMENT */
- /*
--INLINE void
-+void
- list_remove_elem(LinkedList** list, void* elem)
- {
- while (*list)
-@@ -112,7 +112,7 @@
- }
- }*/
-
--INLINE LinkedList *
-+LinkedList *
- list_remove_elem(LinkedList* list, void* elem)
- {
- LinkedList *tmp;
-@@ -132,7 +132,7 @@
-
- /* Return element that has ELEM as car */
-
--INLINE LinkedList*
-+LinkedList*
- list_find(LinkedList* list, void* elem)
- {
- while(list)
-@@ -146,7 +146,7 @@
-
- /* Free list (backwards recursive) */
-
--INLINE void
-+void
- list_free(LinkedList* list)
- {
- if(list)
-@@ -158,7 +158,7 @@
-
- /* Map FUNCTION over all elements in LIST */
-
--INLINE void
-+void
- list_mapcar(LinkedList* list, void(*function)(void*))
- {
- while(list)
-diff -Naur wmgeneral.orig/list.h wmgeneral/list.h
---- wmgeneral.orig/list.h 2016-01-04 13:25:53.717286654 +0100
-+++ wmgeneral/list.h 2016-01-04 13:25:56.934287706 +0100
-@@ -29,31 +29,25 @@
- #ifndef __LIST_H_
- #define __LIST_H_
-
--#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
--# define INLINE inline
--#else
--# define INLINE
--#endif
--
- typedef struct LinkedList {
- void *head;
- struct LinkedList *tail;
- } LinkedList;
-
--INLINE LinkedList* list_cons(void* head, LinkedList* tail);
-+LinkedList* list_cons(void* head, LinkedList* tail);
-
--INLINE int list_length(LinkedList* list);
-+int list_length(LinkedList* list);
-
--INLINE void* list_nth(int index, LinkedList* list);
-+void* list_nth(int index, LinkedList* list);
-
--INLINE void list_remove_head(LinkedList** list);
-+void list_remove_head(LinkedList** list);
-
--INLINE LinkedList *list_remove_elem(LinkedList* list, void* elem);
-+LinkedList *list_remove_elem(LinkedList* list, void* elem);
-
--INLINE void list_mapcar(LinkedList* list, void(*function)(void*));
-+void list_mapcar(LinkedList* list, void(*function)(void*));
-
--INLINE LinkedList*list_find(LinkedList* list, void* elem);
-+LinkedList*list_find(LinkedList* list, void* elem);
-
--INLINE void list_free(LinkedList* list);
-+void list_free(LinkedList* list);
-
- #endif
+++ /dev/null
---- wmtop.c.orig 2001-01-19 15:41:20.000000000 -0600
-+++ wmtop.c 2012-03-29 22:36:49.906684353 -0500
-@@ -182,12 +182,12 @@
- pid_t pid;
- char *name;
- float amount;
-- int user_time;
-- int kernel_time;
-- int previous_user_time;
-- int previous_kernel_time;
-- int vsize;
-- int rss;
-+ unsigned long user_time;
-+ unsigned long kernel_time;
-+ unsigned long previous_user_time;
-+ unsigned long previous_kernel_time;
-+ unsigned long vsize;
-+ long rss;
- int time_stamp;
- int counted;
- };
-@@ -236,8 +236,8 @@
-
- process->pid = p;
- process->time_stamp = 0;
-- process->previous_user_time = INT_MAX;
-- process->previous_kernel_time = INT_MAX;
-+ process->previous_user_time = ULONG_MAX;
-+ process->previous_kernel_time = ULONG_MAX;
- process->counted = 1;
-
- /* process_find_name(process);*/
-@@ -256,11 +256,11 @@
- void process_cleanup(void);
- void delete_process(struct process *);
- inline void draw_processes(void);
--int calc_cpu_total(void);
--void calc_cpu_each(int);
-+unsigned long calc_cpu_total(void);
-+void calc_cpu_each(unsigned long total);
- #if defined(LINUX)
--int calc_mem_total(void);
--void calc_mem_each(int);
-+unsigned long calc_mem_total(void);
-+void calc_mem_each(unsigned long total);
- #endif
- int process_find_top_three(struct process **);
- void draw_bar(int, int, int, int, float, int, int);
-@@ -457,13 +457,15 @@
- char line[WMTOP_BUFLENGTH],filename[WMTOP_BUFLENGTH],procname[WMTOP_BUFLENGTH];
- int ps;
- struct stat sbuf;
-- int user_time,kernel_time;
-+ unsigned long user_time,kernel_time;
- int rc;
- #if defined(LINUX)
- char *r,*q;
- char deparenthesised_name[WMTOP_BUFLENGTH];
- #endif /* defined(LINUX) */
- #if defined(FREEBSD)
-+ /* TODO: needs analysis. Probably needs same data type fix as LINUX (use
-+ * long types). Need to check FreeBSD docs and test. -wbk */
- int us,um,ks,km;
- #endif /* defined(FREEBSD) */
-
-@@ -501,9 +503,10 @@
-
- #if defined(LINUX)
- /*
-- * Extract cpu times from data in /proc filesystem
-+ * Extract cpu times from data in /proc filesystem.
-+ * For conversion types see man proc(5).
- */
-- rc = sscanf(line,"%*s %s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %d %d %*s %*s %*s %*s %*s %*s %*s %d %d",
-+ rc = sscanf(line,"%*s %s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %lu %lu %*s %*s %*s %*s %*s %*s %*s %lu %ld",
- procname,
- &process->user_time,&process->kernel_time,
- &process->vsize,&process->rss);
-@@ -527,6 +530,9 @@
- /*
- * Extract cpu times from data in /proc/<pid>/stat
- * XXX: Process name extractor for FreeBSD is untested right now.
-+ *
-+ * [TODO: FREEBSD code probably needs similar data type changes to
-+ * those made for LINUX above. Need to check docs. -wbk]
- */
- rc = sscanf(line,"%s %*s %*s %*s %*s %*s %*s %*s %d,%d %d,%d",
- procname,
-@@ -540,11 +546,14 @@
- process->kernel_time = ks*1000+km/1000;
- #endif /* defined(FREEBSD) */
-
-+ /* not portable (especially unsuitable for redistributable executables.
-+ * On some systems, getpagesize() is a preprocessor macro).
-+ */
- process->rss *= getpagesize();
-
-- if (process->previous_user_time==INT_MAX)
-+ if (process->previous_user_time==ULONG_MAX)
- process->previous_user_time = process->user_time;
-- if (process->previous_kernel_time==INT_MAX)
-+ if (process->previous_kernel_time==ULONG_MAX)
- process->previous_kernel_time = process->kernel_time;
-
- user_time = process->user_time-process->previous_user_time;
-@@ -686,7 +695,7 @@
- void draw_processes() {
- int i,n;
- struct process *best[3] = { 0, 0, 0 };
-- int total;
-+ unsigned long total;
-
- /*
- * Invalidate time stamps
-@@ -743,21 +752,21 @@
- /* Calculate cpu total */
- /******************************************/
-
--int calc_cpu_total() {
-- int total,t;
-- static int previous_total = INT_MAX;
-+unsigned long calc_cpu_total() {
-+ unsigned long total,t;
-+ static unsigned long previous_total = ULONG_MAX;
- #if defined(LINUX)
- int rc;
- int ps;
- char line[WMTOP_BUFLENGTH];
-- int cpu,nice,system,idle;
-+ unsigned long cpu,nice,system,idle;
-
- ps = open("/proc/stat",O_RDONLY);
- rc = read(ps,line,sizeof(line));
- close(ps);
- if (rc<0)
- return 0;
-- sscanf(line,"%*s %d %d %d %d",&cpu,&nice,&system,&idle);
-+ sscanf(line,"%*s %lu %lu %lu %lu",&cpu,&nice,&system,&idle);
- total = cpu+nice+system+idle;
- #endif /* defined(LINUX) */
-
-@@ -780,7 +789,7 @@
- /* Calculate each processes cpu */
- /******************************************/
-
--void calc_cpu_each(int total) {
-+void calc_cpu_each(unsigned long total) {
- struct process *p = first_process;
- while (p) {
-
-@@ -798,7 +807,8 @@
- /******************************************/
-
- #if defined(LINUX)
--int calc_mem_total() {
-+/* INT_MAX won't always hold total system RAM, especially on a 64 bit system. */
-+unsigned long calc_mem_total() {
- int ps;
- char line[512];
- char *ptr;
-@@ -810,11 +820,12 @@
- if (rc<0)
- return 0;
-
-- if ((ptr = strstr(line, "Mem:")) == NULL) {
-+ if ((ptr = strstr(line, "MemTotal:")) == NULL) {
- return 0;
- } else {
-- ptr += 4;
-- return atoi(ptr);
-+ ptr += 9; /* move into whitespace */
-+ /* wbk - old Mem: Total was bytes. MemTotal: is KB */
-+ return (unsigned long)atoi(ptr) * 1024;
- }
-
- }
-@@ -825,10 +836,10 @@
- /******************************************/
-
- #if defined(LINUX)
--void calc_mem_each(int total) {
-+void calc_mem_each(unsigned long total) {
- struct process *p = first_process;
- while (p) {
-- p->amount = 100*(float)p->rss/total;
-+ p->amount = 100*(double)p->rss/total;
- p = p->next;
- }
- }