diff options
author | okan <okan> | 2012-12-17 23:03:41 +0000 |
---|---|---|
committer | okan <okan> | 2012-12-17 23:03:41 +0000 |
commit | 75f65f399e2cfc0fd73f6ae9f68e60313cfdd7e5 (patch) | |
tree | 6c0f8397fa8cf5e64d5cb2bf2bf22b9961a0c554 /calmwm.c | |
parent | fe44d1dfce326c846fa199d6972ca77649176046 (diff) | |
download | cwm-75f65f399e2cfc0fd73f6ae9f68e60313cfdd7e5.tar.gz cwm-75f65f399e2cfc0fd73f6ae9f68e60313cfdd7e5.tar.xz cwm-75f65f399e2cfc0fd73f6ae9f68e60313cfdd7e5.zip |
pull user home directory via getenv or getpwuid and stash it so we don't
need to do this everytime; with Tiago Cunha
Diffstat (limited to 'calmwm.c')
-rw-r--r-- | calmwm.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/calmwm.c b/calmwm.c index c699751..2c02342 100644 --- a/calmwm.c +++ b/calmwm.c @@ -26,6 +26,7 @@ #include <errno.h> #include <getopt.h> #include <locale.h> +#include <pwd.h> #include <signal.h> #include <stdio.h> #include <stdlib.h> @@ -48,6 +49,7 @@ struct client_ctx_q Clientq = TAILQ_HEAD_INITIALIZER(Clientq); int HasRandr, Randr_ev; struct conf Conf; +char *homedir; static void sigchld_cb(int); static void dpy_init(const char *); @@ -62,6 +64,7 @@ main(int argc, char **argv) const char *conf_file = NULL; char *display_name = NULL; int ch; + struct passwd *pw; if (!setlocale(LC_CTYPE, "") || !XSupportsLocale()) warnx("no locale support"); @@ -86,6 +89,14 @@ main(int argc, char **argv) if (signal(SIGCHLD, sigchld_cb) == SIG_ERR) err(1, "signal"); + if ((homedir = getenv("HOME")) == NULL || *homedir == '\0') { + pw = getpwuid(getuid()); + if (pw != NULL && pw->pw_dir != NULL && *pw->pw_dir != '\0') + homedir = pw->pw_dir; + else + homedir = "/"; + } + dpy_init(display_name); bzero(&Conf, sizeof(Conf)); |