Switch ignoreq to winname struct since it's basically the same thing;

removes limit on name matching.
This commit is contained in:
okan 2014-01-30 22:17:22 +00:00
parent ca2497d48b
commit 4de6836838
3 changed files with 20 additions and 36 deletions

View File

@ -15,7 +15,7 @@
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
* $OpenBSD: calmwm.h,v 1.253 2014/01/30 15:41:11 okan Exp $
* $OpenBSD: calmwm.h,v 1.254 2014/01/30 22:17:22 okan Exp $
*/
#ifndef _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);

View File

@ -15,7 +15,7 @@
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
* $OpenBSD: conf.c,v 1.169 2014/01/30 15:43:53 okan Exp $
* $OpenBSD: conf.c,v 1.170 2014/01/30 22:17:22 okan Exp $
*/
#include <sys/param.h>
@ -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;
struct winname *wn;
wm = xcalloc(1, sizeof(*wm));
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;
}

View File

@ -1,4 +1,4 @@
/* $OpenBSD: parse.y,v 1.56 2014/01/29 18:34:22 okan Exp $ */
/* $OpenBSD: parse.y,v 1.57 2014/01/30 22:17:22 okan Exp $ */
/*
* Copyright (c) 2002, 2003, 2004 Henning Brauer <henning@openbsd.org>
@ -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)) {