diff --git a/tst/passthrough-fuse/passthrough-fuse.c b/tst/passthrough-fuse/passthrough-fuse.c index c8ae9409..1696cd72 100644 --- a/tst/passthrough-fuse/passthrough-fuse.c +++ b/tst/passthrough-fuse/passthrough-fuse.c @@ -206,7 +206,7 @@ static int ptfs_create(const char *path, fuse_mode_t mode, struct fuse_file_info ptfs_impl_fullpath(path); int fd; - return -1 != (fd = open(path, O_CREAT | O_EXCL, mode)) ? (fi_setfd(fi, fd), 0) : -errno; + return -1 != (fd = open(path, fi->flags, mode)) ? (fi_setfd(fi, fd), 0) : -errno; } static int ptfs_ftruncate(const char *path, fuse_off_t off, struct fuse_file_info *fi) diff --git a/tst/passthrough-fuse/winposix.c b/tst/passthrough-fuse/winposix.c index 29ec5094..f0d55cb5 100644 --- a/tst/passthrough-fuse/winposix.c +++ b/tst/passthrough-fuse/winposix.c @@ -159,7 +159,7 @@ int fstat(int fd, struct fuse_stat *stbuf) LastWriteTime = ((PLARGE_INTEGER)(&FileInfo.ftLastWriteTime))->QuadPart - 116444736000000000; memset(stbuf, 0, sizeof *stbuf); - stbuf->st_mode = 0755 | + stbuf->st_mode = 0777 | ((FileInfo.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ? 0040000/* S_IFDIR */ : 0); stbuf->st_nlink = 1; stbuf->st_size = ((UINT64)FileInfo.nFileSizeHigh << 32) | ((UINT64)FileInfo.nFileSizeLow);