libfsclfs(3)

πŸ“¦ in opensuse-leap 16.0

πŸ’… libfsclfs(3) β€” the header for libyal's CLFS access library, bestie ✨

okay so real talk, this whole page is about libfsclfs.h β€” the library that lets you poke around inside the Common Log File System (CLFS) format πŸŽ€ it's giving forensic girlie, it's giving "I read the logs so you don't have to" πŸ’–


✨ SYNOPSIS ✨

#include <libfsclfs.h>

🌸 Support functions

const char *
libfsclfs_get_version(void);

int
libfsclfs_get_access_flags_read(void);

int
libfsclfs_get_codepage(int *codepage, libfsclfs_error_t **error);

int
libfsclfs_set_codepage(int codepage, libfsclfs_error_t **error);

πŸ¦‹ Notify functions

void
libfsclfs_notify_set_verbose(int verbose);

int
libfsclfs_notify_set_stream(FILE *stream, libfsclfs_error_t **error);

int
libfsclfs_notify_stream_open(const char *filename,
    libfsclfs_error_t **error);

int
libfsclfs_notify_stream_close(libfsclfs_error_t **error);

πŸŽ€ Error functions

void
libfsclfs_error_free(libfsclfs_error_t **error);

int
libfsclfs_error_fprint(libfsclfs_error_t *error, FILE *stream);

int
libfsclfs_error_sprint(libfsclfs_error_t *error, char *string,
    size_t size);

int
libfsclfs_error_backtrace_fprint(libfsclfs_error_t *error,
    FILE *stream);

int
libfsclfs_error_backtrace_sprint(libfsclfs_error_t *error, char *string,
    size_t size);

πŸ’œ Store functions

int
libfsclfs_store_initialize(libfsclfs_store_t **store,
    libfsclfs_error_t **error);

int
libfsclfs_store_free(libfsclfs_store_t **store,
    libfsclfs_error_t **error);

int
libfsclfs_store_signal_abort(libfsclfs_store_t *store,
    libfsclfs_error_t **error);

int
libfsclfs_store_open(libfsclfs_store_t *store, const char *filename,
    int access_flags, libfsclfs_error_t **error);

int
libfsclfs_store_open_containers(libfsclfs_store_t *store,
    libfsclfs_error_t **error);

int
libfsclfs_store_close(libfsclfs_store_t *store,
    libfsclfs_error_t **error);

int
libfsclfs_store_get_number_of_containers(libfsclfs_store_t *store,
    int *number_of_containers, libfsclfs_error_t **error);

int
libfsclfs_store_get_container(libfsclfs_store_t *store,
    int container_index, libfsclfs_container_t **container,
    libfsclfs_error_t **error);

int
libfsclfs_store_get_number_of_streams(libfsclfs_store_t *store,
    int *number_of_streams, libfsclfs_error_t **error);

int
libfsclfs_store_get_stream(libfsclfs_store_t *store, int stream_index,
    libfsclfs_stream_t **stream, libfsclfs_error_t **error);

✨ available when compiled with wide character string support:

int
libfsclfs_store_open_wide(libfsclfs_store_t *store,
    const wchar_t *filename, int access_flags,
    libfsclfs_error_t **error);

✨ available when compiled with libbfio support:

int
libfsclfs_store_open_file_io_handle(libfsclfs_store_t *store,
    libbfio_handle_t *file_io_handle, int access_flags,
    libfsclfs_error_t **error);

🐚 Container functions

int
libfsclfs_container_free(libfsclfs_container_t **container,
    libfsclfs_error_t **error);

int
libfsclfs_container_get_size(libfsclfs_container_t *container,
    size64_t *size, libfsclfs_error_t **error);

int
libfsclfs_container_get_utf8_name_size(libfsclfs_container_t *container,
    size_t *utf8_string_size, libfsclfs_error_t **error);

int
libfsclfs_container_get_utf8_name(libfsclfs_container_t *container,
    uint8_t *utf8_string, size_t utf8_string_size,
    libfsclfs_error_t **error);

int
libfsclfs_container_get_utf16_name_size(libfsclfs_container_t *container,
    size_t *utf16_string_size, libfsclfs_error_t **error);

int
libfsclfs_container_get_utf16_name(libfsclfs_container_t *container,
    uint16_t *utf16_string, size_t utf16_string_size,
    libfsclfs_error_t **error);

🌈 Stream functions

int
libfsclfs_stream_free(libfsclfs_stream_t **stream,
    libfsclfs_error_t **error);

int
libfsclfs_stream_get_utf8_name_size(libfsclfs_stream_t *stream,
    size_t *utf8_string_size, libfsclfs_error_t **error);

int
libfsclfs_stream_get_utf8_name(libfsclfs_stream_t *stream,
    uint8_t *utf8_string, size_t utf8_string_size,
    libfsclfs_error_t **error);

int
libfsclfs_stream_get_utf16_name_size(libfsclfs_stream_t *stream,
    size_t *utf16_string_size, libfsclfs_error_t **error);

int
libfsclfs_stream_get_utf16_name(libfsclfs_stream_t *stream,
    uint16_t *utf16_string, size_t utf16_string_size,
    libfsclfs_error_t **error);

int
libfsclfs_stream_get_base_lsn(libfsclfs_stream_t *stream,
    uint64_t *base_lsn, libfsclfs_error_t **error);

int
libfsclfs_stream_get_last_lsn(libfsclfs_stream_t *stream,
    uint64_t *last_lsn, libfsclfs_error_t **error);

int
libfsclfs_stream_get_record_by_lsn(libfsclfs_stream_t *stream,
    uint64_t record_lsn, libfsclfs_record_t **record,
    libfsclfs_error_t **error);

πŸ’€ Record functions

int
libfsclfs_record_free(libfsclfs_record_t **record,
    libfsclfs_error_t **error);

int
libfsclfs_record_get_type(libfsclfs_record_t *record,
    uint32_t *record_type, libfsclfs_error_t **error);

int
libfsclfs_record_get_flags(libfsclfs_record_t *record,
    uint16_t *record_flags, libfsclfs_error_t **error);

int
libfsclfs_record_get_previous_lsn(libfsclfs_record_t *record,
    uint64_t *previous_lsn, libfsclfs_error_t **error);

int
libfsclfs_record_get_undo_next_lsn(libfsclfs_record_t *record,
    uint64_t *undo_next_lsn, libfsclfs_error_t **error);

int
libfsclfs_record_get_data(libfsclfs_record_t *record, uint8_t **data,
    size_t *data_size, libfsclfs_error_t **error);

🌟 DESCRIPTION 🌟

okay so the main character of this section is literally just one function, and it's libfsclfs_get_version(), and bestie it's exactly what it sounds like πŸ’– you call it, it hands you back the library version, no cap. it's the "hey what's ur sign" of libyal libraries, fr fr ✨


🫢 RETURN VALUES 🫢

lowkey important: most of these functions return NULL or -1 on error, and which one you get totally depends on the return type of the function you called πŸ‘‘ so if you actually need the exact return value for a specific function, go look it up in "libfsclfs.h" β€” that header is the source of truth, periodt πŸ’…


πŸ™ˆ ENVIRONMENT πŸ™ˆ

None

(yeah, nothing here, the vibes are minimal 😭)


πŸ“ FILES πŸ“

None

(also nothing, we stan a low-maintenance library ✨)


🧚 NOTES 🧚

okay so fun fact: libfsclfs can be compiled with wide character support (wchar_t) πŸ¦‹

to compile libfsclfs with wide character support, use:

./configure --enable-wide-character-type=yes

or define one of these during compilation:

_UNICODE

or:

UNICODE

also!! LIBFSCLFS_WIDE_CHARACTER_TYPE in libfsclfs/features.h can be used to determine if libfsclfs was compiled with wide character support πŸ‘‘ that's your vibe check for whether the wide-char functions are actually there, iykyk πŸ’œ


πŸ’€ BUGS πŸ’€

found a bug? any kind? pls pls pls report it on the project issue tracker, bestie, they want to know:

https://github.com/libyal/libfsclfs/issues


🌸 AUTHOR 🌸

these man pages are literally generated from "libfsclfs.h" β€” iconic, automated, no manual typing required πŸ’…


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

okay so this is free software πŸŽ€ see the source for copying conditions. and listen β€” there is NO warranty, not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, like none, zero, nada 😭 so use it responsibly bestie πŸ’–


⭐ SEE ALSO ⭐

  • the libfsclfs.h include file β€” that's the whole vibe, go read the header πŸ¦‹

and that's the page, bestie!! 🫢 this was the libfsclfs(3) manual, source/version libfsclfs, dated October 15, 2019 β€” mwah, slay, go read ur logs πŸ’…βœ¨