diff options
Diffstat (limited to 'nerv/lib/io/chunk_file.h')
-rw-r--r-- | nerv/lib/io/chunk_file.h | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/nerv/lib/io/chunk_file.h b/nerv/lib/io/chunk_file.h new file mode 100644 index 0000000..71f0d03 --- /dev/null +++ b/nerv/lib/io/chunk_file.h @@ -0,0 +1,43 @@ +#ifndef NERV_CHUNK_FILE_H +#define NERV_CHUNK_FILE_H +#include "../../common.h" +enum { + CF_NORMAL, + CF_INVALID_FORMAT, + CF_END_OF_FILE, + CF_SECTION_OVERFLOW, + CF_WRITE_ERROR, + CF_ERR_OPEN_FILE, + CF_INVALID_OP, + CF_READ, + CF_WRITE, + CF_CLOSED +}; + +typedef struct ChunkInfo { + struct ChunkInfo *next; + char *metadata; + off_t offset, length; +} ChunkInfo; + +typedef struct ChunkFile { + FILE *fp; + ChunkInfo *info; + int status; +} ChunkFile; + +typedef struct ChunkData { + FILE *fp; + char *data; +} ChunkData; + +typedef void (*ChunkDataWriter_t)(void *); +ChunkFile *nerv_chunk_file_create(const char *fn, const char *mode, int *status); +int nerv_chunk_file_write_chunkdata(ChunkFile *cfp, const char *mdstr, + ChunkDataWriter_t writer, void *writer_arg); +ChunkData *nerv_chunk_file_get_chunkdata(ChunkFile *cfp, ChunkInfo *cip, int *status); +void nerv_chunk_file_close(ChunkFile *cfp); +void nerv_chunk_file_destroy(ChunkFile *cfp); +void nerv_chunk_data_destroy(ChunkData *cdp); +const char *nerv_chunk_file_errstr(int status); +#endif |