From 09c6df182c5227f2f6c12debe93eefeb2d0d8ce3 Mon Sep 17 00:00:00 2001 From: okan Date: Sat, 6 Sep 2014 16:14:35 +0000 Subject: Move termpath and lockpath into cmdq; side effect is that 'lock' and 'term' now show up in the application menu. --- calmwm.h | 4 +--- conf.c | 32 ++++++++++++-------------------- kbfunc.c | 21 +++++++++++++++++---- 3 files changed, 30 insertions(+), 27 deletions(-) diff --git a/calmwm.h b/calmwm.h index d99865a..3528a0a 100644 --- a/calmwm.h +++ b/calmwm.h @@ -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.267 2014/09/06 16:08:58 okan Exp $ + * $OpenBSD: calmwm.h,v 1.268 2014/09/06 16:14:35 okan Exp $ */ #ifndef _CALMWM_H_ @@ -294,8 +294,6 @@ struct conf { int snapdist; struct gap gap; char *color[CWM_COLOR_NITEMS]; - char termpath[MAXPATHLEN]; - char lockpath[MAXPATHLEN]; char known_hosts[MAXPATHLEN]; #define CONF_FONT "sans-serif:pixelsize=14:bold" char *font; diff --git a/conf.c b/conf.c index dccaf8b..c9c7253 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.177 2014/08/25 12:49:19 okan Exp $ + * $OpenBSD: conf.c,v 1.178 2014/09/06 16:14:35 okan Exp $ */ #include @@ -41,27 +41,19 @@ conf_cmd_add(struct conf *c, const char *name, const char *path) { struct cmd *cmd; - /* "term" and "lock" have special meanings. */ - if (strcmp(name, "term") == 0) { - if (strlcpy(c->termpath, path, sizeof(c->termpath)) >= - sizeof(c->termpath)) - return (0); - } else if (strcmp(name, "lock") == 0) { - if (strlcpy(c->lockpath, path, sizeof(c->lockpath)) >= - sizeof(c->lockpath)) - return (0); - } else { - conf_cmd_remove(c, name); - - cmd = xmalloc(sizeof(*cmd)); + cmd = xmalloc(sizeof(*cmd)); - cmd->name = xstrdup(name); - if (strlcpy(cmd->path, path, sizeof(cmd->path)) >= - sizeof(cmd->path)) - return (0); - TAILQ_INSERT_TAIL(&c->cmdq, cmd, entry); + cmd->name = xstrdup(name); + if (strlcpy(cmd->path, path, sizeof(cmd->path)) >= sizeof(cmd->path)) { + free(cmd->name); + free(cmd); + return(0); } - return (1); + + conf_cmd_remove(c, name); + + TAILQ_INSERT_TAIL(&c->cmdq, cmd, entry); + return(1); } static void diff --git a/kbfunc.c b/kbfunc.c index 52e8720..ec8bf49 100644 --- a/kbfunc.c +++ b/kbfunc.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: kbfunc.c,v 1.97 2014/09/01 18:17:32 okan Exp $ + * $OpenBSD: kbfunc.c,v 1.98 2014/09/06 16:14:35 okan Exp $ */ #include @@ -213,13 +213,21 @@ kbfunc_cmdexec(struct client_ctx *cc, union arg *arg) void kbfunc_term(struct client_ctx *cc, union arg *arg) { - u_spawn(Conf.termpath); + struct cmd *cmd; + + TAILQ_FOREACH(cmd, &Conf.cmdq, entry) + if (strcmp(cmd->name, "term") == 0) + u_spawn(cmd->path); } void kbfunc_lock(struct client_ctx *cc, union arg *arg) { - u_spawn(Conf.lockpath); + struct cmd *cmd; + + TAILQ_FOREACH(cmd, &Conf.cmdq, entry) + if (strcmp(cmd->name, "lock") == 0) + u_spawn(cmd->path); } void @@ -309,6 +317,7 @@ void kbfunc_ssh(struct client_ctx *cc, union arg *arg) { struct screen_ctx *sc = cc->sc; + struct cmd *cmdq; struct menu *mi; struct menu_q menuq; FILE *fp; @@ -323,6 +332,10 @@ kbfunc_ssh(struct client_ctx *cc, union arg *arg) return; } + TAILQ_FOREACH(cmdq, &Conf.cmdq, entry) + if (strcmp(cmdq->name, "term") == 0) + break; + TAILQ_INIT(&menuq); lbuf = NULL; @@ -356,7 +369,7 @@ kbfunc_ssh(struct client_ctx *cc, union arg *arg) if (mi->text[0] == '\0') goto out; l = snprintf(cmd, sizeof(cmd), "%s -T '[ssh] %s' -e ssh %s", - Conf.termpath, mi->text, mi->text); + cmdq->path, mi->text, mi->text); if (l != -1 && l < sizeof(cmd)) u_spawn(cmd); } -- cgit v1.2.3-2-gb3c3