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 <djpohly@gmail.com>
This commit is contained in:
8
st.c
8
st.c
@ -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,
|
||||
@ -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);
|
||||
@ -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);
|
||||
|
Reference in New Issue
Block a user