tCall xsetenv() in main process instead of child - st - [fork] customized build… | |
git clone git://src.adamsgaard.dk/st | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 3e44ee5569a81ba6f06e1ecd19bf0ceb1e97f18d | |
parent 1f24bde82b19912c080fbb4a0b153a248cd6c6ea | |
Author: Devin J. Pohly <[email protected]> | |
Date: Tue, 10 Oct 2017 10:30:23 -0500 | |
Call xsetenv() in main process instead of child | |
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 <[email protected]> | |
Diffstat: | |
M st.c | 8 ++------ | |
M win.h | 2 -- | |
M x.c | 8 ++------ | |
3 files changed, 4 insertions(+), 14 deletions(-) | |
--- | |
diff --git a/st.c b/st.c | |
t@@ -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… | |
enum cursor_movement { | |
CURSOR_SAVE, | |
t@@ -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); | |
t@@ -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 | |
t@@ -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 | |
t@@ -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 *); | |
t@@ -1487,12 +1488,6 @@ xbell(int vol) | |
XkbBell(xw.dpy, xw.win, vol, (Atom)NULL); | |
} | |
-unsigned long | |
-xwinid(void) | |
-{ | |
- return xw.win; | |
-} | |
- | |
void | |
focus(XEvent *ev) | |
{ | |
t@@ -1765,6 +1760,7 @@ run: | |
XSetLocaleModifiers(""); | |
tnew(MAX(cols, 1), MAX(rows, 1)); | |
xinit(); | |
+ xsetenv(); | |
selinit(); | |
run(); | |