libpff(3)

NAME
libpff.h - Library to access the Personal Folder File (PFF) and the Offline Folder File (OFF) format. PFF is used in PAB (Personal Address Book), PST (Personal Storage Table) and OST (Offline Storage Table) files.

LIBRARY
libpff

SYNOPSIS
#include <libpff.h>

Support functions
const char *
libpff_get_version(void);
int
libpff_get_access_flags_read();
int
libpff_get_codepage(int *codepage, libpff_error_t **error);
int
libpff_set_codepage(int codepage, libpff_error_t **error);
int
libpff_check_file_signature(const char *filename, libpff_error_t **error);

Available when compiled with wide character string support:
int
libpff_check_file_signature_wide(const wchar_t *filename, libpff_error_t **error);

Available when compiled with libbfio support:
int
libpff_check_file_signature_file_io_handle(libbfio_handle_t *bfio_handle, libpff_error_t **error);

Notify functions
void
libpff_notify_set_verbose(int verbose);
int
libpff_notify_set_stream(FILE *stream, libpff_error_t **error);
int
libpff_notify_stream_open(const char *filename, libpff_error_t **error);
int
libpff_notify_stream_close(libpff_error_t **error);

Error functions
void
libpff_error_free(libpff_error_t **error);
int
libpff_error_fprint(libpff_error_t *error, FILE *stream);
int
libpff_error_sprint(libpff_error_t *error, char *string, size_t size);
int
libpff_error_backtrace_fprint(libpff_error_t *error, FILE *stream);
int
libpff_error_backtrace_sprint(libpff_error_t *error, char *string, size_t size);

File functions
int
libpff_file_initialize(libpff_file_t **file, libpff_error_t **error);
int
libpff_file_free(libpff_file_t **file, libpff_error_t **error);
int
libpff_file_signal_abort(libpff_file_t *file, libpff_error_t **error);
int
libpff_file_open(libpff_file_t *file, const char *filename, int flags, libpff_error_t **error);
int
libpff_file_close(libpff_file_t *file, libpff_error_t **error);
int
libpff_file_recover_items(libpff_file_t *file, uint8_t recovery_flags, libpff_error_t **error);
int
libpff_file_get_size(libpff_file_t *file, size64_t *size, libpff_error_t **error);
int
libpff_file_get_type(libpff_file_t *file, uint8_t *type, libpff_error_t **error);
int
libpff_file_get_encryption_type(libpff_file_t *file, uint8_t *encryption_type, libpff_error_t **error);
int
libpff_file_get_ascii_codepage(libpff_file_t *file, int *ascii_codepage, libpff_error_t **error);
int
libpff_file_set_ascii_codepage(libpff_file_t *file, int ascii_codepage, libpff_error_t **error);
int
libpff_file_get_number_of_unallocated_blocks(libpff_file_t *file, int unallocated_block_type, int *number_of_unallocated_blocks, libpff_error_t **error);
int
libpff_file_get_unallocated_block(libpff_file_t *file, int unallocated_block_type, int unallocated_block_index, off64_t *offset, size64_t *size, libpff_error_t **error);
int
libpff_file_get_root_item(libpff_file_t *file, libpff_item_t **root_item, libpff_error_t **error);
int
libpff_file_get_message_store(libpff_file_t *file, libpff_item_t **message_store, libpff_error_t **error);
int
libpff_file_get_root_folder(libpff_file_t *file, libpff_item_t **root_folder, libpff_error_t **error);
int
libpff_file_get_item_by_identifier(libpff_file_t *file, uint32_t item_identifier, libpff_item_t **item, libpff_error_t **error);
int
libpff_file_get_number_of_orphan_items(libpff_file_t *file, int *number_of_orphan_items, libpff_error_t **error);
int
libpff_file_get_orphan_item(libpff_file_t *file, int orphan_item_index, libpff_item_t **orphan_item, libpff_error_t **error);
int
libpff_file_get_number_of_recovered_items(libpff_file_t *file, int *number_of_recovered_items, libpff_error_t **error);
int
libpff_file_get_recovered_item(libpff_file_t *file, int recovered_item_index, libpff_item_t **recovered_item, libpff_error_t **error);

Available when compiled with wide character string support:
int
libpff_file_open_wide(libpff_file_t *file, const wchar_t *filename, int flags, libpff_error_t **error);

Available when compiled with libbfio support:
int
libpff_file_open_file_io_handle(libpff_file_t *file, libbfio_handle_t *file_io_handle, int flags, libpff_error_t **error);
Name to id map entry functions
int
libpff_name_to_id_map_entry_get_type(libpff_name_to_id_map_entry_t *name_to_id_map_entry, uint8_t *entry_type, libpff_error_t **error);
int
libpff_name_to_id_map_entry_get_number(libpff_name_to_id_map_entry_t *name_to_id_map_entry, uint32_t *number, libpff_error_t **error);
int
libpff_name_to_id_map_entry_get_utf8_string_size(libpff_name_to_id_map_entry_t *name_to_id_map_entry, size_t *utf8_string_size, libpff_error_t **error);
int
libpff_name_to_id_map_entry_get_utf8_string(libpff_name_to_id_map_entry_t *name_to_id_map_entry, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error);
int
libpff_name_to_id_map_entry_get_utf16_string_size(libpff_name_to_id_map_entry_t *name_to_id_map_entry, size_t *utf16_string_size, libpff_error_t **error);
int
libpff_name_to_id_map_entry_get_utf16_string(libpff_name_to_id_map_entry_t *name_to_id_map_entry, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error);
int
libpff_name_to_id_map_entry_get_guid(libpff_name_to_id_map_entry_t *name_to_id_map_entry, uint8_t *guid, size_t size, libpff_error_t **error);
Item functions
int
libpff_item_clone(libpff_item_t **destination_item, libpff_item_t *source_item, libpff_error_t **error);
int
libpff_item_free(libpff_item_t **item, libpff_error_t **error);
int
libpff_item_get_identifier(libpff_item_t *item, uint32_t *identifier, libpff_error_t **error);
int
libpff_item_get_number_of_sets(libpff_item_t *item, uint32_t *number_of_sets, libpff_error_t **error);
int
libpff_item_get_number_of_entries(libpff_item_t *item, uint32_t *number_of_entries, libpff_error_t **error);
int
libpff_item_get_entry_type(libpff_item_t *item, int set_index, int entry_index, uint32_t *entry_type, uint32_t *value_type, libpff_name_to_id_map_entry_t **name_to_id_map_entry, libpff_error_t **error);
int
libpff_item_get_value_type(libpff_item_t *item, int set_index, uint32_t entry_type, uint32_t *value_type, uint8_t flags, libpff_error_t **error);
int
libpff_item_get_entry_value(libpff_item_t *item, int set_index, uint32_t entry_type, uint32_t *value_type, uint8_t **value_data, size_t *value_data_size, uint8_t flags, libpff_error_t **error);
int
libpff_item_get_entry_value_by_utf8_name(libpff_item_t *item, int set_index, uint8_t* utf8_entry_name, size_t utf8_entry_name_size, uint32_t *value_type, uint8_t **value_data, size_t *value_data_size, libpff_error_t **error);
int
libpff_item_get_entry_value_by_utf16_name(libpff_item_t *item, int set_index, uint16_t* utf16_entry_name, size_t utf16_entry_name_size, uint32_t *value_type, uint8_t **value_data, size_t *value_data_size, libpff_error_t **error);
int
libpff_item_get_entry_value_boolean(libpff_item_t *item, int set_index, uint32_t entry_type, uint8_t *entry_value, uint8_t flags, libpff_error_t **error);
int
libpff_item_get_entry_value_16bit(libpff_item_t *item, int set_index, uint32_t entry_type, uint16_t *entry_value, uint8_t flags, libpff_error_t **error);
int
libpff_item_get_entry_value_32bit(libpff_item_t *item, int set_index, uint32_t entry_type, uint32_t *entry_value, uint8_t flags, libpff_error_t **error);
int
libpff_item_get_entry_value_64bit(libpff_item_t *item, int set_index, uint32_t entry_type, uint64_t *entry_value, uint8_t flags, libpff_error_t **error);
int
libpff_item_get_entry_value_filetime(libpff_item_t *item, int set_index, uint32_t entry_type, uint64_t *entry_value, uint8_t flags, libpff_error_t **error);
int
libpff_item_get_entry_value_size(libpff_item_t *item, int set_index, uint32_t entry_type, size_t *entry_value, uint8_t flags, libpff_error_t **error);
int
libpff_item_get_entry_value_floating_point(libpff_item_t *item, int set_index, uint32_t entry_type, double *entry_value, uint8_t flags, libpff_error_t **error);
int
libpff_item_get_entry_value_utf8_string_size(libpff_item_t *item, int set_index, uint32_t entry_type, size_t *utf8_string_size, uint8_t flags, libpff_error_t **error);
int
libpff_item_get_entry_value_utf8_string(libpff_item_t *item, int set_index, uint32_t entry_type, uint8_t *utf8_string, size_t utf8_string_size, uint8_t flags, libpff_error_t **error);
int
libpff_item_get_entry_value_utf16_string_size(libpff_item_t *item, int set_index, uint32_t entry_type, size_t *utf16_string_size, uint8_t flags, libpff_error_t **error);
int
libpff_item_get_entry_value_utf16_string(libpff_item_t *item, int set_index, uint32_t entry_type, uint8_t *utf16_string, size_t utf16_string_size, uint8_t flags, libpff_error_t **error);
int
libpff_item_get_entry_value_binary_data_size(libpff_item_t *item, int set_index, uint32_t entry_type, size_t *size, uint8_t flags, libpff_error_t **error);
int
libpff_item_get_entry_value_binary_data(libpff_item_t *item, int set_index, uint32_t entry_type, uint8_t *binary_data, size_t size, uint8_t flags, libpff_error_t **error);
int
libpff_item_get_entry_value_guid(libpff_item_t *item, int set_index, uint32_t entry_type, uint8_t *guid, size_t size, uint8_t flags, libpff_error_t **error);
int
libpff_item_get_entry_multi_value(libpff_item_t *item, int set_index, uint32_t entry_type, libpff_multi_value_t **multi_value, uint8_t flags, libpff_error_t **error);
int
libpff_item_get_type(libpff_item_t *item, uint8_t *item_type, libpff_error_t **error);
int
libpff_item_get_number_of_sub_items(libpff_item_t *item, int *number_of_sub_items, libpff_error_t **error);
int
libpff_item_get_sub_item(libpff_item_t *item, int sub_item_index, libpff_item_t **sub_item, libpff_error_t **error);
int
libpff_item_get_sub_item_by_identifier(libpff_item_t *item, uint32_t sub_item_identifier, libpff_item_t **sub_item, libpff_error_t **error);
int
libpff_item_get_utf8_display_name_size(libpff_item_t *item, size_t *utf8_string_size, libpff_error_t **error);
int
libpff_item_get_utf8_display_name(libpff_item_t *item, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error);
int
libpff_item_get_utf16_display_name_size(libpff_item_t *item, size_t *utf16_string_size, libpff_error_t **error);
int
libpff_item_get_utf16_display_name(libpff_item_t *item, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error);
int
libpff_item_get_utf8_address_type_size(libpff_item_t *item, size_t *utf8_string_size, libpff_error_t **error);
int
libpff_item_get_utf8_address_type(libpff_item_t *item, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error);
int
libpff_item_get_utf16_address_type_size(libpff_item_t *item, size_t *utf16_string_size, libpff_error_t **error);
int
libpff_item_get_utf16_address_type(libpff_item_t *item, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error);
int
libpff_item_get_utf8_email_address_size(libpff_item_t *item, size_t *utf8_string_size, libpff_error_t **error);
int
libpff_item_get_utf8_email_address(libpff_item_t *item, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error);
int
libpff_item_get_utf16_email_address_size(libpff_item_t *item, size_t *utf16_string_size, libpff_error_t **error);
int
libpff_item_get_utf16_email_address(libpff_item_t *item, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error);

Multi value functions
int
libpff_multi_value_free(libpff_multi_value_t **multi_value, libpff_error_t **error);
int
libpff_multi_value_get_number_of_values(libpff_multi_value_t *multi_value, int *number_of_values, libpff_error_t **error);
int
libpff_multi_value_get_entry_value(libpff_multi_value_t *multi_value, int value_index, uint32_t *value_type, uint8_t **value_data, size_t *value_data_size, libpff_error_t **error);
int
libpff_multi_value_get_value_32bit(libpff_multi_value_t *multi_value, int value_index, uint32_t *value, libpff_error_t **error);
int
libpff_multi_value_get_value_64bit(libpff_multi_value_t *multi_value, int value_index, uint64_t *value, libpff_error_t **error);
int
libpff_multi_value_get_value_filetime(libpff_multi_value_t *multi_value, int value_index, uint64_t *filetime, libpff_error_t **error);
int
libpff_multi_value_get_value_utf8_string_size(libpff_multi_value_t *multi_value, int value_index, size_t *utf8_string_size, libpff_error_t **error);
int
libpff_multi_value_get_value_utf8_string(libpff_multi_value_t *multi_value, int value_index, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error);
int
libpff_multi_value_get_value_utf16_string_size(libpff_multi_value_t *multi_value, int value_index, size_t *utf16_string_size, libpff_error_t **error);
int
libpff_multi_value_get_value_utf16_string(libpff_multi_value_t *multi_value, int value_index, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error);
int
libpff_multi_value_get_value_binary_data_size(libpff_multi_value_t *multi_value, int value_index, size_t *size, libpff_error_t **error);
int
libpff_multi_value_get_value_binary_data(libpff_multi_value_t *multi_value, int value_index, uint8_t *binary_data, size_t size, libpff_error_t **error);
int
libpff_multi_value_get_value_guid(libpff_multi_value_t *multi_value, int value_index, uint8_t *guid, size_t size, libpff_error_t **error);

Folder functions
int
libpff_folder_get_utf8_name_size(libpff_item_t *folder, size_t *utf8_string_size, libpff_error_t **error);
int
libpff_folder_get_utf8_name(libpff_item_t *folder, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error);
int
libpff_folder_get_utf16_name_size(libpff_item_t *folder, size_t *utf16_string_size, libpff_error_t **error);
int
libpff_folder_get_utf16_name(libpff_item_t *folder, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error);
int
libpff_folder_get_type(libpff_item_t *folder, uint8_t *type, libpff_error_t **error);
int
libpff_folder_get_number_of_sub_folders(libpff_item_t *folder, int *number_of_sub_folders, libpff_error_t **error);
int
libpff_folder_get_sub_folder(libpff_item_t *folder, int sub_folder_index, libpff_item_t **sub_folder, libpff_error_t **error);
int
libpff_folder_get_sub_folder_by_utf8_name(libpff_item_t *folder, uint8_t *utf8_sub_folder_name, size_t utf8_sub_folder_name_size, libpff_item_t **sub_folder, libpff_error_t **error);
int
libpff_folder_get_sub_folder_by_utf16_name(libpff_item_t *folder, uint16_t *utf16_sub_folder_name, size_t utf16_sub_folder_name_size, libpff_item_t **sub_folder, libpff_error_t **error);
int
libpff_folder_get_sub_folders(libpff_item_t *folder, libpff_item_t **sub_folders, libpff_error_t **error);
int
libpff_folder_get_number_of_sub_messages(libpff_item_t *folder, int *number_of_sub_messages, libpff_error_t **error);
int
libpff_folder_get_sub_message(libpff_item_t *folder, int sub_message_index, libpff_item_t **sub_message, libpff_error_t **error);
libpff_folder_get_sub_message_by_utf8_name(libpff_item_t *folder, uint8_t *utf8_sub_message_name, size_t utf8_sub_message_name_size, libpff_item_t **sub_message, libpff_error_t **error);
int
libpff_folder_get_sub_message_by_utf16_name(libpff_item_t *folder, uint16_t *utf16_sub_message_name, size_t utf16_sub_message_name_size, libpff_item_t **sub_message, libpff_error_t **error);
int
int
libpff_folder_get_sub_messages(libpff_item_t *folder, libpff_item_t **sub_messages, libpff_error_t **error);
int
libpff_folder_get_number_of_sub_associated_contents(libpff_item_t *folder, int *number_of_sub_associated_contents, libpff_error_t **error);
int
libpff_folder_get_sub_associated_content(libpff_item_t *folder, int sub_associated_content_index, libpff_item_t **sub_associated_content, libpff_error_t **error);
int
libpff_folder_get_sub_associated_contents(libpff_item_t *folder, libpff_item_t **sub_associated_contents, libpff_error_t **error);

Message store functions
int
libpff_message_store_get_valid_folder_mask(libpff_item_t *message_store, uint32_t *valid_folder_mask, libpff_error_t **error);
int
libpff_message_store_get_password_checksum(libpff_item_t *message_store, uint32_t *password_checksum, libpff_error_t **error);

Message functions
int
libpff_message_get_entry_value_utf8_string_size(libpff_item_t *message, uint32_t entry_type, size_t *utf8_string_size, libpff_error_t **error);
int
libpff_message_get_entry_value_utf8_string(libpff_item_t *message, uint32_t entry_type, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error);
int
libpff_message_get_entry_value_utf16_string_size(libpff_item_t *message, uint32_t entry_type, size_t *utf16_string_size, libpff_error_t **error);
int
libpff_message_get_entry_value_utf16_string(libpff_item_t *message, uint32_t entry_type, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error);
int
libpff_message_get_number_of_attachments(libpff_item_t *message, int *number_of_attachments, libpff_error_t **error);
int
libpff_message_get_attachment(libpff_item_t *message, int attachment_index, libpff_item_t **attachment, libpff_error_t **error);
int
libpff_message_get_attachments(libpff_item_t *message, libpff_item_t **attachments, libpff_error_t **error);
int
libpff_message_get_recipients(libpff_item_t *message, libpff_item_t **recipients, libpff_error_t **error);
int
libpff_message_get_utf8_class_size(libpff_item_t *message, size_t *utf8_string_size, libpff_error_t **error);
int
libpff_message_get_utf8_class(libpff_item_t *message, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error);
int
libpff_message_get_utf8_subject_size(*subject_size, libpff_item_t *message, size_t *utf8_string_size, libpff_error_t **error);
int
libpff_message_get_utf8_subject(libpff_item_t *message, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error);
int
libpff_message_get_utf8_conversation_topic_size(libpff_item_t *message, size_t *utf8_string_size, libpff_error_t **error);
int
libpff_message_get_utf8_conversation_topic(libpff_item_t *message, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error);
int
libpff_message_get_conversation_index_size(libpff_item_t *message, size_t *size, libpff_error_t **error);
int
libpff_message_get_conversation_index(libpff_item_t *message, uint8_t *conversation_index, size_t size, libpff_error_t **error);
int
libpff_message_get_utf8_sender_name_size(libpff_item_t *message, size_t *utf8_string_size, libpff_error_t **error);
int
libpff_message_get_utf8_sender_name(libpff_item_t *message, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error);
int
libpff_message_get_utf16_sender_name_size(libpff_item_t *message, size_t *utf16_string_size, libpff_error_t **error);
int
libpff_message_get_utf16_sender_name(libpff_item_t *message, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error);
int
libpff_message_get_utf8_sender_email_address_size(libpff_item_t *message, size_t *utf8_string_size, libpff_error_t **error);
int
libpff_message_get_utf8_sender_email_address(libpff_item_t *message, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error);
int
libpff_message_get_utf16_sender_email_address_size(libpff_item_t *message, size_t *utf16_string_size, libpff_error_t **error);
int
libpff_message_get_utf16_sender_email_address(libpff_item_t *message, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error);
int
libpff_message_get_utf8_sent_representing_name_size(libpff_item_t *message, size_t *utf8_string_size, libpff_error_t **error);
int
libpff_message_get_utf8_sent_representing_name(libpff_item_t *message, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error);
int
libpff_message_get_utf16_sent_representing_name_size(libpff_item_t *message, size_t *utf16_string_size, libpff_error_t **error);
int
libpff_message_get_utf16_sent_representing_name(libpff_item_t *message, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error);
int
libpff_message_get_utf8_sent_representing_email_address_size(libpff_item_t *message, size_t *utf8_string_size, libpff_error_t **error);
int
libpff_message_get_utf8_sent_representing_email_address(libpff_item_t *message, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error);
int
libpff_message_get_utf16_sent_representing_email_address_size(libpff_item_t *message, size_t *utf16_string_size, libpff_error_t **error);
int
libpff_message_get_utf16_sent_representing_email_address(libpff_item_t *message, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error);
int
libpff_message_get_utf8_received_by_name_size(libpff_item_t *message, size_t *utf8_string_size, libpff_error_t **error);
int
libpff_message_get_utf8_received_by_name(libpff_item_t *message, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error);
int
libpff_message_get_utf16_received_by_name_size(libpff_item_t *message, size_t *utf16_string_size, libpff_error_t **error);
int
libpff_message_get_utf16_received_by_name(libpff_item_t *message, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error);
int
libpff_message_get_utf8_received_by_email_address_size(libpff_item_t *message, size_t *utf8_string_size, libpff_error_t **error);
int
libpff_message_get_utf8_received_by_email_address(libpff_item_t *message, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error);
int
libpff_message_get_utf16_received_by_email_address_size(libpff_item_t *message, size_t *utf16_string_size, libpff_error_t **error);
int
libpff_message_get_utf16_received_by_email_address(libpff_item_t *message, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error);
int
libpff_message_get_importance(libpff_item_t *message, uint32_t *importance, libpff_error_t **error);
int
libpff_message_get_priority(libpff_item_t *message, uint32_t *priority, libpff_error_t **error);
int
libpff_message_get_sensitivity(libpff_item_t *message, uint32_t *sensitivity, libpff_error_t **error);
int
libpff_message_get_flags(libpff_item_t *message, uint32_t *flags, libpff_error_t **error);
int
libpff_message_get_size(libpff_item_t *message, uint32_t *size, libpff_error_t **error);
int
libpff_message_get_client_submit_time(libpff_item_t *message, uint64_t *client_submit_time, libpff_error_t **error);
int
libpff_message_get_delivery_time(libpff_item_t *message, uint64_t *delivery_time, libpff_error_t **error);
int
libpff_message_get_creation_time(libpff_item_t *message, uint64_t *creation_time, libpff_error_t **error);
int
libpff_message_get_modification_time(libpff_item_t *message, uint64_t *modification_time, libpff_error_t **error);
int
libpff_message_get_utf8_transport_headers_size(libpff_item_t *message, size_t *utf8_string_size, libpff_error_t **error);
int
libpff_message_get_utf8_transport_headers(libpff_item_t *message, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error);
int
libpff_message_get_utf16_transport_headers_size(libpff_item_t *message, size_t *utf16_string_size, libpff_error_t **error);
int
libpff_message_get_utf16_transport_headers(libpff_item_t *message, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error);
int
libpff_message_get_plain_text_body_size(libpff_item_t *message, size_t *size, libpff_error_t **error);
int
libpff_message_get_plain_text_body(libpff_item_t *message, uint8_t *plain_text_body, size_t size, libpff_error_t **error);
int
libpff_message_get_rtf_body_size(libpff_item_t *message, size_t *size, libpff_error_t **error);
int
libpff_message_get_body(libpff_item_t *message, uint8_t *rtf_body, size_t size, libpff_error_t **error);
int
libpff_message_get_html_body_size(libpff_item_t *message, size_t *size, libpff_error_t **error);
int
libpff_message_get_html_body(libpff_item_t *message, uint8_t *html_body, size_t size, libpff_error_t **error);

Appointment functions
int
libpff_appointment_get_utf8_location_size(libpff_item_t *appointment, size_t *utf8_string_size, libpff_error_t **error);
int
libpff_appointment_get_utf8_location(libpff_item_t *appointment, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error);
int
libpff_appointment_get_utf16_location_size(libpff_item_t *appointment, size_t *utf16_string_size, libpff_error_t **error);
int
libpff_appointment_get_utf16_location(libpff_item_t *appointment, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error);
int
libpff_appointment_start_time(libpff_item_t *appointment, uint64_t *start_time, libpff_error_t **error);
int
libpff_appointment_end_time(libpff_item_t *appointment, uint64_t *end_time, libpff_error_t **error);
int
libpff_appointment_get_utf8_recurring_pattern_size(libpff_item_t *appointment, size_t *utf8_string_size, libpff_error_t **error);
int
libpff_appointment_get_utf8_recurring_pattern(libpff_item_t *appointment, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error);
int
libpff_appointment_get_utf16_recurring_pattern_size(libpff_item_t *appointment, size_t *utf16_string_size, libpff_error_t **error);
int
libpff_appointment_get_utf16_recurring_pattern(libpff_item_t *appointment, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error);
int
libpff_appointment_get_utf8_timezone_description_size(libpff_item_t *appointment, size_t *utf8_string_size, libpff_error_t **error);
int
libpff_appointment_get_utf8_timezone_description(libpff_item_t *appointment, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error);
int
libpff_appointment_get_utf16_timezone_description_size(libpff_item_t *appointment, size_t *utf16_string_size, libpff_error_t **error);
int
libpff_appointment_get_utf16_timezone_description(libpff_item_t *appointment, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error);
int
libpff_appointment_first_effective_time(libpff_item_t *message, uint64_t *first_effective_time, libpff_error_t **error);
int
libpff_appointment_last_effective_time(libpff_item_t *message, uint64_t *last_effective_time, libpff_error_t **error);

Address functions
int
libpff_address_get_utf8_file_under_size(libpff_item_t *address, size_t *utf8_string_size, libpff_error_t **error);
int
libpff_address_get_utf8_file_under(libpff_item_t *address, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error);
int
libpff_address_get_utf16_file_under_size(libpff_item_t *address, size_t *utf16_string_size, libpff_error_t **error);
int
libpff_address_get_utf16_file_under(libpff_item_t *address, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error);

Contact functions
int
libpff_contact_get_utf8_file_as_size(libpff_item_t *contact, size_t *utf8_string_size, libpff_error_t **error);
int
libpff_contact_get_utf8_file_as(libpff_item_t *contact, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error);
int
libpff_contact_get_utf16_file_as_size(libpff_item_t *contact, size_t *utf16_string_size, libpff_error_t **error);
int
libpff_contact_get_utf16_file_as(libpff_item_t *contact, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error);
int
libpff_contact_get_utf8_postal_address_size(libpff_item_t *contact, size_t *utf8_string_size, libpff_error_t **error);
int
libpff_contact_get_utf8_postal_address(libpff_item_t *contact, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error);
int
libpff_contact_get_utf16_postal_address_size(libpff_item_t *contact, size_t *utf16_string_size, libpff_error_t **error);
int
libpff_contact_get_utf16_postal_address(libpff_item_t *contact, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error);
int
libpff_contact_get_utf8_company_name_size(libpff_item_t *contact, size_t *utf8_string_size, libpff_error_t **error);
int
libpff_contact_get_utf8_company_name(libpff_item_t *contact, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error);
int
libpff_contact_get_utf16_company_name_size(libpff_item_t *contact, size_t *utf16_string_size, libpff_error_t **error);
int
libpff_contact_get_utf16_company_name(libpff_item_t *contact, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error);
int
libpff_contact_get_utf8_department_name_size(libpff_item_t *contact, size_t *utf8_string_size, libpff_error_t **error);
int
libpff_contact_get_utf8_department_name(libpff_item_t *contact, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error);
int
libpff_contact_get_utf16_department_name_size(libpff_item_t *contact, size_t *utf16_string_size, libpff_error_t **error);
int
libpff_contact_get_utf16_department_name(libpff_item_t *contact, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error);
int
libpff_contact_get_utf8_office_location_size(libpff_item_t *contact, size_t *utf8_string_size, libpff_error_t **error);
int
libpff_contact_get_utf8_office_location(libpff_item_t *contact, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error);
int
libpff_contact_get_utf16_office_location_size(libpff_item_t *contact, size_t *utf16_string_size, libpff_error_t **error);
int
libpff_contact_get_utf16_office_location(libpff_item_t *contact, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error);
int
libpff_contact_get_utf8_callback_phone_number_size(libpff_item_t *contact, size_t *utf8_string_size, libpff_error_t **error);
int
libpff_contact_get_utf8_callback_phone_number(libpff_item_t *contact, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error);
int
libpff_contact_get_utf16_callback_phone_number_size(libpff_item_t *contact, size_t *utf16_string_size, libpff_error_t **error);
int
libpff_contact_get_utf16_callback_phone_number(libpff_item_t *contact, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error);
int
libpff_contact_get_utf8_primary_phone_number_size(libpff_item_t *contact, size_t *utf8_string_size, libpff_error_t **error);
int
libpff_contact_get_utf8_primary_phone_number(libpff_item_t *contact, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error);
int
libpff_contact_get_utf16_primary_phone_number_size(libpff_item_t *contact, size_t *utf16_string_size, libpff_error_t **error);
int
libpff_contact_get_utf16_primary_phone_number(libpff_item_t *contact, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error);
int
libpff_contact_get_utf8_home_phone_number_size(libpff_item_t *contact, size_t *utf8_string_size, libpff_error_t **error);
int
libpff_contact_get_utf8_home_phone_number(libpff_item_t *contact, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error);
int
libpff_contact_get_utf16_home_phone_number_size(libpff_item_t *contact, size_t *utf16_string_size, libpff_error_t **error);
int
libpff_contact_get_utf16_home_phone_number(libpff_item_t *contact, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error);
int
libpff_contact_get_utf8_business_phone_number_1_size(libpff_item_t *contact, size_t *utf8_string_size, libpff_error_t **error);
int
libpff_contact_get_utf8_business_phone_number_1(libpff_item_t *contact, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error);
int
libpff_contact_get_utf16_business_phone_number_1_size(libpff_item_t *contact, size_t *utf16_string_size, libpff_error_t **error);
int
libpff_contact_get_utf16_business_phone_number_1(libpff_item_t *contact, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error);
int
libpff_contact_get_utf8_business_phone_number_2_size(libpff_item_t *contact, size_t *utf8_string_size, libpff_error_t **error);
int
libpff_contact_get_utf8_business_phone_number_2(libpff_item_t *contact, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error);
int
libpff_contact_get_utf16_business_phone_number_2_size(libpff_item_t *contact, size_t *utf16_string_size, libpff_error_t **error);
int
libpff_contact_get_utf16_business_phone_number_2(libpff_item_t *contact, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error);
int
libpff_contact_get_utf8_mobile_phone_number_size(libpff_item_t *contact, size_t *utf8_string_size, libpff_error_t **error);
int
libpff_contact_get_utf8_mobile_phone_number(libpff_item_t *contact, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error);
int
libpff_contact_get_utf16_mobile_phone_number_size(libpff_item_t *contact, size_t *utf16_string_size, libpff_error_t **error);
int
libpff_contact_get_utf16_mobile_phone_number(libpff_item_t *contact, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error);
int
libpff_contact_get_utf8_business_fax_number_size(libpff_item_t *contact, size_t *utf8_string_size, libpff_error_t **error);
int
libpff_contact_get_utf8_business_fax_number(libpff_item_t *contact, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error);
int
libpff_contact_get_utf16_business_fax_number_size(libpff_item_t *contact, size_t *utf16_string_size, libpff_error_t **error);
int
libpff_contact_get_utf16_business_fax_number(libpff_item_t *contact, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error);
int
libpff_contact_get_utf8_country_size(libpff_item_t *contact, size_t *utf8_string_size, libpff_error_t **error);
int
libpff_contact_get_utf8_country(libpff_item_t *contact, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error);
int
libpff_contact_get_utf16_country_size(libpff_item_t *contact, size_t *utf16_string_size, libpff_error_t **error);
int
libpff_contact_get_utf16_country(libpff_item_t *contact, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error);
int
libpff_contact_get_utf8_locality_size(libpff_item_t *contact, size_t *utf8_string_size, libpff_error_t **error);
int
libpff_contact_get_utf8_locality(libpff_item_t *contact, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error);
int
libpff_contact_get_utf16_locality_size(libpff_item_t *contact, size_t *utf16_string_size, libpff_error_t **error);
int
libpff_contact_get_utf16_locality(libpff_item_t *contact, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error);
int
libpff_contact_get_utf8_title_size(libpff_item_t *contact, size_t *utf8_string_size, libpff_error_t **error);
int
libpff_contact_get_utf8_title(libpff_item_t *contact, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error);
int
libpff_contact_get_utf16_title_size(libpff_item_t *contact, size_t *utf16_string_size, libpff_error_t **error);
int
libpff_contact_get_utf16_title(libpff_item_t *contact, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error);

E-mail functions
int
libpff_email_get_utf8_filename_size(libpff_item_t *email, size_t *utf8_string_size, libpff_error_t **error);
int
libpff_email_get_utf8_filename(libpff_item_t *email, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error);
int
libpff_email_get_utf16_filename_size(libpff_item_t *email, size_t *utf16_string_size, libpff_error_t **error);
int
libpff_email_get_utf16_filename(libpff_item_t *email, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error);

Attachment functions
int
libpff_attachment_get_utf8_short_filename_size(libpff_item_t *attachment, size_t utf8_string_size, libpff_error_t **error);
int
libpff_attachment_get_utf8_short_filename(libpff_item_t *attachment, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error);
int
libpff_attachment_get_utf16_short_filename_size(libpff_item_t *attachment, size_t utf16_string_size, libpff_error_t **error);
int
libpff_attachment_get_utf16_short_filename(libpff_item_t *attachment, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error);
int
libpff_attachment_get_utf8_long_filename_size(libpff_item_t *attachment, size_t utf8_string_size, libpff_error_t **error);
int
libpff_attachment_get_utf8_long_filename(libpff_item_t *attachment, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error);
int
libpff_attachment_get_utf16_long_filename_size(libpff_item_t *attachment, size_t utf16_string_size, libpff_error_t **error);
int
libpff_attachment_get_utf16_long_filename(libpff_item_t *attachment, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error);
int
libpff_attachment_get_data_size(libpff_item_t *attachment, size64_t *size, libpff_error_t **error);
ssize_t
libpff_attachment_data_read_buffer(libpff_item_t *attachment, uint8_t *buffer, size_t buffer_size, libpff_error_t **error);
off64_
libpff_attachment_data_seek_offset(libpff_item_t *attachment, off64_t offset, int whence, libpff_error_t **error);
int
libpff_attachment_get_item(libpff_item_t *attachment, libpff_item_t **attached_item, libpff_error_t **error);

Available when compiled with libbfio support:
int
libpff_attachment_get_data_file_io_handle(libpff_item_t *attachment, libbfio_handle_t **file_io_handle, libpff_error_t **error);

Recipients functions
int
libpff_recipients_get_utf8_display_name_size(libpff_item_t *recipients, int recipient_index, size_t *utf8_string_size, libpff_error_t **error);
int
libpff_recipients_get_utf8_display_name(libpff_item_t *recipients, int recipient_index, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error);
int
libpff_recipients_get_utf16_display_name_size(libpff_item_t *recipients, int recipient_index, size_t *utf16_string_size, libpff_error_t **error);
int
libpff_recipients_get_utf16_display_name(libpff_item_t *recipients, int recipient_index, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error);
int
libpff_recipients_get_utf8_address_type_size(libpff_item_t *recipients, int recipient_index, size_t *utf8_string_size, libpff_error_t **error);
int
libpff_recipients_get_utf8_address_type(libpff_item_t *recipients, int recipient_index, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error);
int
libpff_recipients_get_utf16_address_type_size(libpff_item_t *recipients, int recipient_index, size_t *utf16_string_size, libpff_error_t **error);
int
libpff_recipients_get_utf16_address_type(libpff_item_t *recipients, int recipient_index, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error);
int
libpff_recipients_get_utf8_email_address_size(libpff_item_t *recipients, int recipient_index, size_t *utf8_string_size, libpff_error_t **error);
int
libpff_recipients_get_utf8_email_address(libpff_item_t *recipients, int recipient_index, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error);
int
libpff_recipients_get_utf16_email_address_size(libpff_item_t *recipients, int recipient_index, size_t *utf16_string_size, libpff_error_t **error);
int
libpff_recipients_get_utf16_email_address(libpff_item_t *recipients, int recipient_index, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error);
int
libpff_recipients_get_utf8_recipient_display_name_size(libpff_item_t *recipients, int recipient_index, size_t *utf8_string_size, libpff_error_t **error);
int
libpff_recipients_get_utf8_recipient_display_name(libpff_item_t *recipients, int recipient_index, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error);
int
libpff_recipients_get_utf16_recipient_display_name_size(libpff_item_t *recipients, int recipient_index, size_t *utf16_string_size, libpff_error_t **error);
int
libpff_recipients_get_utf16_recipient_display_name(libpff_item_t *recipients, int recipient_index, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error);
int
libpff_recipients_get_type(libpff_item_t *recipients, int recipient_index, uint32_t *type, libpff_error_t **error);

DESCRIPTION
The libpff_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 refer to libpff.h

ENVIRONMENT
None

FILES
None

NOTES
libpff mainly uses UTF-8 encoded strings except for filenames, but provides several UTF-16 functions.

ASCII strings in a PFF file contain an extended ASCII string using the codepage of the system it was created on. The function libpff_set_ascii_codepage allows to set the required codepage for reading and writing. The default codepage is ASCII and replaces all extended characters to the Unicode replacement character (U+fffd) when reading and the ASCII substitude character (0x1a) when writing.

libpff allows to be compiled with wide character support. To compile libpff with wide character support use ./configure --enable-wide-character-type=yes or pass the definition _UNICODE or UNICODE to the compiler (i.e. in case of Microsoft Visual Studio (MSVS) C++).

To have other code to determine if libpff was compiled with wide character support it defines LIBPFF_HAVE_WIDE_CHARACTER_TYPE in libpff/features.h.

libpff allows to be compiled with chained IO support using libbfio. libpff will automatically detect if a compatible version of libbfio is available.

To have other code to determine if libpff was compiled with libbfio support it defines LIBPFF_HAVE_BFIO in libpff/features.h.

BUGS
Please report bugs of any kind to <joachim.metz@gmail.com> or on the project website: http://code.google.com/p/libpff/

AUTHOR
These man pages were written by Joachim Metz.

COPYRIGHT
Copyright 2008-2012 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 libpff.h include file