aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--calmwm.h4
-rw-r--r--conf.c32
-rw-r--r--kbfunc.c21
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 <sys/param.h>
@@ -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 <sys/param.h>
@@ -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);
}