--- lib/vfs/path.c.orig 2024-08-23 13:22:35.000000000 -0400 +++ lib/vfs/path.c 2024-08-31 14:35:28.694195900 -0400 @@ -147,12 +147,20 @@ if (!IS_PATH_SEP (*path)) { - /* Relative to current directory */ - char *local; + if (path[0] != NULL && isalpha (path[0]) && + path[1] != NULL && path[1] == ':' && + IS_PATH_SEP (path[2])) + { + /* Win32 absolute path */ + local = g_strdup (path); + /* Transform "X:/" into "/X/" */ + local[1] = local[0]; + local[0] = local[2]; + } #ifdef HAVE_CHARSET - if (g_str_has_prefix (path, VFS_ENCODING_PREFIX)) + else if (g_str_has_prefix (path, VFS_ENCODING_PREFIX)) { /* encoding prefix placed at start of string without the leading slash @@ -160,9 +168,11 @@ */ local = mc_build_filename (PATH_SEP_STR, path, (char *) NULL); } - else #endif + else { + /* Relative to current directory */ + const char *curr_dir; curr_dir = vfs_get_current_dir ();