packio
diff 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 |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/src/archive.h Fri Jan 09 02:31:29 2015 +0200 1.3 @@ -0,0 +1,42 @@ 1.4 +#ifndef ARCHIVE_H_ 1.5 +#define ARCHIVE_H_ 1.6 + 1.7 +typedef void AR_FILE; 1.8 + 1.9 +struct archive; 1.10 + 1.11 +struct archive_module { 1.12 + char *name; 1.13 + void *data; 1.14 + 1.15 + struct archive *(*load_archive)(FILE *fp, void *data); 1.16 + int (*close_archive)(struct archive *ar, void *data); 1.17 + 1.18 + AR_FILE *(*open)(struct archive *ar, const char *path, void *data); 1.19 + int (*close)(struct archive *ar, AR_FILE *fp, void *data); 1.20 + int (*read)(struct archive *ar, AR_FILE *fp, void *buf, int sz, void *data); 1.21 + int (*write)(struct archive *ar, AR_FILE *fp, void *buf, int sz, void *data); 1.22 + int (*seek)(struct archive *ar, AR_FILE *fp, int offs, int whence, void *data); 1.23 + 1.24 + struct archive_module *next; 1.25 +}; 1.26 + 1.27 +struct archive { 1.28 + FILE *fp; 1.29 + struct archive_module *module; 1.30 +}; 1.31 + 1.32 +int pkio_reg_archive_module(struct archive_module *m); 1.33 + 1.34 +struct archive *pkio_load_archive(const char *fname); 1.35 +struct archive *pkio_load_archive_file(FILE *fp); 1.36 +void pkio_close_archive(struct archive *ar); 1.37 + 1.38 +/* these map onto the function pointers used by the archive module */ 1.39 +AR_FILE *pkio_ar_open(struct archive *ar, const char *path); 1.40 +int pkio_ar_close(struct archive *ar, AR_FILE *fp); 1.41 +int pkio_ar_read(struct archive *ar, AR_FILE *fp, void *buf, int sz); 1.42 +int pkio_ar_write(struct archive *ar, AR_FILE *fp, void *buf, int sz); 1.43 +int pkio_ar_seek(struct archive *ar, AR_FILE *fp, int offs, int whence); 1.44 + 1.45 +#endif /* ARCHIVE_H_ */