rules: reformat ApplyRule
authorRan Benita <ran234@gmail.com>
Fri, 18 May 2012 07:33:38 +0000 (10:33 +0300)
committerRan Benita <ran234@gmail.com>
Sun, 20 May 2012 17:31:48 +0000 (20:31 +0300)
Signed-off-by: Ran Benita <ran234@gmail.com>
src/xkbcomp/rules.c

index df13bec..cd87327 100644 (file)
@@ -682,8 +682,9 @@ free_multi_defs(struct multi_defs *defs)
     free(UNCONSTIFY(defs->variant[1]));
 }
 
+/* See apply_rule below. */
 static void
-Apply(char *src, char **dst)
+apply(const char *src, char **dst)
 {
     int ret;
     char *tmp;
@@ -699,21 +700,27 @@ Apply(char *src, char **dst)
         free(tmp);
     }
     else if (*dst == NULL) {
-        *dst = uDupString(src);
+        *dst = strdup(src);
     }
 }
 
+/*
+ * Add the info from the matching rule to the resulting
+ * xkb_component_names. If we already had a match for something
+ * (e.g. keycodes), and the rule is not an appending one (e.g.
+ * +whatever), than we don't override but drop the new one.
+ */
 static void
-XkbRF_ApplyRule(struct rule *rule, struct xkb_component_names *names)
+apply_rule(struct rule *rule, struct xkb_component_names *kccgst)
 {
-    /* clear the flag because it's applied */
+    /* Clear the flag because it's applied. */
     rule->flags &= ~RULE_FLAG_PENDING_MATCH;
 
-    Apply(rule->keycodes, &names->keycodes);
-    Apply(rule->symbols,  &names->symbols);
-    Apply(rule->types,    &names->types);
-    Apply(rule->compat,   &names->compat);
-    Apply(rule->keymap,   &names->keymap);
+    apply(rule->keycodes, &kccgst->keycodes);
+    apply(rule->symbols, &kccgst->symbols);
+    apply(rule->types, &kccgst->types);
+    apply(rule->compat, &kccgst->compat);
+    apply(rule->keymap, &kccgst->keymap);
 }
 
 static bool
@@ -830,7 +837,7 @@ XkbRF_CheckApplyRule(struct rule *rule, struct multi_defs *mdefs,
        return rule->number;
     }
     /* exact match, apply it now */
-    XkbRF_ApplyRule(rule,names);
+    apply_rule(rule, names);
     return rule->number;
 }
 
@@ -855,7 +862,7 @@ XkbRF_ApplyPartialMatches(struct rules *rules,
     for (rule = rules->rules, i = 0; i < rules->num_rules; i++, rule++) {
        if ((rule->flags & RULE_FLAG_PENDING_MATCH)==0)
            continue;
-       XkbRF_ApplyRule(rule,names);
+        apply_rule(rule, names);
     }
 }