aboutsummaryrefslogtreecommitdiff
path: root/lib/plat/windows/windows-file.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/plat/windows/windows-file.c')
-rw-r--r--lib/plat/windows/windows-file.c19
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;