Skip to content

Commit 687e89c

Browse files
kbleesdscho
authored andcommitted
Win32: make FILETIME conversion functions public
We will use them in the upcoming "FSCache" patches (to accelerate sequential lstat() calls). Signed-off-by: Karsten Blees <[email protected]> Signed-off-by: Johannes Schindelin <[email protected]>
1 parent 2670086 commit 687e89c

File tree

2 files changed

+18
-18
lines changed

2 files changed

+18
-18
lines changed

compat/mingw.c

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -858,24 +858,6 @@ int mingw_chmod(const char *filename, int mode)
858858
return _wchmod(wfilename, mode);
859859
}
860860

861-
/*
862-
* The unit of FILETIME is 100-nanoseconds since January 1, 1601, UTC.
863-
* Returns the 100-nanoseconds ("hekto nanoseconds") since the epoch.
864-
*/
865-
static inline long long filetime_to_hnsec(const FILETIME *ft)
866-
{
867-
long long winTime = ((long long)ft->dwHighDateTime << 32) + ft->dwLowDateTime;
868-
/* Windows to Unix Epoch conversion */
869-
return winTime - 116444736000000000LL;
870-
}
871-
872-
static inline void filetime_to_timespec(const FILETIME *ft, struct timespec *ts)
873-
{
874-
long long hnsec = filetime_to_hnsec(ft);
875-
ts->tv_sec = (time_t)(hnsec / 10000000);
876-
ts->tv_nsec = (hnsec % 10000000) * 100;
877-
}
878-
879861
/**
880862
* Verifies that safe_create_leading_directories() would succeed.
881863
*/

compat/mingw.h

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,17 @@ static inline int getrlimit(int resource, struct rlimit *rlp)
361361
return 0;
362362
}
363363

364+
/*
365+
* The unit of FILETIME is 100-nanoseconds since January 1, 1601, UTC.
366+
* Returns the 100-nanoseconds ("hekto nanoseconds") since the epoch.
367+
*/
368+
static inline long long filetime_to_hnsec(const FILETIME *ft)
369+
{
370+
long long winTime = ((long long)ft->dwHighDateTime << 32) + ft->dwLowDateTime;
371+
/* Windows to Unix Epoch conversion */
372+
return winTime - 116444736000000000LL;
373+
}
374+
364375
/*
365376
* Use mingw specific stat()/lstat()/fstat() implementations on Windows,
366377
* including our own struct stat with 64 bit st_size and nanosecond-precision
@@ -377,6 +388,13 @@ struct timespec {
377388
#endif
378389
#endif
379390

391+
static inline void filetime_to_timespec(const FILETIME *ft, struct timespec *ts)
392+
{
393+
long long hnsec = filetime_to_hnsec(ft);
394+
ts->tv_sec = (time_t)(hnsec / 10000000);
395+
ts->tv_nsec = (hnsec % 10000000) * 100;
396+
}
397+
380398
struct mingw_stat {
381399
_dev_t st_dev;
382400
_ino_t st_ino;

0 commit comments

Comments
 (0)