diff --git a/bd/lfs_filebd.c b/bd/lfs_filebd.c index 248a67f3..f6c816db 100644 --- a/bd/lfs_filebd.c +++ b/bd/lfs_filebd.c @@ -10,6 +10,10 @@ #include #include +#ifdef _WIN32 +#include +#endif + int lfs_filebd_createcfg(const struct lfs_config *cfg, const char *path, const struct lfs_filebd_config *bdcfg) { LFS_FILEBD_TRACE("lfs_filebd_createcfg(%p {.context=%p, " @@ -27,7 +31,12 @@ int lfs_filebd_createcfg(const struct lfs_config *cfg, const char *path, bd->cfg = bdcfg; // open file + #ifdef _WIN32 + bd->fd = open(path, O_RDWR | O_CREAT | O_BINARY, 0666); + #else bd->fd = open(path, O_RDWR | O_CREAT, 0666); + #endif + if (bd->fd < 0) { int err = -errno; LFS_FILEBD_TRACE("lfs_filebd_createcfg -> %d", err); @@ -193,7 +202,11 @@ int lfs_filebd_sync(const struct lfs_config *cfg) { LFS_FILEBD_TRACE("lfs_filebd_sync(%p)", (void*)cfg); // file sync lfs_filebd_t *bd = cfg->context; + #ifdef _WIN32 + int err = FlushFileBuffers((HANDLE) _get_osfhandle(fd)) ? 0 : -1; + #else int err = fsync(bd->fd); + #endif if (err) { err = -errno; LFS_FILEBD_TRACE("lfs_filebd_sync -> %d", 0);