diff options
Diffstat (limited to 'src/fileops.c')
| -rw-r--r-- | src/fileops.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/fileops.c b/src/fileops.c index 16b9dc520..f494e4772 100644 --- a/src/fileops.c +++ b/src/fileops.c @@ -1,5 +1,6 @@ #include "common.h" #include "fileops.h" +#include <sys/mman.h> int gitfo_open(const char *path, int flags) { @@ -106,6 +107,20 @@ void gitfo_free_buf(gitfo_buf *obj) obj->data = NULL; } +int gitfo_map_ro(gitfo_map *out, git_file fd, off_t begin, size_t len) +{ + out->data = mmap(NULL, len, PROT_READ, MAP_SHARED, fd, begin); + if (out->data == (void*)-1) + return git_os_error(); + out->len = len; + return GIT_SUCCESS; +} + +void gitfo_free_map(gitfo_map *out) +{ + munmap(out->data, out->len); +} + /* cached diskio */ struct gitfo_cache { git_file fd; |
