/* * archive.h -- enfle transparent archive file handler header * (C)Copyright 1998 by Hiroshi Takekawa * Last Modified: Mon Sep 20 20:03:04 1999. */ #ifndef _ARCHIVE_H #define _ARCHIVE_H typedef struct _archive Archive; #include "dlist.h" #include #define METHOD(type, name, args) type (*name)args struct _archive { char *format; char *filename; char ifname[16]; /* stands for internal filename */ FILE *fp; int nfiles; int asize; /* stands for archive filesize */ int index; int offset; int size; /* unique plugin info */ void *info; METHOD(int, select, (struct _archive *, int)); METHOD(int, seek , (struct _archive *, long, int)); METHOD(int, tell , (struct _archive *)); METHOD(int, read , (struct _archive *, unsigned char *, int)); METHOD(int, close , (struct _archive *)); }; Archive *archive_open(Dlist *, char *); Archive *archive_open_from_plugin(char *, char *); int archive_seek(Archive *, long, int); int archive_tell(Archive *); int archive_read(Archive *, unsigned char *, int); int archive_getc(Archive *); unsigned char *archive_gets(Archive *, unsigned char *, int); int archive_select(Archive *, int); int archive_close(Archive *); #endif