libsquashfs: include/sqfs/io.h Source File

libsquashfs 1.3.2 A new set of tools and libraries for working with SquashFS images

Loading...
Searching...
No Matches
io.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: LGPL-3.0-or-later */
2/*
3 * io.h - This file is part of libsquashfs
4 *
5 * Copyright (C) 2019 David Oberhollenzer <goliath@infraroot.at>
6 *
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU Lesser General Public License as published
9 * by the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public License
18 * along with this program. If not, see <https://www.gnu.org/licenses/>.
19 */
20#ifndef SQFS_IO_H
21#define SQFS_IO_H
22
23#include "sqfs/predef.h"
24
30
36 typedef enum {
46 SQFS_FILE_OPEN_READ_ONLY = 0x01,
47
55 SQFS_FILE_OPEN_OVERWRITE = 0x02,
56
77 SQFS_FILE_OPEN_NO_CHARSET_XFRM = 0x04,
78
79 SQFS_FILE_OPEN_ALL_FLAGS = 0x07,
80} SQFS_FILE_OPEN_FLAGS;
81
94 struct sqfs_file_t {
95 sqfs_object_t base;
96
109 int (*read_at)(sqfs_file_t *file, sqfs_u64 offset,
110 void *buffer, size_t size);
111
124 int (*write_at)(sqfs_file_t *file, sqfs_u64 offset,
125 const void *buffer, size_t size);
126
132 sqfs_u64 (*get_size)(const sqfs_file_t *file);
133
144 int (*truncate)(sqfs_file_t *file, sqfs_u64 size);
145};
146
147#ifdef __cplusplus
148extern "C" {
149#endif
150
168SQFS_API sqfs_file_t *sqfs_open_file(const char *filename, sqfs_u32 flags);
169
170#ifdef __cplusplus
171}
172#endif
173
174#endif /* SQFS_IO_H */
SQFS_FILE_OPEN_FLAGS
SQFS_FILE_OPEN_FLAGS
Flags for sqfs_open_file.
Definition io.h:36
SQFS_FILE_OPEN_READ_ONLY
@ SQFS_FILE_OPEN_READ_ONLY
If set, access the file for reading only.
Definition io.h:46
SQFS_FILE_OPEN_NO_CHARSET_XFRM
@ SQFS_FILE_OPEN_NO_CHARSET_XFRM
If set, do not try to apply any character set transformations to the file path.
Definition io.h:77
SQFS_FILE_OPEN_OVERWRITE
@ SQFS_FILE_OPEN_OVERWRITE
If the read only flag is not set, overwrite any existing file.
Definition io.h:55
sqfs_open_file
SQFS_API sqfs_file_t * sqfs_open_file(const char *filename, sqfs_u32 flags)
Open a file through the operating systems filesystem API.
predef.h
Includes forward declarations of data structures, macros and integer types.
sqfs_file_t
Abstracts file I/O to make it easy to embedd SquashFS.
Definition io.h:94
sqfs_file_t::truncate
int(* truncate)(sqfs_file_t *file, sqfs_u64 size)
Extend or shrink a file to a specified size.
Definition io.h:144
sqfs_file_t::get_size
sqfs_u64(* get_size)(const sqfs_file_t *file)
Get the number of bytes currently stored in the file.
Definition io.h:132
sqfs_file_t::read_at
int(* read_at)(sqfs_file_t *file, sqfs_u64 offset, void *buffer, size_t size)
Read a chunk of data from an absolute position.
Definition io.h:109
sqfs_file_t::write_at
int(* write_at)(sqfs_file_t *file, sqfs_u64 offset, const void *buffer, size_t size)
Write a chunk of data at an absolute position.
Definition io.h:124
sqfs_object_t
Base interface for all libsquashfs in-memory data structures.
Definition predef.h:126