commit 2b3eb084f7473a7dce0a507550a97d4616b9c7b3
parent 3588e0909d0ecb56b7b154aa2c705009ed15a729
Author: Anselm R. Garbe <garbeam@wmii.de>
Date: Thu, 6 Apr 2006 12:19:20 +0200
simplified rule.c
Diffstat:
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;