aboutsummaryrefslogtreecommitdiff
path: root/include/sqfs/table.h
blob: 70bb437f7eefe2709792db5b39ff20526d983026 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/* SPDX-License-Identifier: GPL-3.0-or-later */
/*
 * table.h
 *
 * Copyright (C) 2019 David Oberhollenzer <goliath@infraroot.at>
 */
#ifndef SQFS_TABLE_H
#define SQFS_TABLE_H

#include "sqfs/predef.h"

#ifdef __cplusplus
extern "C" {
#endif

/*
  Convenience function for writing meta data to a SquashFS image

  This function internally creates a meta data writer and writes the given
  'data' blob with 'table_size' bytes to disk, neatly partitioned into meta
  data blocks. For each meta data block, it remembers the 64 bit start address,
  writes out all addresses to an uncompressed list and returns the location
  where the address list starts in 'start'.

  Returns 0 on success. Internally prints error messages to stderr.
 */
SQFS_API int sqfs_write_table(int outfd, sqfs_super_t *super,
			      sqfs_compressor_t *cmp,
			      const void *data, size_t table_size,
			      uint64_t *start);

SQFS_API void *sqfs_read_table(int fd, sqfs_compressor_t *cmp,
			       size_t table_size, uint64_t location,
			       uint64_t lower_limit, uint64_t upper_limit);

#ifdef __cplusplus
}
#endif

#endif /* SQFS_TABLE_H */