#pragma once #include "lcompat.h" #include #include #if HAS_POSIX #include #endif /* HAS_POSIX */ struct Packfile_s; typedef struct Packfile_s Packfile_t; struct Packcache_s; typedef struct Packcache_s Packcache_t; /* * Packcache manipulation. */ Packcache_t* pack_openCache(const char* packfile); void pack_closeCache(Packcache_t* cache); Packfile_t* pack_openFromCache(Packcache_t* cache, const char* filename); /* Packfile manipulation. Automatically allocated and freed (with open and close). */ /* Basic. */ int pack_check(const char* filename); int pack_files(const char* outfile, const char** infiles, const uint32_t nfiles); Packfile_t* pack_open(const char* packfile, const char* filename); ssize_t pack_read(Packfile_t* file, void* buf, const size_t count); off_t pack_seek(Packfile_t* file, off_t offset, int whence); long pack_tell(Packfile_t* file); int pack_close(Packfile_t* file); /* Fancy stuff. */ void* pack_readfile(const char* packfile, const char* filename, uint32_t* filesize); char** pack_listfiles(const char* packfile, uint32_t* nfiles); void* pack_readfileCached(Packcache_t* cache, const char* filename, uint32_t* filesize); const char** pack_listfilesCached(Packcache_t* cache, uint32_t* nfiles);