Skip to content

Commit

Permalink
Call xsetenv() in main process instead of child
Browse files Browse the repository at this point in the history
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]>
  • Loading branch information
djpohly committed Feb 26, 2018
1 parent 1f24bde commit 3e44ee5
Show file tree
Hide file tree
Showing 3 changed files with 4 additions and 14 deletions.
8 changes: 2 additions & 6 deletions st.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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);
Expand Down
2 changes: 0 additions & 2 deletions win.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
8 changes: 2 additions & 6 deletions x.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 *);
Expand Down Expand Up @@ -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)
{
Expand Down Expand Up @@ -1765,6 +1760,7 @@ main(int argc, char *argv[])
XSetLocaleModifiers("");
tnew(MAX(cols, 1), MAX(rows, 1));
xinit();
xsetenv();
selinit();
run();

Expand Down

0 comments on commit 3e44ee5

Please sign in to comment.