1
0
mirror of https://github.com/Llewellynvdm/conky.git synced 2025-02-04 21:18:33 +00:00

Merge branch 'master' of git://nwl.cc/~n0-1/conky

This commit is contained in:
Brenden Matthews 2008-12-15 21:01:58 -07:00
commit 621bad14f8
3 changed files with 99 additions and 156 deletions

View File

@ -118,7 +118,11 @@ static char *tmpstring1, *tmpstring2;
/* variables holding various config settings */ /* variables holding various config settings */
int short_units; int short_units;
int cpu_separate; int cpu_separate;
static int use_spacer; enum {
NO_SPACER = 0,
LEFT_SPACER,
RIGHT_SPACER
} use_spacer;
int top_cpu, top_mem; int top_cpu, top_mem;
#define TO_X 1 #define TO_X 1
#define TO_STDOUT 2 #define TO_STDOUT 2
@ -1068,11 +1072,10 @@ static void convert_escapes(char *buf)
/* Prints anything normally printed with snprintf according to the current value /* Prints anything normally printed with snprintf according to the current value
* of use_spacer. Actually slightly more flexible than snprintf, as you can * of use_spacer. Actually slightly more flexible than snprintf, as you can
* safely specify the destination buffer as one of your inputs. */ * safely specify the destination buffer as one of your inputs. */
static int spaced_print(char *, int, const char *, int, const char *, ...) static int spaced_print(char *, int, const char *, int, ...)
__attribute__((format(printf, 3, 6))); __attribute__((format(printf, 3, 5)));
static int spaced_print(char *buf, int size, const char *format, int width, static int spaced_print(char *buf, int size, const char *format, int width, ...) {
const char *func_name, ...) {
int len; int len;
va_list argp; va_list argp;
char *tempbuf; char *tempbuf;
@ -1083,7 +1086,7 @@ static int spaced_print(char *buf, int size, const char *format, int width,
tempbuf = malloc(size * sizeof(char)); tempbuf = malloc(size * sizeof(char));
// Passes the varargs along to vsnprintf // Passes the varargs along to vsnprintf
va_start(argp, func_name); va_start(argp, width);
vsnprintf(tempbuf, size, format, argp); vsnprintf(tempbuf, size, format, argp);
va_end(argp); va_end(argp);
@ -1097,35 +1100,37 @@ static int spaced_print(char *buf, int size, const char *format, int width,
case RIGHT_SPACER: case RIGHT_SPACER:
len = snprintf(buf, size, "%-*s", width - 1, tempbuf); len = snprintf(buf, size, "%-*s", width - 1, tempbuf);
break; break;
default:
CRIT_ERR("%s encountered invalid use_spacer value (%d)", func_name,
use_spacer);
} }
free(tempbuf); free(tempbuf);
return len; return len;
} }
/* converts from bytes to human readable format (k, M, G, T) */ /* converts from bytes to human readable format (k, M, G, T) */
static void human_readable(long long num, char *buf, int size, const char *func_name) static void human_readable(long long num, char *buf, int size)
{ {
const char **suffix = suffixes; const char **suffix = suffixes;
float fnum; float fnum;
int precision, len; int precision, len;
static const int WIDTH = 10, SHORT_WIDTH = 8; static const int WIDTH = 10, SHORT_WIDTH = 8;
int width;
const char *format, *format2;
if (num < 1024LL && num > -1024LL) { if (short_units) {
if (short_units) { width = SHORT_WIDTH;
spaced_print(buf, size, "%lld%c", SHORT_WIDTH, func_name, num, format = "%lld%1s";
**suffix); format2 = "%.*f%1s";
} else { } else {
spaced_print(buf, size, "%lld%s", WIDTH, func_name, num, *suffix); width = WIDTH;
} format = "%lld%s";
format2 = "%.*f%s";
}
if (llabs(num) < 1024LL) {
spaced_print(buf, size, format, width, num, *suffix);
return; return;
} }
while ((num / 1024 >= 1000LL || num / 1024 <= -1024LL) && **(suffix + 2)) { while (llabs(num / 1024) >= 1024LL && **(suffix + 2)) {
num /= 1024; num /= 1024;
suffix++; suffix++;
} }
@ -1139,14 +1144,9 @@ static void human_readable(long long num, char *buf, int size, const char *func_
if (precision < 0) { if (precision < 0) {
break; break;
} }
if (short_units) { len = spaced_print(buf, size, format2, width,
len = spaced_print(buf, size, "%.*f%c", SHORT_WIDTH, func_name, precision, fnum, *suffix);
precision, fnum, **suffix); } while (len >= MAX(width, size));
} else {
len = spaced_print(buf, size, "%.*f%s", WIDTH, func_name, precision,
fnum, *suffix);
}
} while (len >= (short_units ? SHORT_WIDTH : WIDTH) || len >= size);
} }
/* global object list root element */ /* global object list root element */
@ -1557,11 +1557,14 @@ void scan_mixer_bar(const char *arg, int *a, int *w, int *h)
* which gets overwritten in consecutive calls. I.e.: * which gets overwritten in consecutive calls. I.e.:
* this function is NOT reentrant. * this function is NOT reentrant.
*/ */
const char *dev_name(const char *path) static const char *dev_name(const char *path)
{ {
static char buf[255]; /* should be enough for pathnames */ static char buf[255]; /* should be enough for pathnames */
ssize_t buflen; ssize_t buflen;
if (!path)
return NULL;
#define DEV_NAME(x) \ #define DEV_NAME(x) \
x != NULL && strlen(x) > 5 && strncmp(x, "/dev/", 5) == 0 ? x + 5 : x x != NULL && strlen(x) > 5 && strncmp(x, "/dev/", 5) == 0 ? x + 5 : x
if ((buflen = readlink(path, buf, 254)) == -1) if ((buflen = readlink(path, buf, 254)) == -1)
@ -1889,53 +1892,32 @@ static struct text_object *construct_text_object(const char *s,
} }
#if defined(__linux__) #if defined(__linux__)
END OBJ(diskio, INFO_DISKIO) END OBJ(diskio, INFO_DISKIO)
if (arg) { obj->data.diskio = prepare_diskio_stat(dev_name(arg));
obj->data.diskio = prepare_diskio_stat(dev_name(arg));
} else {
obj->data.diskio = NULL;
}
END OBJ(diskio_read, INFO_DISKIO) END OBJ(diskio_read, INFO_DISKIO)
if (arg) { obj->data.diskio = prepare_diskio_stat(dev_name(arg));
obj->data.diskio = prepare_diskio_stat(dev_name(arg));
} else {
obj->data.diskio = NULL;
}
END OBJ(diskio_write, INFO_DISKIO) END OBJ(diskio_write, INFO_DISKIO)
if (arg) { obj->data.diskio = prepare_diskio_stat(dev_name(arg));
obj->data.diskio = prepare_diskio_stat(dev_name(arg));
} else {
obj->data.diskio = NULL;
}
END OBJ(diskiograph, INFO_DISKIO) END OBJ(diskiograph, INFO_DISKIO)
char *buf = scan_graph(dev_name(arg), &obj->a, &obj->b, &obj->c, &obj->d, char *buf = scan_graph(dev_name(arg), &obj->a, &obj->b, &obj->c, &obj->d,
&obj->e, &obj->showaslog); &obj->e, &obj->showaslog);
if (buf) { obj->data.diskio = prepare_diskio_stat(buf);
obj->data.diskio = prepare_diskio_stat(buf); if (buf)
free(buf); free(buf);
} else {
obj->data.diskio = NULL;
}
END OBJ(diskiograph_read, INFO_DISKIO) END OBJ(diskiograph_read, INFO_DISKIO)
char *buf = scan_graph(dev_name(arg), &obj->a, &obj->b, &obj->c, &obj->d, char *buf = scan_graph(dev_name(arg), &obj->a, &obj->b, &obj->c, &obj->d,
&obj->e, &obj->showaslog); &obj->e, &obj->showaslog);
if (buf) { obj->data.diskio = prepare_diskio_stat(buf);
obj->data.diskio = prepare_diskio_stat(buf); if (buf)
free(buf); free(buf);
} else {
obj->data.diskio = NULL;
}
END OBJ(diskiograph_write, INFO_DISKIO) END OBJ(diskiograph_write, INFO_DISKIO)
char *buf = scan_graph(dev_name(arg), &obj->a, &obj->b, &obj->c, &obj->d, char *buf = scan_graph(dev_name(arg), &obj->a, &obj->b, &obj->c, &obj->d,
&obj->e, &obj->showaslog); &obj->e, &obj->showaslog);
if (buf) { obj->data.diskio = prepare_diskio_stat(buf);
obj->data.diskio = prepare_diskio_stat(buf); if (buf)
free(buf); free(buf);
} else {
obj->data.diskio = NULL;
}
#endif #endif
END OBJ(color, 0) END OBJ(color, 0)
#ifdef X11 #ifdef X11
@ -3832,22 +3814,20 @@ static void generate_text_internal(char *p, int p_max_size,
snprintf(p, p_max_size, "%s", obj->data.net->ap); snprintf(p, p_max_size, "%s", obj->data.net->ap);
} }
OBJ(wireless_link_qual) { OBJ(wireless_link_qual) {
spaced_print(p, p_max_size, "%d", 4, "wireless_link_qual", spaced_print(p, p_max_size, "%d", 4,
obj->data.net->link_qual); obj->data.net->link_qual);
} }
OBJ(wireless_link_qual_max) { OBJ(wireless_link_qual_max) {
spaced_print(p, p_max_size, "%d", 4, spaced_print(p, p_max_size, "%d", 4,
"wireless_link_qual_max", obj->data.net->link_qual_max); obj->data.net->link_qual_max);
} }
OBJ(wireless_link_qual_perc) { OBJ(wireless_link_qual_perc) {
if (obj->data.net->link_qual_max > 0) { if (obj->data.net->link_qual_max > 0) {
spaced_print(p, p_max_size, "%.0f", 5, spaced_print(p, p_max_size, "%.0f", 5,
"wireless_link_qual_perc",
(double) obj->data.net->link_qual / (double) obj->data.net->link_qual /
obj->data.net->link_qual_max * 100); obj->data.net->link_qual_max * 100);
} else { } else {
spaced_print(p, p_max_size, "unk", 5, spaced_print(p, p_max_size, "unk", 5);
"wireless_link_qual_perc");
} }
} }
OBJ(wireless_link_bar) { OBJ(wireless_link_bar) {
@ -3878,7 +3858,7 @@ static void generate_text_internal(char *p, int p_max_size,
get_battery_stuff(p, p_max_size, obj->data.s, BATTERY_TIME); get_battery_stuff(p, p_max_size, obj->data.s, BATTERY_TIME);
} }
OBJ(battery_percent) { OBJ(battery_percent) {
spaced_print(p, p_max_size, "%*d", 4, "battery_percent", spaced_print(p, p_max_size, "%*d", 4,
pad_percents, get_battery_perct(obj->data.s)); pad_percents, get_battery_perct(obj->data.s));
} }
OBJ(battery_bar) { OBJ(battery_bar) {
@ -3887,10 +3867,10 @@ static void generate_text_internal(char *p, int p_max_size,
#endif /* __OpenBSD__ */ #endif /* __OpenBSD__ */
OBJ(buffers) { OBJ(buffers) {
human_readable(cur->buffers * 1024, p, 255, "buffers"); human_readable(cur->buffers * 1024, p, 255);
} }
OBJ(cached) { OBJ(cached) {
human_readable(cur->cached * 1024, p, 255, "buffers"); human_readable(cur->cached * 1024, p, 255);
} }
OBJ(cpu) { OBJ(cpu) {
if (obj->data.cpu_index > info.cpu_count) { if (obj->data.cpu_index > info.cpu_count) {
@ -3898,7 +3878,7 @@ static void generate_text_internal(char *p, int p_max_size,
obj->data.cpu_index, info.cpu_count); obj->data.cpu_index, info.cpu_count);
CRIT_ERR("attempting to use more CPUs than you have!"); CRIT_ERR("attempting to use more CPUs than you have!");
} }
spaced_print(p, p_max_size, "%*d", 4, "cpu", pad_percents, spaced_print(p, p_max_size, "%*d", 4, pad_percents,
round_to_int(cur->cpu_usage[obj->data.cpu_index] * 100.0)); round_to_int(cur->cpu_usage[obj->data.cpu_index] * 100.0));
} }
OBJ(cpubar) { OBJ(cpubar) {
@ -4102,66 +4082,35 @@ static void generate_text_internal(char *p, int p_max_size,
/* TODO: move this correction from kB to kB/s elsewhere /* TODO: move this correction from kB to kB/s elsewhere
* (or get rid of it??) */ * (or get rid of it??) */
OBJ(diskio) { OBJ(diskio) {
if (obj->data.diskio) { human_readable((obj->data.diskio->current / update_interval) * 1024LL,
human_readable( p, p_max_size);
(obj->data.diskio->current / update_interval) * 1024LL,
p, p_max_size, "diskio");
} else {
human_readable(info.diskio_value * 1024LL, p, p_max_size,
"diskio");
}
} }
OBJ(diskio_write) { OBJ(diskio_write) {
if (obj->data.diskio) { human_readable((obj->data.diskio->current / update_interval) * 1024LL,
human_readable((obj->data.diskio->current_write / update_interval) * 1024LL, p, p_max_size, p, p_max_size);
"diskio_write");
} else {
human_readable(info.diskio_write_value * 1024LL, p, p_max_size,
"diskio_write");
}
} }
OBJ(diskio_read) { OBJ(diskio_read) {
if (obj->data.diskio) { human_readable((obj->data.diskio->current / update_interval) * 1024LL,
human_readable((obj->data.diskio->current_read / update_interval) * 1024LL, p, p_max_size, p, p_max_size);
"diskio_read");
} else {
human_readable(info.diskio_read_value * 1024LL, p, p_max_size,
"diskio_read");
}
} }
OBJ(diskiograph) { OBJ(diskiograph) {
if (obj->data.diskio) { new_graph(p, obj->a, obj->b, obj->c, obj->d,
new_graph(p, obj->a, obj->b, obj->c, obj->d, obj->data.diskio->current, obj->e, 1, obj->showaslog);
obj->data.diskio->current, obj->e, 1, obj->showaslog);
} else {
new_graph(p, obj->a, obj->b, obj->c, obj->d, info.diskio_value,
obj->e, 1, obj->showaslog);
}
} }
OBJ(diskiograph_read) { OBJ(diskiograph_read) {
if (obj->data.diskio) { new_graph(p, obj->a, obj->b, obj->c, obj->d,
new_graph(p, obj->a, obj->b, obj->c, obj->d, obj->data.diskio->current_read, obj->e, 1, obj->showaslog);
obj->data.diskio->current_read, obj->e, 1, obj->showaslog);
} else {
new_graph(p, obj->a, obj->b, obj->c, obj->d,
info.diskio_read_value, obj->e, 1, obj->showaslog);
}
} }
OBJ(diskiograph_write) { OBJ(diskiograph_write) {
if (obj->data.diskio) { new_graph(p, obj->a, obj->b, obj->c, obj->d,
new_graph(p, obj->a, obj->b, obj->c, obj->d, obj->data.diskio->current_write, obj->e, 1, obj->showaslog);
obj->data.diskio->current_write, obj->e, 1, obj->showaslog);
} else {
new_graph(p, obj->a, obj->b, obj->c, obj->d,
info.diskio_write_value, obj->e, 1, obj->showaslog);
}
} }
OBJ(downspeed) { OBJ(downspeed) {
spaced_print(p, p_max_size, "%d", 6, "downspeed", spaced_print(p, p_max_size, "%d", 6,
round_to_int(obj->data.net->recv_speed / 1024)); round_to_int(obj->data.net->recv_speed / 1024));
} }
OBJ(downspeedf) { OBJ(downspeedf) {
spaced_print(p, p_max_size, "%.1f", 8, "downspeedf", spaced_print(p, p_max_size, "%.1f", 8,
obj->data.net->recv_speed / 1024.0); obj->data.net->recv_speed / 1024.0);
} }
OBJ(downspeedgraph) { OBJ(downspeedgraph) {
@ -4424,13 +4373,13 @@ static void generate_text_internal(char *p, int p_max_size,
} }
OBJ(fs_free) { OBJ(fs_free) {
if (obj->data.fs != NULL) { if (obj->data.fs != NULL) {
human_readable(obj->data.fs->avail, p, 255, "fs_free"); human_readable(obj->data.fs->avail, p, 255);
} }
} }
OBJ(fs_free_perc) { OBJ(fs_free_perc) {
if (obj->data.fs != NULL) { if (obj->data.fs != NULL) {
if (obj->data.fs->size) { if (obj->data.fs->size) {
spaced_print(p, p_max_size, "%*d", 4, "fs_free_perc", spaced_print(p, p_max_size, "%*d", 4,
pad_percents, (int) ((obj->data.fs->avail * 100) / pad_percents, (int) ((obj->data.fs->avail * 100) /
obj->data.fs->size)); obj->data.fs->size));
} else { } else {
@ -4440,7 +4389,7 @@ static void generate_text_internal(char *p, int p_max_size,
} }
OBJ(fs_size) { OBJ(fs_size) {
if (obj->data.fs != NULL) { if (obj->data.fs != NULL) {
human_readable(obj->data.fs->size, p, 255, "fs_size"); human_readable(obj->data.fs->size, p, 255);
} }
} }
OBJ(fs_type) { OBJ(fs_type) {
@ -4450,8 +4399,7 @@ static void generate_text_internal(char *p, int p_max_size,
OBJ(fs_used) { OBJ(fs_used) {
if (obj->data.fs != NULL) { if (obj->data.fs != NULL) {
human_readable(obj->data.fs->size - (obj->data.fs->free human_readable(obj->data.fs->size - (obj->data.fs->free
? obj->data.fs->free : obj->data.fs->avail), p, 255, ? obj->data.fs->free : obj->data.fs->avail), p, 255);
"fs_used");
} }
} }
OBJ(fs_bar_free) { OBJ(fs_bar_free) {
@ -4468,7 +4416,7 @@ static void generate_text_internal(char *p, int p_max_size,
OBJ(fs_used_perc) { OBJ(fs_used_perc) {
if (obj->data.fs != NULL) { if (obj->data.fs != NULL) {
if (obj->data.fs->size) { if (obj->data.fs->size) {
spaced_print(p, 4, "%*d", 4, "fs_used_perc", spaced_print(p, 4, "%*d", 4,
pad_percents, 100 - ((int) ((obj->data.fs->avail * 100) / pad_percents, 100 - ((int) ((obj->data.fs->avail * 100) /
obj->data.fs->size))); obj->data.fs->size)));
} else { } else {
@ -4715,20 +4663,20 @@ static void generate_text_internal(char *p, int p_max_size,
/* memory stuff */ /* memory stuff */
OBJ(mem) { OBJ(mem) {
human_readable(cur->mem * 1024, p, 255, "mem"); human_readable(cur->mem * 1024, p, 255);
} }
OBJ(memeasyfree) { OBJ(memeasyfree) {
human_readable(cur->memeasyfree * 1024, p, 255, "memeasyfree"); human_readable(cur->memeasyfree * 1024, p, 255);
} }
OBJ(memfree) { OBJ(memfree) {
human_readable(cur->memfree * 1024, p, 255, "memfree"); human_readable(cur->memfree * 1024, p, 255);
} }
OBJ(memmax) { OBJ(memmax) {
human_readable(cur->memmax * 1024, p, 255, "memmax"); human_readable(cur->memmax * 1024, p, 255);
} }
OBJ(memperc) { OBJ(memperc) {
if (cur->memmax) { if (cur->memmax) {
spaced_print(p, p_max_size, "%*llu", 4, "memperc", spaced_print(p, p_max_size, "%*llu", 4,
pad_percents, cur->mem * 100 / cur->memmax); pad_percents, cur->mem * 100 / cur->memmax);
} }
} }
@ -4795,10 +4743,10 @@ static void generate_text_internal(char *p, int p_max_size,
new_outline(p, obj->data.l); new_outline(p, obj->data.l);
} }
OBJ(processes) { OBJ(processes) {
spaced_print(p, p_max_size, "%hu", 5, "processes", cur->procs); spaced_print(p, p_max_size, "%hu", 5, cur->procs);
} }
OBJ(running_processes) { OBJ(running_processes) {
spaced_print(p, p_max_size, "%hu", 3, "running_processes", cur->run_procs); spaced_print(p, p_max_size, "%hu", 3, cur->run_procs);
} }
OBJ(text) { OBJ(text) {
snprintf(p, p_max_size, "%s", obj->data.s); snprintf(p, p_max_size, "%s", obj->data.s);
@ -4810,16 +4758,16 @@ static void generate_text_internal(char *p, int p_max_size,
new_stippled_hr(p, obj->data.pair.a, obj->data.pair.b); new_stippled_hr(p, obj->data.pair.a, obj->data.pair.b);
} }
OBJ(swap) { OBJ(swap) {
human_readable(cur->swap * 1024, p, 255, "swap"); human_readable(cur->swap * 1024, p, 255);
} }
OBJ(swapmax) { OBJ(swapmax) {
human_readable(cur->swapmax * 1024, p, 255, "swapmax"); human_readable(cur->swapmax * 1024, p, 255);
} }
OBJ(swapperc) { OBJ(swapperc) {
if (cur->swapmax == 0) { if (cur->swapmax == 0) {
strncpy(p, "No swap", p_max_size); strncpy(p, "No swap", p_max_size);
} else { } else {
spaced_print(p, p_max_size, "%*llu", 4, "swapperc", spaced_print(p, p_max_size, "%*llu", 4,
pad_percents, cur->swap * 100 / cur->swapmax); pad_percents, cur->swap * 100 / cur->swapmax);
} }
} }
@ -4867,20 +4815,20 @@ static void generate_text_internal(char *p, int p_max_size,
// Needless to free oldTZ since getenv gives ptr to static data // Needless to free oldTZ since getenv gives ptr to static data
} }
OBJ(totaldown) { OBJ(totaldown) {
human_readable(obj->data.net->recv, p, 255, "totaldown"); human_readable(obj->data.net->recv, p, 255);
} }
OBJ(totalup) { OBJ(totalup) {
human_readable(obj->data.net->trans, p, 255, "totalup"); human_readable(obj->data.net->trans, p, 255);
} }
OBJ(updates) { OBJ(updates) {
snprintf(p, p_max_size, "%d", total_updates); snprintf(p, p_max_size, "%d", total_updates);
} }
OBJ(upspeed) { OBJ(upspeed) {
spaced_print(p, p_max_size, "%d", 6, "upspeed", spaced_print(p, p_max_size, "%d", 6,
round_to_int(obj->data.net->trans_speed / 1024)); round_to_int(obj->data.net->trans_speed / 1024));
} }
OBJ(upspeedf) { OBJ(upspeedf) {
spaced_print(p, p_max_size, "%.1f", 8, "upspeedf", spaced_print(p, p_max_size, "%.1f", 8,
obj->data.net->trans_speed / 1024.0); obj->data.net->trans_speed / 1024.0);
} }
OBJ(upspeedgraph) { OBJ(upspeedgraph) {
@ -4989,7 +4937,7 @@ static void generate_text_internal(char *p, int p_max_size,
format_media_player_time(p, p_max_size, cur->mpd.length); format_media_player_time(p, p_max_size, cur->mpd.length);
} }
OBJ(mpd_percent) { OBJ(mpd_percent) {
spaced_print(p, p_max_size, "%*d", 4, "mpd_percent", spaced_print(p, p_max_size, "%*d", 4,
pad_percents, (int) (cur->mpd.progress * 100)); pad_percents, (int) (cur->mpd.progress * 100));
} }
OBJ(mpd_bar) { OBJ(mpd_bar) {
@ -5247,11 +5195,11 @@ static void generate_text_internal(char *p, int p_max_size,
break; break;
case TOP_MEM_RES: case TOP_MEM_RES:
human_readable(cur->cpu[obj->data.top.num]->rss, human_readable(cur->cpu[obj->data.top.num]->rss,
p, 255, "top_rss"); p, 255);
break; break;
case TOP_MEM_VSIZE: case TOP_MEM_VSIZE:
human_readable(cur->cpu[obj->data.top.num]->vsize, human_readable(cur->cpu[obj->data.top.num]->vsize,
p, 255, "top_rss"); p, 255);
break; break;
default: default:
ERR("Unhandled top data type: %d\n", ERR("Unhandled top data type: %d\n",
@ -5291,11 +5239,11 @@ static void generate_text_internal(char *p, int p_max_size,
break; break;
case TOP_MEM_RES: case TOP_MEM_RES:
human_readable(cur->cpu[obj->data.top.num]->rss, human_readable(cur->cpu[obj->data.top.num]->rss,
p, 255, "top_rss"); p, 255);
break; break;
case TOP_MEM_VSIZE: case TOP_MEM_VSIZE:
human_readable(cur->cpu[obj->data.top.num]->vsize, human_readable(cur->cpu[obj->data.top.num]->vsize,
p, 255, "top_rss"); p, 255);
break; break;
default: default:
ERR("Unhandled top data type: %d\n", ERR("Unhandled top data type: %d\n",
@ -5539,7 +5487,7 @@ head:
if(obj->data.s && sscanf(obj->data.s, "%i", &idx) == 1) { if(obj->data.s && sscanf(obj->data.s, "%i", &idx) == 1) {
val = smapi_bat_installed(idx) ? val = smapi_bat_installed(idx) ?
smapi_get_bat_int(idx, "remaining_percent") : 0; smapi_get_bat_int(idx, "remaining_percent") : 0;
spaced_print(p, p_max_size, "%*d", 4, "smapi_bat_perc", pad_percents, val); spaced_print(p, p_max_size, "%*d", 4, pad_percents, val);
} else } else
ERR("argument to smapi_bat_perc must be an integer"); ERR("argument to smapi_bat_perc must be an integer");
} }
@ -5677,10 +5625,6 @@ static void generate_text(void)
current_update_time = get_time(); current_update_time = get_time();
update_stuff(); update_stuff();
/* fix diskio rates to b/s (use update_interval */
info.diskio_read_value /= update_interval;
info.diskio_write_value /= update_interval;
info.diskio_value /= update_interval;
/* add things to the buffer */ /* add things to the buffer */

View File

@ -266,10 +266,6 @@ struct information {
#endif #endif
short kflags; /* kernel settings, see enum KFLAG */ short kflags; /* kernel settings, see enum KFLAG */
unsigned int diskio_value;
unsigned int diskio_read_value;
unsigned int diskio_write_value;
}; };
/* needed by linux.c and top.c -> outsource somewhere */ /* needed by linux.c and top.c -> outsource somewhere */
@ -290,8 +286,6 @@ enum {
/* defined in conky.c, needed by top.c */ /* defined in conky.c, needed by top.c */
extern int top_cpu, top_mem; extern int top_cpu, top_mem;
enum spacer_opts { NO_SPACER = 0, LEFT_SPACER, RIGHT_SPACER };
/* defined in conky.c, needed by top.c */ /* defined in conky.c, needed by top.c */
extern int cpu_separate; extern int cpu_separate;

View File

@ -54,7 +54,7 @@ struct diskio_stat *diskio_stats = diskio_stats_;
void clear_diskio_stats(void) void clear_diskio_stats(void)
{ {
unsigned i; unsigned i;
for(i = 0; i < MAX_DISKIO_STATS; i++) { for(i = 1; i < MAX_DISKIO_STATS; i++) {
if (diskio_stats[i].dev) { if (diskio_stats[i].dev) {
free(diskio_stats[i].dev); free(diskio_stats[i].dev);
diskio_stats[i].dev = 0; diskio_stats[i].dev = 0;
@ -70,8 +70,12 @@ struct diskio_stat *prepare_diskio_stat(const char *s)
int found = 0; int found = 0;
char device[text_buffer_size], fbuf[text_buffer_size]; char device[text_buffer_size], fbuf[text_buffer_size];
static int rep = 0; static int rep = 0;
if (!s)
return &diskio_stats[0];
/* lookup existing or get new */ /* lookup existing or get new */
for (i = 0; i < MAX_DISKIO_STATS; i++) { for (i = 1; i < MAX_DISKIO_STATS; i++) {
if (diskio_stats[i].dev) { if (diskio_stats[i].dev) {
if (strcmp(diskio_stats[i].dev, s) == 0) { if (strcmp(diskio_stats[i].dev, s) == 0) {
return &diskio_stats[i]; return &diskio_stats[i];
@ -145,7 +149,8 @@ void update_diskio(void)
int tot, tot_read, tot_write; int tot, tot_read, tot_write;
if (!(fp = open_file("/proc/diskstats", &rep))) { if (!(fp = open_file("/proc/diskstats", &rep))) {
info.diskio_value = 0;
diskio_stats[0].current = 0;
return; return;
} }
@ -171,7 +176,7 @@ void update_diskio(void)
continue; continue;
} }
} }
for (i = 0; i < MAX_DISKIO_STATS; i++) { for (i = 1; i < MAX_DISKIO_STATS; i++) {
if (diskio_stats[i].dev && if (diskio_stats[i].dev &&
strncmp(devbuf, diskio_stats[i].dev, text_buffer_size) == 0) { strncmp(devbuf, diskio_stats[i].dev, text_buffer_size) == 0) {
diskio_stats[i].current = diskio_stats[i].current =
@ -222,9 +227,9 @@ void update_diskio(void)
last_read = current_read; last_read = current_read;
last_write = current_write; last_write = current_write;
info.diskio_value = tot; diskio_stats[0].current = tot;
info.diskio_read_value = tot_read; diskio_stats[0].current_read = tot_read;
info.diskio_write_value = tot_write; diskio_stats[0].current_write = tot_write;
fclose(fp); fclose(fp);
} }