.Dd July 29, 2012 .Dt libpff 3 .Os libpff .Sh NAME .Nm libpff.h .Nd 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. .Sh LIBRARY .Lb libpff .Sh SYNOPSIS .In libpff.h .Pp Support functions .Ft const char * .Fn libpff_get_version "void" .Ft int .Fn libpff_get_access_flags_read .Ft int .Fn libpff_get_codepage "int *codepage, libpff_error_t **error" .Ft int .Fn libpff_set_codepage "int codepage, libpff_error_t **error" .Ft int .Fn libpff_check_file_signature "const char *filename, libpff_error_t **error" .Pp Available when compiled with wide character string support: .Ft int .Fn libpff_check_file_signature_wide "const wchar_t *filename, libpff_error_t **error" .Pp Available when compiled with libbfio support: .Ft int .Fn libpff_check_file_signature_file_io_handle "libbfio_handle_t *bfio_handle, libpff_error_t **error" .Pp Notify functions .Ft void .Fn libpff_notify_set_verbose "int verbose" .Ft int .Fn libpff_notify_set_stream "FILE *stream, libpff_error_t **error" .Ft int .Fn libpff_notify_stream_open "const char *filename, libpff_error_t **error" .Ft int .Fn libpff_notify_stream_close "libpff_error_t **error" .Pp Error functions .Ft void .Fn libpff_error_free "libpff_error_t **error" .Ft int .Fn libpff_error_fprint "libpff_error_t *error, FILE *stream" .Ft int .Fn libpff_error_sprint "libpff_error_t *error, char *string, size_t size" .Ft int .Fn libpff_error_backtrace_fprint "libpff_error_t *error, FILE *stream" .Ft int .Fn libpff_error_backtrace_sprint "libpff_error_t *error, char *string, size_t size" .Pp File functions .Ft int .Fn libpff_file_initialize "libpff_file_t **file, libpff_error_t **error" .Ft int .Fn libpff_file_free "libpff_file_t **file, libpff_error_t **error" .Ft int .Fn libpff_file_signal_abort "libpff_file_t *file, libpff_error_t **error" .Ft int .Fn libpff_file_open "libpff_file_t *file, const char *filename, int flags, libpff_error_t **error" .Ft int .Fn libpff_file_close "libpff_file_t *file, libpff_error_t **error" .Ft int .Fn libpff_file_recover_items "libpff_file_t *file, uint8_t recovery_flags, libpff_error_t **error" .Ft int .Fn libpff_file_get_size "libpff_file_t *file, size64_t *size, libpff_error_t **error" .Ft int .Fn libpff_file_get_type "libpff_file_t *file, uint8_t *type, libpff_error_t **error" .Ft int .Fn libpff_file_get_encryption_type "libpff_file_t *file, uint8_t *encryption_type, libpff_error_t **error" .Ft int .Fn libpff_file_get_ascii_codepage "libpff_file_t *file, int *ascii_codepage, libpff_error_t **error" .Ft int .Fn libpff_file_set_ascii_codepage "libpff_file_t *file, int ascii_codepage, libpff_error_t **error" .Ft int .Fn libpff_file_get_number_of_unallocated_blocks "libpff_file_t *file, int unallocated_block_type, int *number_of_unallocated_blocks, libpff_error_t **error" .Ft int .Fn 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" .Ft int .Fn libpff_file_get_root_item "libpff_file_t *file, libpff_item_t **root_item, libpff_error_t **error" .Ft int .Fn libpff_file_get_message_store "libpff_file_t *file, libpff_item_t **message_store, libpff_error_t **error" .Ft int .Fn libpff_file_get_root_folder "libpff_file_t *file, libpff_item_t **root_folder, libpff_error_t **error" .Ft int .Fn libpff_file_get_item_by_identifier "libpff_file_t *file, uint32_t item_identifier, libpff_item_t **item, libpff_error_t **error" .Ft int .Fn libpff_file_get_number_of_orphan_items "libpff_file_t *file, int *number_of_orphan_items, libpff_error_t **error" .Ft int .Fn libpff_file_get_orphan_item "libpff_file_t *file, int orphan_item_index, libpff_item_t **orphan_item, libpff_error_t **error" .Ft int .Fn libpff_file_get_number_of_recovered_items "libpff_file_t *file, int *number_of_recovered_items, libpff_error_t **error" .Ft int .Fn libpff_file_get_recovered_item "libpff_file_t *file, int recovered_item_index, libpff_item_t **recovered_item, libpff_error_t **error" .Pp Available when compiled with wide character string support: .Ft int .Fn libpff_file_open_wide "libpff_file_t *file, const wchar_t *filename, int flags, libpff_error_t **error" .Pp Available when compiled with libbfio support: .Ft int .Fn libpff_file_open_file_io_handle "libpff_file_t *file, libbfio_handle_t *file_io_handle, int flags, libpff_error_t **error" .PP Name to id map entry functions .Ft int .Fn 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" .Ft int .Fn 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" .Ft int .Fn 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" .Ft int .Fn 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" .Ft int .Fn 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" .Ft int .Fn 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" .Ft int .Fn 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" .PP Item functions .Ft int .Fn libpff_item_clone "libpff_item_t **destination_item, libpff_item_t *source_item, libpff_error_t **error" .Ft int .Fn libpff_item_free "libpff_item_t **item, libpff_error_t **error" .Ft int .Fn libpff_item_get_identifier "libpff_item_t *item, uint32_t *identifier, libpff_error_t **error" .Ft int .Fn libpff_item_get_number_of_sets "libpff_item_t *item, uint32_t *number_of_sets, libpff_error_t **error" .Ft int .Fn libpff_item_get_number_of_entries "libpff_item_t *item, uint32_t *number_of_entries, libpff_error_t **error" .Ft int .Fn 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" .Ft int .Fn 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" .Ft int .Fn 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" .Ft int .Fn 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" .Ft int .Fn 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" .Ft int .Fn 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" .Ft int .Fn 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" .Ft int .Fn 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" .Ft int .Fn 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" .Ft int .Fn 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" .Ft int .Fn 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" .Ft int .Fn 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" .Ft int .Fn 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" .Ft int .Fn 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" .Ft int .Fn 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" .Ft int .Fn 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" .Ft int .Fn 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" .Ft int .Fn 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" .Ft int .Fn 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" .Ft int .Fn 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" .Ft int .Fn libpff_item_get_type "libpff_item_t *item, uint8_t *item_type, libpff_error_t **error" .Ft int .Fn libpff_item_get_number_of_sub_items "libpff_item_t *item, int *number_of_sub_items, libpff_error_t **error" .Ft int .Fn libpff_item_get_sub_item "libpff_item_t *item, int sub_item_index, libpff_item_t **sub_item, libpff_error_t **error" .Ft int .Fn 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" .Ft int .Fn libpff_item_get_utf8_display_name_size "libpff_item_t *item, size_t *utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_item_get_utf8_display_name "libpff_item_t *item, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_item_get_utf16_display_name_size "libpff_item_t *item, size_t *utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_item_get_utf16_display_name "libpff_item_t *item, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_item_get_utf8_address_type_size "libpff_item_t *item, size_t *utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_item_get_utf8_address_type "libpff_item_t *item, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_item_get_utf16_address_type_size "libpff_item_t *item, size_t *utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_item_get_utf16_address_type "libpff_item_t *item, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_item_get_utf8_email_address_size "libpff_item_t *item, size_t *utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_item_get_utf8_email_address "libpff_item_t *item, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_item_get_utf16_email_address_size "libpff_item_t *item, size_t *utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_item_get_utf16_email_address "libpff_item_t *item, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error" .Pp Multi value functions .Ft int .Fn libpff_multi_value_free "libpff_multi_value_t **multi_value, libpff_error_t **error" .Ft int .Fn libpff_multi_value_get_number_of_values "libpff_multi_value_t *multi_value, int *number_of_values, libpff_error_t **error" .Ft int .Fn 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" .Ft int .Fn libpff_multi_value_get_value_32bit "libpff_multi_value_t *multi_value, int value_index, uint32_t *value, libpff_error_t **error" .Ft int .Fn libpff_multi_value_get_value_64bit "libpff_multi_value_t *multi_value, int value_index, uint64_t *value, libpff_error_t **error" .Ft int .Fn libpff_multi_value_get_value_filetime "libpff_multi_value_t *multi_value, int value_index, uint64_t *filetime, libpff_error_t **error" .Ft int .Fn 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" .Ft int .Fn 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" .Ft int .Fn 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" .Ft int .Fn 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" .Ft int .Fn libpff_multi_value_get_value_binary_data_size "libpff_multi_value_t *multi_value, int value_index, size_t *size, libpff_error_t **error" .Ft int .Fn 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" .Ft int .Fn 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" .Pp Folder functions .Ft int .Fn libpff_folder_get_utf8_name_size "libpff_item_t *folder, size_t *utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_folder_get_utf8_name "libpff_item_t *folder, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_folder_get_utf16_name_size "libpff_item_t *folder, size_t *utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_folder_get_utf16_name "libpff_item_t *folder, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_folder_get_type "libpff_item_t *folder, uint8_t *type, libpff_error_t **error" .Ft int .Fn libpff_folder_get_number_of_sub_folders "libpff_item_t *folder, int *number_of_sub_folders, libpff_error_t **error" .Ft int .Fn libpff_folder_get_sub_folder "libpff_item_t *folder, int sub_folder_index, libpff_item_t **sub_folder, libpff_error_t **error" .Ft int .Fn 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" .Ft int .Fn 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" .Ft int .Fn libpff_folder_get_sub_folders "libpff_item_t *folder, libpff_item_t **sub_folders, libpff_error_t **error" .Ft int .Fn libpff_folder_get_number_of_sub_messages "libpff_item_t *folder, int *number_of_sub_messages, libpff_error_t **error" .Ft int .Fn libpff_folder_get_sub_message "libpff_item_t *folder, int sub_message_index, libpff_item_t **sub_message, libpff_error_t **error" .Fn 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" .Ft int .Fn 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" .Ft int .Ft int .Fn libpff_folder_get_sub_messages "libpff_item_t *folder, libpff_item_t **sub_messages, libpff_error_t **error" .Ft int .Fn libpff_folder_get_number_of_sub_associated_contents "libpff_item_t *folder, int *number_of_sub_associated_contents, libpff_error_t **error" .Ft int .Fn 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" .Ft int .Fn libpff_folder_get_sub_associated_contents "libpff_item_t *folder, libpff_item_t **sub_associated_contents, libpff_error_t **error" .Pp Message store functions .Ft int .Fn libpff_message_store_get_valid_folder_mask "libpff_item_t *message_store, uint32_t *valid_folder_mask, libpff_error_t **error" .Ft int .Fn libpff_message_store_get_password_checksum "libpff_item_t *message_store, uint32_t *password_checksum, libpff_error_t **error" .Pp Message functions .Ft int .Fn 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" .Ft int .Fn 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" .Ft int .Fn 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" .Ft int .Fn 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" .Ft int .Fn libpff_message_get_number_of_attachments "libpff_item_t *message, int *number_of_attachments, libpff_error_t **error" .Ft int .Fn libpff_message_get_attachment "libpff_item_t *message, int attachment_index, libpff_item_t **attachment, libpff_error_t **error" .Ft int .Fn libpff_message_get_attachments "libpff_item_t *message, libpff_item_t **attachments, libpff_error_t **error" .Ft int .Fn libpff_message_get_recipients "libpff_item_t *message, libpff_item_t **recipients, libpff_error_t **error" .Ft int .Fn libpff_message_get_utf8_class_size "libpff_item_t *message, size_t *utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_message_get_utf8_class "libpff_item_t *message, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_message_get_utf8_subject_size *subject_size "libpff_item_t *message, size_t *utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_message_get_utf8_subject "libpff_item_t *message, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_message_get_utf8_conversation_topic_size "libpff_item_t *message, size_t *utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_message_get_utf8_conversation_topic "libpff_item_t *message, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_message_get_conversation_index_size "libpff_item_t *message, size_t *size, libpff_error_t **error" .Ft int .Fn libpff_message_get_conversation_index "libpff_item_t *message, uint8_t *conversation_index, size_t size, libpff_error_t **error" .Ft int .Fn libpff_message_get_utf8_sender_name_size "libpff_item_t *message, size_t *utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_message_get_utf8_sender_name "libpff_item_t *message, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_message_get_utf16_sender_name_size "libpff_item_t *message, size_t *utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_message_get_utf16_sender_name "libpff_item_t *message, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_message_get_utf8_sender_email_address_size "libpff_item_t *message, size_t *utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_message_get_utf8_sender_email_address "libpff_item_t *message, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_message_get_utf16_sender_email_address_size "libpff_item_t *message, size_t *utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_message_get_utf16_sender_email_address "libpff_item_t *message, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_message_get_utf8_sent_representing_name_size "libpff_item_t *message, size_t *utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_message_get_utf8_sent_representing_name "libpff_item_t *message, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_message_get_utf16_sent_representing_name_size "libpff_item_t *message, size_t *utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_message_get_utf16_sent_representing_name "libpff_item_t *message, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_message_get_utf8_sent_representing_email_address_size "libpff_item_t *message, size_t *utf8_string_size, libpff_error_t **error" .Ft int .Fn 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" .Ft int .Fn libpff_message_get_utf16_sent_representing_email_address_size "libpff_item_t *message, size_t *utf16_string_size, libpff_error_t **error" .Ft int .Fn 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" .Ft int .Fn libpff_message_get_utf8_received_by_name_size "libpff_item_t *message, size_t *utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_message_get_utf8_received_by_name "libpff_item_t *message, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_message_get_utf16_received_by_name_size "libpff_item_t *message, size_t *utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_message_get_utf16_received_by_name "libpff_item_t *message, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_message_get_utf8_received_by_email_address_size "libpff_item_t *message, size_t *utf8_string_size, libpff_error_t **error" .Ft int .Fn 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" .Ft int .Fn libpff_message_get_utf16_received_by_email_address_size "libpff_item_t *message, size_t *utf16_string_size, libpff_error_t **error" .Ft int .Fn 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" .Ft int .Fn libpff_message_get_importance "libpff_item_t *message, uint32_t *importance, libpff_error_t **error" .Ft int .Fn libpff_message_get_priority "libpff_item_t *message, uint32_t *priority, libpff_error_t **error" .Ft int .Fn libpff_message_get_sensitivity "libpff_item_t *message, uint32_t *sensitivity, libpff_error_t **error" .Ft int .Fn libpff_message_get_flags "libpff_item_t *message, uint32_t *flags, libpff_error_t **error" .Ft int .Fn libpff_message_get_size "libpff_item_t *message, uint32_t *size, libpff_error_t **error" .Ft int .Fn libpff_message_get_client_submit_time "libpff_item_t *message, uint64_t *client_submit_time, libpff_error_t **error" .Ft int .Fn libpff_message_get_delivery_time "libpff_item_t *message, uint64_t *delivery_time, libpff_error_t **error" .Ft int .Fn libpff_message_get_creation_time "libpff_item_t *message, uint64_t *creation_time, libpff_error_t **error" .Ft int .Fn libpff_message_get_modification_time "libpff_item_t *message, uint64_t *modification_time, libpff_error_t **error" .Ft int .Fn libpff_message_get_utf8_transport_headers_size "libpff_item_t *message, size_t *utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_message_get_utf8_transport_headers "libpff_item_t *message, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_message_get_utf16_transport_headers_size "libpff_item_t *message, size_t *utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_message_get_utf16_transport_headers "libpff_item_t *message, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_message_get_plain_text_body_size "libpff_item_t *message, size_t *size, libpff_error_t **error" .Ft int .Fn libpff_message_get_plain_text_body "libpff_item_t *message, uint8_t *plain_text_body, size_t size, libpff_error_t **error" .Ft int .Fn libpff_message_get_rtf_body_size "libpff_item_t *message, size_t *size, libpff_error_t **error" .Ft int .Fn libpff_message_get_body "libpff_item_t *message, uint8_t *rtf_body, size_t size, libpff_error_t **error" .Ft int .Fn libpff_message_get_html_body_size "libpff_item_t *message, size_t *size, libpff_error_t **error" .Ft int .Fn libpff_message_get_html_body "libpff_item_t *message, uint8_t *html_body, size_t size, libpff_error_t **error" .Pp Appointment functions .Ft int .Fn libpff_appointment_get_utf8_location_size "libpff_item_t *appointment, size_t *utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_appointment_get_utf8_location "libpff_item_t *appointment, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_appointment_get_utf16_location_size "libpff_item_t *appointment, size_t *utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_appointment_get_utf16_location "libpff_item_t *appointment, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_appointment_start_time "libpff_item_t *appointment, uint64_t *start_time, libpff_error_t **error" .Ft int .Fn libpff_appointment_end_time "libpff_item_t *appointment, uint64_t *end_time, libpff_error_t **error" .Ft int .Fn libpff_appointment_get_utf8_recurring_pattern_size "libpff_item_t *appointment, size_t *utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_appointment_get_utf8_recurring_pattern "libpff_item_t *appointment, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_appointment_get_utf16_recurring_pattern_size "libpff_item_t *appointment, size_t *utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_appointment_get_utf16_recurring_pattern "libpff_item_t *appointment, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_appointment_get_utf8_timezone_description_size "libpff_item_t *appointment, size_t *utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_appointment_get_utf8_timezone_description "libpff_item_t *appointment, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_appointment_get_utf16_timezone_description_size "libpff_item_t *appointment, size_t *utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_appointment_get_utf16_timezone_description "libpff_item_t *appointment, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_appointment_first_effective_time "libpff_item_t *message, uint64_t *first_effective_time, libpff_error_t **error" .Ft int .Fn libpff_appointment_last_effective_time "libpff_item_t *message, uint64_t *last_effective_time, libpff_error_t **error" .Pp Address functions .Ft int .Fn libpff_address_get_utf8_file_under_size "libpff_item_t *address, size_t *utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_address_get_utf8_file_under "libpff_item_t *address, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_address_get_utf16_file_under_size "libpff_item_t *address, size_t *utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_address_get_utf16_file_under "libpff_item_t *address, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error" .Pp Contact functions .Ft int .Fn libpff_contact_get_utf8_file_as_size "libpff_item_t *contact, size_t *utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf8_file_as "libpff_item_t *contact, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf16_file_as_size "libpff_item_t *contact, size_t *utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf16_file_as "libpff_item_t *contact, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf8_postal_address_size "libpff_item_t *contact, size_t *utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf8_postal_address "libpff_item_t *contact, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf16_postal_address_size "libpff_item_t *contact, size_t *utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf16_postal_address "libpff_item_t *contact, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf8_company_name_size "libpff_item_t *contact, size_t *utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf8_company_name "libpff_item_t *contact, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf16_company_name_size "libpff_item_t *contact, size_t *utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf16_company_name "libpff_item_t *contact, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf8_department_name_size "libpff_item_t *contact, size_t *utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf8_department_name "libpff_item_t *contact, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf16_department_name_size "libpff_item_t *contact, size_t *utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf16_department_name "libpff_item_t *contact, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf8_office_location_size "libpff_item_t *contact, size_t *utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf8_office_location "libpff_item_t *contact, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf16_office_location_size "libpff_item_t *contact, size_t *utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf16_office_location "libpff_item_t *contact, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf8_callback_phone_number_size "libpff_item_t *contact, size_t *utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf8_callback_phone_number "libpff_item_t *contact, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf16_callback_phone_number_size "libpff_item_t *contact, size_t *utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf16_callback_phone_number "libpff_item_t *contact, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf8_primary_phone_number_size "libpff_item_t *contact, size_t *utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf8_primary_phone_number "libpff_item_t *contact, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf16_primary_phone_number_size "libpff_item_t *contact, size_t *utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf16_primary_phone_number "libpff_item_t *contact, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf8_home_phone_number_size "libpff_item_t *contact, size_t *utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf8_home_phone_number "libpff_item_t *contact, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf16_home_phone_number_size "libpff_item_t *contact, size_t *utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf16_home_phone_number "libpff_item_t *contact, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf8_business_phone_number_1_size "libpff_item_t *contact, size_t *utf8_string_size, libpff_error_t **error" .Ft int .Fn 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" .Ft int .Fn libpff_contact_get_utf16_business_phone_number_1_size "libpff_item_t *contact, size_t *utf16_string_size, libpff_error_t **error" .Ft int .Fn 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" .Ft int .Fn libpff_contact_get_utf8_business_phone_number_2_size "libpff_item_t *contact, size_t *utf8_string_size, libpff_error_t **error" .Ft int .Fn 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" .Ft int .Fn libpff_contact_get_utf16_business_phone_number_2_size "libpff_item_t *contact, size_t *utf16_string_size, libpff_error_t **error" .Ft int .Fn 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" .Ft int .Fn libpff_contact_get_utf8_mobile_phone_number_size "libpff_item_t *contact, size_t *utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf8_mobile_phone_number "libpff_item_t *contact, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf16_mobile_phone_number_size "libpff_item_t *contact, size_t *utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf16_mobile_phone_number "libpff_item_t *contact, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf8_business_fax_number_size "libpff_item_t *contact, size_t *utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf8_business_fax_number "libpff_item_t *contact, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf16_business_fax_number_size "libpff_item_t *contact, size_t *utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf16_business_fax_number "libpff_item_t *contact, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf8_country_size "libpff_item_t *contact, size_t *utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf8_country "libpff_item_t *contact, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf16_country_size "libpff_item_t *contact, size_t *utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf16_country "libpff_item_t *contact, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf8_locality_size "libpff_item_t *contact, size_t *utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf8_locality "libpff_item_t *contact, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf16_locality_size "libpff_item_t *contact, size_t *utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf16_locality "libpff_item_t *contact, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf8_title_size "libpff_item_t *contact, size_t *utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf8_title "libpff_item_t *contact, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf16_title_size "libpff_item_t *contact, size_t *utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_contact_get_utf16_title "libpff_item_t *contact, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error" .Pp E-mail functions .Ft int .Fn libpff_email_get_utf8_filename_size "libpff_item_t *email, size_t *utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_email_get_utf8_filename "libpff_item_t *email, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_email_get_utf16_filename_size "libpff_item_t *email, size_t *utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_email_get_utf16_filename "libpff_item_t *email, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error" .Pp Attachment functions .Ft int .Fn libpff_attachment_get_utf8_short_filename_size "libpff_item_t *attachment, size_t utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_attachment_get_utf8_short_filename "libpff_item_t *attachment, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_attachment_get_utf16_short_filename_size "libpff_item_t *attachment, size_t utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_attachment_get_utf16_short_filename "libpff_item_t *attachment, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_attachment_get_utf8_long_filename_size "libpff_item_t *attachment, size_t utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_attachment_get_utf8_long_filename "libpff_item_t *attachment, uint8_t *utf8_string, size_t utf8_string_size, libpff_error_t **error" .Ft int .Fn libpff_attachment_get_utf16_long_filename_size "libpff_item_t *attachment, size_t utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_attachment_get_utf16_long_filename "libpff_item_t *attachment, uint16_t *utf16_string, size_t utf16_string_size, libpff_error_t **error" .Ft int .Fn libpff_attachment_get_data_size "libpff_item_t *attachment, size64_t *size, libpff_error_t **error" .Ft ssize_t .Fn libpff_attachment_data_read_buffer "libpff_item_t *attachment, uint8_t *buffer, size_t buffer_size, libpff_error_t **error" .Ft off64_ .Fn libpff_attachment_data_seek_offset "libpff_item_t *attachment, off64_t offset, int whence, libpff_error_t **error" .Ft int .Fn libpff_attachment_get_item "libpff_item_t *attachment, libpff_item_t **attached_item, libpff_error_t **error" .Pp Available when compiled with libbfio support: .Ft int .Fn libpff_attachment_get_data_file_io_handle "libpff_item_t *attachment, libbfio_handle_t **file_io_handle, libpff_error_t **error" .Pp Recipients functions .Ft int .Fn libpff_recipients_get_utf8_display_name_size "libpff_item_t *recipients, int recipient_index, size_t *utf8_string_size, libpff_error_t **error" .Ft int .Fn 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" .Ft int .Fn libpff_recipients_get_utf16_display_name_size "libpff_item_t *recipients, int recipient_index, size_t *utf16_string_size, libpff_error_t **error" .Ft int .Fn 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" .Ft int .Fn libpff_recipients_get_utf8_address_type_size "libpff_item_t *recipients, int recipient_index, size_t *utf8_string_size, libpff_error_t **error" .Ft int .Fn 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" .Ft int .Fn libpff_recipients_get_utf16_address_type_size "libpff_item_t *recipients, int recipient_index, size_t *utf16_string_size, libpff_error_t **error" .Ft int .Fn 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" .Ft int .Fn libpff_recipients_get_utf8_email_address_size "libpff_item_t *recipients, int recipient_index, size_t *utf8_string_size, libpff_error_t **error" .Ft int .Fn 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" .Ft int .Fn libpff_recipients_get_utf16_email_address_size "libpff_item_t *recipients, int recipient_index, size_t *utf16_string_size, libpff_error_t **error" .Ft int .Fn 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" .Ft int .Fn libpff_recipients_get_utf8_recipient_display_name_size "libpff_item_t *recipients, int recipient_index, size_t *utf8_string_size, libpff_error_t **error" .Ft int .Fn 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" .Ft int .Fn libpff_recipients_get_utf16_recipient_display_name_size "libpff_item_t *recipients, int recipient_index, size_t *utf16_string_size, libpff_error_t **error" .Ft int .Fn 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" .Ft int .Fn libpff_recipients_get_type "libpff_item_t *recipients, int recipient_index, uint32_t *type, libpff_error_t **error" .Sh DESCRIPTION The .Fn libpff_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 refer to libpff.h .Sh ENVIRONMENT None .Sh FILES None .Sh 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 .Ar 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 .Ar ./configure --enable-wide-character-type=yes or pass the definition .Ar _UNICODE or .Ar 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 .Ar 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 .Ar LIBPFF_HAVE_BFIO in libpff/features.h. .Sh BUGS Please report bugs of any kind to or on the project website: http://code.google.com/p/libpff/ .Sh AUTHOR These man pages were written by Joachim Metz. .Sh COPYRIGHT Copyright 2008-2012 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 libpff.h include file