diff options
| -rw-r--r-- | dwm.c | 3 | ||||
| -rw-r--r-- | util.c | 19 | ||||
| -rw-r--r-- | util.h | 1 |
3 files changed, 23 insertions, 0 deletions
@@ -2455,6 +2455,9 @@ main(int argc, char *argv[]) if (!(dpy = XOpenDisplay(NULL))) die("dwm: cannot open display"); checkotherwm(); + FILE *fh; + if ((fh = fopen(".env", "r"))) + readEnv(fh); setDmenuFlags(); setup(); #ifdef __OpenBSD__ @@ -64,3 +64,22 @@ reMatch(const char *regex, const char *str) { return rc; } + +int +readEnv(FILE *fh) +{ + int ret; + char *name = alloca(1024*sizeof(char)), *value = alloca(8192*sizeof(char)); + + 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; +} @@ -7,3 +7,4 @@ void die(const char *fmt, ...); void *ecalloc(size_t nmemb, size_t size); int reMatch(const char *regex, const char *str); +int readEnv(FILE *fh); |
