diff options
Diffstat (limited to 'include/sqfs/io.h')
-rw-r--r-- | include/sqfs/io.h | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/include/sqfs/io.h b/include/sqfs/io.h new file mode 100644 index 0000000..f290c2d --- /dev/null +++ b/include/sqfs/io.h @@ -0,0 +1,44 @@ +/* SPDX-License-Identifier: GPL-3.0-or-later */ +/* + * io.h + * + * Copyright (C) 2019 David Oberhollenzer <goliath@infraroot.at> + */ +#ifndef SQFS_IO_H +#define SQFS_IO_H + +#include "sqfs/predef.h" + +typedef enum { + SQFS_FILE_OPEN_READ_ONLY = 0x01, + + SQFS_FILE_OPEN_OVERWRITE = 0x02, + + SQFS_FILE_OPEN_ALL_FLAGS = 0x03, +} E_SQFS_FILE_OPEN_FLAGS; + +struct sqfs_file_t { + void (*destroy)(sqfs_file_t *file); + + int (*read_at)(sqfs_file_t *file, uint64_t offset, + void *buffer, size_t size); + + int (*write_at)(sqfs_file_t *file, uint64_t offset, + const void *buffer, size_t size); + + uint64_t (*get_size)(sqfs_file_t *file); + + int (*truncate)(sqfs_file_t *file, uint64_t size); +}; + +#ifdef __cplusplus +extern "C" { +#endif + +SQFS_API sqfs_file_t *sqfs_open_file(const char *filename, int flags); + +#ifdef __cplusplus +} +#endif + +#endif /* SQFS_IO_H */ |