.Dd January 29, 2017 .Dt libolecf 3 .Os libolecf .Sh NAME .Nm libolecf.h .Nd Library to access the Object Linking and Embedding (OLE) Compound File (CF) format .Sh LIBRARY .Lb libolecf .Sh SYNOPSIS .In libolecf.h .Pp Support functions .Ft const char * .Fn libolecf_get_version "void" .Ft uint8_t .Fn libolecf_get_access_flags_read "void" .Ft int .Fn libolecf_get_codepage "int *codepage, libolecf_error_t **error" .Ft int .Fn libolecf_set_codepage "int codepage, libolecf_error_t **error" .Ft int .Fn libolecf_check_file_signature "const char *filename, libolecf_error_t **error" .Pp Available when compiled with wide character string support: .Ft int .Fn libolecf_check_file_signature_wide "const wchar_t *filename, libolecf_error_t **error" .Pp Available when compiled with libbfio support: .Ft int .Fn libolecf_check_file_signature_file_io_handle "libbfio_handle_t *file_io_handle, libolecf_error_t **error" .Pp Notify functions .Ft void .Fn libolecf_notify_set_verbose "int verbose" .Ft int .Fn libolecf_notify_set_stream "FILE *stream, libolecf_error_t **error" .Ft int .Fn libolecf_notify_stream_open "const char *filename, libolecf_error_t **error" .Ft int .Fn libolecf_notify_stream_close "libolecf_error_t **error" .Pp Error functions .Ft void .Fn libolecf_error_free "libolecf_error_t **error" .Ft int .Fn libolecf_error_fprint "libolecf_error_t *error, FILE *stream" .Ft int .Fn libolecf_error_sprint "libolecf_error_t *error, char *string, size_t size" .Ft int .Fn libolecf_error_backtrace_fprint "libolecf_error_t *error, FILE *stream" .Ft int .Fn libolecf_error_backtrace_sprint "libolecf_error_t *error, char *string, size_t size" .Pp File functions .Ft int .Fn libolecf_file_initialize "libolecf_file_t **file, libolecf_error_t **error" .Ft int .Fn libolecf_file_free "libolecf_file_t **file, libolecf_error_t **error" .Ft int .Fn libolecf_file_signal_abort "libolecf_file_t *file, libolecf_error_t **error" .Ft int .Fn libolecf_file_open "libolecf_file_t *file, const char *filename, int access_flags, libolecf_error_t **error" .Ft int .Fn libolecf_file_close "libolecf_file_t *file, libolecf_error_t **error" .Ft int .Fn libolecf_file_get_sector_size "libolecf_file_t *file, size32_t *sector_size, libolecf_error_t **error" .Ft int .Fn libolecf_file_get_short_sector_size "libolecf_file_t *file, size32_t *short_sector_size, libolecf_error_t **error" .Ft int .Fn libolecf_file_get_ascii_codepage "libolecf_file_t *file, int *ascii_codepage, libolecf_error_t **error" .Ft int .Fn libolecf_file_set_ascii_codepage "libolecf_file_t *file, int ascii_codepage, libolecf_error_t **error" .Ft int .Fn libolecf_file_get_format_version "libolecf_file_t *file, uint16_t *major_version, uint16_t *minor_version, libolecf_error_t **error" .Ft int .Fn libolecf_file_get_number_of_unallocated_blocks "libolecf_file_t *file, int *number_of_unallocated_blocks, libolecf_error_t **error" .Ft int .Fn libolecf_file_get_unallocated_block "libolecf_file_t *file, int unallocated_block_index, off64_t *offset, size64_t *size, libolecf_error_t **error" .Ft int .Fn libolecf_file_get_root_item "libolecf_file_t *file, libolecf_item_t **root_item, libolecf_error_t **error" .Ft int .Fn libolecf_file_get_item_by_utf8_path "libolecf_file_t *file, const uint8_t *utf8_string, size_t utf8_string_length, libolecf_item_t **item, libolecf_error_t **error" .Ft int .Fn libolecf_file_get_item_by_utf16_path "libolecf_file_t *file, const uint16_t *utf16_string, size_t utf16_string_length, libolecf_item_t **item, libolecf_error_t **error" .Pp Available when compiled with wide character string support: .Ft int .Fn libolecf_file_open_wide "libolecf_file_t *file, const wchar_t *filename, int access_flags, libolecf_error_t **error" .Pp Available when compiled with libbfio support: .Ft int .Fn libolecf_file_open_file_io_handle "libolecf_file_t *file, libbfio_handle_t *file_io_handle, int access_flags, libolecf_error_t **error" .Pp Item functions .Ft int .Fn libolecf_item_free "libolecf_item_t **item, libolecf_error_t **error" .Ft int .Fn libolecf_item_get_type "libolecf_item_t *item, uint8_t *type, libolecf_error_t **error" .Ft int .Fn libolecf_item_get_utf8_name_size "libolecf_item_t *item, size_t *utf8_string_size, libolecf_error_t **error" .Ft int .Fn libolecf_item_get_utf8_name "libolecf_item_t *item, uint8_t *utf8_string, size_t utf8_string_size, libolecf_error_t **error" .Ft int .Fn libolecf_item_get_utf16_name_size "libolecf_item_t *item, size_t *utf16_string_size, libolecf_error_t **error" .Ft int .Fn libolecf_item_get_utf16_name "libolecf_item_t *item, uint16_t *utf16_string, size_t utf16_string_size, libolecf_error_t **error" .Ft int .Fn libolecf_item_get_size "libolecf_item_t *item, uint32_t *size, libolecf_error_t **error" .Ft int .Fn libolecf_item_get_creation_time "libolecf_item_t *item, uint64_t *filetime, libolecf_error_t **error" .Ft int .Fn libolecf_item_get_modification_time "libolecf_item_t *item, uint64_t *filetime, libolecf_error_t **error" .Ft int .Fn libolecf_item_get_number_of_sub_items "libolecf_item_t *item, int *number_of_sub_items, libolecf_error_t **error" .Ft int .Fn libolecf_item_get_sub_item "libolecf_item_t *item, int sub_item_index, libolecf_item_t **sub_item, libolecf_error_t **error" .Ft int .Fn libolecf_item_get_sub_item_by_utf8_name "libolecf_item_t *item, const uint8_t *utf8_string, size_t utf8_string_length, libolecf_item_t **sub_item, libolecf_error_t **error" .Ft int .Fn libolecf_item_get_sub_item_by_utf16_name "libolecf_item_t *item, const uint16_t *utf16_string, size_t utf16_string_length, libolecf_item_t **sub_item, libolecf_error_t **error" .Ft int .Fn libolecf_item_get_sub_item_by_utf8_path "libolecf_item_t *item, const uint8_t *utf8_string, size_t utf8_string_length, libolecf_item_t **sub_item, libolecf_error_t **error" .Ft int .Fn libolecf_item_get_sub_item_by_utf16_path "libolecf_item_t *item, const uint16_t *utf16_string, size_t utf16_string_length, libolecf_item_t **sub_item, libolecf_error_t **error" .Pp Stream functions .Ft ssize_t .Fn libolecf_stream_read_buffer "libolecf_item_t *stream, uint8_t *buffer, size_t size, libolecf_error_t **error" .Ft off64_t .Fn libolecf_stream_seek_offset "libolecf_item_t *stream, off64_t offset, int whence, libolecf_error_t **error" .Ft int .Fn libolecf_stream_get_offset "libolecf_item_t *stream, off64_t *offset, libolecf_error_t **error" .Pp Property set stream functions .Ft int .Fn libolecf_property_set_stream_get_set "libolecf_item_t *property_set_stream, libolecf_property_set_t **property_set, libolecf_error_t **error" .Pp Property set functions .Ft int .Fn libolecf_property_set_free "libolecf_property_set_t **property_set, libolecf_error_t **error" .Ft int .Fn libolecf_property_set_get_class_identifier "libolecf_property_set_t *property_set, uint8_t *guid_data, size_t guid_data_size, libolecf_error_t **error" .Ft int .Fn libolecf_property_set_get_number_of_sections "libolecf_property_set_t *property_set, int *number_of_sections, libolecf_error_t **error" .Ft int .Fn libolecf_property_set_get_section_by_index "libolecf_property_set_t *property_set, int section_index, libolecf_property_section_t **property_section, libolecf_error_t **error" .Pp Property section functions .Ft int .Fn libolecf_property_section_free "libolecf_property_section_t **property_section, libolecf_error_t **error" .Ft int .Fn libolecf_property_section_get_class_identifier "libolecf_property_section_t *property_section, uint8_t *guid_data, size_t guid_data_size, libolecf_error_t **error" .Ft int .Fn libolecf_property_section_get_number_of_properties "libolecf_property_section_t *property_section, int *number_of_properties, libolecf_error_t **error" .Ft int .Fn libolecf_property_section_get_property_by_index "libolecf_property_section_t *property_section, int property_index, libolecf_property_value_t **property_value, libolecf_error_t **error" .Pp Property value functions .Ft int .Fn libolecf_property_value_free "libolecf_property_value_t **property_value, libolecf_error_t **error" .Ft int .Fn libolecf_property_value_get_identifier "libolecf_property_value_t *property_value, uint32_t *identifier, libolecf_error_t **error" .Ft int .Fn libolecf_property_value_get_value_type "libolecf_property_value_t *property_value, uint32_t *value_type, libolecf_error_t **error" .Ft int .Fn libolecf_property_value_get_data_size "libolecf_property_value_t *property_value, size_t *data_size, libolecf_error_t **error" .Ft int .Fn libolecf_property_value_get_data "libolecf_property_value_t *property_value, uint8_t *data, size_t data_size, libolecf_error_t **error" .Ft int .Fn libolecf_property_value_get_data_as_boolean "libolecf_property_value_t *property_value, uint8_t *value_boolean, libolecf_error_t **error" .Ft int .Fn libolecf_property_value_get_data_as_16bit_integer "libolecf_property_value_t *property_value, uint16_t *value_16bit, libolecf_error_t **error" .Ft int .Fn libolecf_property_value_get_data_as_32bit_integer "libolecf_property_value_t *property_value, uint32_t *value_32bit, libolecf_error_t **error" .Ft int .Fn libolecf_property_value_get_data_as_64bit_integer "libolecf_property_value_t *property_value, uint64_t *value_64bit, libolecf_error_t **error" .Ft int .Fn libolecf_property_value_get_data_as_filetime "libolecf_property_value_t *property_value, uint64_t *filetime, libolecf_error_t **error" .Ft int .Fn libolecf_property_value_get_data_as_utf8_string_size "libolecf_property_value_t *property_value, size_t *utf8_string_size, libolecf_error_t **error" .Ft int .Fn libolecf_property_value_get_data_as_utf8_string "libolecf_property_value_t *property_value, uint8_t *utf8_string, size_t utf8_string_size, libolecf_error_t **error" .Ft int .Fn libolecf_property_value_get_data_as_utf16_string_size "libolecf_property_value_t *property_value, size_t *utf16_string_size, libolecf_error_t **error" .Ft int .Fn libolecf_property_value_get_data_as_utf16_string "libolecf_property_value_t *property_value, uint16_t *utf16_string, size_t utf16_string_size, libolecf_error_t **error" .Sh DESCRIPTION The .Fn libolecf_get_version function is used to retrieve the library version. .Sh RETURN VALUES Most of the functions return NULL or \-1 on error, dependent on the return type. For the actual return values see "libolecf.h". .Sh ENVIRONMENT None .Sh FILES None .Sh NOTES libolecf allows to be compiled with wide character support (wchar_t). To compile libolecf with wide character support use: .Ar ./configure --enable-wide-character-type=yes or define: .Ar _UNICODE or .Ar UNICODE during compilation. .Ar LIBOLECF_WIDE_CHARACTER_TYPE in libolecf/features.h can be used to determine if libolecf was compiled with wide character support. .Sh BUGS Please report bugs of any kind on the project issue tracker: https://github.com/libyal/libolecf/issues .Sh AUTHOR These man pages are generated from "libolecf.h". .Sh COPYRIGHT Copyright (C) 2008-2018, Joachim Metz . This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. .Sh SEE ALSO the libolecf.h include file