00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #ifndef __reader_h__
00034 #define __reader_h__
00035
00046 struct _RDD_READER;
00047 struct _RDD_READ_OPS;
00048
00049 typedef int (*rdd_rd_read_fun)(struct _RDD_READER *r,
00050 unsigned char *buf, unsigned nbyte,
00051 unsigned *nread);
00052
00053 typedef int (*rdd_rd_tell_fun)(struct _RDD_READER *r, rdd_count_t *pos);
00054
00055 typedef int (*rdd_rd_seek_fun)(struct _RDD_READER *r, rdd_count_t pos);
00056
00057 typedef int (*rdd_rd_close_fun)(struct _RDD_READER *r, int recurse);
00058
00063 typedef struct _RDD_READ_OPS {
00064 rdd_rd_read_fun read;
00065 rdd_rd_tell_fun tell;
00066 rdd_rd_seek_fun seek;
00067 rdd_rd_close_fun close;
00068 } RDD_READ_OPS;
00069
00073 typedef struct _RDD_READER {
00074 void *state;
00075 RDD_READ_OPS *ops;
00076 } RDD_READER;
00077
00091 int rdd_new_reader(RDD_READER **r, RDD_READ_OPS *ops, unsigned statesize);
00092
00104 int rdd_open_fd_reader(RDD_READER **r, int fd);
00105
00115 int rdd_open_raw_reader(RDD_READER **r, int fd);
00116
00127 int rdd_open_aligned_reader(RDD_READER **r, RDD_READER *parent, unsigned align);
00128
00137 int rdd_open_file_reader(RDD_READER **r, const char *path, int raw);
00138
00153 int rdd_open_atomic_reader(RDD_READER **r, RDD_READER *p);
00154
00164 int rdd_open_zlib_reader(RDD_READER **r, RDD_READER *p);
00165
00166 int rdd_open_cdrom_reader(RDD_READER **r, const char *path);
00167
00174 int rdd_open_faulty_reader(RDD_READER **r, RDD_READER *p, char *specfile);
00175
00176 #if 0
00177 int rdd_open_aligned_reader(RDD_READER **r, RDD_READER *p,
00178 unsigned alignment, unsigned bufsize);
00179 #endif
00180
00181
00182
00196 int rdd_reader_read(RDD_READER *r, unsigned char *buf, unsigned nbyte,
00197 unsigned *nread);
00198
00205 int rdd_reader_tell(RDD_READER *r, rdd_count_t *pos);
00206
00214 int rdd_reader_seek(RDD_READER *r, rdd_count_t pos);
00215
00223 int rdd_reader_skip(RDD_READER *r, rdd_count_t skip);
00224
00234 int rdd_reader_close(RDD_READER *r, int recurse);
00235
00236 #endif