# HG changeset patch # User John Tsiombikas # Date 1439086469 -10800 # Node ID 4767e7769c32c659152b3518e662e74f76c118c9 # Parent eb07de55d0e672f3b11a849320f3eb30081a6567 packio-simple has more chances to ever get done diff -r eb07de55d0e6 -r 4767e7769c32 src/memmap.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/memmap.c Sun Aug 09 05:14:29 2015 +0300 @@ -0,0 +1,41 @@ +#include +#include +#include +#include "memmap.h" + +#if defined(__unix__) || defined(__APPLE__) +#include +#include +#include +#include + +int map_file(struct mmfile *mm, const char *fname) +{ + int fd; + struct stat st; + + if((fd = open(fname, O_RDONLY)) == -1) { + fprintf(stderr, "map_file: failed to open %s: %s\n", fname, strerror(errno)); + return -1; + } + fstat(fd, &st); + + if((mm->ptr = mmap(0, st.st_size, PROT_READ, MAP_PRIVATE, fd, 0)) == (void*)-1) { + close(fd); + fprintf(stderr, "map_file: failed to map file %s: %s\n", fname, strerror(errno)); + return -1; + } + mm->size = st.st_size; + + close(fd); + return 0; +} + +void unmap_file(struct mmfile *mm) +{ + munmap(mm->ptr, mm->size); +} + +#else +/* implement on win32 */ +#endif diff -r eb07de55d0e6 -r 4767e7769c32 src/memmap.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/memmap.h Sun Aug 09 05:14:29 2015 +0300 @@ -0,0 +1,12 @@ +#ifndef MEMMAP_H_ +#define MEMMAP_H_ + +struct mmfile { + void *ptr; + unsigned long size; +}; + +int map_file(struct mmfile *mm, const char *fname); +void unmap_file(struct mmfile *mm); + +#endif /* MEMMAP_H_ */ diff -r eb07de55d0e6 -r 4767e7769c32 src/packio.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/packio.c Sun Aug 09 05:14:29 2015 +0300 @@ -0,0 +1,26 @@ +#include +#include +#include +#include +#include "packio_impl.h" + +#define MAGIC "PKIOPKG1" +#define MAXNAME 255 + +struct header { + char magic[8]; + int revision; + int nfiles; +}; + +int pack_load_packfile(struct packfile *pf, const char *fname) +{ + FILE *fp; + struct header *hdr; + + if(!(fp = fopen(fname, "rb"))) { + fprintf(stderr, "failed to open file %s: %s\n", fname, strerror(errno)); + return -1; + } + +} diff -r eb07de55d0e6 -r 4767e7769c32 src/packio_impl.h --- a/src/packio_impl.h Sun Aug 09 03:15:07 2015 +0300 +++ b/src/packio_impl.h Sun Aug 09 05:14:29 2015 +0300 @@ -6,6 +6,18 @@ struct packfile { int rev; /* packfile revision */ struct rbtree *files; + + unsigned char *maddr; + unsigned long msize; + + struct packfile *next; +}; + +#define MAXNAME 255 + +struct fileent { + unsigned long offset, size; + char name[MAXNAME + 1]; }; #endif /* PACKIO_IMPL_H_ */