archive_plugin: wrap method calls

Make archive_file a "real" struct, extended by all plugins.  Add the
plugin pointer to it.  Wrap all method calls in functions.
This commit is contained in:
Max Kellermann
2009-12-16 16:28:26 +01:00
parent 74156d5bed
commit 0bc8c0c1da
9 changed files with 133 additions and 12 deletions

View File

@@ -40,6 +40,8 @@
#define BZ_BUFSIZE 5000
struct bz2_archive_file {
struct archive_file base;
char *name;
bool reset;
struct input_stream istream;
@@ -102,6 +104,7 @@ bz2_open(const char *pathname)
int len;
context = g_malloc(sizeof(*context));
archive_file_init(&context->base, &bz2_archive_plugin);
//open archive
if (!input_stream_open(&context->istream, pathname, NULL)) {
@@ -118,7 +121,7 @@ bz2_open(const char *pathname)
context->name[len - 4] = 0; //remove .bz2 suffix
}
return (struct archive_file *) context;
return &context->base;
}
static void