53 len = sizeof rule / sizeof rule[0]; |
53 len = sizeof rule / sizeof rule[0]; |
54 rreg = emallocz(len * sizeof(RReg)); |
54 rreg = emallocz(len * sizeof(RReg)); |
55 for(i = 0; i < len; i++) { |
55 for(i = 0; i < len; i++) { |
56 if(rule[i].clpattern) { |
56 if(rule[i].clpattern) { |
57 reg = emallocz(sizeof(regex_t)); |
57 reg = emallocz(sizeof(regex_t)); |
58 if(regcomp(reg, rule[i].clpattern, 0)) |
58 if(regcomp(reg, rule[i].clpattern, REG_EXTENDED)) |
59 free(reg); |
59 free(reg); |
60 else |
60 else |
61 rreg[i].clregex = reg; |
61 rreg[i].clregex = reg; |
62 } |
62 } |
63 if(rule[i].tpattern) { |
63 if(rule[i].tpattern) { |
64 reg = emallocz(sizeof(regex_t)); |
64 reg = emallocz(sizeof(regex_t)); |
65 if(regcomp(reg, rule[i].tpattern, 0)) |
65 if(regcomp(reg, rule[i].tpattern, REG_EXTENDED)) |
66 free(reg); |
66 free(reg); |
67 else |
67 else |
68 rreg[i].tregex = reg; |
68 rreg[i].tregex = reg; |
69 } |
69 } |
70 } |
70 } |
84 } |
84 } |
85 else if(XGetClassHint(dpy, c->win, &ch)) { |
85 else if(XGetClassHint(dpy, c->win, &ch)) { |
86 snprintf(prop, sizeof prop, "%s:%s:%s", |
86 snprintf(prop, sizeof prop, "%s:%s:%s", |
87 ch.res_class ? ch.res_class : "", |
87 ch.res_class ? ch.res_class : "", |
88 ch.res_name ? ch.res_name : "", c->name); |
88 ch.res_name ? ch.res_name : "", c->name); |
89 for(i = 0; !matched && i < len; i++) |
89 for(i = 0; i < len; i++) |
90 if(rreg[i].clregex && !regexec(rreg[i].clregex, prop, 1, &tmp, 0)) { |
90 if(rreg[i].clregex && !regexec(rreg[i].clregex, prop, 1, &tmp, 0)) { |
91 c->isfloat = rule[i].isfloat; |
91 c->isfloat = rule[i].isfloat; |
92 for(j = 0; rreg[i].tregex && j < ntags; j++) { |
92 for(j = 0; rreg[i].tregex && j < ntags; j++) { |
93 if(!regexec(rreg[i].tregex, tags[j], 1, &tmp, 0)) { |
93 if(!regexec(rreg[i].tregex, tags[j], 1, &tmp, 0)) { |
94 matched = True; |
94 matched = True; |