diff options
author | okan | 2018-02-09 19:54:54 +0000 |
---|---|---|
committer | okan | 2018-02-09 19:54:54 +0000 |
commit | 899b48c0be951c63c0f16ddcbdde797fc0aa0e5a (patch) | |
tree | 77af0f050342f174e7ec4d8487380e5ba241f5f9 /conf.c | |
parent | 54038380504e5bb95e059dfba5aa74e9f591123b (diff) | |
download | cwm-899b48c0be951c63c0f16ddcbdde797fc0aa0e5a.tar.gz |
Clean up conf_file/homedir and conf_init() bits.
Diffstat (limited to '')
-rw-r--r-- | conf.c | 27 |
1 files changed, 19 insertions, 8 deletions
@@ -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 <sys/types.h> @@ -25,6 +25,7 @@ #include <err.h> #include <errno.h> #include <limits.h> +#include <pwd.h> #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -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) { |