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_ */