move loadavg and loadgraph code to common.c
authorPhil Sutter <phil@nwl.cc>
Sun, 25 Oct 2009 12:49:10 +0000 (13:49 +0100)
committerPhil Sutter <phil@nwl.cc>
Tue, 3 Nov 2009 22:23:23 +0000 (23:23 +0100)
src/common.c
src/common.h
src/conky.c
src/core.c

index 160f23c..ae84b56 100644 (file)
@@ -33,6 +33,7 @@
 #include "fs.h"
 #include "logging.h"
 #include "net_stat.h"
+#include "specials.h"
 #include <ctype.h>
 #include <errno.h>
 #include <sys/time.h>
@@ -417,3 +418,66 @@ unsigned int round_to_int(float f)
        }
 }
 
+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 */
index 33d9d1d..f37efc0 100644 (file)
@@ -9,6 +9,7 @@
 #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);
@@ -70,4 +71,11 @@ int get_battery_perct(const char *bat);
 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 */
index 0c96688..77d8ec6 100644 (file)
@@ -948,8 +948,7 @@ void generate_text_internal(char *p, int p_max_size,
                                                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) {
@@ -1270,21 +1269,7 @@ void generate_text_internal(char *p, int p_max_size,
                                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);
index 23022a1..3a600d8 100644 (file)
@@ -367,18 +367,7 @@ struct text_object *construct_text_object(const char *s, const char *arg, long
                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);
@@ -588,23 +577,7 @@ struct text_object *construct_text_object(const char *s, const char *arg, long
        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));