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