mirror of
https://github.com/winfsp/winfsp.git
synced 2025-06-07 20:42:09 -05:00
tst: passthrough-fuse: setcrtime
This commit is contained in:
parent
48ad297df1
commit
7c11a45e6e
@ -259,6 +259,15 @@ static int ptfs_utimens(const char *path, const struct fuse_timespec tv[2])
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(_WIN64) || defined(_WIN32)
|
||||||
|
static int ptfs_setcrtime(const char *path, const struct fuse_timespec *tv)
|
||||||
|
{
|
||||||
|
ptfs_impl_fullpath(path);
|
||||||
|
|
||||||
|
return -1 != setcrtime(path, tv) ? 0 : -errno;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(FSP_FUSE_USE_STAT_EX)
|
#if defined(FSP_FUSE_USE_STAT_EX)
|
||||||
static int ptfs_chflags(const char *path, uint32_t flags)
|
static int ptfs_chflags(const char *path, uint32_t flags)
|
||||||
{
|
{
|
||||||
@ -297,6 +306,9 @@ static struct fuse_operations ptfs_ops =
|
|||||||
#if defined(PTFS_UTIMENS)
|
#if defined(PTFS_UTIMENS)
|
||||||
.utimens = ptfs_utimens,
|
.utimens = ptfs_utimens,
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(_WIN64) || defined(_WIN32)
|
||||||
|
.setcrtime = ptfs_setcrtime,
|
||||||
|
#endif
|
||||||
#if defined(FSP_FUSE_USE_STAT_EX)
|
#if defined(FSP_FUSE_USE_STAT_EX)
|
||||||
.chflags = ptfs_chflags,
|
.chflags = ptfs_chflags,
|
||||||
#endif
|
#endif
|
||||||
|
@ -378,6 +378,26 @@ int utimensat(int dirfd, const char *path, const struct fuse_timespec times[2])
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int setcrtime(const char *path, const struct fuse_timespec *tv)
|
||||||
|
{
|
||||||
|
HANDLE h = CreateFileA(path,
|
||||||
|
FILE_WRITE_ATTRIBUTES, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
|
||||||
|
0,
|
||||||
|
OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0);
|
||||||
|
if (INVALID_HANDLE_VALUE == h)
|
||||||
|
return error();
|
||||||
|
|
||||||
|
UINT64 CreationTime;
|
||||||
|
FspPosixUnixTimeToFileTime((void *)tv, &CreationTime);
|
||||||
|
|
||||||
|
int res = SetFileTime(h,
|
||||||
|
(PFILETIME)&CreationTime, 0, 0) ? 0 : error();
|
||||||
|
|
||||||
|
CloseHandle(h);
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
int unlink(const char *path)
|
int unlink(const char *path)
|
||||||
{
|
{
|
||||||
if (!DeleteFileA(path))
|
if (!DeleteFileA(path))
|
||||||
|
@ -55,6 +55,7 @@ int lchflags(const char *path, uint32_t flags);
|
|||||||
int truncate(const char *path, fuse_off_t size);
|
int truncate(const char *path, fuse_off_t size);
|
||||||
int utime(const char *path, const struct fuse_utimbuf *timbuf);
|
int utime(const char *path, const struct fuse_utimbuf *timbuf);
|
||||||
int utimensat(int dirfd, const char *path, const struct fuse_timespec times[2]);
|
int utimensat(int dirfd, const char *path, const struct fuse_timespec times[2]);
|
||||||
|
int setcrtime(const char *path, const struct fuse_timespec *tv);
|
||||||
int unlink(const char *path);
|
int unlink(const char *path);
|
||||||
int rename(const char *oldpath, const char *newpath);
|
int rename(const char *oldpath, const char *newpath);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user