wmii

git clone git://oldgit.suckless.org/wmii/
Log | Files | Refs | README | LICENSE

commit 2b3eb084f7473a7dce0a507550a97d4616b9c7b3
parent 3588e0909d0ecb56b7b154aa2c705009ed15a729
Author: Anselm R. Garbe <garbeam@wmii.de>
Date:   Thu,  6 Apr 2006 12:19:20 +0200

simplified rule.c


Diffstat:
cmd/wm/client.c | 6++----
cmd/wm/rule.c | 11+++++------
cmd/wm/tag.c | 8++++----
cmd/wm/wm.h | 1-
4 files changed, 11 insertions(+), 15 deletions(-)

diff --git a/cmd/wm/client.c b/cmd/wm/client.c @@ -336,11 +336,9 @@ manage_client(Client *c) { View *v; Client *trans; - unsigned int i; if(c->trans && (trans = win2client(c->trans))) { - for(i = 0; i < trans->ntag; i++) - cext_strlcpy(c->tags, trans->tags, sizeof(c->tags)); + cext_strlcpy(c->tags, trans->tags, sizeof(c->tags)); str2tagvector(&c->tag, c->tags); } else @@ -349,7 +347,7 @@ manage_client(Client *c) reparent_client(c, c->framewin, c->rect.x, c->rect.y); v = view.size ? view.data[sel] : alloc_view(def.tag); - if(!c->ntag) { + if(!strlen(c->tags)) { cext_strlcpy(c->tags, v->name, sizeof(c->tags)); str2tagvector(&c->tag, c->tags); } diff --git a/cmd/wm/rule.c b/cmd/wm/rule.c @@ -41,7 +41,6 @@ rule2vector(RuleVector *rv) void update_rules() { - unsigned int i; int mode = IGNORE; char *p, *r = nil, *t = nil, regex[256], tags[256]; @@ -49,14 +48,13 @@ update_rules() return; while(rule.size) { - Rule *r = rule.data[i]; + Rule *r = rule.data[0]; if(r->is_valid) regfree(&r->regex); cext_vdetach(rule2vector(&rule), r); free(r); } - i = 0; for(p = def.rules; *p; p++) switch(mode) { case IGNORE: @@ -106,14 +104,15 @@ match(Client *c, const char *prop) unsigned int i; regmatch_t tmpregm; - c->tags[0] = 0; for(i = 0; i < rule.size; i++) { Rule *r = rule.data[i]; if(r->is_valid && !regexec(&r->regex, prop, 1, &tmpregm, 0)) { if(!strncmp(r->tags, "~", 2)) c->floating = True; - else - cext_strlcat(c->tags, r->tags, sizeof(c->tags) - strlen(c->tags)); + else { + cext_strlcpy(c->tags, r->tags, sizeof(c->tags)); + str2tagvector(&c->tag, c->tags); + } } } } diff --git a/cmd/wm/tag.c b/cmd/wm/tag.c @@ -52,11 +52,11 @@ void update_tags() { unsigned int i, j; - for(i = 0; i < tag.size; i++) { - free(tag.data[i]); - tag.data[i] = nil; + while(tag.size) { + char *p = tag.data[0]; + cext_vdetach(tag2vector(&tag), p); + free(p); } - tag.size = 0; for(i = 0; i < client.size; i++) { for(j = 0; j < client.data[i]->tag.size; j++) diff --git a/cmd/wm/wm.h b/cmd/wm/wm.h @@ -103,7 +103,6 @@ struct Client { char name[256]; char tags[256]; TagVector tag; - unsigned int ntag; char classinst[256]; int proto; unsigned int border;