|
|
@@ -10,6 +10,10 @@
|
|
|
#include <unistd.h>
|
|
|
#include <errno.h>
|
|
|
|
|
|
+#ifdef _WIN32
|
|
|
+#include <windows.h>
|
|
|
+#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);
|