diff options
Diffstat (limited to 'lib/plat/windows/windows-file.c')
-rw-r--r-- | lib/plat/windows/windows-file.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/lib/plat/windows/windows-file.c b/lib/plat/windows/windows-file.c index d768b284..27b0a9cc 100644 --- a/lib/plat/windows/windows-file.c +++ b/lib/plat/windows/windows-file.c @@ -50,7 +50,7 @@ _lws_plat_file_open(const struct lws_plat_file_ops *fops, const char *filename, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); } - if (ret == LWS_INVALID_FILE) + if (ret == NULL) goto bail; fop_fd = malloc(sizeof(*fop_fd)); @@ -58,8 +58,13 @@ _lws_plat_file_open(const struct lws_plat_file_ops *fops, const char *filename, goto bail; fop_fd->fops = fops; +#if defined(__MINGW32__) + /* we use filesystem_priv */ + fop_fd->fd = (int)(intptr_t)ret; +#else fop_fd->fd = ret; - fop_fd->filesystem_priv = NULL; /* we don't use it */ +#endif + fop_fd->filesystem_priv = ret; fop_fd->flags = *flags; fop_fd->len = GetFileSize(ret, NULL); if(GetFileSizeEx(ret, &llFileSize)) @@ -76,7 +81,7 @@ bail: int _lws_plat_file_close(lws_fop_fd_t *fop_fd) { - HANDLE fd = (*fop_fd)->fd; + HANDLE fd = (*fop_fd)->filesystem_priv; free(*fop_fd); *fop_fd = NULL; @@ -92,7 +97,7 @@ _lws_plat_file_seek_cur(lws_fop_fd_t fop_fd, lws_fileofs_t offset) LARGE_INTEGER l; l.QuadPart = offset; - if (!SetFilePointerEx((HANDLE)fop_fd->fd, l, NULL, FILE_CURRENT)) + if (!SetFilePointerEx((HANDLE)fop_fd->filesystem_priv, l, NULL, FILE_CURRENT)) { lwsl_err("error seeking from cur %ld, offset %ld\n", (long)fop_fd->pos, (long)offset); return -1; @@ -101,7 +106,7 @@ _lws_plat_file_seek_cur(lws_fop_fd_t fop_fd, lws_fileofs_t offset) LARGE_INTEGER zero; zero.QuadPart = 0; LARGE_INTEGER newPos; - if (!SetFilePointerEx((HANDLE)fop_fd->fd, zero, &newPos, FILE_CURRENT)) + if (!SetFilePointerEx((HANDLE)fop_fd->filesystem_priv, zero, &newPos, FILE_CURRENT)) { lwsl_err("error seeking from cur %ld, offset %ld\n", (long)fop_fd->pos, (long)offset); return -1; @@ -117,7 +122,7 @@ _lws_plat_file_read(lws_fop_fd_t fop_fd, lws_filepos_t *amount, { DWORD _amount; - if (!ReadFile((HANDLE)fop_fd->fd, buf, (DWORD)len, &_amount, NULL)) { + if (!ReadFile((HANDLE)fop_fd->filesystem_priv, buf, (DWORD)len, &_amount, NULL)) { *amount = 0; return 1; @@ -135,7 +140,7 @@ _lws_plat_file_write(lws_fop_fd_t fop_fd, lws_filepos_t *amount, { DWORD _amount; - if (!WriteFile((HANDLE)fop_fd->fd, buf, (DWORD)len, &_amount, NULL)) { + if (!WriteFile((HANDLE)fop_fd->filesystem_priv, buf, (DWORD)len, &_amount, NULL)) { *amount = 0; return 1; |