Fix battery_bar not parsing arguments correctly (sf: #2998034, lp: #569195)
[monky] / src / core.c
index 32aa33a..90ed09b 100644 (file)
@@ -171,8 +171,6 @@ struct text_object *construct_text_object(const char *s, const char *arg, long
                        NORM_ERR("acpiacadapter: arg is only used on linux");
 #endif
                }
-               if(! obj->data.opaque)
-                       obj->data.opaque = strdup("AC");
 #endif /* !__OpenBSD__ */
        END OBJ(freq, 0)
                get_cpu_count();
@@ -279,8 +277,9 @@ struct text_object *construct_text_object(const char *s, const char *arg, long
                obj->data.s = strndup(bat, text_buffer_size);
        END OBJ(battery_bar, 0)
                char bat[64];
-               if (arg) {
-                       arg = scan_bar(obj, arg);
+
+               arg = scan_bar(obj, arg);
+               if (arg && strlen(arg)>0) {
                        sscanf(arg, "%63s", bat);
                } else {
                        strcpy(bat, "BAT0");
@@ -657,6 +656,7 @@ struct text_object *construct_text_object(const char *s, const char *arg, long
                obj->sub = malloc(sizeof(struct text_object));
                extract_variable_text_internal(obj->sub, arg);
        END OBJ(nodename, 0)
+       END OBJ(nodename_short, 0)
        END OBJ_ARG(cmdline_to_pid, 0, "cmdline_to_pid needs a command line as argument")
                scan_cmdline_to_pid_arg(obj, arg, free_at_crash);
        END OBJ_ARG(pid_chroot, 0, "pid_chroot needs a pid as argument")