From 061085232ef35f956316812806875331f175acf7 Mon Sep 17 00:00:00 2001 From: Mitchell Riedstra Date: Tue, 19 Oct 2021 23:18:47 -0400 Subject: Small patch to allow environment variables to be changed on the fly when DWM is reloaded. --- dwm.c | 6 ++++++ util2.h | 24 ++++++++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 util2.h diff --git a/dwm.c b/dwm.c index cb4113f..8bcd0d2 100644 --- a/dwm.c +++ b/dwm.c @@ -43,6 +43,7 @@ #include "drw.h" #include "util.h" +#include "util2.h" /* macros */ #define BUTTONMASK (ButtonPressMask|ButtonReleaseMask) @@ -2142,6 +2143,11 @@ main(int argc, char *argv[]) if (!(dpy = XOpenDisplay(NULL))) die("dwm: cannot open display"); checkotherwm(); + + FILE *fh; + if ((fh = fopen(".env", "r"))) + readEnv(fh); + setup(); #ifdef __OpenBSD__ if (pledge("stdio rpath proc exec", NULL) == -1) diff --git a/util2.h b/util2.h new file mode 100644 index 0000000..ab25acf --- /dev/null +++ b/util2.h @@ -0,0 +1,24 @@ +#include +#include +#include +#include +#include + +int +readEnv(FILE *fh) +{ + int ret; + char name[1024], value[8192]; + + while (1) { + if ((ret = fscanf(fh, "%1023[^=]=%8191[^\n]\n", &name, &value)) == EOF) + break; + else if (ret == 0) + break; + + fprintf(stderr, "Setting: '%s' = '%s'\n", name, value); + setenv(name, value, 1); + } + + return 0; +} -- cgit v1.2.3