rules: reformat SubstituteVars
authorRan Benita <ran234@gmail.com>
Fri, 18 May 2012 15:25:59 +0000 (18:25 +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 9b9bf73..46fd755 100644 (file)
@@ -895,99 +895,126 @@ apply_matching_rules(struct rules *rules, struct multi_defs *mdefs,
 /***====================================================================***/
 
 static char *
-XkbRF_SubstituteVars(char *name, struct multi_defs *mdefs)
+substitute_vars(char *name, struct multi_defs *mdefs)
 {
-    char *str, *outstr, *orig, *var;
-    size_t len;
+    char *str, *outstr, *var;
+    char *orig = name;
+    size_t len, extra_len;
+    char pfx, sfx;
     int ndx;
 
     if (!name)
         return NULL;
 
-    orig= name;
-    str= strchr(name,'%');
-    if (str==NULL)
-       return name;
-    len= strlen(name);
-    while (str!=NULL) {
-       char pfx= str[1];
-       int   extra_len= 0;
-       if ((pfx=='+')||(pfx=='|')||(pfx=='_')||(pfx=='-')) {
-           extra_len= 1;
-           str++;
-       }
-       else if (pfx=='(') {
-           extra_len= 2;
-           str++;
-       }
-       var = str + 1;
-       str = get_index(var + 1, &ndx);
-       if (ndx == -1) {
-           str = strchr(str,'%');
-           continue;
+    str = strchr(name, '%');
+    if (str == NULL)
+        return name;
+
+    len = strlen(name);
+
+    while (str != NULL) {
+        pfx = str[1];
+        extra_len = 0;
+
+        if (pfx == '+' || pfx == '|' || pfx == '_' || pfx == '-') {
+            extra_len = 1;
+            str++;
         }
-       if ((*var=='l') && mdefs->layout[ndx] && *mdefs->layout[ndx])
-           len+= strlen(mdefs->layout[ndx])+extra_len;
-       else if ((*var=='m')&&mdefs->model)
-           len+= strlen(mdefs->model)+extra_len;
-       else if ((*var=='v') && mdefs->variant[ndx] && *mdefs->variant[ndx])
-           len+= strlen(mdefs->variant[ndx])+extra_len;
-       if ((pfx=='(')&&(*str==')')) {
-           str++;
-       }
-       str= strchr(&str[0],'%');
+        else if (pfx == '(') {
+            extra_len = 2;
+            str++;
+        }
+
+        var = str + 1;
+        str = get_index(var + 1, &ndx);
+        if (ndx == -1) {
+            str = strchr(str, '%');
+            continue;
+        }
+
+        if (*var == 'l' && mdefs->layout[ndx] && *mdefs->layout[ndx])
+            len += strlen(mdefs->layout[ndx]) + extra_len;
+        else if (*var == 'm' && mdefs->model)
+            len += strlen(mdefs->model) + extra_len;
+        else if (*var == 'v' && mdefs->variant[ndx] && *mdefs->variant[ndx])
+            len += strlen(mdefs->variant[ndx]) + extra_len;
+
+        if (pfx == '(' && *str == ')')
+            str++;
+
+        str = strchr(&str[0], '%');
     }
+
     name = malloc(len + 1);
-    str= orig;
-    outstr= name;
-    while (*str!='\0') {
-       if (str[0]=='%') {
-           char pfx,sfx;
-           str++;
-           pfx= str[0];
-           sfx= '\0';
-           if ((pfx=='+')||(pfx=='|')||(pfx=='_')||(pfx=='-')) {
-               str++;
-           }
-           else if (pfx=='(') {
-               sfx= ')';
-               str++;
-           }
-           else pfx= '\0';
+    str = orig;
+    outstr = name;
+
+    while (*str != '\0') {
+        if (str[0] == '%') {
+            str++;
+            pfx = str[0];
+            sfx = '\0';
 
-           var = str;
-           str = get_index(var + 1, &ndx);
-           if (ndx == -1) {
-               continue;
+            if (pfx == '+' || pfx == '|' || pfx == '_' || pfx == '-') {
+                str++;
             }
-           if ((*var=='l') && mdefs->layout[ndx] && *mdefs->layout[ndx]) {
-               if (pfx) *outstr++= pfx;
-               strcpy(outstr,mdefs->layout[ndx]);
-               outstr+= strlen(mdefs->layout[ndx]);
-               if (sfx) *outstr++= sfx;
-           }
-           else if ((*var=='m')&&(mdefs->model)) {
-               if (pfx) *outstr++= pfx;
-               strcpy(outstr,mdefs->model);
-               outstr+= strlen(mdefs->model);
-               if (sfx) *outstr++= sfx;
-           }
-           else if ((*var=='v') && mdefs->variant[ndx] && *mdefs->variant[ndx]) {
-               if (pfx) *outstr++= pfx;
-               strcpy(outstr,mdefs->variant[ndx]);
-               outstr+= strlen(mdefs->variant[ndx]);
-               if (sfx) *outstr++= sfx;
-           }
-           if ((pfx=='(')&&(*str==')'))
-               str++;
-       }
-       else {
-           *outstr++= *str++;
-       }
+            else if (pfx == '(') {
+                sfx = ')';
+                str++;
+            }
+            else {
+                pfx = '\0';
+            }
+
+            var = str;
+            str = get_index(var + 1, &ndx);
+            if (ndx == -1)
+                continue;
+
+            if (*var == 'l' && mdefs->layout[ndx] && *mdefs->layout[ndx]) {
+                if (pfx)
+                    *outstr++ = pfx;
+
+                strcpy(outstr, mdefs->layout[ndx]);
+                outstr += strlen(mdefs->layout[ndx]);
+
+                if (sfx)
+                    *outstr++ = sfx;
+            }
+            else if (*var == 'm' && mdefs->model) {
+                if (pfx)
+                    *outstr++ = pfx;
+
+                strcpy(outstr, mdefs->model);
+                outstr += strlen(mdefs->model);
+
+                if (sfx)
+                    *outstr++ = sfx;
+            }
+            else if (*var == 'v' && mdefs->variant[ndx] && *mdefs->variant[ndx]) {
+                if (pfx)
+                    *outstr++ = pfx;
+
+                strcpy(outstr, mdefs->variant[ndx]);
+                outstr += strlen(mdefs->variant[ndx]);
+
+                if (sfx)
+                    *outstr++ = sfx;
+            }
+
+            if (pfx == '(' && *str == ')')
+                str++;
+        }
+        else {
+            *outstr++= *str++;
+        }
     }
+
     *outstr++= '\0';
-    if (orig!=name)
-       free(orig);
+
+    if (orig != name)
+        free(orig);
+
     return name;
 }
 
@@ -1013,11 +1040,11 @@ XkbcRF_GetComponents(struct rules *rules, struct var_defs *defs,
     apply_matching_rules(rules, &mdefs, names, RULE_FLAG_OPTION);
     apply_partial_matches(rules, names);
 
-    names->keycodes = XkbRF_SubstituteVars(names->keycodes, &mdefs);
-    names->symbols = XkbRF_SubstituteVars(names->symbols, &mdefs);
-    names->types = XkbRF_SubstituteVars(names->types, &mdefs);
-    names->compat = XkbRF_SubstituteVars(names->compat, &mdefs);
-    names->keymap = XkbRF_SubstituteVars(names->keymap, &mdefs);
+    names->keycodes = substitute_vars(names->keycodes, &mdefs);
+    names->symbols = substitute_vars(names->symbols, &mdefs);
+    names->types = substitute_vars(names->types, &mdefs);
+    names->compat = substitute_vars(names->compat, &mdefs);
+    names->keymap = substitute_vars(names->keymap, &mdefs);
 
     free_multi_defs(&mdefs);