# HG changeset patch # User Matti Hamalainen # Date 1422242532 -7200 # Node ID a9d25e083f4424ee829f30abeb1ec1d47dee8919 # Parent ff94100cfc7c8490c8ec8ff36b6570bc030e8c02 Separate home dir and config dir functionality. diff -r ff94100cfc7c -r a9d25e083f44 main.c --- a/main.c Fri Jan 09 20:37:15 2015 +0200 +++ b/main.c Mon Jan 26 05:22:12 2015 +0200 @@ -1995,7 +1995,7 @@ nn_editbuf_t *editBuf = nn_editbuf_new(NN_TMPBUF_SIZE); nn_editstate_t editState; th_cfgitem_t *tmpcfg; - char *setHomeDir = NULL, *setProxyURI = NULL; + char *setHomeDir = NULL, *setConfigDir = NULL, *setProxyURI = NULL; memset(editHistBuf, 0, sizeof(editHistBuf)); clearEditState(&editState); @@ -2073,24 +2073,27 @@ setHomeDir = th_strdup(tmpPath); CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE); + setConfigDir = th_strdup(setHomeDir); #elif defined(USE_XDG) - char *xdgConfigDir = getenv("XDG_CONFIG_HOME"); + const char *xdgConfigDir = getenv("XDG_CONFIG_HOME"); + setHomeDir = th_strdup(getenv("HOME")); // If XDG is enabled, try the environment variable first - if (xdgConfigDir != NULL) - setHomeDir = th_strdup(xdgConfigDir); + if (xdgConfigDir != NULL && strcmp(xdgConfigDir, "")) + setConfigDir = th_strdup_printf("%s/nnchat/", xdgConfigDir); else // Nope, try the obvious alternative - setHomeDir = th_strdup_printf("%s/.config", getenv("HOME")); + setConfigDir = th_strdup_printf("%s/.config/nnchat/", setHomeDir); #else setHomeDir = th_strdup(getenv("HOME")); + setConfigDir = th_strdup(setHomeDir); #endif } - if (setHomeDir != NULL) + if (setConfigDir != NULL) { th_ioctx_t ctx; - setConfigFile = th_strdup_printf("%s%c%s", setHomeDir, SET_DIR_SEPARATOR, SET_CONFIG_FILE); + setConfigFile = th_strdup_printf("%s%c%s", setConfigDir, SET_DIR_SEPARATOR, SET_CONFIG_FILE); THMSG(0, "Reading configuration from '%s'.\n", setConfigFile); @@ -2110,7 +2113,7 @@ if (setBrowser == NULL) setBrowser = "firefox"; - if (optLogPath == NULL) + if (optLogPath == NULL && setHomeDir != NULL) { optLogPath = th_strdup_printf("%s%c%s%c", setHomeDir, SET_DIR_SEPARATOR, SET_LOG_DIR, SET_DIR_SEPARATOR); @@ -2391,6 +2394,7 @@ th_cfg_free(cfg); th_free(setHomeDir); + th_free(setConfigDir); th_llist_free_func(setIdleMessages, th_free); nn_userhash_free(nnUsers); nn_editbuf_free(editBuf);