#include "fs.h"
#include "logging.h"
#include "net_stat.h"
+#include "specials.h"
#include <ctype.h>
#include <errno.h>
#include <sys/time.h>
}
}
+void scan_loadavg_arg(struct text_object *obj, const char *arg)
+{
+ int a = 1, b = 2, c = 3, r = 3;
+
+ if (arg) {
+ r = sscanf(arg, "%d %d %d", &a, &b, &c);
+ if (r >= 3 && (c < 1 || c > 3)) {
+ r--;
+ }
+ if (r >= 2 && (b < 1 || b > 3)) {
+ r--, b = c;
+ }
+ if (r >= 1 && (a < 1 || a > 3)) {
+ r--, a = b, b = c;
+ }
+ }
+ obj->data.loadavg[0] = (r >= 1) ? (unsigned char) a : 0;
+ obj->data.loadavg[1] = (r >= 2) ? (unsigned char) b : 0;
+ obj->data.loadavg[2] = (r >= 3) ? (unsigned char) c : 0;
+}
+
+void print_loadavg(struct text_object *obj, char *p, int p_max_size)
+{
+ float *v = info.loadavg;
+
+ if (obj->data.loadavg[2]) {
+ snprintf(p, p_max_size, "%.2f %.2f %.2f",
+ v[obj->data.loadavg[0] - 1],
+ v[obj->data.loadavg[1] - 1],
+ v[obj->data.loadavg[2] - 1]);
+ } else if (obj->data.loadavg[1]) {
+ snprintf(p, p_max_size, "%.2f %.2f",
+ v[obj->data.loadavg[0] - 1],
+ v[obj->data.loadavg[1] - 1]);
+ } else if (obj->data.loadavg[0]) {
+ snprintf(p, p_max_size, "%.2f",
+ v[obj->data.loadavg[0] - 1]);
+ }
+}
+
+#ifdef X11
+void scan_loadgraph_arg(struct text_object *obj, const char *arg)
+{
+ char *buf = 0;
+ SIZE_DEFAULTS(graph);
+ buf = scan_graph(arg, &obj->a, &obj->b, &obj->c, &obj->d,
+ &obj->e, &obj->char_a, &obj->char_b);
+ if (buf) {
+ int a = 1, r = 3;
+ if (arg) {
+ r = sscanf(arg, "%d", &a);
+ }
+ obj->data.loadavg[0] = (r >= 1) ? (unsigned char) a : 0;
+ free(buf);
+ }
+}
+
+void print_loadgraph(struct text_object *obj, char *p)
+{
+ new_graph(p, obj->a, obj->b, obj->c, obj->d, info.loadavg[0],
+ obj->e, 1, obj->char_a, obj->char_b);
+}
+#endif /* X11 */
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
+#include "text_object.h"
void add_update_callback(void (*func)(void));
void free_update_callbacks(void);
int get_battery_perct_bar(const char *bat);
void get_battery_short_status(char *buf, unsigned int n, const char *bat);
+void scan_loadavg_arg(struct text_object *, const char *);
+void print_loadavg(struct text_object *, char *, int);
+#ifdef X11
+void scan_loadgraph_arg(struct text_object *, const char *);
+void print_loadgraph(struct text_object *, char *);
+#endif /* X11 */
+
#endif /* _COMMON_H */
100, 1, obj->char_a, obj->char_b);
}
OBJ(loadgraph) {
- new_graph(p, obj->a, obj->b, obj->c, obj->d, cur->loadavg[0],
- obj->e, 1, obj->char_a, obj->char_b);
+ print_loadgraph(obj, p);
}
#endif /* X11 */
OBJ(color) {
print_fs_perc(obj, 0, p, p_max_size);
}
OBJ(loadavg) {
- float *v = info.loadavg;
-
- if (obj->data.loadavg[2]) {
- snprintf(p, p_max_size, "%.2f %.2f %.2f",
- v[obj->data.loadavg[0] - 1],
- v[obj->data.loadavg[1] - 1],
- v[obj->data.loadavg[2] - 1]);
- } else if (obj->data.loadavg[1]) {
- snprintf(p, p_max_size, "%.2f %.2f",
- v[obj->data.loadavg[0] - 1],
- v[obj->data.loadavg[1] - 1]);
- } else if (obj->data.loadavg[0]) {
- snprintf(p, p_max_size, "%.2f",
- v[obj->data.loadavg[0] - 1]);
- }
+ print_loadavg(obj, p, p_max_size);
}
OBJ(goto) {
new_goto(p, obj->data.i);
DBGP2("Adding $cpugraph for CPU %d", obj->data.i);
if (buf) free(buf);
END OBJ(loadgraph, &update_load_average)
- char *buf = 0;
- SIZE_DEFAULTS(graph);
- buf = scan_graph(arg, &obj->a, &obj->b, &obj->c, &obj->d,
- &obj->e, &obj->char_a, &obj->char_b);
- if (buf) {
- int a = 1, r = 3;
- if (arg) {
- r = sscanf(arg, "%d", &a);
- }
- obj->data.loadavg[0] = (r >= 1) ? (unsigned char) a : 0;
- free(buf);
- }
+ scan_loadgraph_arg(obj, arg);
#endif /* X11 */
END OBJ(diskio, &update_diskio)
parse_diskio_arg(obj, arg);
END OBJ_ARG(words, 0, "words needs a argument")
obj->data.s = strndup(arg, text_buffer_size);
END OBJ(loadavg, &update_load_average)
- int a = 1, b = 2, c = 3, r = 3;
-
- if (arg) {
- r = sscanf(arg, "%d %d %d", &a, &b, &c);
- if (r >= 3 && (c < 1 || c > 3)) {
- r--;
- }
- if (r >= 2 && (b < 1 || b > 3)) {
- r--, b = c;
- }
- if (r >= 1 && (a < 1 || a > 3)) {
- r--, a = b, b = c;
- }
- }
- obj->data.loadavg[0] = (r >= 1) ? (unsigned char) a : 0;
- obj->data.loadavg[1] = (r >= 2) ? (unsigned char) b : 0;
- obj->data.loadavg[2] = (r >= 3) ? (unsigned char) c : 0;
+ scan_loadavg_arg(obj, arg);
END OBJ_IF_ARG(if_empty, 0, "if_empty needs an argument")
obj->data.ifblock.s = strndup(arg, text_buffer_size);
obj->sub = malloc(sizeof(struct text_object));