mirror of
https://github.com/winfsp/winfsp.git
synced 2025-06-07 20:42:09 -05:00
dll: fuse: fsp_fuse_notify
Correctly compute Windows change notification filter and action from FUSE change notification action.
This commit is contained in:
parent
d5ab701e3c
commit
cd21d26b93
@ -655,7 +655,7 @@ FSP_FUSE_API int fsp_fuse_notify(struct fsp_fuse_env *env,
|
|||||||
else if (action & FSP_FUSE_NOTIFY_CREATE)
|
else if (action & FSP_FUSE_NOTIFY_CREATE)
|
||||||
{
|
{
|
||||||
NotifyInfo.V.Filter = FILE_NOTIFY_CHANGE_FILE_NAME;
|
NotifyInfo.V.Filter = FILE_NOTIFY_CHANGE_FILE_NAME;
|
||||||
NotifyInfo.V.Action = FILE_ACTION_REMOVED;
|
NotifyInfo.V.Action = FILE_ACTION_ADDED;
|
||||||
}
|
}
|
||||||
else if (action & FSP_FUSE_NOTIFY_UNLINK)
|
else if (action & FSP_FUSE_NOTIFY_UNLINK)
|
||||||
{
|
{
|
||||||
@ -665,26 +665,30 @@ FSP_FUSE_API int fsp_fuse_notify(struct fsp_fuse_env *env,
|
|||||||
|
|
||||||
if (action & (FSP_FUSE_NOTIFY_CHMOD | FSP_FUSE_NOTIFY_CHOWN))
|
if (action & (FSP_FUSE_NOTIFY_CHMOD | FSP_FUSE_NOTIFY_CHOWN))
|
||||||
{
|
{
|
||||||
NotifyInfo.V.Filter = FILE_NOTIFY_CHANGE_SECURITY;
|
NotifyInfo.V.Filter |= FILE_NOTIFY_CHANGE_SECURITY;
|
||||||
NotifyInfo.V.Action = FILE_ACTION_MODIFIED;
|
if (0 == NotifyInfo.V.Action)
|
||||||
|
NotifyInfo.V.Action = FILE_ACTION_MODIFIED;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (action & FSP_FUSE_NOTIFY_UTIME)
|
if (action & FSP_FUSE_NOTIFY_UTIME)
|
||||||
{
|
{
|
||||||
NotifyInfo.V.Filter = FILE_NOTIFY_CHANGE_LAST_ACCESS | FILE_NOTIFY_CHANGE_LAST_WRITE;
|
NotifyInfo.V.Filter |= FILE_NOTIFY_CHANGE_LAST_ACCESS | FILE_NOTIFY_CHANGE_LAST_WRITE;
|
||||||
NotifyInfo.V.Action = FILE_ACTION_MODIFIED;
|
if (0 == NotifyInfo.V.Action)
|
||||||
|
NotifyInfo.V.Action = FILE_ACTION_MODIFIED;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (action & FSP_FUSE_NOTIFY_CHFLAGS)
|
if (action & FSP_FUSE_NOTIFY_CHFLAGS)
|
||||||
{
|
{
|
||||||
NotifyInfo.V.Filter = FILE_NOTIFY_CHANGE_ATTRIBUTES;
|
NotifyInfo.V.Filter |= FILE_NOTIFY_CHANGE_ATTRIBUTES;
|
||||||
NotifyInfo.V.Action = FILE_ACTION_MODIFIED;
|
if (0 == NotifyInfo.V.Action)
|
||||||
|
NotifyInfo.V.Action = FILE_ACTION_MODIFIED;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (action & FSP_FUSE_NOTIFY_TRUNCATE)
|
if (action & FSP_FUSE_NOTIFY_TRUNCATE)
|
||||||
{
|
{
|
||||||
NotifyInfo.V.Filter = FILE_NOTIFY_CHANGE_SIZE;
|
NotifyInfo.V.Filter |= FILE_NOTIFY_CHANGE_SIZE;
|
||||||
NotifyInfo.V.Action = FILE_ACTION_MODIFIED;
|
if (0 == NotifyInfo.V.Action)
|
||||||
|
NotifyInfo.V.Action = FILE_ACTION_MODIFIED;
|
||||||
}
|
}
|
||||||
|
|
||||||
Result = FspFileSystemNotify(f->FileSystem, &NotifyInfo.V, NotifyInfo.V.Size);
|
Result = FspFileSystemNotify(f->FileSystem, &NotifyInfo.V, NotifyInfo.V.Size);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user