diff options
author | okan <okan> | 2014-01-21 15:42:44 +0000 |
---|---|---|
committer | okan <okan> | 2014-01-21 15:42:44 +0000 |
commit | 371902b3c9fc6c7419f8134e96d67c8735726ff2 (patch) | |
tree | 4963c37a48000819c291dabede7d429572398352 /menu.c | |
parent | 86b149ad2537061b8af6a51376835c1e1f1cc4ec (diff) | |
parent | ac3162439ad826026b499363b445e8c533313ff2 (diff) | |
download | cwm-371902b3c9fc6c7419f8134e96d67c8735726ff2.tar.gz cwm-371902b3c9fc6c7419f8134e96d67c8735726ff2.tar.xz cwm-371902b3c9fc6c7419f8134e96d67c8735726ff2.zip |
cvsimport
Diffstat (limited to 'menu.c')
-rw-r--r-- | menu.c | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/menu.c b/menu.c index 7e3cb7b..fc90e35 100644 --- a/menu.c +++ b/menu.c @@ -25,6 +25,7 @@ #include <ctype.h> #include <err.h> #include <errno.h> +#include <stdarg.h> #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -77,8 +78,8 @@ static struct menu *menu_complete_path(struct menu_ctx *); static int menu_keycode(XKeyEvent *, enum ctltype *, char *); struct menu * -menu_filter(struct screen_ctx *sc, struct menu_q *menuq, char *prompt, - char *initial, int flags, +menu_filter(struct screen_ctx *sc, struct menu_q *menuq, const char *prompt, + const char *initial, int flags, void (*match)(struct menu_q *, struct menu_q *, char *), void (*print)(struct menu *, int)) { @@ -605,6 +606,22 @@ menu_keycode(XKeyEvent *ev, enum ctltype *ctl, char *chr) } void +menuq_add(struct menu_q *mq, void *ctx, const char *fmt, ...) +{ + va_list ap; + struct menu *mi; + + mi = xcalloc(1, sizeof(*mi)); + mi->ctx = ctx; + + va_start(ap, fmt); + (void)vsnprintf(mi->text, sizeof(mi->text), fmt, ap); + va_end(ap); + + TAILQ_INSERT_TAIL(mq, mi, entry); +} + +void menuq_clear(struct menu_q *mq) { struct menu *mi; |