1 #ifndef LZOE_H_
2 #define LZOE_H_
3 
4 #ifdef NO_LZO
5 #   define LZFILE               FILE
6 #   define has_lzoe_prefix(x)   (0)
7 #   define lzoe_fopen           fopen
8 #   define lzoe_fgets           fgets
9 #   define lzoe_fread           fread
10 #   define lzoe_fseek           fseek
11 #   define lzoe_ftell           ftell
12 #   define lzoe_rewind          rewind
13 #   define lzoe_fclose          fclose
14 #   define lzoe_exists          file_exists
15 #   define lzoe_register(x,y)   ((void)(x), (void)(y))
16 #   define lzoe_filep(f)        (f)
17 #   define lzoe_fgetc           fgetc
18 #   define lzoe_feof            feof
19 #else
20 
21 typedef struct lzoe_info
22 {
23     const char   *fname;
24     long          orig_len, comp_len;
25     const uint8_t *cdata;
26 } lzoe_info;
27 
28 typedef struct lzoe_file
29 {
30     const lzoe_info *info;
31     uint8_t         *ddata;
32     long             offset;
33 } lzoe_file;
34 
35 typedef struct LZFILE
36 {
37     FILE        *f;
38     lzoe_file   *l;
39 } LZFILE;
40 
41 typedef struct lzoe_directory
42 {
43     const lzoe_info *table;
44     const char      *prefix;
45     int              pfx_len;
46 } lzoe_directory;
47 
48 #define MAX_LZOE_OPEN   (32)
49 #define LZOE_PREFIX     "$LZOE$"
50 
51 extern int      has_lzoe_prefix( const char *fname );
52 extern LZFILE  *lzoe_fopen ( const char *fname, const char *mode );
53 extern char    *lzoe_fgets ( char *s, int size, LZFILE *f );
54 extern size_t   lzoe_fread ( void *buf, size_t size, size_t nmemb, LZFILE *f );
55 extern int      lzoe_fseek ( LZFILE *f, long offset, int whence );
56 extern long     lzoe_ftell ( LZFILE *f );
57 extern int      lzoe_fclose( LZFILE *f );
58 extern int      lzoe_exists( const char *fname );
59 extern LZFILE  *lzoe_filep ( FILE *f );
60 extern int      lzoe_fgetc ( LZFILE *f );
61 extern int      lzoe_feof  ( LZFILE *f );
62 
63 
64 #define lzoe_rewind(f) ((void) lzoe_fseek( f, 0L, SEEK_SET ))
65 
66 extern void     lzoe_register( const char *prefix, const lzoe_info *table );
67 
68 #endif
69 
70 #endif
71