]> git.mdlowis.com Git - proto/labwc.git/commitdiff
src/action.c: enforce action arg->key being set
authorConsolatis <35009135+Consolatis@users.noreply.github.com>
Fri, 12 May 2023 12:33:12 +0000 (14:33 +0200)
committerConsolatis <35009135+Consolatis@users.noreply.github.com>
Wed, 5 Jul 2023 20:20:18 +0000 (22:20 +0200)
include/action.h
src/action.c
src/config/rcxml.c

index d9913706630f09b3ed67785f23130677df7bb8ff..4a387e1baec42a92c09cbfdd3c86e93db2d3c853 100644 (file)
@@ -20,7 +20,7 @@ struct action {
 
 struct action *action_create(const char *action_name);
 
-void action_arg_add_str(struct action *action, char *key, const char *value);
+void action_arg_add_str(struct action *action, const char *key, const char *value);
 
 void action_arg_from_xml_node(struct action *action, char *nodename, char *content);
 
index dc06bdf07627553050759a75d68aee53a541c1a3..e973f70ae579d88c4cd0cd8bb33f4230002cd3a2 100644 (file)
@@ -122,38 +122,38 @@ const char *action_names[] = {
 };
 
 void
-action_arg_add_str(struct action *action, char *key, const char *value)
+action_arg_add_str(struct action *action, const char *key, const char *value)
 {
+       assert(action);
+       assert(key);
        assert(value && "Tried to add NULL action string argument");
        struct action_arg_str *arg = znew(*arg);
        arg->base.type = LAB_ACTION_ARG_STR;
-       if (key) {
-               arg->base.key = xstrdup(key);
-       }
+       arg->base.key = xstrdup(key);
        arg->value = xstrdup(value);
        wl_list_append(&action->args, &arg->base.link);
 }
 
 static void
-action_arg_add_bool(struct action *action, char *key, bool value)
+action_arg_add_bool(struct action *action, const char *key, bool value)
 {
+       assert(action);
+       assert(key);
        struct action_arg_bool *arg = znew(*arg);
        arg->base.type = LAB_ACTION_ARG_BOOL;
-       if (key) {
-               arg->base.key = xstrdup(key);
-       }
+       arg->base.key = xstrdup(key);
        arg->value = value;
        wl_list_append(&action->args, &arg->base.link);
 }
 
 static void
-action_arg_add_int(struct action *action, char *key, int value)
+action_arg_add_int(struct action *action, const char *key, int value)
 {
+       assert(action);
+       assert(key);
        struct action_arg_int *arg = znew(*arg);
        arg->base.type = LAB_ACTION_ARG_INT;
-       if (key) {
-               arg->base.key = xstrdup(key);
-       }
+       arg->base.key = xstrdup(key);
        arg->value = value;
        wl_list_append(&action->args, &arg->base.link);
 }
@@ -252,12 +252,10 @@ action_str_from_arg(struct action_arg *arg)
 static const char *
 get_arg_value_str(struct action *action, const char *key, const char *default_value)
 {
+       assert(action);
        assert(key);
        struct action_arg *arg;
        wl_list_for_each(arg, &action->args, link) {
-               if (!arg->key) {
-                       continue;
-               }
                if (!strcasecmp(key, arg->key)) {
                        return action_str_from_arg(arg);
                }
@@ -268,12 +266,10 @@ get_arg_value_str(struct action *action, const char *key, const char *default_va
 static bool
 get_arg_value_bool(struct action *action, const char *key, bool default_value)
 {
+       assert(action);
        assert(key);
        struct action_arg *arg;
        wl_list_for_each(arg, &action->args, link) {
-               if (!arg->key) {
-                       continue;
-               }
                if (!strcasecmp(key, arg->key)) {
                        assert(arg->type == LAB_ACTION_ARG_BOOL);
                        return ((struct action_arg_bool *)arg)->value;
@@ -285,12 +281,10 @@ get_arg_value_bool(struct action *action, const char *key, bool default_value)
 static int
 get_arg_value_int(struct action *action, const char *key, int default_value)
 {
+       assert(action);
        assert(key);
        struct action_arg *arg;
        wl_list_for_each(arg, &action->args, link) {
-               if (!arg->key) {
-                       continue;
-               }
                if (!strcasecmp(key, arg->key)) {
                        assert(arg->type == LAB_ACTION_ARG_INT);
                        return ((struct action_arg_int *)arg)->value;
index fafb7df73063a5e50035567c2283225a229384f8..f78559d341fb0b7785e257a383a5e26454c455b4 100644 (file)
@@ -808,28 +808,28 @@ rcxml_init(void)
 }
 
 static struct {
-       const char *binding, *action, *command;
+       const char *binding, *action, *attribute, *value;
 } key_combos[] = {
-       { "A-Tab", "NextWindow", NULL },
-       { "W-Return", "Execute", "alacritty" },
-       { "A-F3", "Execute", "bemenu-run" },
-       { "A-F4", "Close", NULL },
-       { "W-a", "ToggleMaximize", NULL },
-       { "A-Left", "MoveToEdge", "left" },
-       { "A-Right", "MoveToEdge", "right" },
-       { "A-Up", "MoveToEdge", "up" },
-       { "A-Down", "MoveToEdge", "down" },
-       { "W-Left", "SnapToEdge", "left" },
-       { "W-Right", "SnapToEdge", "right" },
-       { "W-Up", "SnapToEdge", "up" },
-       { "W-Down", "SnapToEdge", "down" },
-       { "A-Space", "ShowMenu", "client-menu"},
-       { "XF86_AudioLowerVolume", "Execute", "amixer sset Master 5%-" },
-       { "XF86_AudioRaiseVolume", "Execute", "amixer sset Master 5%+" },
-       { "XF86_AudioMute", "Execute", "amixer sset Master toggle" },
-       { "XF86_MonBrightnessUp", "Execute", "brightnessctl set +10%" },
-       { "XF86_MonBrightnessDown", "Execute", "brightnessctl set 10%-" },
-       { NULL, NULL, NULL },
+       { "A-Tab", "NextWindow", NULL, NULL },
+       { "W-Return", "Execute", "command", "alacritty" },
+       { "A-F3", "Execute", "command", "bemenu-run" },
+       { "A-F4", "Close", NULL, NULL },
+       { "W-a", "ToggleMaximize", NULL, NULL },
+       { "A-Left", "MoveToEdge", "direction", "left" },
+       { "A-Right", "MoveToEdge", "direction", "right" },
+       { "A-Up", "MoveToEdge", "direction", "up" },
+       { "A-Down", "MoveToEdge", "direction", "down" },
+       { "W-Left", "SnapToEdge", "direction", "left" },
+       { "W-Right", "SnapToEdge", "direction", "right" },
+       { "W-Up", "SnapToEdge", "direction", "up" },
+       { "W-Down", "SnapToEdge", "direction", "down" },
+       { "A-Space", "ShowMenu", "menu", "client-menu"},
+       { "XF86_AudioLowerVolume", "Execute", "command", "amixer sset Master 5%-" },
+       { "XF86_AudioRaiseVolume", "Execute", "command", "amixer sset Master 5%+" },
+       { "XF86_AudioMute", "Execute", "command", "amixer sset Master toggle" },
+       { "XF86_MonBrightnessUp", "Execute", "command", "brightnessctl set +10%" },
+       { "XF86_MonBrightnessDown", "Execute", "command", "brightnessctl set 10%-" },
+       { NULL, NULL, NULL, NULL },
 };
 
 static void
@@ -846,8 +846,8 @@ load_default_key_bindings(void)
                action = action_create(key_combos[i].action);
                wl_list_append(&k->actions, &action->link);
 
-               if (key_combos[i].command) {
-                       action_arg_add_str(action, NULL, key_combos[i].command);
+               if (key_combos[i].attribute && key_combos[i].value) {
+                       action_arg_add_str(action, key_combos[i].attribute, key_combos[i].value);
                }
        }
 }
@@ -956,7 +956,7 @@ load_default_mouse_bindings(void)
                 * slightly more sophisticated approach will be needed.
                 */
                if (current->attribute && current->value) {
-                       action_arg_add_str(action, (char *)current->attribute, current->value);
+                       action_arg_add_str(action, current->attribute, current->value);
                }
        }
        wlr_log(WLR_DEBUG, "Loaded %u merged mousebinds", count);