[PATCH 6/7] server: Track separately implicit and explicit file disposition.
Dmitry Timoshkov
dmitry at baikal.ru
Thu Sep 27 03:30:59 CDT 2018
This simplifies next patch.
Signed-off-by: Dmitry Timoshkov <dmitry at baikal.ru>
---
server/fd.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/server/fd.c b/server/fd.c
index 65ff087f18..7069938e6f 100644
--- a/server/fd.c
+++ b/server/fd.c
@@ -166,7 +166,7 @@ struct closed_fd
{
struct list entry; /* entry in inode closed list */
int unix_fd; /* the unix file descriptor */
- int unlink; /* whether to unlink on close */
+ int unlink; /* whether to unlink on close: -1 - implicit FILE_DELETE_ON_CLOSE, 1 - explicit disposition */
char *unix_name; /* name to unlink on close, points to parent fd unix_name */
};
@@ -1866,7 +1866,7 @@ struct fd *open_fd( struct fd *root, const char *name, int flags, mode_t *mode,
goto error;
}
- fd->closed->unlink = (options & FILE_DELETE_ON_CLOSE) != 0;
+ fd->closed->unlink = (options & FILE_DELETE_ON_CLOSE) ? -1 : 0;
if (flags & O_TRUNC)
{
if (S_ISDIR(st.st_mode))
@@ -2254,7 +2254,9 @@ static void set_fd_disposition( struct fd *fd, int unlink )
return;
}
- fd->closed->unlink = unlink || (fd->options & FILE_DELETE_ON_CLOSE);
+ fd->closed->unlink = unlink != 0;
+ if (fd->options & FILE_DELETE_ON_CLOSE)
+ fd->closed->unlink = -1;
}
/* set new name for the fd */
--
2.17.1
More information about the wine-devel
mailing list