cpu,monitors: fix wrapping on 32-bit architectures
authorMarko Rauhamaa <marko@pacujo.net>
Mon, 29 Jul 2013 22:27:38 +0000 (18:27 -0400)
committerHenry Gebhardt <hsggebhardt@gmail.com>
Mon, 29 Jul 2013 22:28:49 +0000 (18:28 -0400)
src/plugins/cpu/cpu.c
src/plugins/monitors/monitors.c

index c056531..e73d039 100644 (file)
@@ -36,7 +36,7 @@
 
 #include "dbg.h"
 
-typedef unsigned long CPUTick;                 /* Value from /proc/stat */
+typedef unsigned long long CPUTick;            /* Value from /proc/stat */
 typedef float CPUSample;                       /* Saved CPU utilization value as 0.0..1.0 */
 
 struct cpu_stat {
@@ -111,7 +111,7 @@ static gboolean cpu_update(CPUPlugin * c)
         FILE * stat = fopen("/proc/stat", "r");
         if (stat == NULL)
             return TRUE;
-        int fscanf_result = fscanf(stat, "cpu %lu %lu %lu %lu", &cpu.u, &cpu.n, &cpu.s, &cpu.i);
+        int fscanf_result = fscanf(stat, "cpu %llu %llu %llu %llu", &cpu.u, &cpu.n, &cpu.s, &cpu.i);
         fclose(stat);
 
         /* Ensure that fscanf succeeded. */
index 75d77b5..71b45e6 100644 (file)
@@ -215,7 +215,7 @@ monitor_set_foreground_color(Plugin *p, Monitor *m, const gchar *color)
 /******************************************************************************
  *                                 CPU monitor                                *
  ******************************************************************************/
-typedef unsigned long CPUTick;    /* Value from /proc/stat                   */
+typedef unsigned long long CPUTick;/* Value from /proc/stat                   */
 typedef float CPUSample;          /* Saved CPU utilization value as 0.0..1.0 */
 
 struct cpu_stat {
@@ -234,7 +234,7 @@ cpu_update(Monitor * c)
         FILE * stat = fopen("/proc/stat", "r");
         if (stat == NULL)
             return TRUE;
-        int fscanf_result = fscanf(stat, "cpu %lu %lu %lu %lu", 
+        int fscanf_result = fscanf(stat, "cpu %llu %llu %llu %llu",
                                     &cpu.u, &cpu.n, &cpu.s, &cpu.i);
         fclose(stat);