libfdata(3)

NAME
libfdata.h - Library to provide generic file data functions

SYNOPSIS
#include <libfdata.h>

Support functions
const char *
libfdata_get_version(void);

Notify functions
void
libfdata_notify_set_verbose(int verbose);
int
libfdata_notify_set_stream(FILE *stream, libfdata_error_t **error);
int
libfdata_notify_stream_open(const char *filename, libfdata_error_t **error);
int
libfdata_notify_stream_close(libfdata_error_t **error);

Error functions
void
libfdata_error_free(libfdata_error_t **error);
int
libfdata_error_fprint(libfdata_error_t *error, FILE *stream);
int
libfdata_error_sprint(libfdata_error_t *error, char *string, size_t size);
int
libfdata_error_backtrace_fprint(libfdata_error_t *error, FILE *stream);
int
libfdata_error_backtrace_sprint(libfdata_error_t *error, char *string, size_t size);

Cache functions
int
libfdata_cache_initialize(libfdata_cache_t **cache, int maximum_cache_entries, libfdata_error_t **error);
int
libfdata_cache_free(libfdata_cache_t **cache, libfdata_error_t **error);

Area functions
int
libfdata_area_initialize(libfdata_area_t **area, size64_t element_data_size, intptr_t *data_handle, int (*free_data_handle)( intptr_t **data_handle, libfdata_error_t **error ), int (*clone_data_handle)( intptr_t **destination_data_handle, intptr_t *source_data_handle, libfdata_error_t **error ), int (*read_element_data)( intptr_t *data_handle, intptr_t *file_io_handle, libfdata_area_t *area, libfdata_cache_t *cache, off64_t element_value_offset, int element_data_file_index, off64_t element_data_offset, size64_t element_data_size, uint32_t element_data_flags, uint8_t read_flags, libfdata_error_t **error ), int (*write_element_data)( intptr_t *data_handle, intptr_t *file_io_handle, libfdata_area_t *area, libfdata_cache_t *cache, off64_t element_value_offset, int element_data_file_index, off64_t element_data_offset, size64_t element_data_size, uint32_t element_data_flags, uint8_t write_flags, libfdata_error_t **error ), uint8_t flags, libfdata_error_t **error);
int
libfdata_area_free(libfdata_area_t **area, libfdata_error_t **error);
int
libfdata_area_clone(libfdata_area_t **destination_area, libfdata_area_t *source_area, libfdata_error_t **error);
int
libfdata_area_empty(libfdata_area_t *area, libfdata_error_t **error);
int
libfdata_area_resize(libfdata_area_t *area, int number_of_segments, libfdata_error_t **error);
int
libfdata_area_get_number_of_segments(libfdata_area_t *area, int *number_of_segments, libfdata_error_t **error);
int
libfdata_area_get_segment_by_index(libfdata_area_t *area, int segment_index, int *segment_file_index, off64_t *segment_offset, size64_t *segment_size, uint32_t *segment_flags, libfdata_error_t **error);
int
libfdata_area_set_segment_by_index(libfdata_area_t *area, int segment_index, int segment_file_index, off64_t segment_offset, size64_t segment_size, uint32_t segment_flags, libfdata_error_t **error);
int
libfdata_area_prepend_segment(libfdata_area_t *area, int segment_file_index, off64_t segment_offset, size64_t segment_size, uint32_t segment_flags, libfdata_error_t **error);
int
libfdata_area_append_segment(libfdata_area_t *area, int *segment_index, int segment_file_index, off64_t segment_offset, size64_t segment_size, uint32_t segment_flags, libfdata_error_t **error);
int
libfdata_area_get_element_data_size(libfdata_area_t *area, size64_t *element_data_size, libfdata_error_t **error);
int
libfdata_area_get_element_value_at_offset(libfdata_area_t *area, intptr_t *file_io_handle, libfdata_cache_t *cache, off64_t element_value_offset, intptr_t **element_value, uint8_t read_flags, libfdata_error_t **error);
int
libfdata_area_set_element_value_at_offset(libfdata_area_t *area, intptr_t *file_io_handle, libfdata_cache_t *cache, off64_t element_value_offset, intptr_t *element_value, int (*free_element_value)( intptr_t **element_value, libfdata_error_t **error ), uint8_t write_flags, libfdata_error_t **error);
int
libfdata_area_get_size(libfdata_area_t *area, size64_t *size, libfdata_error_t **error);

List functions
int
libfdata_list_initialize(libfdata_list_t **list, intptr_t *data_handle, int (*free_data_handle)( intptr_t **data_handle, libfdata_error_t **error ), int (*clone_data_handle)( intptr_t **destination_data_handle, intptr_t *source_data_handle, libfdata_error_t **error ), int (*read_element_data)( intptr_t *data_handle, intptr_t *file_io_handle, libfdata_list_element_t *list_element, libfdata_cache_t *cache, int element_data_file_index, off64_t element_data_offset, size64_t element_data_size, uint32_t element_data_flags, uint8_t read_flags, libfdata_error_t **error ), int (*write_element_data)( intptr_t *data_handle, intptr_t *file_io_handle, libfdata_list_element_t *list_element, libfdata_cache_t *cache, int element_data_file_index, off64_t element_data_offset, size64_t element_data_size, uint32_t element_data_flags, uint8_t write_flags, libfdata_error_t **error ), uint8_t flags, libfdata_error_t **error);
int
libfdata_list_free(libfdata_list_t **list, libfdata_error_t **error);
int
libfdata_list_clone(libfdata_list_t **destination_list, libfdata_list_t *source_list, libfdata_error_t **error);
int
libfdata_list_empty(libfdata_list_t *list, libfdata_error_t **error);
int
libfdata_list_resize(libfdata_list_t *list, int number_of_elements, libfdata_error_t **error);
int
libfdata_list_reverse(libfdata_list_t *list, libfdata_error_t **error);
int
libfdata_list_get_number_of_elements(libfdata_list_t *list, int *number_of_elements, libfdata_error_t **error);
int
libfdata_list_get_list_element_by_index(libfdata_list_t *list, int element_index, libfdata_list_element_t **element, libfdata_error_t **error);
int
libfdata_list_get_element_by_index(libfdata_list_t *list, int element_index, int *element_file_index, off64_t *element_offset, size64_t *element_size, uint32_t *element_flags, libfdata_error_t **error);
int
libfdata_list_set_element_by_index(libfdata_list_t *list, int element_index, int element_file_index, off64_t element_offset, size64_t element_size, uint32_t element_flags, libfdata_error_t **error);
int
libfdata_list_prepend_element(libfdata_list_t *list, int element_file_index, off64_t element_offset, size64_t element_size, uint32_t element_flags, libfdata_error_t **error);
int
libfdata_list_append_element(libfdata_list_t *list, int *element_index, int element_file_index, off64_t element_offset, size64_t element_size, uint32_t element_flags, libfdata_error_t **error);
int
libfdata_list_append_list(libfdata_list_t *list, libfdata_list_t *source_list, libfdata_error_t **error);
int
libfdata_list_is_element_set(libfdata_list_t *list, int element_index, libfdata_error_t **error);
int
libfdata_list_get_element_mapped_range(libfdata_list_t *list, int element_index, off64_t *mapped_range_offset, size64_t *mapped_range_size, libfdata_error_t **error);
int
libfdata_list_get_mapped_offset(libfdata_list_t *list, off64_t *mapped_offset, libfdata_error_t **error);
int
libfdata_list_set_mapped_offset(libfdata_list_t *list, off64_t mapped_offset, libfdata_error_t **error);
int
libfdata_list_get_mapped_size_by_index(libfdata_list_t *list, int element_index, size64_t *mapped_size, libfdata_error_t **error);
int
libfdata_list_set_mapped_size_by_index(libfdata_list_t *list, int element_index, size64_t mapped_size, libfdata_error_t **error);
int
libfdata_list_get_element_by_index_with_mapped_size(libfdata_list_t *list, int element_index, int *element_file_index, off64_t *element_offset, size64_t *element_size, uint32_t *element_flags, size64_t *mapped_size, libfdata_error_t **error);
int
libfdata_list_set_element_by_index_with_mapped_size(libfdata_list_t *list, int element_index, int element_file_index, off64_t element_offset, size64_t element_size, uint32_t element_flags, size64_t mapped_size, libfdata_error_t **error);
int
libfdata_list_append_element_with_mapped_size(libfdata_list_t *list, int *element_index, int element_file_index, off64_t element_offset, size64_t element_size, uint32_t element_flags, size64_t mapped_size, libfdata_error_t **error);
int
libfdata_list_get_element_index_at_offset(libfdata_list_t *list, off64_t offset, int *element_index, off64_t *element_data_offset, libfdata_error_t **error);
int
libfdata_list_get_list_element_at_offset(libfdata_list_t *list, off64_t offset, int *element_index, off64_t *element_data_offset, libfdata_list_element_t **element, libfdata_error_t **error);
int
libfdata_list_get_element_at_offset(libfdata_list_t *list, off64_t offset, int *element_index, off64_t *element_data_offset, int *element_file_index, off64_t *element_offset, size64_t *element_size, uint32_t *element_flags, libfdata_error_t **error);
int
libfdata_list_get_element_value_by_index(libfdata_list_t *list, intptr_t *file_io_handle, libfdata_cache_t *cache, int element_index, intptr_t **element_value, uint8_t read_flags, libfdata_error_t **error);
int
libfdata_list_get_element_value_at_offset(libfdata_list_t *list, intptr_t *file_io_handle, libfdata_cache_t *cache, off64_t offset, int *element_index, off64_t *element_data_offset, intptr_t **element_value, uint8_t read_flags, libfdata_error_t **error);
int
libfdata_list_set_element_value_by_index(libfdata_list_t *list, intptr_t *file_io_handle, libfdata_cache_t *cache, int element_index, intptr_t *element_value, int (*free_element_value)( intptr_t **element_value, libfdata_error_t **error ), uint8_t write_flags, libfdata_error_t **error);
int
libfdata_list_set_element_value_at_offset(libfdata_list_t *list, intptr_t *file_io_handle, libfdata_cache_t *cache, off64_t offset, intptr_t *element_value, int (*free_element_value)( intptr_t **element_value, libfdata_error_t **error ), uint8_t write_flags, libfdata_error_t **error);
int
libfdata_list_get_size(libfdata_list_t *list, size64_t *size, libfdata_error_t **error);

List element functions
int
libfdata_list_element_get_element_index(libfdata_list_element_t *element, int *element_index, libfdata_error_t **error);
int
libfdata_list_element_get_data_range(libfdata_list_element_t *element, int *file_index, off64_t *offset, size64_t *size, uint32_t *flags, libfdata_error_t **error);
int
libfdata_list_element_get_mapped_size(libfdata_list_element_t *element, size64_t *mapped_size, libfdata_error_t **error);
int
libfdata_list_element_set_mapped_size(libfdata_list_element_t *element, size64_t mapped_size, libfdata_error_t **error);
int
libfdata_list_element_get_element_value(libfdata_list_element_t *element, intptr_t *file_io_handle, libfdata_cache_t *cache, intptr_t **element_value, uint8_t read_flags, libfdata_error_t **error);
int
libfdata_list_element_set_element_value(libfdata_list_element_t *element, intptr_t *file_io_handle, libfdata_cache_t *cache, intptr_t *element_value, int (*free_element_value)( intptr_t **element_value, libfdata_error_t **error ), uint8_t write_flags, libfdata_error_t **error);

Range list functions
int
libfdata_range_list_initialize(libfdata_range_list_t **range_list, intptr_t *data_handle, int (*free_data_handle)( intptr_t **data_handle, libfdata_error_t **error ), int (*clone_data_handle)( intptr_t **destination_data_handle, intptr_t *source_data_handle, libfdata_error_t **error ), int (*read_element_data)( intptr_t *data_handle, intptr_t *file_io_handle, libfdata_list_element_t *list_element, libfdata_cache_t *cache, int element_file_index, off64_t element_offset, size64_t element_size, uint32_t element_flags, uint8_t read_flags, libfdata_error_t **error ), int (*write_element_data)( intptr_t *data_handle, intptr_t *file_io_handle, libfdata_list_element_t *list_element, libfdata_cache_t *cache, int element_file_index, off64_t element_offset, size64_t element_size, uint32_t element_flags, uint8_t write_flags, libfdata_error_t **error ), uint8_t flags, libfdata_error_t **error);
int
libfdata_range_list_free(libfdata_range_list_t **range_list, libfdata_error_t **error);
int
libfdata_range_list_clone(libfdata_range_list_t **destination_range_list, libfdata_range_list_t *source_range_list, libfdata_error_t **error);
int
libfdata_range_list_empty(libfdata_range_list_t *range_list, libfdata_error_t **error);
int
libfdata_range_list_get_list_element_at_offset(libfdata_range_list_t *range_list, off64_t offset, off64_t *element_data_offset, libfdata_list_element_t **element, libfdata_error_t **error);
int
libfdata_range_list_get_element_at_offset(libfdata_range_list_t *range_list, off64_t offset, off64_t *element_data_offset, int *element_file_index, off64_t *element_offset, size64_t *element_size, uint32_t *element_flags, libfdata_error_t **error);
int
libfdata_range_list_insert_element(libfdata_range_list_t *range_list, off64_t offset, size64_t size, int element_file_index, off64_t element_offset, size64_t element_size, uint32_t element_flags, libfdata_error_t **error);
int
libfdata_range_list_get_element_value_at_offset(libfdata_range_list_t *range_list, intptr_t *file_io_handle, libfdata_cache_t *cache, off64_t offset, off64_t *element_data_offset, intptr_t **element_value, uint8_t read_flags, libfdata_error_t **error);
int
libfdata_range_list_set_element_value_at_offset(libfdata_range_list_t *range_list, intptr_t *file_io_handle, libfdata_cache_t *cache, off64_t offset, intptr_t *element_value, int (*free_element_value)( intptr_t **element_value, libfdata_error_t **error ), uint8_t write_flags, libfdata_error_t **error);

Stream functions
int
libfdata_stream_initialize(libfdata_stream_t **stream, intptr_t *data_handle, int (*free_data_handle)( intptr_t **data_handle, libfdata_error_t **error ), int (*clone_data_handle)( intptr_t **destination_data_handle, intptr_t *source_data_handle, libfdata_error_t **error ), int (*create_segment)( intptr_t *data_handle, intptr_t *file_io_handle, int segment_index, int *segment_file_index, off64_t *segment_offset, size64_t *segment_size, uint32_t *segment_flags, libfdata_error_t **error ), ssize_t (*read_segment_data)( intptr_t *data_handle, intptr_t *file_io_handle, int segment_index, int segment_file_index, uint8_t *segment_data, size_t segment_data_size, uint32_t segment_flags, uint8_t read_flags, libfdata_error_t **error ), ssize_t (*write_segment_data)( intptr_t *data_handle, intptr_t *file_io_handle, int segment_index, int segment_file_index, const uint8_t *segment_data, size_t segment_data_size, uint32_t segment_flags, uint8_t write_flags, libfdata_error_t **error ), off64_t (*seek_segment_offset)( intptr_t *data_handle, intptr_t *file_io_handle, int segment_index, int segment_file_index, off64_t segment_offset, libfdata_error_t **error ), uint8_t flags, libfdata_error_t **error);
int
libfdata_stream_free(libfdata_stream_t **stream, libfdata_error_t **error);
int
libfdata_stream_clone(libfdata_stream_t **destination_stream, libfdata_stream_t *source_stream, libfdata_error_t **error);
int
libfdata_stream_empty(libfdata_stream_t *stream, libfdata_error_t **error);
int
libfdata_stream_resize(libfdata_stream_t *stream, int number_of_segments, libfdata_error_t **error);
int
libfdata_stream_reverse(libfdata_stream_t *stream, libfdata_error_t **error);
int
libfdata_stream_get_number_of_segments(libfdata_stream_t *stream, int *number_of_segments, libfdata_error_t **error);
int
libfdata_stream_get_segment_by_index(libfdata_stream_t *stream, int segment_index, int *segment_file_index, off64_t *segment_offset, size64_t *segment_size, uint32_t *segment_flags, libfdata_error_t **error);
int
libfdata_stream_set_segment_by_index(libfdata_stream_t *stream, int segment_index, int segment_file_index, off64_t segment_offset, size64_t segment_size, uint32_t segment_flags, libfdata_error_t **error);
int
libfdata_stream_prepend_segment(libfdata_stream_t *stream, int segment_file_index, off64_t segment_offset, size64_t segment_size, uint32_t segment_flags, libfdata_error_t **error);
int
libfdata_stream_append_segment(libfdata_stream_t *stream, int *segment_index, int segment_file_index, off64_t segment_offset, size64_t segment_size, uint32_t segment_flags, libfdata_error_t **error);
int
libfdata_stream_set_mapped_size(libfdata_stream_t *stream, size64_t mapped_size, libfdata_error_t **error);
int
libfdata_stream_get_segment_mapped_range(libfdata_stream_t *stream, int segment_index, off64_t *mapped_range_offset, size64_t *mapped_range_size, libfdata_error_t **error);
int
libfdata_stream_get_segment_index_at_offset(libfdata_stream_t *stream, off64_t data_offset, int *segment_index, off64_t *segment_data_offset, libfdata_error_t **error);
int
libfdata_stream_get_segment_at_offset(libfdata_stream_t *stream, off64_t offset, int *segment_index, off64_t *segment_data_offset, int *segment_file_index, off64_t *segment_offset, size64_t *segment_size, uint32_t *segment_flags, libfdata_error_t **error);
ssize_t
libfdata_stream_read_buffer(libfdata_stream_t *stream, intptr_t *file_io_handle, uint8_t *buffer, size_t buffer_size, uint8_t read_flags, libfdata_error_t **error);
ssize_t
libfdata_stream_read_buffer_at_offset(libfdata_stream_t *stream, intptr_t *file_io_handle, uint8_t *buffer, size_t buffer_size, off64_t offset, uint8_t read_flags, libfdata_error_t **error);
ssize_t
libfdata_stream_write_buffer(libfdata_stream_t *stream, intptr_t *file_io_handle, const uint8_t *buffer, size_t buffer_size, uint8_t write_flags, libfdata_error_t **error);
off64_t
libfdata_stream_seek_offset(libfdata_stream_t *stream, off64_t offset, int whence, libfdata_error_t **error);
int
libfdata_stream_get_offset(libfdata_stream_t *stream, off64_t *offset, libfdata_error_t **error);
int
libfdata_stream_get_size(libfdata_stream_t *stream, size64_t *size, libfdata_error_t **error);

Vector functions
int
libfdata_vector_initialize(libfdata_vector_t **vector, size64_t element_data_size, intptr_t *data_handle, int (*free_data_handle)( intptr_t **data_handle, libfdata_error_t **error ), int (*clone_data_handle)( intptr_t **destination_data_handle, intptr_t *source_data_handle, libfdata_error_t **error ), int (*read_element_data)( intptr_t *data_handle, intptr_t *file_io_handle, libfdata_vector_t *vector, libfdata_cache_t *cache, int element_index, int element_data_file_index, off64_t element_data_offset, size64_t element_data_size, uint32_t element_data_flags, uint8_t read_flags, libfdata_error_t **error ), int (*write_element_data)( intptr_t *data_handle, intptr_t *file_io_handle, libfdata_vector_t *vector, libfdata_cache_t *cache, int element_index, int element_data_file_index, off64_t element_data_offset, size64_t element_data_size, uint32_t element_data_flags, uint8_t write_flags, libfdata_error_t **error ), uint8_t flags, libfdata_error_t **error);
int
libfdata_vector_free(libfdata_vector_t **vector, libfdata_error_t **error);
int
libfdata_vector_clone(libfdata_vector_t **destination_vector, libfdata_vector_t *source_vector, libfdata_error_t **error);
int
libfdata_vector_empty(libfdata_vector_t *vector, libfdata_error_t **error);
int
libfdata_vector_resize(libfdata_vector_t *vector, int number_of_segments, libfdata_error_t **error);
int
libfdata_vector_get_number_of_segments(libfdata_vector_t *vector, int *number_of_segments, libfdata_error_t **error);
int
libfdata_vector_get_segment_by_index(libfdata_vector_t *vector, int segment_index, int *segment_file_index, off64_t *segment_offset, size64_t *segment_size, uint32_t *segment_flags, libfdata_error_t **error);
int
libfdata_vector_set_segment_by_index(libfdata_vector_t *vector, int segment_index, int segment_file_index, off64_t segment_offset, size64_t segment_size, uint32_t segment_flags, libfdata_error_t **error);
int
libfdata_vector_prepend_segment(libfdata_vector_t *vector, int segment_file_index, off64_t segment_offset, size64_t segment_size, uint32_t segment_flags, libfdata_error_t **error);
int
libfdata_vector_append_segment(libfdata_vector_t *vector, int *segment_index, int segment_file_index, off64_t segment_offset, size64_t segment_size, uint32_t segment_flags, libfdata_error_t **error);
int
libfdata_vector_get_element_data_size(libfdata_vector_t *vector, size64_t *element_data_size, libfdata_error_t **error);
int
libfdata_vector_get_number_of_elements(libfdata_vector_t *vector, int *number_of_elements, libfdata_error_t **error);
int
libfdata_vector_get_element_index_at_offset(libfdata_vector_t *vector, off64_t element_value_offset, int *element_index, off64_t *element_data_offset, libfdata_error_t **error);
int
libfdata_vector_get_element_value_by_index(libfdata_vector_t *vector, intptr_t *file_io_handle, libfdata_cache_t *cache, int element_index, intptr_t **element_value, uint8_t read_flags, libfdata_error_t **error);
int
libfdata_vector_get_element_value_at_offset(libfdata_vector_t *vector, intptr_t *file_io_handle, libfdata_cache_t *cache, off64_t element_value_offset, off64_t *element_data_offset, intptr_t **element_value, uint8_t read_flags, libfdata_error_t **error);
int
libfdata_vector_set_element_value_by_index(libfdata_vector_t *vector, intptr_t *file_io_handle, libfdata_cache_t *cache, int element_index, intptr_t *element_value, int (*free_element_value)( intptr_t **element_value, libfdata_error_t **error ), uint8_t write_flags, libfdata_error_t **error);
int
libfdata_vector_get_size(libfdata_vector_t *vector, size64_t *size, libfdata_error_t **error);

DESCRIPTION
The libfdata_get_version() function is used to retrieve the library version.

RETURN VALUES
Most of the functions return NULL or -1 on error, dependent on the return type. For the actual return values see "libfdata.h".

ENVIRONMENT
None

FILES
None

BUGS
Please report bugs of any kind on the project issue tracker: https://github.com/libyal/libfdata/issues

AUTHOR
These man pages are generated from "libfdata.h".

COPYRIGHT
Copyright (C) 2010-2026, Joachim Metz <joachim.metz@gmail.com>.

This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

SEE ALSO
the libfdata.h include file