1
0
mirror of https://github.com/falk-werner/webfuse synced 2025-06-13 12:54:15 +00:00

removes default link, if it is broken

This commit is contained in:
Falk Werner 2019-04-14 00:12:49 +02:00
parent 75c7ff4b69
commit aa9a3319d0

View File

@ -34,6 +34,13 @@ static char * wf_impl_filesystem_create_id(void)
return strdup(id); return strdup(id);
} }
static bool wf_impl_filesystem_is_link_broken(char const * path)
{
char buffer[PATH_MAX];
ssize_t count = readlink(path, buffer, PATH_MAX);
return (0 < count);
}
static void wf_impl_filesystem_cleanup( static void wf_impl_filesystem_cleanup(
struct wf_impl_filesystem * filesystem) struct wf_impl_filesystem * filesystem)
{ {
@ -50,6 +57,14 @@ static void wf_impl_filesystem_cleanup(
snprintf(path, PATH_MAX, "%s/%s/%s", session->mount_point, filesystem->user_data.name, filesystem->id); snprintf(path, PATH_MAX, "%s/%s/%s", session->mount_point, filesystem->user_data.name, filesystem->id);
rmdir(path); rmdir(path);
snprintf(path, PATH_MAX, "%s/%s/default", session->mount_point, filesystem->user_data.name);
rmdir(path);
if (wf_impl_filesystem_is_link_broken(path))
{
unlink(path);
// ToDo: recreate link, if any directory exists
}
snprintf(path, PATH_MAX, "%s/%s", session->mount_point, filesystem->user_data.name); snprintf(path, PATH_MAX, "%s/%s", session->mount_point, filesystem->user_data.name);
rmdir(path); rmdir(path);
@ -84,6 +99,10 @@ static bool wf_impl_filesystem_init(
snprintf(path, PATH_MAX, "%s/%s/%s", session->mount_point, name, filesystem->id); snprintf(path, PATH_MAX, "%s/%s/%s", session->mount_point, name, filesystem->id);
mkdir(path, 0755); mkdir(path, 0755);
char defaultPath[PATH_MAX];
snprintf(defaultPath, PATH_MAX, "%s/%s/default", session->mount_point, name);
symlink(filesystem->id, defaultPath);
filesystem->session = fuse_session_new( filesystem->session = fuse_session_new(
&filesystem->args, &filesystem->args,
&filesystem_operations, &filesystem_operations,