chansrv FUSE fixes
1) [Regression] If the specified mountpoint is not immediately below an
existing directory, the directory is not created.
2) The message to ask the user to unmount an existing mounted directory
has been moved to the right place.
(cherry picked from commit e0a1339b34
)
This commit is contained in:
parent
8c614cdf9c
commit
dcaa31ef16
@ -540,10 +540,25 @@ xfuse_init(void)
|
||||
return -1;
|
||||
}
|
||||
|
||||
g_snprintf(g_fuse_clipboard_path, 255, "%s/.clipboard", g_fuse_root_path);
|
||||
g_snprintf(g_fuse_clipboard_path, sizeof(g_fuse_clipboard_path),
|
||||
"%s/.clipboard", g_fuse_root_path);
|
||||
|
||||
/* if FUSE mount point does not exist, create it */
|
||||
if (!g_directory_exist(g_fuse_root_path))
|
||||
{
|
||||
(void)g_create_path(g_fuse_root_path);
|
||||
if (!g_create_dir(g_fuse_root_path))
|
||||
{
|
||||
LOG(LOG_LEVEL_ERROR, "mkdir %s failed (%s)",
|
||||
g_fuse_root_path, g_get_strerror());
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
/* Get the characteristics of the parent directory of the FUSE mount
|
||||
* point. Used by xfuse_path_in_xfuse_fs() */
|
||||
g_fuse_root_parent_dev = -1;
|
||||
g_fuse_root_parent_ino = -1;
|
||||
p = (char *)g_strrchr(g_fuse_root_path, '/');
|
||||
if (p != NULL)
|
||||
{
|
||||
@ -554,11 +569,6 @@ xfuse_init(void)
|
||||
g_fuse_root_parent_ino = g_file_get_inode_num(g_fuse_root_path);
|
||||
*p = '/';
|
||||
}
|
||||
else
|
||||
{
|
||||
g_fuse_root_parent_dev = -1;
|
||||
g_fuse_root_parent_ino = -1;
|
||||
}
|
||||
|
||||
if (g_fuse_root_parent_dev == -1 || g_fuse_root_parent_ino == -1)
|
||||
{
|
||||
@ -568,18 +578,6 @@ xfuse_init(void)
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* if FUSE mount point does not exist, create it */
|
||||
if (!g_directory_exist(g_fuse_root_path))
|
||||
{
|
||||
(void)g_create_path(g_fuse_root_path);
|
||||
if (!g_create_dir(g_fuse_root_path))
|
||||
{
|
||||
LOG(LOG_LEVEL_ERROR, "mkdir %s failed. If %s is already mounted, you must "
|
||||
"first unmount it", g_fuse_root_path, g_fuse_root_path);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
/* setup xrdp file system */
|
||||
if (xfuse_init_xrdp_fs())
|
||||
{
|
||||
@ -906,14 +904,16 @@ static int xfuse_init_lib(struct fuse_args *args)
|
||||
{
|
||||
if (fuse_parse_cmdline(args, &g_mount_point, 0, 0) < 0)
|
||||
{
|
||||
LOG_DEVEL(LOG_LEVEL_ERROR, "fuse_parse_cmdline() failed");
|
||||
LOG(LOG_LEVEL_ERROR, "fuse_parse_cmdline() failed");
|
||||
fuse_opt_free_args(args);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if ((g_ch = fuse_mount(g_mount_point, args)) == 0)
|
||||
{
|
||||
LOG_DEVEL(LOG_LEVEL_ERROR, "fuse_mount() failed");
|
||||
LOG(LOG_LEVEL_ERROR, "FUSE mount on %s failed."
|
||||
" If %s is already mounted, you must first unmount it",
|
||||
g_mount_point, g_mount_point);
|
||||
fuse_opt_free_args(args);
|
||||
return -1;
|
||||
}
|
||||
@ -921,7 +921,7 @@ static int xfuse_init_lib(struct fuse_args *args)
|
||||
g_se = fuse_lowlevel_new(args, &g_xfuse_ops, sizeof(g_xfuse_ops), 0);
|
||||
if (g_se == 0)
|
||||
{
|
||||
LOG_DEVEL(LOG_LEVEL_ERROR, "fuse_lowlevel_new() failed");
|
||||
LOG(LOG_LEVEL_ERROR, "fuse_lowlevel_new() failed");
|
||||
fuse_unmount(g_mount_point, g_ch);
|
||||
g_ch = 0;
|
||||
fuse_opt_free_args(args);
|
||||
|
Loading…
Reference in New Issue
Block a user