[hackers] [st] [PATCH] call xsetenv() in main process instead of child

From: Devin J. Pohly <djpohly_AT_gmail.com>
Date: Tue, 10 Oct 2017 10:35:33 -0500

This makes xsetenv internal to x.c, and allows iso14755's external
command to use $WINDOWID instead of having to snprintf it again. (The
same benefit will apply to the externalpipe patch.) The xwinid function
is no longer needed.

Signed-off-by: Devin J. Pohly <djpohly_AT_gmail.com>
---
 st.c  | 8 ++------
 win.h | 2 --
 x.c   | 8 ++------
 3 files changed, 4 insertions(+), 14 deletions(-)
diff --git a/st.c b/st.c
index 7c7ddff..668b312 100644
--- a/st.c
+++ b/st.c
_AT_@ -60,7 +60,7 @@ char *argv0;
 #define ISDELIM(u)		(utf8strchr(worddelimiters, u) != NULL)
 
 /* constants */
-#define ISO14755CMD		"dmenu -w %lu -p codepoint: </dev/null"
+#define ISO14755CMD		"dmenu -w \"$WINDOWID\" -p codepoint: </dev/null"
 
 enum cursor_movement {
 	CURSOR_SAVE,
_AT_@ -706,7 +706,6 @@ execsh(void)
 	setenv("SHELL", sh, 1);
 	setenv("HOME", pw->pw_dir, 1);
 	setenv("TERM", termname, 1);
-	xsetenv();
 
 	signal(SIGCHLD, SIG_DFL);
 	signal(SIGHUP, SIG_DFL);
_AT_@ -1993,14 +1992,11 @@ tprinter(char *s, size_t len)
 void
 iso14755(const Arg *arg)
 {
-	unsigned long id = xwinid();
-	char cmd[sizeof(ISO14755CMD) + NUMMAXLEN(id)];
 	FILE *p;
 	char *us, *e, codepoint[9], uc[UTF_SIZ];
 	unsigned long utf32;
 
-	snprintf(cmd, sizeof(cmd), ISO14755CMD, id);
-	if (!(p = popen(cmd, "r")))
+	if (!(p = popen(ISO14755CMD, "r")))
 		return;
 
 	us = fgets(codepoint, sizeof(codepoint), p);
diff --git a/win.h b/win.h
index 428111c..423c114 100644
--- a/win.h
+++ b/win.h
_AT_@ -19,12 +19,10 @@ void xinit(void);
 void xloadcols(void);
 int xsetcolorname(int, const char *);
 void xloadfonts(char *, double);
-void xsetenv(void);
 void xsettitle(char *);
 void xsetpointermotion(int);
 void xseturgency(int);
 void xunloadfonts(void);
 void xresize(int, int);
 void xselpaste(void);
-unsigned long xwinid(void);
 void xsetsel(char *, Time);
diff --git a/x.c b/x.c
index 191e5dc..826cb74 100644
--- a/x.c
+++ b/x.c
_AT_@ -89,6 +89,7 @@ static void xdrawcursor(void);
 static int xgeommasktogravity(int);
 static int xloadfont(Font *, FcPattern *);
 static void xunloadfont(Font *);
+static void xsetenv(void);
 
 static void expose(XEvent *);
 static void visibility(XEvent *);
_AT_@ -1485,12 +1486,6 @@ xbell(int vol)
 	XkbBell(xw.dpy, xw.win, vol, (Atom)NULL);
 }
 
-unsigned long
-xwinid(void)
-{
-	return xw.win;
-}
-
 void
 focus(XEvent *ev)
 {
_AT_@ -1763,6 +1758,7 @@ run:
 	XSetLocaleModifiers("");
 	tnew(MAX(cols, 1), MAX(rows, 1));
 	xinit();
+	xsetenv();
 	selinit();
 	run();
 
-- 
2.14.1
Received on Tue Oct 10 2017 - 17:35:33 CEST

This archive was generated by hypermail 2.3.0 : Tue Oct 10 2017 - 17:37:09 CEST