summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/web/mongoose.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/web/mongoose.c')
-rw-r--r--src/lib/web/mongoose.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/lib/web/mongoose.c b/src/lib/web/mongoose.c
index f8fa05ea3cd..3b2259fd149 100644
--- a/src/lib/web/mongoose.c
+++ b/src/lib/web/mongoose.c
@@ -5141,3 +5141,28 @@ struct mg_server *mg_create_server(void *server_data, mg_handler_t handler) {
server->event_handler = handler;
return server;
}
+
+#ifdef _WIN32
+static void *mmap(void *addr, int64_t len, int prot, int flags, int fd,
+ int offset) {
+ HANDLE fh = (HANDLE) _get_osfhandle(fd);
+ HANDLE mh = CreateFileMapping(fh, 0, PAGE_READONLY, 0, 0, 0);
+ void *p = MapViewOfFile(mh, FILE_MAP_READ, 0, 0, (size_t) len);
+ CloseHandle(mh);
+ return p;
+}
+#define munmap(x, y) UnmapViewOfFile(x)
+#define MAP_FAILED NULL
+#define MAP_PRIVATE 0
+#define PROT_READ 0
+#else
+#include <sys/mman.h>
+#endif
+
+void *mg_mmap(FILE *fp, size_t size) {
+ return mmap(NULL, size, PROT_READ, MAP_PRIVATE, fileno(fp), 0);
+}
+
+void mg_munmap(void *p, size_t size) {
+ munmap(p, size);
+}