diff options
Diffstat (limited to 'src/userpref.c')
| -rw-r--r-- | src/userpref.c | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/src/userpref.c b/src/userpref.c index a0c3545..0e774b7 100644 --- a/src/userpref.c +++ b/src/userpref.c | |||
| @@ -102,6 +102,20 @@ static char *userpref_utf16_to_utf8(wchar_t *unistr, long len, long *items_read, | |||
| 102 | } | 102 | } |
| 103 | #endif | 103 | #endif |
| 104 | 104 | ||
| 105 | static const char *userpref_get_tmp_dir() | ||
| 106 | { | ||
| 107 | const char *cdir = getenv("TMPDIR"); | ||
| 108 | if (cdir && cdir[0]) | ||
| 109 | return cdir; | ||
| 110 | cdir = getenv("TMP"); | ||
| 111 | if (cdir && cdir[0]) | ||
| 112 | return cdir; | ||
| 113 | cdir = getenv("TEMP"); | ||
| 114 | if (cdir && cdir[0]) | ||
| 115 | return cdir; | ||
| 116 | return "/tmp"; | ||
| 117 | } | ||
| 118 | |||
| 105 | static const char *userpref_get_config_dir() | 119 | static const char *userpref_get_config_dir() |
| 106 | { | 120 | { |
| 107 | if (__config_dir[0]) return __config_dir; | 121 | if (__config_dir[0]) return __config_dir; |
| @@ -125,7 +139,14 @@ static const char *userpref_get_config_dir() | |||
| 125 | const char *cdir = getenv("XDG_CONFIG_HOME"); | 139 | const char *cdir = getenv("XDG_CONFIG_HOME"); |
| 126 | if (!cdir) { | 140 | if (!cdir) { |
| 127 | cdir = getenv("HOME"); | 141 | cdir = getenv("HOME"); |
| 128 | strcpy(__config_dir, cdir); | 142 | if (!cdir || !cdir[0]) { |
| 143 | const char *tdir = userpref_get_tmp_dir(); | ||
| 144 | strcpy(__config_dir, tdir); | ||
| 145 | strcat(__config_dir, DIR_SEP_S); | ||
| 146 | strcat(__config_dir, "root"); | ||
| 147 | } else { | ||
| 148 | strcpy(__config_dir, cdir); | ||
| 149 | } | ||
| 129 | strcat(__config_dir, DIR_SEP_S); | 150 | strcat(__config_dir, DIR_SEP_S); |
| 130 | strcat(__config_dir, ".config"); | 151 | strcat(__config_dir, ".config"); |
| 131 | } else { | 152 | } else { |
