diff --git a/vfs/vfs.h b/vfs/vfs.h index 69b66a44f..a4ffd7b0d 100644 --- a/vfs/vfs.h +++ b/vfs/vfs.h @@ -58,24 +58,22 @@ static inline char *vfs_translate_path_n (const char *path) static inline char* vfs_canon_and_translate(const char* path) { - char buf[MC_MAXPATHLEN]; + char *ret_str; if (path == NULL) - return strdup(""); + return g_strdup(""); if (path[0] == PATH_SEP) { - char cwd[MC_MAXPATHLEN]; - if (getcwd (cwd, sizeof (cwd))) - snprintf (buf, sizeof (buf), "%s" PATH_SEP_STR "%s", cwd, path); - else - return strdup ("[MC_MAXPATHLEN TOO SMALL]"); + char *curr_dir = g_get_current_dir(); + ret_str = g_strdup_printf("%s" PATH_SEP_STR "%s", curr_dir, path); + g_free(curr_dir); } else - snprintf (buf, sizeof (buf), "%s", path); + ret_str = g_strdup(path); - canonicalize_pathname (buf); - return strdup (buf); + canonicalize_pathname (ret_str); + return ret_str; } #endif /* ENABLE_VFS */