#include #include #include #include #include #include #include "mapping.h" int map_file(const char* filename, void **addr, size_t *size) { struct stat info; int error = 0; int fd; error = stat(filename, &info); if (!error) { *size = info.st_size; if (info.st_size > 0) { fd = open(filename, O_RDWR); if (fd >= 0) { *addr = mmap(NULL, *size, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0); if (*addr == MAP_FAILED) error = -1; close(fd); } else error = fd; } else *addr = NULL; } return error; }