diff options
author | Okan Demirmen <okan@cvs.openbsd.org> | 2012-12-17 23:03:42 +0000 |
---|---|---|
committer | Okan Demirmen <okan@cvs.openbsd.org> | 2012-12-17 23:03:42 +0000 |
commit | 5632c753bca834f9bdcea1d97a90a76cd2a867a7 (patch) | |
tree | e96760978f9962e6ba8b615c308911c81cca674f | |
parent | e59673393bad213eb7acb223a04e85179717630a (diff) |
pull user home directory via getenv or getpwuid and stash it so we don't
need to do this everytime; with Tiago Cunha
-rw-r--r-- | app/cwm/calmwm.c | 13 | ||||
-rw-r--r-- | app/cwm/calmwm.h | 3 | ||||
-rw-r--r-- | app/cwm/conf.c | 8 | ||||
-rw-r--r-- | app/cwm/kbfunc.c | 9 |
4 files changed, 19 insertions, 14 deletions
diff --git a/app/cwm/calmwm.c b/app/cwm/calmwm.c index 3a7393d23..18da2a7e6 100644 --- a/app/cwm/calmwm.c +++ b/app/cwm/calmwm.c @@ -15,7 +15,7 @@ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * - * $OpenBSD: calmwm.c,v 1.70 2012/12/17 02:28:45 okan Exp $ + * $OpenBSD: calmwm.c,v 1.71 2012/12/17 23:03:41 okan Exp $ */ #include <sys/param.h> @@ -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)); diff --git a/app/cwm/calmwm.h b/app/cwm/calmwm.h index 05e56a307..6ee87be2f 100644 --- a/app/cwm/calmwm.h +++ b/app/cwm/calmwm.h @@ -15,7 +15,7 @@ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * - * $OpenBSD: calmwm.h,v 1.171 2012/12/17 18:35:26 okan Exp $ + * $OpenBSD: calmwm.h,v 1.172 2012/12/17 23:03:41 okan Exp $ */ #ifndef _CALMWM_H_ @@ -519,6 +519,7 @@ extern Cursor Cursor_resize; extern struct screen_ctx_q Screenq; extern struct client_ctx_q Clientq; extern struct conf Conf; +extern char *homedir; extern int HasRandr, Randr_ev; diff --git a/app/cwm/conf.c b/app/cwm/conf.c index 2b7fdedf0..b31a32c7e 100644 --- a/app/cwm/conf.c +++ b/app/cwm/conf.c @@ -15,7 +15,7 @@ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * - * $OpenBSD: conf.c,v 1.112 2012/12/17 02:53:29 okan Exp $ + * $OpenBSD: conf.c,v 1.113 2012/12/17 23:03:41 okan Exp $ */ #include <sys/param.h> @@ -243,18 +243,14 @@ void conf_setup(struct conf *c, const char *conf_file) { char conf_path[MAXPATHLEN]; - char *home; struct stat sb; int parse = 0; conf_init(c); if (conf_file == NULL) { - if ((home = getenv("HOME")) == NULL) - errx(1, "No HOME directory."); - (void)snprintf(conf_path, sizeof(conf_path), "%s/%s", - home, CONFFILE); + homedir, CONFFILE); if (stat(conf_path, &sb) == 0 && (sb.st_mode & S_IFREG)) parse = 1; diff --git a/app/cwm/kbfunc.c b/app/cwm/kbfunc.c index f58982b5a..a13499955 100644 --- a/app/cwm/kbfunc.c +++ b/app/cwm/kbfunc.c @@ -15,7 +15,7 @@ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * - * $OpenBSD: kbfunc.c,v 1.69 2012/12/17 14:32:39 okan Exp $ + * $OpenBSD: kbfunc.c,v 1.70 2012/12/17 23:03:41 okan Exp $ */ #include <sys/param.h> @@ -324,16 +324,13 @@ kbfunc_ssh(struct client_ctx *cc, union arg *arg) struct menu *mi; struct menu_q menuq; FILE *fp; - char *buf, *lbuf, *p, *home; + char *buf, *lbuf, *p; char hostbuf[MAXHOSTNAMELEN], filename[MAXPATHLEN]; char cmd[256]; int l; size_t len; - if ((home = getenv("HOME")) == NULL) - return; - - l = snprintf(filename, sizeof(filename), "%s/%s", home, KNOWN_HOSTS); + l = snprintf(filename, sizeof(filename), "%s/%s", homedir, KNOWN_HOSTS); if (l == -1 || l >= sizeof(filename)) return; |