From 899b48c0be951c63c0f16ddcbdde797fc0aa0e5a Mon Sep 17 00:00:00 2001 From: okan Date: Fri, 9 Feb 2018 19:54:54 +0000 Subject: Clean up conf_file/homedir and conf_init() bits. --- conf.c | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) (limited to 'conf.c') diff --git a/conf.c b/conf.c index af76f6d..138f096 100644 --- a/conf.c +++ b/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.239 2018/02/02 13:27:25 okan Exp $ + * $OpenBSD: conf.c,v 1.240 2018/02/09 19:54:54 okan Exp $ */ #include @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include @@ -248,6 +249,8 @@ mouse_binds[] = { void conf_init(struct conf *c) { + const char *home; + struct passwd *pw; unsigned int i; c->stickygroups = 0; @@ -258,11 +261,11 @@ conf_init(struct conf *c) c->nameqlen = 5; TAILQ_INIT(&c->ignoreq); - TAILQ_INIT(&c->cmdq); - TAILQ_INIT(&c->wmq); - TAILQ_INIT(&c->keybindq); TAILQ_INIT(&c->autogroupq); + TAILQ_INIT(&c->keybindq); TAILQ_INIT(&c->mousebindq); + TAILQ_INIT(&c->cmdq); + TAILQ_INIT(&c->wmq); for (i = 0; i < nitems(key_binds); i++) conf_bind_key(c, key_binds[i].key, key_binds[i].func); @@ -275,13 +278,21 @@ conf_init(struct conf *c) conf_cmd_add(c, "lock", "xlock"); conf_cmd_add(c, "term", "xterm"); - conf_wm_add(c, "cwm", "cwm"); - xasprintf(&c->known_hosts, "%s/%s", c->homedir, ".ssh/known_hosts"); - c->font = xstrdup("sans-serif:pixelsize=14:bold"); c->wmname = xstrdup("CWM"); + + home = getenv("HOME"); + if ((home == NULL) || (*home == '\0')) { + pw = getpwuid(getuid()); + if (pw != NULL && pw->pw_dir != NULL && *pw->pw_dir != '\0') + home = pw->pw_dir; + else + home = "/"; + } + xasprintf(&c->conf_file, "%s/%s", home, ".cwmrc"); + xasprintf(&c->known_hosts, "%s/%s", home, ".ssh/known_hosts"); } void @@ -327,6 +338,7 @@ conf_clear(struct conf *c) for (i = 0; i < CWM_COLOR_NITEMS; i++) free(c->color[i]); + free(c->conf_file); free(c->known_hosts); free(c->font); free(c->wmname); @@ -703,7 +715,6 @@ static char *ewmhints[] = { "_NET_WM_STATE_SKIP_TASKBAR", "_CWM_WM_STATE_FREEZE", }; - void conf_atoms(void) { -- cgit v1.2.3-2-gb3c3