From 591d42ff673585851d62eb9d7dd3f526d770fea0 Mon Sep 17 00:00:00 2001 From: Andy Green Date: Sun, 7 Nov 2021 07:19:21 +0000 Subject: [PATCH] windows: mingw file type is int --- include/libwebsockets.h | 4 ++++ lib/plat/windows/private-lib-plat-windows.h | 4 ++++ lib/plat/windows/windows-file.c | 17 +++++++++++------ 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/include/libwebsockets.h b/include/libwebsockets.h index 1f437f456..9205bff6c 100644 --- a/include/libwebsockets.h +++ b/include/libwebsockets.h @@ -392,8 +392,12 @@ struct lws; #if defined(_WIN32) #if !defined(LWS_WIN32_HANDLE_TYPES) typedef SOCKET lws_sockfd_type; +#if defined(__MINGW32__) +typedef int lws_filefd_type; +#else typedef HANDLE lws_filefd_type; #endif +#endif #define lws_pollfd pollfd diff --git a/lib/plat/windows/private-lib-plat-windows.h b/lib/plat/windows/private-lib-plat-windows.h index beb5f544d..18d87ac25 100644 --- a/lib/plat/windows/private-lib-plat-windows.h +++ b/lib/plat/windows/private-lib-plat-windows.h @@ -155,7 +155,11 @@ struct lws_fd_hashtable { #endif typedef SOCKET lws_sockfd_type; +#if defined(__MINGW32__) +typedef int lws_filefd_type; +#else typedef HANDLE lws_filefd_type; +#endif #define LWS_WIN32_HANDLE_TYPES LWS_EXTERN struct lws * diff --git a/lib/plat/windows/windows-file.c b/lib/plat/windows/windows-file.c index d768b284d..ba78bc64e 100644 --- a/lib/plat/windows/windows-file.c +++ b/lib/plat/windows/windows-file.c @@ -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;