]> git.draconx.ca Git - liblbx.git/blobdiff - src/lbx.h
build: Don't use a semicolon after sed's 't' command.
[liblbx.git] / src / lbx.h
index b2a90efa3f212f6f8594d1968b9e681527b2f5c7..a788318bda0381840f958b83ca3d8e3de747f6b0 100644 (file)
--- a/src/lbx.h
+++ b/src/lbx.h
@@ -13,6 +13,24 @@ enum {
 };
 extern int lbx_errno;
 
+struct lbx_file_ops {
+       size_t (*read)(void *buf, size_t size, void *handle);
+       int    (*seek)(void *handle, long offset, int whence);
+       long   (*tell)(void *handle);
+       int    (*eof) (void *handle);
+};
+
+struct lbx_pipe_state {
+       FILE *f;
+       long offset;
+};
+
+/* Default I/O operations for ordinary files. */
+extern const struct lbx_file_ops lbx_default_fops;
+
+/* I/O operations for un-seekable files (e.g. pipes). */
+extern const struct lbx_file_ops lbx_pipe_fops;
+
 /* Opaque */
 typedef struct lbx_state LBX;
 
@@ -22,6 +40,8 @@ struct lbx_statbuf {
 };
 
 /* Archive operations */
+LBX   *lbx_open(void *handle, const struct lbx_file_ops *fops,
+                int (*destructor)(void *handle), const char *name);
 LBX   *lbx_fopen(FILE *, const char *);
 LBX   *lbx_mopen(void *, size_t, const char *);
 int    lbx_close(LBX *);
@@ -30,7 +50,6 @@ size_t lbx_numfiles(LBX *);
 /* File operations */
 int    lbx_stat(LBX *, size_t, struct lbx_statbuf *);
 size_t lbx_extract(LBX *, size_t, FILE *);
-void  *lbx_mmap(LBX *, size_t, size_t *);
 
 /* Misc operations */
 const char *lbx_strerror(void);