packio

annotate src/archive.h @ 1:a5728bc6a02f

moving along
author John Tsiombikas <nuclear@member.fsf.org>
date Fri, 09 Jan 2015 02:31:29 +0200
parents
children
rev   line source
nuclear@1 1 #ifndef ARCHIVE_H_
nuclear@1 2 #define ARCHIVE_H_
nuclear@1 3
nuclear@1 4 typedef void AR_FILE;
nuclear@1 5
nuclear@1 6 struct archive;
nuclear@1 7
nuclear@1 8 struct archive_module {
nuclear@1 9 char *name;
nuclear@1 10 void *data;
nuclear@1 11
nuclear@1 12 struct archive *(*load_archive)(FILE *fp, void *data);
nuclear@1 13 int (*close_archive)(struct archive *ar, void *data);
nuclear@1 14
nuclear@1 15 AR_FILE *(*open)(struct archive *ar, const char *path, void *data);
nuclear@1 16 int (*close)(struct archive *ar, AR_FILE *fp, void *data);
nuclear@1 17 int (*read)(struct archive *ar, AR_FILE *fp, void *buf, int sz, void *data);
nuclear@1 18 int (*write)(struct archive *ar, AR_FILE *fp, void *buf, int sz, void *data);
nuclear@1 19 int (*seek)(struct archive *ar, AR_FILE *fp, int offs, int whence, void *data);
nuclear@1 20
nuclear@1 21 struct archive_module *next;
nuclear@1 22 };
nuclear@1 23
nuclear@1 24 struct archive {
nuclear@1 25 FILE *fp;
nuclear@1 26 struct archive_module *module;
nuclear@1 27 };
nuclear@1 28
nuclear@1 29 int pkio_reg_archive_module(struct archive_module *m);
nuclear@1 30
nuclear@1 31 struct archive *pkio_load_archive(const char *fname);
nuclear@1 32 struct archive *pkio_load_archive_file(FILE *fp);
nuclear@1 33 void pkio_close_archive(struct archive *ar);
nuclear@1 34
nuclear@1 35 /* these map onto the function pointers used by the archive module */
nuclear@1 36 AR_FILE *pkio_ar_open(struct archive *ar, const char *path);
nuclear@1 37 int pkio_ar_close(struct archive *ar, AR_FILE *fp);
nuclear@1 38 int pkio_ar_read(struct archive *ar, AR_FILE *fp, void *buf, int sz);
nuclear@1 39 int pkio_ar_write(struct archive *ar, AR_FILE *fp, void *buf, int sz);
nuclear@1 40 int pkio_ar_seek(struct archive *ar, AR_FILE *fp, int offs, int whence);
nuclear@1 41
nuclear@1 42 #endif /* ARCHIVE_H_ */