summary refs log tree commit diff
diff options
context:
space:
mode:
authorokan <okan>2014-01-30 22:17:22 +0000
committerokan <okan>2014-01-30 22:17:22 +0000
commitcc1902f57cb23e0028c07e149882698124b025bd (patch)
treedb224cda036dd53a23d6a364b3e08901beb2f0bc
parent7928c1ad7c7e2e4420669062a25fc4b2291e5f1f (diff)
downloadcwm-cc1902f57cb23e0028c07e149882698124b025bd.tar.gz
cwm-cc1902f57cb23e0028c07e149882698124b025bd.tar.xz
cwm-cc1902f57cb23e0028c07e149882698124b025bd.zip
Switch ignoreq to winname struct since it's basically the same thing;
removes limit on name matching.
-rw-r--r--calmwm.h12
-rw-r--r--conf.c31
-rw-r--r--parse.y7
3 files changed, 17 insertions, 33 deletions
diff --git a/calmwm.h b/calmwm.h
index b2ce839..734055b 100644
--- a/calmwm.h
+++ b/calmwm.h
@@ -140,6 +140,7 @@ struct winname {
 	char			*name;
 };
 TAILQ_HEAD(winname_q, winname);
+TAILQ_HEAD(ignore_q, winname);
 
 struct client_ctx {
 	TAILQ_ENTRY(client_ctx) entry;
@@ -199,13 +200,6 @@ struct client_ctx {
 TAILQ_HEAD(client_ctx_q, client_ctx);
 TAILQ_HEAD(cycle_entry_q, client_ctx);
 
-struct winmatch {
-	TAILQ_ENTRY(winmatch)	entry;
-#define WIN_MAXTITLELEN		256
-	char			title[WIN_MAXTITLELEN];
-};
-TAILQ_HEAD(winmatch_q, winmatch);
-
 struct group_ctx {
 	TAILQ_ENTRY(group_ctx)	 entry;
 	struct client_ctx_q	 clients;
@@ -288,7 +282,7 @@ struct conf {
 	struct keybinding_q	 keybindingq;
 	struct mousebinding_q	 mousebindingq;
 	struct autogroupwin_q	 autogroupq;
-	struct winmatch_q	 ignoreq;
+	struct ignore_q		 ignoreq;
 	struct cmd_q		 cmdq;
 #define	CONF_STICKY_GROUPS		0x0001
 	int			 flags;
@@ -515,7 +509,7 @@ void			 conf_cursor(struct conf *);
 void			 conf_grab_kbd(Window);
 void			 conf_grab_mouse(Window);
 void			 conf_init(struct conf *);
-int			 conf_ignore(struct conf *, const char *);
+void			 conf_ignore(struct conf *, const char *);
 void			 conf_screen(struct screen_ctx *);
 
 void			 xev_process(void);
diff --git a/conf.c b/conf.c
index d8a89c7..0792bd7 100644
--- a/conf.c
+++ b/conf.c
@@ -99,18 +99,14 @@ conf_autogroup(struct conf *c, int no, const char *val)
 	TAILQ_INSERT_TAIL(&c->autogroupq, aw, entry);
 }
 
-int
-conf_ignore(struct conf *c, const char *val)
+void
+conf_ignore(struct conf *c, const char *name)
 {
-	struct winmatch	*wm;
-
-	wm = xcalloc(1, sizeof(*wm));
+	struct winname	*wn;
 
-	if (strlcpy(wm->title, val, sizeof(wm->title)) >= sizeof(wm->title))
-		return (0);
-
-	TAILQ_INSERT_TAIL(&c->ignoreq, wm, entry);
-	return (1);
+	wn = xcalloc(1, sizeof(*wn));
+	wn->name = xstrdup(name);
+	TAILQ_INSERT_TAIL(&c->ignoreq, wn, entry);
 }
 
 static const char *color_binds[] = {
@@ -289,7 +285,7 @@ conf_clear(struct conf *c)
 {
 	struct autogroupwin	*aw;
 	struct binding		*kb, *mb;
-	struct winmatch		*wm;
+	struct winname		*wn;
 	struct cmd		*cmd;
 	int			 i;
 
@@ -310,9 +306,9 @@ conf_clear(struct conf *c)
 		free(aw);
 	}
 
-	while ((wm = TAILQ_FIRST(&c->ignoreq)) != NULL) {
-		TAILQ_REMOVE(&c->ignoreq, wm, entry);
-		free(wm);
+	while ((wn = TAILQ_FIRST(&c->ignoreq)) != NULL) {
+		TAILQ_REMOVE(&c->ignoreq, wn, entry);
+		free(wn);
 	}
 
 	while ((mb = TAILQ_FIRST(&c->mousebindingq)) != NULL) {
@@ -329,12 +325,11 @@ conf_clear(struct conf *c)
 void
 conf_client(struct client_ctx *cc)
 {
-	struct winmatch	*wm;
-	char		*wname = cc->name;
+	struct winname	*wn;
 	int		 ignore = 0;
 
-	TAILQ_FOREACH(wm, &Conf.ignoreq, entry) {
-		if (strncasecmp(wm->title, wname, strlen(wm->title)) == 0) {
+	TAILQ_FOREACH(wn, &Conf.ignoreq, entry) {
+		if (strncasecmp(wn->name, cc->name, strlen(wn->name)) == 0) {
 			ignore = 1;
 			break;
 		}
diff --git a/parse.y b/parse.y
index fb8c01e..dbc1506 100644
--- a/parse.y
+++ b/parse.y
@@ -156,12 +156,7 @@ main		: FONTNAME STRING		{
 			free($3);
 		}
 		| IGNORE STRING {
-			if (!conf_ignore(conf, $2)) {
-				yyerror("ignore windowname too long");
-				free($2);
-				YYERROR;
-			}
-			free($2);
+			conf_ignore(conf, $2);
 		}
 		| BIND STRING string		{
 			if (!conf_bind_kbd(conf, $2, $3)) {