summary refs log tree commit diff
path: root/conf.c
diff options
context:
space:
mode:
authorokan <okan>2018-02-09 19:54:54 +0000
committerokan <okan>2018-02-09 19:54:54 +0000
commit1a5f80bd0b9865994ef02244da597044dd99a309 (patch)
tree9e56d668478dfabd1dfe699360ebcaef08c8eab5 /conf.c
parentf3211427c16b755db20bc71ce4074e9fb9aae8af (diff)
downloadcwm-1a5f80bd0b9865994ef02244da597044dd99a309.tar.gz
cwm-1a5f80bd0b9865994ef02244da597044dd99a309.tar.xz
cwm-1a5f80bd0b9865994ef02244da597044dd99a309.zip
Clean up conf_file/homedir and conf_init() bits.
Diffstat (limited to 'conf.c')
-rw-r--r--conf.c25
1 files changed, 18 insertions, 7 deletions
diff --git a/conf.c b/conf.c
index 9c02e3e..5d85fdc 100644
--- a/conf.c
+++ b/conf.c
@@ -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)
 {