Hash :
9f54fe48
Author :
Date :
2010-12-23T00:15:09
Remove git_errno It was not being used by any methods (only by malloc and calloc), and since it needs to be TLS, it cannot be exported on DLLs on Windows. Burn it with fire. The API always returns error codes! Signed-off-by: Vicent Marti <tanoku@gmail.com>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 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
#include "map.h"
#include <sys/mman.h>
#include <errno.h>
int git__mmap(git_map *out, size_t len, int prot, int flags, int fd, off_t offset)
{
int mprot = 0;
int mflag = 0;
assert((out != NULL) && (len > 0));
if ((out == NULL) || (len == 0)) {
errno = EINVAL;
return GIT_ERROR;
}
out->data = NULL;
out->len = 0;
if (prot & GIT_PROT_WRITE)
mprot = PROT_WRITE;
else if (prot & GIT_PROT_READ)
mprot = PROT_READ;
else {
errno = EINVAL;
return GIT_ERROR;
}
if ((flags & GIT_MAP_TYPE) == GIT_MAP_SHARED)
mflag = MAP_SHARED;
else if ((flags & GIT_MAP_TYPE) == GIT_MAP_PRIVATE)
mflag = MAP_PRIVATE;
if (flags & GIT_MAP_FIXED) {
errno = EINVAL;
return GIT_ERROR;
}
out->data = mmap(NULL, len, mprot, mflag, fd, offset);
if (!out->data || out->data == MAP_FAILED)
return GIT_EOSERR;
out->len = len;
return GIT_SUCCESS;
}
int git__munmap(git_map *map)
{
assert(map != NULL);
if (!map)
return GIT_ERROR;
munmap(map->data, map->len);
return GIT_SUCCESS;
}