libpst.so.4
|
#include "common.h"
Go to the source code of this file.
Data Structures | |
struct | pst_entryid |
struct | pst_index_ll |
struct | pst_id2_tree |
struct | pst_desc_tree |
struct | pst_string |
The string is either utf8 encoded, or it is in the code page specified by the containing mapi object. More... | |
struct | pst_binary |
a simple wrapper for binary blobs More... | |
struct | pst_item_email |
This contains the email related mapi elements. More... | |
struct | pst_item_folder |
This contains the folder related mapi elements. More... | |
struct | pst_item_message_store |
This contains the message store related mapi elements. More... | |
struct | pst_item_contact |
This contains the contact related mapi elements. More... | |
struct | pst_item_attach |
This contains the attachment related mapi elements. More... | |
struct | pst_item_extra_field |
linked list of extra header fields More... | |
struct | pst_item_journal |
This contains the journal related mapi elements. More... | |
struct | pst_recurrence |
This contains the recurrence data separated into fields. More... | |
struct | pst_item_appointment |
This contains the appointment related mapi elements. More... | |
struct | pst_item |
This contains the common mapi elements, and pointers to structures for each major mapi item type. More... | |
struct | pst_x_attrib_ll |
Linked list of extended attributes. More... | |
struct | pst_block_recorder |
this is only used for internal debugging More... | |
struct | pst_file |
Typedefs | |
typedef struct pst_entryid | pst_entryid |
typedef struct pst_index_ll | pst_index_ll |
typedef struct pst_id2_tree | pst_id2_tree |
typedef struct pst_desc_tree | pst_desc_tree |
typedef struct pst_string | pst_string |
The string is either utf8 encoded, or it is in the code page specified by the containing mapi object. More... | |
typedef struct pst_binary | pst_binary |
a simple wrapper for binary blobs More... | |
typedef struct pst_item_email | pst_item_email |
This contains the email related mapi elements. More... | |
typedef struct pst_item_folder | pst_item_folder |
This contains the folder related mapi elements. More... | |
typedef struct pst_item_message_store | pst_item_message_store |
This contains the message store related mapi elements. More... | |
typedef struct pst_item_contact | pst_item_contact |
This contains the contact related mapi elements. More... | |
typedef struct pst_item_attach | pst_item_attach |
This contains the attachment related mapi elements. More... | |
typedef struct pst_item_extra_field | pst_item_extra_field |
linked list of extra header fields More... | |
typedef struct pst_item_journal | pst_item_journal |
This contains the journal related mapi elements. More... | |
typedef struct pst_recurrence | pst_recurrence |
This contains the recurrence data separated into fields. More... | |
typedef struct pst_item_appointment | pst_item_appointment |
This contains the appointment related mapi elements. More... | |
typedef struct pst_item | pst_item |
This contains the common mapi elements, and pointers to structures for each major mapi item type. More... | |
typedef struct pst_x_attrib_ll | pst_x_attrib_ll |
Linked list of extended attributes. More... | |
typedef struct pst_block_recorder | pst_block_recorder |
this is only used for internal debugging More... | |
typedef struct pst_file | pst_file |
Functions | |
int | pst_open (pst_file *pf, const char *name, const char *charset) |
Open a pst file. More... | |
int | pst_reopen (pst_file *pf) |
Reopen the pst file after a fork. More... | |
int | pst_load_index (pst_file *pf) |
Load the index entries from the pst file. More... | |
int | pst_load_extended_attributes (pst_file *pf) |
Load the extended attribute mapping table from the pst file. More... | |
int | pst_close (pst_file *pf) |
Close a pst file. More... | |
pst_desc_tree * | pst_getTopOfFolders (pst_file *pf, const pst_item *root) |
Get the top of folders descriptor tree. More... | |
pst_binary | pst_attach_to_mem (pst_file *pf, pst_item_attach *attach) |
Assemble the binary attachment into a single buffer. More... | |
size_t | pst_attach_to_file (pst_file *pf, pst_item_attach *attach, FILE *fp) |
Write a binary attachment to a file. More... | |
size_t | pst_attach_to_file_base64 (pst_file *pf, pst_item_attach *attach, FILE *fp) |
Write a binary attachment base64 encoded to a file. More... | |
pst_desc_tree * | pst_getNextDptr (pst_desc_tree *d) |
Walk the descriptor tree. More... | |
pst_item * | pst_parse_item (pst_file *pf, pst_desc_tree *d_ptr, pst_id2_tree *m_head) |
Assemble a mapi object from a descriptor pointer. More... | |
void | pst_freeItem (pst_item *item) |
Free the item returned by pst_parse_item(). More... | |
pst_index_ll * | pst_getID (pst_file *pf, uint64_t i_id) |
Lookup the i_id in the index linked list, and return a pointer to the element. More... | |
size_t | pst_ff_getIDblock_dec (pst_file *pf, uint64_t i_id, char **buf) |
Get an ID block from the file using pst_ff_getIDblock() and decrypt if necessary. More... | |
int | pst_stricmp (char *a, char *b) |
compare strings case-insensitive. More... | |
size_t | pst_fwrite (const void *ptr, size_t size, size_t nmemb, FILE *stream) |
fwrite with checking for null pointer. More... | |
char * | pst_rfc2426_escape (char *str, char **result, size_t *resultlen) |
Add any necessary escape characters for rfc2426 vcard format. More... | |
char * | pst_rfc2425_datetime_format (const FILETIME *ft, int buflen, char *result) |
Convert a FILETIME into rfc2425 date/time format 1953-10-15T23:10:00Z which is the same as one of the forms in the ISO3601 standard. More... | |
char * | pst_rfc2445_datetime_format (const FILETIME *ft, int buflen, char *result) |
Convert a FILETIME into rfc2445 date/time format 19531015T231000Z. More... | |
char * | pst_rfc2445_datetime_format_now (int buflen, char *result) |
Convert the current time rfc2445 date/time format 19531015T231000Z. More... | |
const char * | pst_default_charset (pst_item *item, int buflen, char *result) |
Get the default character set for this item. More... | |
void | pst_rfc2231 (pst_string *str) |
Convert str to rfc2231 encoding of str. More... | |
void | pst_rfc2047 (pst_item *item, pst_string *str, int needs_quote) |
Convert str to rfc2047 encoding of str, possibly enclosed in quotes if it contains spaces. More... | |
void | pst_convert_utf8_null (pst_item *item, pst_string *str) |
Convert str to utf8 if possible; null strings are preserved. More... | |
void | pst_convert_utf8 (pst_item *item, pst_string *str) |
Convert str to utf8 if possible; null strings are converted into empty strings. More... | |
pst_recurrence * | pst_convert_recurrence (pst_item_appointment *appt) |
Decode raw recurrence data into a better structure. More... | |
void | pst_free_recurrence (pst_recurrence *r) |
Free a recurrence structure. More... | |
typedef struct pst_binary pst_binary |
a simple wrapper for binary blobs
typedef struct pst_block_recorder pst_block_recorder |
this is only used for internal debugging
typedef struct pst_desc_tree pst_desc_tree |
typedef struct pst_entryid pst_entryid |
typedef struct pst_id2_tree pst_id2_tree |
typedef struct pst_index_ll pst_index_ll |
This contains the common mapi elements, and pointers to structures for each major mapi item type.
It represents a complete mapi object.
typedef struct pst_item_appointment pst_item_appointment |
This contains the appointment related mapi elements.
typedef struct pst_item_attach pst_item_attach |
This contains the attachment related mapi elements.
typedef struct pst_item_contact pst_item_contact |
This contains the contact related mapi elements.
typedef struct pst_item_email pst_item_email |
This contains the email related mapi elements.
typedef struct pst_item_extra_field pst_item_extra_field |
linked list of extra header fields
typedef struct pst_item_folder pst_item_folder |
This contains the folder related mapi elements.
typedef struct pst_item_journal pst_item_journal |
This contains the journal related mapi elements.
typedef struct pst_item_message_store pst_item_message_store |
This contains the message store related mapi elements.
typedef struct pst_recurrence pst_recurrence |
This contains the recurrence data separated into fields.
typedef struct pst_string pst_string |
The string is either utf8 encoded, or it is in the code page specified by the containing mapi object.
It can be forced into utf8 by calling pst_convert_utf8() or pst_convert_utf8_null().
typedef struct pst_x_attrib_ll pst_x_attrib_ll |
Linked list of extended attributes.
This is used to convert mapi_id values in the pst file into canonical mapi_id values to be used in this code. This list is kept in sorted order, where the key is the 'map' field. Some mapi_id values are converted to canonical mapi_id values (PST_MAP_ATTRIB), and others are converted to a string (PST_ATTRIB_HEADER).
size_t pst_attach_to_file | ( | pst_file * | pf, |
pst_item_attach * | attach, | ||
FILE * | fp | ||
) |
Write a binary attachment to a file.
pf | pointer to the pst_file structure setup by pst_open(). |
attach | pointer to the attachment record |
fp | pointer to an open FILE. |
size_t pst_attach_to_file_base64 | ( | pst_file * | pf, |
pst_item_attach * | attach, | ||
FILE * | fp | ||
) |
Write a binary attachment base64 encoded to a file.
pf | pointer to the pst_file structure setup by pst_open(). |
attach | pointer to the attachment record |
fp | pointer to an open FILE. |
pst_binary pst_attach_to_mem | ( | pst_file * | pf, |
pst_item_attach * | attach | ||
) |
Assemble the binary attachment into a single buffer.
pf | pointer to the pst_file structure setup by pst_open(). |
attach | pointer to the attachment record |
int pst_close | ( | pst_file * | pf | ) |
Close a pst file.
pf | pointer to the pst_file structure setup by pst_open(). |
pst_recurrence* pst_convert_recurrence | ( | pst_item_appointment * | appt | ) |
Decode raw recurrence data into a better structure.
appt | pointer to appointment structure |
void pst_convert_utf8 | ( | pst_item * | item, |
pst_string * | str | ||
) |
Convert str to utf8 if possible; null strings are converted into empty strings.
item | pointer to the containing mapi item |
str | pointer to the mapi string of interest |
void pst_convert_utf8_null | ( | pst_item * | item, |
pst_string * | str | ||
) |
Convert str to utf8 if possible; null strings are preserved.
item | pointer to the containing mapi item |
str | pointer to the mapi string of interest |
const char* pst_default_charset | ( | pst_item * | item, |
int | buflen, | ||
char * | result | ||
) |
Get the default character set for this item.
This is used to find the charset for pst_string elements that are not already in utf8 encoding.
item | pointer to the mapi item of interest | |
[in] | buflen | length of the output buffer |
[out] | result | pointer to output buffer, must be at least 30 bytes |
size_t pst_ff_getIDblock_dec | ( | pst_file * | pf, |
uint64_t | i_id, | ||
char ** | buf | ||
) |
Get an ID block from the file using pst_ff_getIDblock() and decrypt if necessary.
pf | pointer to the pst_file structure setup by pst_open(). |
i_id | ID of block to retrieve |
buf | reference to pointer to buffer that will contain the data block. If this pointer is non-NULL, it will first be free()d. |
void pst_free_recurrence | ( | pst_recurrence * | r | ) |
Free a recurrence structure.
r | input pointer to be freed |
void pst_freeItem | ( | pst_item * | item | ) |
Free the item returned by pst_parse_item().
item | pointer to item returned from pst_parse_item(). |
size_t pst_fwrite | ( | const void * | ptr, |
size_t | size, | ||
size_t | nmemb, | ||
FILE * | stream | ||
) |
fwrite with checking for null pointer.
ptr | pointer to the buffer |
size | size of each item |
nmemb | number of items |
stream | output file |
pst_index_ll* pst_getID | ( | pst_file * | pf, |
uint64_t | i_id | ||
) |
Lookup the i_id in the index linked list, and return a pointer to the element.
pf | pointer to the pst_file structure setup by pst_open(). |
i_id | key for the index linked list |
pst_desc_tree* pst_getNextDptr | ( | pst_desc_tree * | d | ) |
Walk the descriptor tree.
d | pointer to the current item in the descriptor tree. |
pst_desc_tree* pst_getTopOfFolders | ( | pst_file * | pf, |
const pst_item * | root | ||
) |
Get the top of folders descriptor tree.
This is the main descriptor tree that needs to be walked to look at every item in the pst file.
pf | pointer to the pst_file structure setup by pst_open(). |
root | root item, which can be obtained by pst_parse_item(pf, pf->d_head, NULL). |
int pst_load_extended_attributes | ( | pst_file * | pf | ) |
Load the extended attribute mapping table from the pst file.
This should normally be the second call after pst_open().
pf | pointer to the pst_file structure setup by pst_open(). |
int pst_load_index | ( | pst_file * | pf | ) |
Load the index entries from the pst file.
This loads both the i_id linked list, and the d_id tree, and should normally be the first call after pst_open().
pf | pointer to the pst_file structure setup by pst_open(). |
int pst_open | ( | pst_file * | pf, |
const char * | name, | ||
const char * | charset | ||
) |
Open a pst file.
pf | pointer to uninitialized pst_file structure. This structure will be filled in by this function. |
name | name of the file, suitable for fopen(). |
charset | default charset for item with unspecified character sets |
pst_item* pst_parse_item | ( | pst_file * | pf, |
pst_desc_tree * | d_ptr, | ||
pst_id2_tree * | m_head | ||
) |
Assemble a mapi object from a descriptor pointer.
pf | pointer to the pst_file structure setup by pst_open(). |
d_ptr | pointer to an item in the descriptor tree. |
m_head | normally NULL. This is only used when processing embedded attached rfc822 messages, in which case it is attach->id2_head. |
int pst_reopen | ( | pst_file * | pf | ) |
Reopen the pst file after a fork.
pf | pointer to the pst_file structure setup by pst_open(). |
void pst_rfc2047 | ( | pst_item * | item, |
pst_string * | str, | ||
int | needs_quote | ||
) |
Convert str to rfc2047 encoding of str, possibly enclosed in quotes if it contains spaces.
item | pointer to the containing mapi item |
str | pointer to the mapi string of interest |
needs_quote | true if strings containing spaces should be wrapped in quotes |
void pst_rfc2231 | ( | pst_string * | str | ) |
Convert str to rfc2231 encoding of str.
str | pointer to the mapi string of interest |
char* pst_rfc2425_datetime_format | ( | const FILETIME * | ft, |
int | buflen, | ||
char * | result | ||
) |
Convert a FILETIME into rfc2425 date/time format 1953-10-15T23:10:00Z which is the same as one of the forms in the ISO3601 standard.
[in] | ft | time to be converted |
[in] | buflen | length of the output buffer |
[out] | result | pointer to output buffer, must be at least 30 bytes |
char* pst_rfc2426_escape | ( | char * | str, |
char ** | result, | ||
size_t * | resultlen | ||
) |
Add any necessary escape characters for rfc2426 vcard format.
[in] | str | pointer to input string |
[in,out] | result | pointer to a char* pointer that may be realloc'ed if needed |
[in,out] | resultlen | size of the result buffer |
char* pst_rfc2445_datetime_format | ( | const FILETIME * | ft, |
int | buflen, | ||
char * | result | ||
) |
Convert a FILETIME into rfc2445 date/time format 19531015T231000Z.
[in] | ft | time to be converted |
[in] | buflen | length of the output buffer |
[out] | result | pointer to output buffer, must be at least 30 bytes |
char* pst_rfc2445_datetime_format_now | ( | int | buflen, |
char * | result | ||
) |
Convert the current time rfc2445 date/time format 19531015T231000Z.
[in] | buflen | length of the output buffer |
[out] | result | pointer to output buffer, must be at least 30 bytes |
int pst_stricmp | ( | char * | a, |
char * | b | ||
) |
compare strings case-insensitive.