From 8d05039b04ec909d24c98154832ad5b1cdada374 Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Fri, 16 Apr 2010 22:51:25 +0200 Subject: [PATCH] move match_* to match.c --- Makefile | 2 +- include/con.h | 1 - include/match.h | 7 +++++++ src/con.c | 23 ----------------------- src/match.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 54 insertions(+), 25 deletions(-) create mode 100644 include/match.h create mode 100644 src/match.c diff --git a/Makefile b/Makefile index 368dc777..93c98e1e 100644 --- a/Makefile +++ b/Makefile @@ -4,7 +4,7 @@ include $(TOPDIR)/common.mk # Depend on the object files of all source-files in src/*.c and on all header files AUTOGENERATED:=src/cfgparse.tab.c src/cfgparse.yy.c src/cmdparse.tab.c src/cmdparse.yy.c -FILES:=src/ipc.c src/nc.c src/log.c src/util.c src/tree.c src/xcb.c src/manage.c src/workspace.c src/x.c src/floating.c src/click.c src/config.c src/handlers.c src/randr.c src/xinerama.c src/con.c src/load_layout.c src/render.c src/window.c +FILES:=src/ipc.c src/nc.c src/log.c src/util.c src/tree.c src/xcb.c src/manage.c src/workspace.c src/x.c src/floating.c src/click.c src/config.c src/handlers.c src/randr.c src/xinerama.c src/con.c src/load_layout.c src/render.c src/window.c src/match.c FILES:=$(FILES:.c=.o) HEADERS:=$(filter-out include/loglevels.h,$(wildcard include/*.h)) diff --git a/include/con.h b/include/con.h index 8022fc01..2b01475a 100644 --- a/include/con.h +++ b/include/con.h @@ -14,7 +14,6 @@ Con *con_by_frame_id(xcb_window_t frame); Con *con_for_window(i3Window *window, Match **store_match); void con_attach(Con *con, Con *parent); void con_detach(Con *con); -bool match_matches_window(Match *match, i3Window *window); enum { WINDOW_ADD = 0, WINDOW_REMOVE = 1 }; void con_fix_percent(Con *con, int action); diff --git a/include/match.h b/include/match.h new file mode 100644 index 00000000..eb6aec1b --- /dev/null +++ b/include/match.h @@ -0,0 +1,7 @@ +#ifndef _MATCH_H +#define _MATCH_H + +bool match_is_empty(Match *match); +bool match_matches_window(Match *match, i3Window *window); + +#endif diff --git a/src/con.c b/src/con.c index d0daba59..2f61363b 100644 --- a/src/con.c +++ b/src/con.c @@ -221,29 +221,6 @@ Con *con_by_frame_id(xcb_window_t frame) { return NULL; } -bool match_matches_window(Match *match, i3Window *window) { - /* TODO: pcre, full matching, … */ - if (match->class != NULL && strcasecmp(match->class, window->class_class) == 0) { - LOG("match made by window class (%s)\n", window->class_class); - return true; - } - - if (match->instance != NULL && strcasecmp(match->instance, window->class_instance) == 0) { - LOG("match made by window instance (%s)\n", window->class_instance); - return true; - } - - - if (match->id != XCB_NONE && window->id == match->id) { - LOG("match made by window id (%d)\n", window->id); - return true; - } - - LOG("window %d (%s) could not be matched\n", window->id, window->class_class); - - return false; -} - /* * Returns the first container which wants to swallow this window * TODO: priority diff --git a/src/match.c b/src/match.c new file mode 100644 index 00000000..cdabdc3c --- /dev/null +++ b/src/match.c @@ -0,0 +1,46 @@ +/* + * vim:ts=4:sw=4:expandtab + * + * i3 - an improved dynamic tiling window manager + * © 2009-2010 Michael Stapelberg and contributors (see also: LICENSE) + * + */ + +#include "all.h" + +bool match_is_empty(Match *match) { + /* we cannot simply use memcmp() because the structure is part of a + * TAILQ and I don’t want to start with things like assuming that the + * last member of a struct really is at the end in memory… */ + return (match->title == NULL && + match->application == NULL && + match->class == NULL && + match->instance == NULL && + match->id == XCB_NONE && + match->con_id == NULL && + match->floating == false); +} + +bool match_matches_window(Match *match, i3Window *window) { + /* TODO: pcre, full matching, … */ + if (match->class != NULL && window->class_class != NULL && strcasecmp(match->class, window->class_class) == 0) { + LOG("match made by window class (%s)\n", window->class_class); + return true; + } + + if (match->instance != NULL && window->class_instance != NULL && strcasecmp(match->instance, window->class_instance) == 0) { + LOG("match made by window instance (%s)\n", window->class_instance); + return true; + } + + + if (match->id != XCB_NONE && window->id == match->id) { + LOG("match made by window id (%d)\n", window->id); + return true; + } + + LOG("window %d (%s) could not be matched\n", window->id, window->class_class); + + return false; +} +