nuclear@0: #ifndef PACKIO_H_ nuclear@0: #define PACKIO_H_ nuclear@0: nuclear@0: struct pack_file; nuclear@0: struct pack_dir; nuclear@0: nuclear@0: #define PACK_NAME_MAX 256 nuclear@0: nuclear@0: struct pack_dirent { nuclear@0: char d_name[PACK_NAME_MAX]; nuclear@0: }; nuclear@0: nuclear@0: /* not sure I like this capitalization, but it matches the libc counterparts */ nuclear@0: typedef struct pack_file PACKFILE; nuclear@0: typedef struct pack_dir PACKDIR; nuclear@0: nuclear@0: nuclear@0: int pack_init(void); nuclear@0: void pack_cleanup(void); nuclear@0: int pack_mount(const char *fname, const char *path); nuclear@0: nuclear@0: int pack_exists(const char *path); nuclear@0: int pack_isfile(const char *path); nuclear@0: int pack_isdir(const char *path); nuclear@0: nuclear@0: nuclear@0: /* file i/o */ nuclear@0: PACKFILE *pack_fopen(const char *path, const char *mode); nuclear@0: int pack_fclose(PACKFILE *fp); nuclear@0: nuclear@0: int pack_feof(PACKFILE *fp); nuclear@0: long pack_filesize(PACKFILE *fp); nuclear@0: nuclear@0: int pack_fseek(PACKFILE *fp, long offs, int whence); nuclear@0: long pack_ftell(PACKFILE *fp); nuclear@0: void pack_rewind(PACKFILE *fp); nuclear@0: nuclear@0: size_t pack_fread(void *ptr, size_t size, size_t nmemb, PACKFILE *fp); nuclear@0: size_t pack_fwrite(void *ptr, size_t size, size_t nmemb, PACKFILE *fp); nuclear@0: nuclear@0: int pack_fgetc(PACKFILE *fp); nuclear@0: char *pack_fgets(char *buf, int size, PACKFILE *fp); nuclear@0: nuclear@0: /* directory handling */ nuclear@0: PACKDIR *pack_opendir(const char *name); nuclear@0: int pack_closedir(PACKDIR *dir); nuclear@0: struct pack_dirent *pack_readdir(PACKDIR *dir); nuclear@0: nuclear@0: nuclear@0: #endif /* PACKIO_H_ */