summaryrefslogtreecommitdiff
path: root/include/sqfs/io.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/sqfs/io.h')
-rw-r--r--include/sqfs/io.h44
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 */