aboutsummaryrefslogtreecommitdiffstats
path: root/conf.c
diff options
context:
space:
mode:
authorokan2015-03-26 21:41:43 +0000
committerokan2015-03-26 21:41:43 +0000
commite06df87fd38b7a9c3e3f0d2d60330dd2e387cf54 (patch)
tree26f263089ece16894bf082ce4597bfbb3678f0b4 /conf.c
parenta55e0af46fbc1047e925f07b909e550d44543f58 (diff)
downloadcwm-e06df87fd38b7a9c3e3f0d2d60330dd2e387cf54.tar.gz
Simplify key/mb binding moving argtype into flags and dropping another
variable; removes the need to zero out struct binding, leaving a simple malloc.
Diffstat (limited to 'conf.c')
-rw-r--r--conf.c22
1 files changed, 9 insertions, 13 deletions
diff --git a/conf.c b/conf.c
index 6e4cdeb..7a1ae63 100644
--- a/conf.c
+++ b/conf.c
@@ -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.184 2015/01/24 18:16:59 okan Exp $
+ * $OpenBSD: conf.c,v 1.185 2015/03/26 21:41:43 okan Exp $
*/
#include <sys/types.h>
@@ -491,11 +491,10 @@ conf_bind_kbd(struct conf *c, const char *bind, const char *cmd)
{
struct binding *kb;
const char *key;
- unsigned int i, mask;
+ unsigned int i;
- kb = xcalloc(1, sizeof(*kb));
- key = conf_bind_getmask(bind, &mask);
- kb->modmask |= mask;
+ kb = xmalloc(sizeof(*kb));
+ key = conf_bind_getmask(bind, &kb->modmask);
kb->press.keysym = XStringToKeysym(key);
if (kb->press.keysym == NoSymbol) {
@@ -519,15 +518,13 @@ conf_bind_kbd(struct conf *c, const char *bind, const char *cmd)
kb->callback = name_to_func[i].handler;
kb->flags = name_to_func[i].flags;
kb->argument = name_to_func[i].argument;
- kb->argtype |= ARG_INT;
TAILQ_INSERT_TAIL(&c->keybindingq, kb, entry);
return(1);
}
kb->callback = kbfunc_cmdexec;
- kb->flags = 0;
+ kb->flags = CWM_CMD;
kb->argument.c = xstrdup(cmd);
- kb->argtype |= ARG_CHAR;
TAILQ_INSERT_TAIL(&c->keybindingq, kb, entry);
return(1);
}
@@ -543,7 +540,7 @@ conf_unbind_kbd(struct conf *c, struct binding *unbind)
if (key->press.keysym == unbind->press.keysym) {
TAILQ_REMOVE(&c->keybindingq, key, entry);
- if (key->argtype & ARG_CHAR)
+ if (key->flags & CWM_CMD)
free(key->argument.c);
free(key);
}
@@ -555,11 +552,10 @@ conf_bind_mouse(struct conf *c, const char *bind, const char *cmd)
{
struct binding *mb;
const char *button, *errstr;
- unsigned int i, mask;
+ unsigned int i;
- mb = xcalloc(1, sizeof(*mb));
- button = conf_bind_getmask(bind, &mask);
- mb->modmask |= mask;
+ mb = xmalloc(sizeof(*mb));
+ button = conf_bind_getmask(bind, &mb->modmask);
mb->press.button = strtonum(button, Button1, Button5, &errstr);
if (errstr) {