Blame view
tools/mingw_support.c
2.47 KB
83d290c56 SPDX: Convert all... |
1 |
// SPDX-License-Identifier: GPL-2.0+ |
2f8d396b9 Add support for b... |
2 3 4 5 6 7 8 |
/* * Copyright 2008 Extreme Engineering Solutions, Inc. * * mmap/munmap implementation derived from: * Clamav Native Windows Port : mmap win32 compatibility layer * Copyright (c) 2005-2006 Gianluigi Tiesi <sherpya@netfarm.it> * Parts by Kees Zeelenberg <kzlg@users.sourceforge.net> (LibGW32C) |
2f8d396b9 Add support for b... |
9 10 11 12 13 |
*/ #include "mingw_support.h" #include <stdio.h> #include <stdint.h> |
faf36c143 Fix mingw tools b... |
14 |
#include <string.h> |
2f8d396b9 Add support for b... |
15 |
#include <errno.h> |
faf36c143 Fix mingw tools b... |
16 |
#include <assert.h> |
2f8d396b9 Add support for b... |
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
#include <io.h> int fsync(int fd) { return _commit(fd); } void *mmap(void *addr, size_t len, int prot, int flags, int fd, int offset) { void *map = NULL; HANDLE handle = INVALID_HANDLE_VALUE; DWORD cfm_flags = 0, mvf_flags = 0; switch (prot) { case PROT_READ | PROT_WRITE: cfm_flags = PAGE_READWRITE; mvf_flags = FILE_MAP_ALL_ACCESS; break; case PROT_WRITE: cfm_flags = PAGE_READWRITE; mvf_flags = FILE_MAP_WRITE; break; case PROT_READ: cfm_flags = PAGE_READONLY; mvf_flags = FILE_MAP_READ; break; default: return MAP_FAILED; } handle = CreateFileMappingA((HANDLE) _get_osfhandle(fd), NULL, cfm_flags, HIDWORD(len), LODWORD(len), NULL); if (!handle) return MAP_FAILED; map = MapViewOfFile(handle, mvf_flags, HIDWORD(offset), LODWORD(offset), len); CloseHandle(handle); if (!map) return MAP_FAILED; return map; } int munmap(void *addr, size_t len) { if (!UnmapViewOfFile(addr)) return -1; return 0; } |
faf36c143 Fix mingw tools b... |
69 70 71 72 |
/* Reentrant string tokenizer. Generic version. Copyright (C) 1991,1996-1999,2001,2004,2007 Free Software Foundation, Inc. This file is part of the GNU C Library. |
1a4596601 Add GPL-2.0+ SPDX... |
73 |
*/ |
faf36c143 Fix mingw tools b... |
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
/* Parse S into tokens separated by characters in DELIM. If S is NULL, the saved pointer in SAVE_PTR is used as the next starting point. For example: char s[] = "-abc-=-def"; char *sp; x = strtok_r(s, "-", &sp); // x = "abc", sp = "=-def" x = strtok_r(NULL, "-=", &sp); // x = "def", sp = NULL x = strtok_r(NULL, "=", &sp); // x = NULL // s = "abc\0-def\0" */ char *strtok_r(char *s, const char *delim, char **save_ptr) { char *token; if (s == NULL) s = *save_ptr; /* Scan leading delimiters. */ s += strspn(s, delim); if (*s == '\0') { *save_ptr = s; return NULL; } /* Find the end of the token. */ token = s; s = strpbrk (token, delim); if (s == NULL) { /* This token finishes the string. */ *save_ptr = memchr(token, '\0', strlen(token)); } else { /* Terminate the token and make *SAVE_PTR point past it. */ *s = '\0'; *save_ptr = s + 1; } return token; } |
64b150213 getline: split ou... |
112 |
#include "getline.c" |