summaryrefslogtreecommitdiffstats
path: root/x11-wm/cwm/files
diff options
context:
space:
mode:
Diffstat (limited to 'x11-wm/cwm/files')
-rw-r--r--x11-wm/cwm/files/patch-Makefile14
-rw-r--r--x11-wm/cwm/files/patch-calmwm.h10
-rw-r--r--x11-wm/cwm/files/patch-conf.c18
-rw-r--r--x11-wm/cwm/files/patch-kbfunc.c75
4 files changed, 117 insertions, 0 deletions
diff --git a/x11-wm/cwm/files/patch-Makefile b/x11-wm/cwm/files/patch-Makefile
new file mode 100644
index 0000000..8ad8f3c
--- /dev/null
+++ b/x11-wm/cwm/files/patch-Makefile
@@ -0,0 +1,14 @@
+Prefer libc version over custom strlcpy, strlcat, reallocarray, strtonum
+
+--- Makefile.orig 2020-05-22 19:40:11 UTC
++++ Makefile
+@@ -11,8 +11,7 @@ SRCS= calmwm.c screen.c xmalloc.c client.c menu.c \
+
+ OBJS= calmwm.o screen.o xmalloc.o client.o menu.o \
+ search.o util.o xutil.o conf.o xevents.o group.o \
+- kbfunc.o strlcpy.o strlcat.o y.tab.o \
+- strtonum.o reallocarray.o
++ kbfunc.o y.tab.o
+
+ PKG_CONFIG?= pkg-config
+
diff --git a/x11-wm/cwm/files/patch-calmwm.h b/x11-wm/cwm/files/patch-calmwm.h
new file mode 100644
index 0000000..d4c1e46
--- /dev/null
+++ b/x11-wm/cwm/files/patch-calmwm.h
@@ -0,0 +1,10 @@
+--- calmwm.h.orig 2021-07-28 22:34:54 UTC
++++ calmwm.h
+@@ -533,6 +533,7 @@ void kbfunc_menu_group(void *, struct cargs *);
+ void kbfunc_menu_wm(void *, struct cargs *);
+ void kbfunc_menu_exec(void *, struct cargs *);
+ void kbfunc_menu_ssh(void *, struct cargs *);
++void kbfunc_menu_mosh(void *, struct cargs *);
+ void kbfunc_client_menu_label(void *, struct cargs *);
+ void kbfunc_exec_cmd(void *, struct cargs *);
+ void kbfunc_exec_lock(void *, struct cargs *);
diff --git a/x11-wm/cwm/files/patch-conf.c b/x11-wm/cwm/files/patch-conf.c
new file mode 100644
index 0000000..9d597b1
--- /dev/null
+++ b/x11-wm/cwm/files/patch-conf.c
@@ -0,0 +1,18 @@
+--- conf.c.orig 2021-07-28 22:34:31 UTC
++++ conf.c
+@@ -180,6 +180,7 @@ static const struct {
+ { FUNC_SC(menu-cmd, menu_cmd, 0) },
+ { FUNC_SC(menu-group, menu_group, 0) },
+ { FUNC_SC(menu-ssh, menu_ssh, 0) },
++ { FUNC_SC(menu-mosh, menu_mosh, 0) },
+ { FUNC_SC(menu-window, menu_client, CWM_MENU_WINDOW_ALL) },
+ { FUNC_SC(menu-window-hidden, menu_client, CWM_MENU_WINDOW_HIDDEN) },
+ { FUNC_SC(menu-exec, menu_exec, 0) },
+@@ -212,6 +213,7 @@ static const struct {
+ { "M-question", "menu-exec" },
+ { "CM-w", "menu-exec-wm" },
+ { "M-period", "menu-ssh" },
++ { "MS-period", "menu-mosh" },
+ { "M-Return", "window-hide" },
+ { "M-Down", "window-lower" },
+ { "M-Up", "window-raise" },
diff --git a/x11-wm/cwm/files/patch-kbfunc.c b/x11-wm/cwm/files/patch-kbfunc.c
new file mode 100644
index 0000000..20a2935
--- /dev/null
+++ b/x11-wm/cwm/files/patch-kbfunc.c
@@ -0,0 +1,75 @@
+--- kbfunc.c.orig 2021-07-28 22:35:08 UTC
++++ kbfunc.c
+@@ -753,6 +753,72 @@ out:
+ }
+
+ void
++kbfunc_menu_mosh(void *ctx, struct cargs *cargs)
++{
++ struct screen_ctx *sc = ctx;
++ struct cmd_ctx *cmd;
++ struct menu *mi;
++ struct menu_q menuq;
++ FILE *fp;
++ char *buf, *lbuf, *p;
++ char hostbuf[_POSIX_HOST_NAME_MAX+1];
++ char path[PATH_MAX];
++ int l;
++ size_t len;
++ ssize_t slen;
++ int mflags = (CWM_MENU_DUMMY);
++
++ TAILQ_FOREACH(cmd, &Conf.cmdq, entry) {
++ if (strcmp(cmd->name, "term") == 0)
++ break;
++ }
++ TAILQ_INIT(&menuq);
++
++ if ((fp = fopen(Conf.known_hosts, "r")) == NULL) {
++ warn("%s: %s", __func__, Conf.known_hosts);
++ goto menu;
++ }
++
++ lbuf = NULL;
++ len = 0;
++ while ((slen = getline(&lbuf, &len, fp)) != -1) {
++ buf = lbuf;
++ if (buf[slen - 1] == '\n')
++ buf[slen - 1] = '\0';
++
++ /* skip hashed hosts */
++ if (strncmp(buf, HASH_MARKER, strlen(HASH_MARKER)) == 0)
++ continue;
++ for (p = buf; *p != ',' && *p != ' ' && p != buf + slen; p++)
++ ;
++ /* ignore badness */
++ if (p - buf + 1 > sizeof(hostbuf))
++ continue;
++ (void)strlcpy(hostbuf, buf, p - buf + 1);
++ menuq_add(&menuq, NULL, "%s", hostbuf);
++ }
++ free(lbuf);
++ if (ferror(fp))
++ err(1, "%s", path);
++ (void)fclose(fp);
++menu:
++ if ((mi = menu_filter(sc, &menuq, "mosh", NULL, mflags,
++ search_match_text, search_print_text)) != NULL) {
++ if (mi->text[0] == '\0')
++ goto out;
++ l = snprintf(path, sizeof(path), "%s -T '[ssh] %s' -e mosh %s",
++ cmd->path, mi->text, mi->text);
++ if (l == -1 || l >= sizeof(path))
++ goto out;
++ u_spawn(path);
++ }
++out:
++ if (mi != NULL && mi->dummy)
++ free(mi);
++ menuq_clear(&menuq);
++}
++
++void
+ kbfunc_client_menu_label(void *ctx, struct cargs *cargs)
+ {
+ struct client_ctx *cc = ctx;