aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dwm.c6
-rw-r--r--util2.h24
2 files changed, 30 insertions, 0 deletions
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 <stdio.h>
+#include <fcntl.h>
+#include <err.h>
+#include <unistd.h>
+#include <stdlib.h>
+
+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;
+}