summaryrefslogtreecommitdiff
path: root/dbutil.c
diff options
context:
space:
mode:
Diffstat (limited to 'dbutil.c')
-rw-r--r--dbutil.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/dbutil.c b/dbutil.c
index 4669304..d87835b 100644
--- a/dbutil.c
+++ b/dbutil.c
@@ -613,15 +613,16 @@ int m_str_to_uint(const char* str, unsigned int *val) {
}
}
-/* Returns malloced path. Only expands ~ in first character */
-char * expand_tilde(const char *inpath) {
+/* Returns malloced path. inpath beginning with '/' is returned as-is,
+otherwise home directory is prepended */
+char * expand_homedir_path(const char *inpath) {
struct passwd *pw = NULL;
- if (inpath[0] == '~') {
+ if (inpath[0] != '/') {
pw = getpwuid(getuid());
if (pw && pw->pw_dir) {
- int len = strlen(inpath) + strlen(pw->pw_dir) + 1;
+ int len = strlen(inpath) + strlen(pw->pw_dir) + 2;
char *buf = m_malloc(len);
- snprintf(buf, len, "%s/%s", pw->pw_dir, &inpath[1]);
+ snprintf(buf, len, "%s/%s", pw->pw_dir, inpath);
return buf;
}
}