fmap: use the vtable for win32 code too

remotes/push_mirror/fmapify
Török Edvin 14 years ago
parent d2bfc86ae1
commit 06db9d7de6
  1. 40
      libclamav/fmap.c

@ -526,6 +526,12 @@ static const void *handle_gets(fmap_t *m, char *dst, size_t *at, size_t max_len)
/* vvvvv WIN32 STUFF BELOW vvvvv */
static void unmap_win32(fmap_t *m);
static const void *mem_need(fmap_t *m, size_t at, size_t len);
static void mem_unneed_off(fmap_t *m, size_t at, size_t len);
static const void *mem_need_offstr(fmap_t *m, size_t at, size_t len_hint);
static const void *mem_gets(fmap_t *m, char *dst, size_t *at, size_t max_len);
fmap_t *fmap_check_empty(int fd, off_t offset, size_t len, int *empty) { /* WIN32 */
unsigned int pages, mapsz, hdrsz;
unsigned short dumb = 1;
@ -586,16 +592,21 @@ fmap_t *fmap_check_empty(int fd, off_t offset, size_t len, int *empty) { /* WIN3
m->pgsz = pgsz;
m->paged = 0;
m->dont_cache_flag = 0;
m->unmap = unmap_win32;
m->need = mem_need;
m->need_offstr = mem_need_offstr;
m->gets = mem_gets;
m->unneed_off = mem_unneed_off;
return m;
}
void funmap(fmap_t *m) { /* WIN32 */
static void unmap_win32(fmap_t *m) { /* WIN32 */
UnmapViewOfFile(m->data);
CloseHandle(m->mh);
free((void *)m);
}
static void *fmap_need(fmap_t *m, size_t at, size_t len) { /* WIN32 */
static const void *mem_need(fmap_t *m, size_t at, size_t len) { /* WIN32 */
if(!CLI_ISCONTAINED(0, m->len, at, len))
return NULL;
@ -604,24 +615,10 @@ static void *fmap_need(fmap_t *m, size_t at, size_t len) { /* WIN32 */
return (void *)((char *)m->data + at);
}
void *fmap_need_off(fmap_t *m, size_t at, size_t len) { /* WIN32 */
return fmap_need(m, at, len);
}
void *fmap_need_off_once(fmap_t *m, size_t at, size_t len) { /* WIN32 */
return fmap_need(m, at, len);
}
void *fmap_need_ptr(fmap_t *m, void *ptr, size_t len) { /* WIN32 */
return fmap_need(m, (char *)ptr - (char *)m->data, len);
}
void *fmap_need_ptr_once(fmap_t *m, void *ptr, size_t len) { /* WIN32 */
return fmap_need(m, (char *)ptr - (char *)m->data, len);
}
void fmap_unneed_off(fmap_t *m, size_t at, size_t len) { /* WIN32 */
}
void fmap_unneed_ptr(fmap_t *m, void *ptr, size_t len) { /* WIN32 */
static void mem_unneed_off(fmap_t *m, size_t at, size_t len) {}
}
void *fmap_need_offstr(fmap_t *m, size_t at, size_t len_hint) { /* WIN32 */
static const void *mem_need_offstr(fmap_t *m, size_t at, size_t len_hint) {
char *ptr = (char *)m->data + at;
if(!len_hint || len_hint > m->len - at)
@ -635,12 +632,7 @@ void *fmap_need_offstr(fmap_t *m, size_t at, size_t len_hint) { /* WIN32 */
return NULL;
}
void *fmap_need_str(fmap_t *m, void *ptr, size_t len_hint) { /* WIN32 */
size_t at = (char *)ptr - (char *)m->data;
return fmap_need_offstr(m, at, len_hint);
}
void *fmap_gets(fmap_t *m, char *dst, size_t *at, size_t max_len) { /* WIN32 */
static const void *mem_gets(fmap_t *m, char *dst, size_t *at, size_t max_len) {
char *src = (char *)m->data + *at, *endptr = NULL;
size_t len = MIN(max_len-1, m->len - *at);

Loading…
Cancel
Save