4 static const char *_e_user_homedir = NULL;
5 static size_t _e_user_homedir_len = 0;
7 /* externally accessible functions */
9 e_user_homedir_get(void)
14 return _e_user_homedir;
16 _e_user_homedir = d = getenv("HOME");
19 _e_user_homedir = "/tmp";
20 _e_user_homedir_len = sizeof("/tmp") - 1;
21 return _e_user_homedir;
24 _e_user_homedir_len = strlen(_e_user_homedir);
25 while ((_e_user_homedir_len > 1) &&
26 (d[_e_user_homedir_len - 1] == '/'))
28 _e_user_homedir_len--;
29 d[_e_user_homedir_len] = '\0';
31 return _e_user_homedir;
35 * Concatenate '~/' and @a path.
37 * @return similar to snprintf(), this returns the number of bytes written or
38 * that would be required to write if greater or equal than size.
41 e_user_homedir_concat_len(char *dst, size_t size, const char *path, size_t path_len)
46 return eina_str_join_len(dst, size, '/', _e_user_homedir, _e_user_homedir_len, path, path_len);
50 e_user_homedir_concat(char *dst, size_t size, const char *path)
52 return e_user_homedir_concat_len(dst, size, path, strlen(path));
56 * same as snprintf("~/"fmt, ...).
59 e_user_homedir_snprintf(char *dst, size_t size, const char *fmt, ...)
71 off = _e_user_homedir_len + 1;
72 if (size < _e_user_homedir_len + 2)
76 memcpy(dst, _e_user_homedir, size - 1);
79 ret = off + vsnprintf(dst + off, size - off, fmt, ap);
84 memcpy(dst, _e_user_homedir, _e_user_homedir_len);
85 dst[_e_user_homedir_len] = '/';
87 ret = off + vsnprintf(dst + off, size - off, fmt, ap);
93 * Return the directory where user .desktop files should be stored.
94 * If the directory does not exist, it will be created. If it cannot be
95 * created, a dialog will be displayed an NULL will be returned
98 e_user_desktop_dir_get(void)
100 static char dir[PATH_MAX] = "";
103 snprintf(dir, sizeof(dir), "%s/applications", efreet_data_home_get());
109 * Return the directory where user .icon files should be stored.
110 * If the directory does not exist, it will be created. If it cannot be
111 * created, a dialog will be displayed an NULL will be returned
114 e_user_icon_dir_get(void)
116 static char dir[PATH_MAX] = "";
119 snprintf(dir, sizeof(dir), "%s/icons", efreet_data_home_get());
124 static const char *_e_user_dir = NULL;
125 static size_t _e_user_dir_len = 0;
133 static char dir[PATH_MAX] = "";
134 static char buf[PATH_MAX] = "";
138 char *e_home = getenv("E_HOME");
141 snprintf(buf, sizeof(buf), "%s/e", e_home);
145 snprintf(buf, sizeof(buf), ".e/e");
147 _e_user_dir_len = e_user_homedir_concat(dir, sizeof(dir), buf);
155 * Concatenate '~/.e/e' and @a path.
157 * @return similar to snprintf(), this returns the number of bytes written or
158 * that would be required to write if greater or equal than size.
161 e_user_dir_concat_len(char *dst, size_t size, const char *path, size_t path_len)
166 return eina_str_join_len(dst, size, '/', _e_user_dir, _e_user_dir_len, path, path_len);
170 e_user_dir_concat(char *dst, size_t size, const char *path)
172 return e_user_dir_concat_len(dst, size, path, strlen(path));
176 * same as snprintf("~/.e/e/"fmt, ...).
179 e_user_dir_snprintf(char *dst, size_t size, const char *fmt, ...)
191 off = _e_user_dir_len + 1;
192 if (size < _e_user_dir_len + 2)
196 memcpy(dst, _e_user_dir, size - 1);
197 dst[size - 1] = '\0';
199 ret = off + vsnprintf(dst + off, size - off, fmt, ap);
204 memcpy(dst, _e_user_dir, _e_user_dir_len);
205 dst[_e_user_dir_len] = '/';
207 ret = off + vsnprintf(dst + off, size - off, fmt, ap);