aboutsummaryrefslogtreecommitdiffstats
path: root/conf.c
diff options
context:
space:
mode:
Diffstat (limited to 'conf.c')
-rw-r--r--conf.c27
1 files changed, 19 insertions, 8 deletions
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 <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)
{