* Add new timed thread abstraction file.
* Convert thread activity to timed threads, including
texeci, imap, pop3, audacious.
+ * Change memory vars from unsigned long to unsigned long long
+ to fix reported overflow, e.g. swapmax >= 4Gb.
2006-11-13
* Use pthread_cond_timedwait() instead of sleep() in audacious
OBJ(memperc) {
if (cur->memmax) {
if (!use_spacer)
- snprintf(p, p_max_size, "%*lu",
+ snprintf(p, p_max_size, "%*Lu",
pad_percents,
(cur->mem * 100) /
(cur->memmax));
else
- snprintf(p, 4, "%*lu ",
+ snprintf(p, 4, "%*Lu ",
pad_percents,
(cur->mem * 100) /
(cur->memmax));
strncpy(p, "No swap", 255);
} else {
if (!use_spacer)
- snprintf(p, 255, "%*lu",
+ snprintf(p, 255, "%*Lu",
pad_percents,
(cur->swap *
100) /
cur->swapmax);
else
- snprintf(p, 4, "%*lu ",
+ snprintf(p, 4, "%*Lu ",
pad_percents,
(cur->swap *
100) /
double uptime;
/* memory information in kilobytes */
- unsigned long mem, memmax, swap, swapmax;
- unsigned long bufmem, buffers, cached;
+ unsigned long long mem, memmax, swap, swapmax;
+ unsigned long long bufmem, buffers, cached;
unsigned short procs;
unsigned short run_procs;
break;
if (strncmp(buf, "MemTotal:", 9) == 0) {
- sscanf(buf, "%*s %lu", &info.memmax);
+ sscanf(buf, "%*s %Lu", &info.memmax);
} else if (strncmp(buf, "MemFree:", 8) == 0) {
- sscanf(buf, "%*s %lu", &info.mem);
+ sscanf(buf, "%*s %Lu", &info.mem);
} else if (strncmp(buf, "SwapTotal:", 10) == 0) {
- sscanf(buf, "%*s %lu", &info.swapmax);
+ sscanf(buf, "%*s %Lu", &info.swapmax);
} else if (strncmp(buf, "SwapFree:", 9) == 0) {
- sscanf(buf, "%*s %lu", &info.swap);
+ sscanf(buf, "%*s %Lu", &info.swap);
} else if (strncmp(buf, "Buffers:", 8) == 0) {
- sscanf(buf, "%*s %lu", &info.buffers);
+ sscanf(buf, "%*s %Lu", &info.buffers);
} else if (strncmp(buf, "Cached:", 7) == 0) {
- sscanf(buf, "%*s %lu", &info.cached);
+ sscanf(buf, "%*s %Lu", &info.cached);
}
}