diff options
| author | Dana Jansens <danakj@orodu.net> | 2007-07-11 18:39:47 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2007-07-11 18:39:47 +0000 |
| commit | cfb33de8bc774c0838a7180f066eccc11b8a41cf (patch) | |
| tree | c4dcf872edb293c1b702c80d05fe438309a455d8 /openbox/actions.c | |
| parent | 4f7a70f9faf58f6dcc5db4684fb1115a7076aef9 (diff) | |
create actions from string in a way that won't crash
Diffstat (limited to 'openbox/actions.c')
| -rw-r--r-- | openbox/actions.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/openbox/actions.c b/openbox/actions.c index 5f146b7e..3bfb3b3f 100644 --- a/openbox/actions.c +++ b/openbox/actions.c @@ -31,6 +31,7 @@ static void actions_definition_ref(ObActionsDefinition *def); static void actions_definition_unref(ObActionsDefinition *def); static gboolean actions_interactive_begin_act(ObActionsAct *act, guint state); static void actions_interactive_end_act(); +static ObActionsAct* actions_build_act_from_string(const gchar *name); static ObActionsAct *interactive_act = NULL; static guint interactive_initial_state = 0; @@ -123,7 +124,7 @@ static void actions_definition_unref(ObActionsDefinition *def) } } -ObActionsAct* actions_parse_string(const gchar *name) +ObActionsAct* actions_build_act_from_string(const gchar *name) { GSList *it; ObActionsDefinition *def = NULL; @@ -151,6 +152,17 @@ ObActionsAct* actions_parse_string(const gchar *name) return act; } +ObActionsAct* actions_parse_string(const gchar *name) +{ + ObActionsAct *act = NULL; + + if ((act = actions_build_act_from_string(name))) + if (act->def->setup) + act->options = act->def->setup(NULL, NULL, NULL); + + return act; +} + ObActionsAct* actions_parse(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node) @@ -159,7 +171,7 @@ ObActionsAct* actions_parse(ObParseInst *i, ObActionsAct *act = NULL; if (parse_attr_string("name", node, &name)) { - if ((act = actions_parse_string(name))) + if ((act = actions_build_act_from_string(name))) /* there is more stuff to parse here */ if (act->def->setup) act->options = act->def->setup(i, doc, node->xmlChildrenNode); |
