76 } |
76 } |
77 |
77 |
78 void |
78 void |
79 settags(Client *c) |
79 settags(Client *c) |
80 { |
80 { |
81 char classinst[256]; |
81 char prop[512]; |
82 unsigned int i, j; |
82 unsigned int i, j; |
83 regmatch_t tmp; |
83 regmatch_t tmp; |
84 Bool matched = False; |
84 Bool matched = False; |
85 XClassHint ch; |
85 XClassHint ch; |
86 |
86 |
87 if(XGetClassHint(dpy, c->win, &ch)) { |
87 if(XGetClassHint(dpy, c->win, &ch)) { |
88 snprintf(classinst, sizeof(classinst), "%s:%s", |
88 snprintf(prop, sizeof(prop), "%s:%s:%s", |
89 ch.res_class ? ch.res_class : "", |
89 ch.res_class ? ch.res_class : "", |
90 ch.res_name ? ch.res_name : ""); |
90 ch.res_name ? ch.res_name : "", c->name); |
91 for(i = 0; !matched && i < len; i++) |
91 for(i = 0; !matched && i < len; i++) |
92 if(rreg[i].clregex && !regexec(rreg[i].clregex, classinst, 1, &tmp, 0)) { |
92 if(rreg[i].clregex && !regexec(rreg[i].clregex, prop, 1, &tmp, 0)) { |
93 c->isfloat = rule[i].isfloat; |
93 c->isfloat = rule[i].isfloat; |
94 for(j = 0; rreg[i].tregex && j < ntags; j++) { |
94 for(j = 0; rreg[i].tregex && j < ntags; j++) { |
95 if(!regexec(rreg[i].tregex, tags[j], 1, &tmp, 0)) { |
95 if(!regexec(rreg[i].tregex, tags[j], 1, &tmp, 0)) { |
96 matched = True; |
96 matched = True; |
97 c->tags[j] = True; |
97 c->tags[j] = True; |