Main Page | Namespace List | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals

libpst.c File Reference

#include "define.h"

Include dependency graph for libpst.c:

Include dependency graph

Go to the source code of this file.

Data Structures

struct  pst_block_offset
struct  pst_block_offset_pointer
struct  pst_holder
struct  pst_subblock
struct  pst_subblocks
struct  pst_mapi_element
struct  pst_mapi_object
struct  pst_desc32
struct  pst_index32
struct  pst_table_ptr_struct32
struct  pst_desc
struct  pst_index
struct  pst_table_ptr_struct
struct  pst_block_header
struct  pst_id2_assoc32
struct  pst_id2_assoc
struct  pst_table3_rec32
struct  pst_table3_rec
struct  pst_block_hdr
struct  pst_x_attrib

Defines

#define ASSERT(x)   { if(!(x)) raise( SIGSEGV ); }
#define INDEX_TYPE32   0x0E
#define INDEX_TYPE32A   0x0F
#define INDEX_TYPE64   0x17
#define INDEX_TYPE64A   0x15
#define INDEX_TYPE_OFFSET   (int64_t)0x0A
#define FILE_SIZE_POINTER32   (int64_t)0xA8
#define INDEX_POINTER32   (int64_t)0xC4
#define INDEX_BACK32   (int64_t)0xC0
#define SECOND_POINTER32   (int64_t)0xBC
#define SECOND_BACK32   (int64_t)0xB8
#define ENC_TYPE32   (int64_t)0x1CD
#define FILE_SIZE_POINTER64   (int64_t)0xB8
#define INDEX_POINTER64   (int64_t)0xF0
#define INDEX_BACK64   (int64_t)0xE8
#define SECOND_POINTER64   (int64_t)0xE0
#define SECOND_BACK64   (int64_t)0xD8
#define ENC_TYPE64   (int64_t)0x201
#define FILE_SIZE_POINTER   ((pf->do_read64) ? FILE_SIZE_POINTER64 : FILE_SIZE_POINTER32)
#define INDEX_POINTER   ((pf->do_read64) ? INDEX_POINTER64 : INDEX_POINTER32)
#define INDEX_BACK   ((pf->do_read64) ? INDEX_BACK64 : INDEX_BACK32)
#define SECOND_POINTER   ((pf->do_read64) ? SECOND_POINTER64 : SECOND_POINTER32)
#define SECOND_BACK   ((pf->do_read64) ? SECOND_BACK64 : SECOND_BACK32)
#define ENC_TYPE   ((pf->do_read64) ? ENC_TYPE64 : ENC_TYPE32)
#define PST_SIGNATURE   0x4E444221
#define ITEM_COUNT_OFFSET32   0x1f0
#define LEVEL_INDICATOR_OFFSET32   0x1f3
#define BACKLINK_OFFSET32   0x1f8
#define ITEM_SIZE32   12
#define DESC_SIZE32   16
#define INDEX_COUNT_MAX32   41
#define DESC_COUNT_MAX32   31
#define ITEM_COUNT_OFFSET64   0x1e8
#define LEVEL_INDICATOR_OFFSET64   0x1eb
#define BACKLINK_OFFSET64   0x1f8
#define ITEM_SIZE64   24
#define DESC_SIZE64   32
#define INDEX_COUNT_MAX64   20
#define DESC_COUNT_MAX64   15
#define BLOCK_SIZE   512
#define DESC_BLOCK_SIZE   512
#define ITEM_COUNT_OFFSET   (size_t)((pf->do_read64) ? ITEM_COUNT_OFFSET64 : ITEM_COUNT_OFFSET32)
#define LEVEL_INDICATOR_OFFSET   (size_t)((pf->do_read64) ? LEVEL_INDICATOR_OFFSET64 : LEVEL_INDICATOR_OFFSET32)
#define BACKLINK_OFFSET   (size_t)((pf->do_read64) ? BACKLINK_OFFSET64 : BACKLINK_OFFSET32)
#define ITEM_SIZE   (size_t)((pf->do_read64) ? ITEM_SIZE64 : ITEM_SIZE32)
#define DESC_SIZE   (size_t)((pf->do_read64) ? DESC_SIZE64 : DESC_SIZE32)
#define INDEX_COUNT_MAX   (int32_t)((pf->do_read64) ? INDEX_COUNT_MAX64 : INDEX_COUNT_MAX32)
#define DESC_COUNT_MAX   (int32_t)((pf->do_read64) ? DESC_COUNT_MAX64 : DESC_COUNT_MAX32)
#define SAFE_FREE(x)   {if (x) free(x);}
#define SAFE_FREE_STR(x)   SAFE_FREE(x.str)
#define SAFE_FREE_BIN(x)   SAFE_FREE(x.data)
#define MALLOC_EMAIL(x)   { if (!x->email) { x->email = (pst_item_email*) pst_malloc(sizeof(pst_item_email)); memset(x->email, 0, sizeof(pst_item_email) );} }
#define MALLOC_FOLDER(x)   { if (!x->folder) { x->folder = (pst_item_folder*) pst_malloc(sizeof(pst_item_folder)); memset(x->folder, 0, sizeof(pst_item_folder) );} }
#define MALLOC_CONTACT(x)   { if (!x->contact) { x->contact = (pst_item_contact*) pst_malloc(sizeof(pst_item_contact)); memset(x->contact, 0, sizeof(pst_item_contact) );} }
#define MALLOC_MESSAGESTORE(x)   { if (!x->message_store) { x->message_store = (pst_item_message_store*) pst_malloc(sizeof(pst_item_message_store)); memset(x->message_store, 0, sizeof(pst_item_message_store));} }
#define MALLOC_JOURNAL(x)   { if (!x->journal) { x->journal = (pst_item_journal*) pst_malloc(sizeof(pst_item_journal)); memset(x->journal, 0, sizeof(pst_item_journal) );} }
#define MALLOC_APPOINTMENT(x)   { if (!x->appointment) { x->appointment = (pst_item_appointment*) pst_malloc(sizeof(pst_item_appointment)); memset(x->appointment, 0, sizeof(pst_item_appointment) );} }
#define LIST_COPY(targ, type)
#define LIST_COPY_CSTR(targ)
#define LIST_COPY_BOOL(label, targ)
#define LIST_COPY_EMAIL_BOOL(label, targ)
#define LIST_COPY_CONTACT_BOOL(label, targ)
#define LIST_COPY_APPT_BOOL(label, targ)
#define LIST_COPY_INT16_N(targ)
#define LIST_COPY_INT16(label, targ)
#define LIST_COPY_INT32_N(targ)
#define LIST_COPY_INT32(label, targ)
#define LIST_COPY_EMAIL_INT32(label, targ)
#define LIST_COPY_APPT_INT32(label, targ)
#define LIST_COPY_FOLDER_INT32(label, targ)
#define LIST_COPY_STORE_INT32(label, targ)
#define LIST_COPY_ENUM(label, targ, delta, count,)
#define LIST_COPY_EMAIL_ENUM(label, targ, delta, count,)
#define LIST_COPY_APPT_ENUM(label, targ, delta, count,)
#define LIST_COPY_ENUM16(label, targ, delta, count,)
#define LIST_COPY_CONTACT_ENUM16(label, targ, delta, count,)
#define LIST_COPY_ENTRYID(label, targ)
#define LIST_COPY_EMAIL_ENTRYID(label, targ)
#define LIST_COPY_STORE_ENTRYID(label, targ)
#define LIST_COPY_STR(label, targ)
#define LIST_COPY_EMAIL_STR(label, targ)
#define LIST_COPY_CONTACT_STR(label, targ)
#define LIST_COPY_APPT_STR(label, targ)
#define LIST_COPY_JOURNAL_STR(label, targ)
#define LIST_COPY_TIME(label, targ)
#define LIST_COPY_EMAIL_TIME(label, targ)
#define LIST_COPY_CONTACT_TIME(label, targ)
#define LIST_COPY_APPT_TIME(label, targ)
#define LIST_COPY_JOURNAL_TIME(label, targ)
#define LIST_COPY_BIN(targ)
#define LIST_COPY_EMAIL_BIN(label, targ)
#define LIST_COPY_APPT_BIN(label, targ)
#define NULL_CHECK(x)   { if (!x) { DEBUG_WARN(("NULL_CHECK: Null Found\n")); break;} }

Typedefs

typedef pst_block_offset pst_block_offset
typedef pst_block_offset_pointer pst_block_offset_pointer
typedef pst_holder pst_holder
typedef pst_subblock pst_subblock
typedef pst_subblocks pst_subblocks
typedef pst_mapi_element pst_mapi_element
typedef pst_mapi_object pst_mapi_object
typedef pst_desc32 pst_desc32
typedef pst_index32 pst_index32
typedef pst_desc pst_desc
typedef pst_index pst_index
typedef pst_block_header pst_block_header
typedef pst_id2_assoc32 pst_id2_assoc32
typedef pst_id2_assoc pst_id2_assoc
typedef pst_table3_rec32 pst_table3_rec32
typedef pst_table3_rec pst_table3_rec
typedef pst_block_hdr pst_block_hdr
typedef pst_x_attrib pst_x_attrib

Functions

size_t pst_append_holder (pst_holder *h, size_t size, char **buf, size_t z)
int pst_build_desc_ptr (pst_file *pf, int64_t offset, int32_t depth, uint64_t linku1, uint64_t start_val, uint64_t end_val)
pst_id2_treepst_build_id2 (pst_file *pf, pst_index_ll *list)
int pst_build_id_ptr (pst_file *pf, int64_t offset, int32_t depth, uint64_t linku1, uint64_t start_val, uint64_t end_val)
 Process the index1 b-tree from the pst file and create the pf->i_head linked list from it.
int pst_chr_count (char *str, char x)
size_t pst_ff_compile_ID (pst_file *pf, uint64_t i_id, pst_holder *h, size_t size)
size_t pst_ff_getIDblock (pst_file *pf, uint64_t i_id, char **buf)
size_t pst_ff_getID2block (pst_file *pf, uint64_t id2, pst_id2_tree *id2_head, char **buf)
size_t pst_ff_getID2data (pst_file *pf, pst_index_ll *ptr, pst_holder *h)
size_t pst_finish_cleanup_holder (pst_holder *h, size_t size)
void pst_free_attach (pst_item_attach *attach)
void pst_free_desc (pst_desc_tree *head)
void pst_free_id2 (pst_id2_tree *head)
void pst_free_id (pst_index_ll *head)
void pst_free_list (pst_mapi_object *list)
void pst_free_xattrib (pst_x_attrib_ll *x)
size_t pst_getAtPos (pst_file *pf, int64_t pos, void *buf, size_t size)
int pst_getBlockOffsetPointer (pst_file *pf, pst_id2_tree *i2_head, pst_subblocks *subblocks, uint32_t offset, pst_block_offset_pointer *p)
 The offset might be zero, in which case we have no data, so return a pair of null pointers.
int pst_getBlockOffset (char *buf, size_t read_size, uint32_t i_offset, uint32_t offset, pst_block_offset *p)
pst_id2_treepst_getID2 (pst_id2_tree *ptr, uint64_t id)
pst_desc_treepst_getDptr (pst_file *pf, uint64_t d_id)
uint64_t pst_getIntAt (pst_file *pf, char *buf)
uint64_t pst_getIntAtPos (pst_file *pf, int64_t pos)
pst_mapi_objectpst_parse_block (pst_file *pf, uint64_t block_id, pst_id2_tree *i2_head)
void pst_printDptr (pst_file *pf, pst_desc_tree *ptr)
void pst_printID2ptr (pst_id2_tree *ptr)
int pst_process (pst_mapi_object *list, pst_item *item, pst_item_attach *attach)
size_t pst_read_block_size (pst_file *pf, int64_t offset, size_t size, char **buf)
int pst_decrypt (uint64_t i_id, char *buf, size_t size, unsigned char type)
int pst_stricmp (char *a, char *b)
int pst_strincmp (char *a, char *b, size_t x)
char * pst_wide_to_single (char *wt, size_t size)
int pst_open (pst_file *pf, const char *name)
 Open a pst file.
int pst_reopen (pst_file *pf)
 Reopen the pst file after a fork.
int pst_close (pst_file *pf)
 Close a pst file.
void add_descriptor_to_list (pst_desc_tree *node, pst_desc_tree **head, pst_desc_tree **tail)
 add a pst descriptor node to a linked list of such nodes.
void record_descriptor (pst_file *pf, pst_desc_tree *node)
 add a pst descriptor node into the global tree.
pst_id2_treedeep_copy (pst_id2_tree *head)
 make a deep copy of part of the id2 mapping tree, for use by an attachment containing an embedded rfc822 message.
pst_desc_treepst_getTopOfFolders (pst_file *pf, const pst_item *root)
 Get the top of folders descriptor tree.
pst_binary pst_attach_to_mem (pst_file *pf, pst_item_attach *attach)
 Assemble the binary attachment into a single buffer.
size_t pst_attach_to_file (pst_file *pf, pst_item_attach *attach, FILE *fp)
 Write a binary attachment to a 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.
int pst_load_index (pst_file *pf)
 Load the index entries from the pst file.
pst_desc_treepst_getNextDptr (pst_desc_tree *d)
 Walk the descriptor tree.
int pst_load_extended_attributes (pst_file *pf)
 Load the extended attribute mapping table from the pst file.
size_t pst_decode_desc (pst_file *pf, pst_desc *desc, char *buf)
size_t pst_decode_table (pst_file *pf, struct pst_table_ptr_struct *table, char *buf)
size_t pst_decode_index (pst_file *pf, pst_index *index, char *buf)
size_t pst_decode_assoc (pst_file *pf, pst_id2_assoc *assoc, char *buf)
size_t pst_decode_type3 (pst_file *pf, pst_table3_rec *table3_rec, char *buf)
pst_itempst_parse_item (pst_file *pf, pst_desc_tree *d_ptr, pst_id2_tree *m_head)
 Assemble a mapi object from a descriptor pointer.
 memset (item->email, 0, sizeof(pst_item_email))
 if (!item->email->autoforward) item->email->autoforward
 memcpy (item->ascii_type, list->elements[x]->data, list->elements[x]->size)
 memset (((char *) item->ascii_type)+list->elements[x]->size, 0,(size_t) 1)
 if (!item->ascii_type) item->ascii_type
 if (pst_strincmp("IPM.Note", item->ascii_type, 8)==0)
 pst_debug_hexdump (__LINE__, __FILE__,(char *) list->elements[x]->data, list->elements[x]->size, 0x10, 0)
 if ((list->elements[x]->size > 2)&&(((uint8_t) list->elements[x]->data[0])< 0x20))
 pst_debug (__LINE__, __FILE__, __VA_ARGS__)
 memcpy (&(item->message_size), list->elements[x]->data, sizeof(item->message_size))
 if (item->record_key.size)
 pst_debug_hexdump (__LINE__, __FILE__,(char *) item->record_key.data, item->record_key.size, 0x10, 0)
 memcpy (item->body.str, list->elements[x]->data, list->elements[x]->size)
 memset (((char *) item->body.str)+list->elements[x]->size, 0,(size_t) 1)
 memcpy (item->file_as.str, list->elements[x]->data, list->elements[x]->size)
 memset (((char *) item->file_as.str)+list->elements[x]->size, 0,(size_t) 1)
 memset (item->contact, 0, sizeof(pst_item_contact))
 memcpy (item->comment.str, list->elements[x]->data, list->elements[x]->size)
 memset (((char *) item->comment.str)+list->elements[x]->size, 0,(size_t) 1)
 memcpy (&(item->internet_cpid), list->elements[x]->data, sizeof(item->internet_cpid))
 if (item->predecessor_change.size)
 pst_debug_hexdump (__LINE__, __FILE__,(char *) item->predecessor_change.data, item->predecessor_change.size, 0x10, 0)
 memset (item->message_store, 0, sizeof(pst_item_message_store))
 memset (item->appointment, 0, sizeof(pst_item_appointment))
 pst_debug_hexdump (__LINE__, __FILE__,(char *) item->appointment->recurrence_data.data, item->appointment->recurrence_data.size, 0x10, 0)
 memcpy (item->outlook_version.str, list->elements[x]->data, list->elements[x]->size)
 memset (((char *) item->outlook_version.str)+list->elements[x]->size, 0,(size_t) 1)
 memset (item->journal, 0, sizeof(pst_item_journal))
else if (list->elements[x]->type==(uint32_t) 0x0003)
 if (attach)
 if (buf)
void pst_freeItem (pst_item *item)
 Free the item returned by pst_parse_item().
void pst_convert_utf8_null (pst_item *item, pst_string *str)
 Convert str to utf8 if possible; null strings are preserved.
void pst_convert_utf8 (pst_item *item, pst_string *str)
 Convert str to utf8 if possible; null strings are converted into empty strings.
pst_recurrencepst_convert_recurrence (pst_item_appointment *appt)
 Decode raw recurrence data into a better structure.
void pst_free_recurrence (pst_recurrence *r)
 Free a recurrence structure.

Variables

unsigned char comp_enc []
 for "compressible" encryption, just a simple substitution cipher, plaintext = comp_enc[ciphertext]; for "strong" encryption, this is the first rotor of an Enigma 3 rotor cipher.
unsigned char comp_high1 []
 for "strong" encryption, this is the second rotor of an Enigma 3 rotor cipher.
unsigned char comp_high2 []
 for "strong" encryption, this is the third rotor of an Enigma 3 rotor cipher.
 break
case x0002
case x0003
case __FILE__
case __VA_ARGS__
case x0017
 Low
 Normal
 High
case x001A
case list elements[xsize = off
case x0023
case x0026
 NonUrgent
 Urgent
case x0029
case x002B
case x002E
 None
 Personal
 Private
Company Confidential
case x0032
case x0036
case x0037
list elements[xdata = off
case x0039
case x003B
case x003F
case x0040
case x0041
case x0042
case x0043
case x0044
case x004F
case x0050
case x0051
case x0052
case x0057
case x0058
case x0059
case x0063
case x0064
case x0065
case x0070
case x0071
case x0072
case x0073
case x0074
case x0075
case x0076
case x0077
case x0078
case x007D
case x0C04
case x0C05
case x0C06
case x0C17
case x0C19
case x0C1A
case x0C1B
case x0C1D
case x0C1E
case x0C1F
case x0C20
case x0E01
case x0E02
case x0E03
case x0E04
case x0E06
case x0E07
case x0E08
item message_size = (((( item->message_size ) & 0xff000000) >> 24) | ((( item->message_size ) & 0x00ff0000) >> 8 ) | ((( item->message_size ) & 0x0000ff00) << 8 ) | ((( item->message_size ) & 0x000000ff) << 24))
case x0E1F
case x0E20
case x0FF9
case x1000
item body is_utf8 = (list->elements[x]->type == 0x1f) ? 1 : 0
case x1001
case x1006
case x1007
case x1008
case x1009
case x1010
case x1011
case x1013
case x1035
case x1042
case x1046
case x3001
case x3002
case x3003
case x3004
case x3007
item create_date = (FILETIME*) pst_realloc( item->create_date , sizeof(FILETIME))
item create_date dwLowDateTime = (((( item->create_date ->dwLowDateTime ) & 0xff000000) >> 24) | ((( item->create_date ->dwLowDateTime ) & 0x00ff0000) >> 8 ) | ((( item->create_date ->dwLowDateTime ) & 0x0000ff00) << 8 ) | ((( item->create_date ->dwLowDateTime ) & 0x000000ff) << 24))
item create_date dwHighDateTime = (((( item->create_date ->dwHighDateTime ) & 0xff000000) >> 24) | ((( item->create_date ->dwHighDateTime ) & 0x00ff0000) >> 8 ) | ((( item->create_date ->dwHighDateTime ) & 0x0000ff00) << 8 ) | ((( item->create_date ->dwHighDateTime ) & 0x000000ff) << 24))
case x3A46
case x3A47
case x3A48
case x3A49
case x3A4A
case x3A4B
case x3A4C
case x3A4D
 Unspecified
 Female
 Male
case x3A4E
case x3A4F
case x3A50
case x3A51
case x3A57
case x3A58
case x3A59
case x3A5A
case x3A5B
case x3A5C
case x3A5D
case x3A5E
case x3A5F
case x3A60
case x3A61
case x3A62
case x3A63
case x3A64
case x3FDE
item internet_cpid = (((( item->internet_cpid ) & 0xff000000) >> 24) | ((( item->internet_cpid ) & 0x00ff0000) >> 8 ) | ((( item->internet_cpid ) & 0x0000ff00) << 8 ) | ((( item->internet_cpid ) & 0x000000ff) << 24))
case x65E3
case x67F2
attach id2_val = ut
case x67FF
case x6F02
case x6F04
case x7C07
case x8005
case x801A
case x801B
case x801C
case x8045
case x8046
case x8047
case x8048
case x8049
case x804A
case x8082
case x8083
case x8084
case x8085
case x8092
case x8093
case x8094
case x8095
case x80A2
case x80A3
case x80A4
case x80A5
case x80D8
case x8205
 Free
 Tentative
 Busy
Out Of Office
case x8208
case x820d
case x820e
case x8214
 Important
 Business
 Vacation
Must Attend
Must Travel Required
Must Travel Needs Preparation
Must Travel Needs Birthday
Must Travel Needs Anniversary
Must Travel Needs Phone Call
case x8215
case x8216
case x8223
case x8231
 Daily
 Weekly
 Monthly
 Yearly
case x8232
case x8234
case x8235
case x8236
case x8501
case x8503
case x8516
case __VA_ARGS__ list elements[xtime_buffer
case x8517
case x851f
case x8530
case x8534
case x8535
case x8554
case x8560
case x8700
case x8706
case x8708
case x8712
default __pad0__
 return
 x
return head


Define Documentation

#define ASSERT x   )     { if(!(x)) raise( SIGSEGV ); }
 

Definition at line 20 of file libpst.c.

#define BACKLINK_OFFSET   (size_t)((pf->do_read64) ? BACKLINK_OFFSET64 : BACKLINK_OFFSET32)
 

Definition at line 815 of file libpst.c.

Referenced by pst_build_id_ptr().

#define BACKLINK_OFFSET32   0x1f8
 

Definition at line 797 of file libpst.c.

#define BACKLINK_OFFSET64   0x1f8
 

Definition at line 805 of file libpst.c.

#define BLOCK_SIZE   512
 

Definition at line 811 of file libpst.c.

Referenced by pst_build_id_ptr().

#define DESC_BLOCK_SIZE   512
 

Definition at line 812 of file libpst.c.

#define DESC_COUNT_MAX   (int32_t)((pf->do_read64) ? DESC_COUNT_MAX64 : DESC_COUNT_MAX32)
 

Definition at line 819 of file libpst.c.

#define DESC_COUNT_MAX32   31
 

Definition at line 801 of file libpst.c.

#define DESC_COUNT_MAX64   15
 

Definition at line 809 of file libpst.c.

#define DESC_SIZE   (size_t)((pf->do_read64) ? DESC_SIZE64 : DESC_SIZE32)
 

Definition at line 817 of file libpst.c.

#define DESC_SIZE32   16
 

Definition at line 799 of file libpst.c.

#define DESC_SIZE64   32
 

Definition at line 807 of file libpst.c.

#define ENC_TYPE   ((pf->do_read64) ? ENC_TYPE64 : ENC_TYPE32)
 

Definition at line 47 of file libpst.c.

Referenced by pst_open().

#define ENC_TYPE32   (int64_t)0x1CD
 

Definition at line 33 of file libpst.c.

#define ENC_TYPE64   (int64_t)0x201
 

Definition at line 40 of file libpst.c.

#define FILE_SIZE_POINTER   ((pf->do_read64) ? FILE_SIZE_POINTER64 : FILE_SIZE_POINTER32)
 

Definition at line 42 of file libpst.c.

Referenced by pst_open().

#define FILE_SIZE_POINTER32   (int64_t)0xA8
 

Definition at line 28 of file libpst.c.

#define FILE_SIZE_POINTER64   (int64_t)0xB8
 

Definition at line 35 of file libpst.c.

#define INDEX_BACK   ((pf->do_read64) ? INDEX_BACK64 : INDEX_BACK32)
 

Definition at line 44 of file libpst.c.

Referenced by pst_open().

#define INDEX_BACK32   (int64_t)0xC0
 

Definition at line 30 of file libpst.c.

#define INDEX_BACK64   (int64_t)0xE8
 

Definition at line 37 of file libpst.c.

#define INDEX_COUNT_MAX   (int32_t)((pf->do_read64) ? INDEX_COUNT_MAX64 : INDEX_COUNT_MAX32)
 

Definition at line 818 of file libpst.c.

Referenced by pst_build_id_ptr().

#define INDEX_COUNT_MAX32   41
 

Definition at line 800 of file libpst.c.

#define INDEX_COUNT_MAX64   20
 

Definition at line 808 of file libpst.c.

#define INDEX_POINTER   ((pf->do_read64) ? INDEX_POINTER64 : INDEX_POINTER32)
 

Definition at line 43 of file libpst.c.

Referenced by pst_open().

#define INDEX_POINTER32   (int64_t)0xC4
 

Definition at line 29 of file libpst.c.

#define INDEX_POINTER64   (int64_t)0xF0
 

Definition at line 36 of file libpst.c.

#define INDEX_TYPE32   0x0E
 

Definition at line 22 of file libpst.c.

Referenced by pst_open().

#define INDEX_TYPE32A   0x0F
 

Definition at line 23 of file libpst.c.

Referenced by pst_open().

#define INDEX_TYPE64   0x17
 

Definition at line 24 of file libpst.c.

Referenced by pst_open().

#define INDEX_TYPE64A   0x15
 

Definition at line 25 of file libpst.c.

Referenced by pst_open().

#define INDEX_TYPE_OFFSET   (int64_t)0x0A
 

Definition at line 26 of file libpst.c.

Referenced by pst_open().

#define ITEM_COUNT_OFFSET   (size_t)((pf->do_read64) ? ITEM_COUNT_OFFSET64 : ITEM_COUNT_OFFSET32)
 

Definition at line 813 of file libpst.c.

#define ITEM_COUNT_OFFSET32   0x1f0
 

Definition at line 795 of file libpst.c.

#define ITEM_COUNT_OFFSET64   0x1e8
 

Definition at line 803 of file libpst.c.

#define ITEM_SIZE   (size_t)((pf->do_read64) ? ITEM_SIZE64 : ITEM_SIZE32)
 

Definition at line 816 of file libpst.c.

#define ITEM_SIZE32   12
 

Definition at line 798 of file libpst.c.

Referenced by pst_build_id_ptr().

#define ITEM_SIZE64   24
 

Definition at line 806 of file libpst.c.

#define LEVEL_INDICATOR_OFFSET   (size_t)((pf->do_read64) ? LEVEL_INDICATOR_OFFSET64 : LEVEL_INDICATOR_OFFSET32)
 

Definition at line 814 of file libpst.c.

#define LEVEL_INDICATOR_OFFSET32   0x1f3
 

Definition at line 796 of file libpst.c.

#define LEVEL_INDICATOR_OFFSET64   0x1eb
 

Definition at line 804 of file libpst.c.

#define LIST_COPY targ,
type   ) 
 

Value:

{                                    \
    targ = type pst_realloc(targ, list->elements[x]->size+1);      \
    memcpy(targ, list->elements[x]->data, list->elements[x]->size);\
    memset(((char*)targ)+list->elements[x]->size, 0, (size_t)1);   \
}

#define LIST_COPY_APPT_BIN label,
targ   ) 
 

Value:

{           \
    MALLOC_APPOINTMENT(item);                       \
    LIST_COPY_BIN(targ);                            \
    DEBUG_INFO((label"\n"));                        \
    DEBUG_HEXDUMP(targ.data, targ.size);            \
}

#define LIST_COPY_APPT_BOOL label,
targ   ) 
 

Value:

{                      \
    MALLOC_APPOINTMENT(item);                                   \
    LIST_COPY_BOOL(label, targ)                                 \
}

#define LIST_COPY_APPT_ENUM label,
targ,
delta,
count   ) 
 

Value:

{   \
    MALLOC_APPOINTMENT(item);                                   \
    LIST_COPY_ENUM(label, targ, delta, count, __VA_ARGS__);     \
}

#define LIST_COPY_APPT_INT32 label,
targ   ) 
 

Value:

{                     \
    MALLOC_APPOINTMENT(item);                                   \
    LIST_COPY_INT32(label, targ);                               \
}

#define LIST_COPY_APPT_STR label,
targ   ) 
 

Value:

{                       \
    MALLOC_APPOINTMENT(item);                                   \
    LIST_COPY_STR(label, targ);                                 \
}

#define LIST_COPY_APPT_TIME label,
targ   ) 
 

Value:

{                      \
    MALLOC_APPOINTMENT(item);                                   \
    LIST_COPY_TIME(label, targ);                                \
}

#define LIST_COPY_BIN targ   ) 
 

Value:

{                                       \
    targ.size = list->elements[x]->size;                            \
    if (targ.size) {                                                \
        targ.data = (char*)pst_realloc(targ.data, targ.size);       \
        memcpy(targ.data, list->elements[x]->data, targ.size);      \
    }                                                               \
    else {                                                          \
        SAFE_FREE_BIN(targ);                                        \
        targ.data = NULL;                                           \
    }                                                               \
}

#define LIST_COPY_BOOL label,
targ   ) 
 

Value:

{                                       \
    if (list->elements[x]->type != 0x0b) {                                  \
        DEBUG_WARN(("src not 0x0b for boolean dst\n"));                     \
        DEBUG_HEXDUMP(list->elements[x]->data, list->elements[x]->size);    \
    }                                                                       \
    if (*(int16_t*)list->elements[x]->data) {                               \
        DEBUG_INFO((label" - True\n"));                                     \
        targ = 1;                                                           \
    } else {                                                                \
        DEBUG_INFO((label" - False\n"));                                    \
        targ = 0;                                                           \
    }                                                                       \
}

#define LIST_COPY_CONTACT_BOOL label,
targ   ) 
 

Value:

{                   \
    MALLOC_CONTACT(item);                                       \
    LIST_COPY_BOOL(label, targ)                                 \
}

#define LIST_COPY_CONTACT_ENUM16 label,
targ,
delta,
count   ) 
 

Value:

{  \
    MALLOC_CONTACT(item);                                           \
    LIST_COPY_ENUM16(label, targ, delta, count, __VA_ARGS__);       \
}

#define LIST_COPY_CONTACT_STR label,
targ   ) 
 

Value:

{                    \
    MALLOC_CONTACT(item);                                       \
    LIST_COPY_STR(label, targ);                                 \
}

#define LIST_COPY_CONTACT_TIME label,
targ   ) 
 

Value:

{                   \
    MALLOC_CONTACT(item);                                       \
    LIST_COPY_TIME(label, targ);                                \
}

#define LIST_COPY_CSTR targ   ) 
 

Value:

{                                              \
    if ((list->elements[x]->type == 0x1f) ||                                \
        (list->elements[x]->type == 0x1e) ||                                \
        (list->elements[x]->type == 0x102)) {                               \
        LIST_COPY(targ, (char*))                                            \
    }                                                                       \
    else {                                                                  \
        DEBUG_WARN(("src not 0x1e or 0x1f or 0x102 for string dst\n"));     \
        DEBUG_HEXDUMP(list->elements[x]->data, list->elements[x]->size);    \
        SAFE_FREE(targ);                                                    \
        targ = NULL;                                                        \
    }                                                                       \
}

#define LIST_COPY_EMAIL_BIN label,
targ   ) 
 

Value:

{          \
    MALLOC_EMAIL(item);                             \
    LIST_COPY_BIN(targ);                            \
    DEBUG_INFO((label"\n"));                        \
}

#define LIST_COPY_EMAIL_BOOL label,
targ   ) 
 

Value:

{                     \
    MALLOC_EMAIL(item);                                         \
    LIST_COPY_BOOL(label, targ)                                 \
}

#define LIST_COPY_EMAIL_ENTRYID label,
targ   ) 
 

Value:

{                  \
    MALLOC_EMAIL(item);                                         \
    LIST_COPY_ENTRYID(label, targ);                             \
}

#define LIST_COPY_EMAIL_ENUM label,
targ,
delta,
count   ) 
 

Value:

{  \
    MALLOC_EMAIL(item);                                         \
    LIST_COPY_ENUM(label, targ, delta, count, __VA_ARGS__);     \
}

#define LIST_COPY_EMAIL_INT32 label,
targ   ) 
 

Value:

{                    \
    MALLOC_EMAIL(item);                                         \
    LIST_COPY_INT32(label, targ);                               \
}

#define LIST_COPY_EMAIL_STR label,
targ   ) 
 

Value:

{                      \
    MALLOC_EMAIL(item);                                         \
    LIST_COPY_STR(label, targ);                                 \
}

#define LIST_COPY_EMAIL_TIME label,
targ   ) 
 

Value:

{                     \
    MALLOC_EMAIL(item);                                         \
    LIST_COPY_TIME(label, targ);                                \
}

#define LIST_COPY_ENTRYID label,
targ   ) 
 

Value:

{                        \
    LIST_COPY(targ, (pst_entryid*));                            \
    LE32_CPU(targ->u1);                                         \
    LE32_CPU(targ->id);                                         \
    DEBUG_INFO((label" u1=%#x, id=%#x\n", targ->u1, targ->id)); \
}

#define LIST_COPY_ENUM label,
targ,
delta,
count   ) 
 

Value:

{        \
    char *tlabels[] = {__VA_ARGS__};                            \
    LIST_COPY_INT32_N(targ);                                    \
    targ += delta;                                              \
    DEBUG_INFO((label" - %s [%i]\n",                            \
        (((int)targ < 0) || ((int)targ >= count))               \
            ? "**invalid"                                       \
            : tlabels[(int)targ], (int)targ));                  \
}

#define LIST_COPY_ENUM16 label,
targ,
delta,
count   ) 
 

Value:

{      \
    char *tlabels[] = {__VA_ARGS__};                            \
    LIST_COPY_INT16_N(targ);                                    \
    targ += delta;                                              \
    DEBUG_INFO((label" - %s [%i]\n",                            \
        (((int)targ < 0) || ((int)targ >= count))               \
            ? "**invalid"                                       \
            : tlabels[(int)targ], (int)targ));                  \
}

#define LIST_COPY_FOLDER_INT32 label,
targ   ) 
 

Value:

{                   \
    MALLOC_FOLDER(item);                                        \
    LIST_COPY_INT32(label, targ);                               \
}

#define LIST_COPY_INT16 label,
targ   ) 
 

Value:

{                          \
    LIST_COPY_INT16_N(targ);                                    \
    DEBUG_INFO((label" - %i %#x\n", (int)targ, (int)targ));     \
}

#define LIST_COPY_INT16_N targ   ) 
 

Value:

{                                           \
    if (list->elements[x]->type != 0x02) {                                  \
        DEBUG_WARN(("src not 0x02 for int16 dst\n"));                       \
        DEBUG_HEXDUMP(list->elements[x]->data, list->elements[x]->size);    \
    }                                                                       \
    memcpy(&(targ), list->elements[x]->data, sizeof(targ));                 \
    LE16_CPU(targ);                                                         \
}

#define LIST_COPY_INT32 label,
targ   ) 
 

Value:

{                          \
    LIST_COPY_INT32_N(targ);                                    \
    DEBUG_INFO((label" - %i %#x\n", (int)targ, (int)targ));     \
}

#define LIST_COPY_INT32_N targ   ) 
 

Value:

{                                           \
    if (list->elements[x]->type != 0x03) {                                  \
        DEBUG_WARN(("src not 0x03 for int32 dst\n"));                       \
        DEBUG_HEXDUMP(list->elements[x]->data, list->elements[x]->size);    \
    }                                                                       \
    memcpy(&(targ), list->elements[x]->data, sizeof(targ));                 \
    LE32_CPU(targ);                                                         \
}

#define LIST_COPY_JOURNAL_STR label,
targ   ) 
 

Value:

{                    \
    MALLOC_JOURNAL(item);                                       \
    LIST_COPY_STR(label, targ);                                 \
}

#define LIST_COPY_JOURNAL_TIME label,
targ   ) 
 

Value:

{                   \
    MALLOC_JOURNAL(item);                                       \
    LIST_COPY_TIME(label, targ);                                \
}

#define LIST_COPY_STORE_ENTRYID label,
targ   ) 
 

Value:

{                  \
    MALLOC_MESSAGESTORE(item);                                  \
    LIST_COPY_ENTRYID(label, targ);                             \
}

#define LIST_COPY_STORE_INT32 label,
targ   ) 
 

Value:

{                    \
    MALLOC_MESSAGESTORE(item);                                  \
    LIST_COPY_INT32(label, targ);                               \
}

#define LIST_COPY_STR label,
targ   ) 
 

Value:

{                                    \
    LIST_COPY_CSTR(targ.str);                                           \
    targ.is_utf8 = (list->elements[x]->type == 0x1f) ? 1 : 0;           \
    DEBUG_INFO((label" - unicode %d - %s\n", targ.is_utf8, targ.str));  \
}

#define LIST_COPY_TIME label,
targ   ) 
 

Value:

{                                       \
    if (list->elements[x]->type != 0x40) {                                  \
        DEBUG_WARN(("src not 0x40 for filetime dst\n"));                    \
        DEBUG_HEXDUMP(list->elements[x]->data, list->elements[x]->size);    \
    }                                                                       \
    targ = (FILETIME*) pst_realloc(targ, sizeof(FILETIME));                 \
    memcpy(targ, list->elements[x]->data, list->elements[x]->size);         \
    LE32_CPU(targ->dwLowDateTime);                                          \
    LE32_CPU(targ->dwHighDateTime);                                         \
    DEBUG_INFO((label" - %s", pst_fileTimeToAscii(targ, time_buffer)));     \
}

#define MALLOC_APPOINTMENT x   )     { if (!x->appointment) { x->appointment = (pst_item_appointment*) pst_malloc(sizeof(pst_item_appointment)); memset(x->appointment, 0, sizeof(pst_item_appointment) );} }
 

#define MALLOC_CONTACT x   )     { if (!x->contact) { x->contact = (pst_item_contact*) pst_malloc(sizeof(pst_item_contact)); memset(x->contact, 0, sizeof(pst_item_contact) );} }
 

#define MALLOC_EMAIL x   )     { if (!x->email) { x->email = (pst_item_email*) pst_malloc(sizeof(pst_item_email)); memset(x->email, 0, sizeof(pst_item_email) );} }
 

#define MALLOC_FOLDER x   )     { if (!x->folder) { x->folder = (pst_item_folder*) pst_malloc(sizeof(pst_item_folder)); memset(x->folder, 0, sizeof(pst_item_folder) );} }
 

#define MALLOC_JOURNAL x   )     { if (!x->journal) { x->journal = (pst_item_journal*) pst_malloc(sizeof(pst_item_journal)); memset(x->journal, 0, sizeof(pst_item_journal) );} }
 

#define MALLOC_MESSAGESTORE x   )     { if (!x->message_store) { x->message_store = (pst_item_message_store*) pst_malloc(sizeof(pst_item_message_store)); memset(x->message_store, 0, sizeof(pst_item_message_store));} }
 

#define NULL_CHECK x   )     { if (!x) { DEBUG_WARN(("NULL_CHECK: Null Found\n")); break;} }
 

#define PST_SIGNATURE   0x4E444221
 

Definition at line 49 of file libpst.c.

#define SAFE_FREE x   )     {if (x) free(x);}
 

Referenced by pst_freeItem().

#define SAFE_FREE_BIN x   )     SAFE_FREE(x.data)
 

Referenced by pst_free_attach(), and pst_freeItem().

#define SAFE_FREE_STR x   )     SAFE_FREE(x.str)
 

Referenced by pst_free_attach(), and pst_freeItem().

#define SECOND_BACK   ((pf->do_read64) ? SECOND_BACK64 : SECOND_BACK32)
 

Definition at line 46 of file libpst.c.

Referenced by pst_open().

#define SECOND_BACK32   (int64_t)0xB8
 

Definition at line 32 of file libpst.c.

#define SECOND_BACK64   (int64_t)0xD8
 

Definition at line 39 of file libpst.c.

#define SECOND_POINTER   ((pf->do_read64) ? SECOND_POINTER64 : SECOND_POINTER32)
 

Definition at line 45 of file libpst.c.

Referenced by pst_open().

#define SECOND_POINTER32   (int64_t)0xBC
 

Definition at line 31 of file libpst.c.

#define SECOND_POINTER64   (int64_t)0xE0
 

Definition at line 38 of file libpst.c.


Typedef Documentation

typedef struct pst_block_hdr pst_block_hdr
 

typedef struct pst_block_header pst_block_header
 

typedef struct pst_block_offset pst_block_offset
 

typedef struct pst_block_offset_pointer pst_block_offset_pointer
 

typedef struct pst_desc pst_desc
 

Referenced by pst_decode_desc().

typedef struct pst_desc32 pst_desc32
 

Referenced by pst_decode_desc().

typedef struct pst_holder pst_holder
 

typedef struct pst_id2_assoc pst_id2_assoc
 

Referenced by pst_decode_assoc().

typedef struct pst_id2_assoc32 pst_id2_assoc32
 

Referenced by pst_decode_assoc().

typedef struct pst_index pst_index
 

Referenced by pst_decode_index().

typedef struct pst_index32 pst_index32
 

Referenced by pst_decode_index().

typedef struct pst_mapi_element pst_mapi_element
 

typedef struct pst_mapi_object pst_mapi_object
 

typedef struct pst_subblock pst_subblock
 

typedef struct pst_subblocks pst_subblocks
 

typedef struct pst_table3_rec pst_table3_rec
 

Referenced by pst_decode_type3().

typedef struct pst_table3_rec32 pst_table3_rec32
 

Referenced by pst_decode_type3().

typedef struct pst_x_attrib pst_x_attrib
 


Function Documentation

void add_descriptor_to_list pst_desc_tree node,
pst_desc_tree **  head,
pst_desc_tree **  tail
[static]
 

add a pst descriptor node to a linked list of such nodes.

Parameters:
node pointer to the node to be added to the list
head pointer to the list head pointer
tail pointer to the list tail pointer

Definition at line 409 of file libpst.c.

References DEBUG_ENT, DEBUG_RET, head, pst_desc_tree::next, pst_mapi_object::next, and pst_desc_tree::prev.

Referenced by record_descriptor().

pst_id2_tree * deep_copy pst_id2_tree head  )  [static]
 

make a deep copy of part of the id2 mapping tree, for use by an attachment containing an embedded rfc822 message.

Parameters:
head pointer to the subtree to be copied
Returns:
pointer to the new copy of the subtree

Definition at line 498 of file libpst.c.

References pst_id2_tree::child, head, pst_id2_tree::id, pst_id2_tree::id2, pst_id2_tree::next, and pst_malloc().

Referenced by pst_parse_item().

Here is the call graph for this function:

if buf   ) 
 

Definition at line 3307 of file libpst.c.

if attach   ) 
 

Definition at line 3164 of file libpst.c.

else if list->elements->  type[x] = = (uint32_t)0x0003  ) 
 

Definition at line 3060 of file libpst.c.

if item->predecessor_change.  size  ) 
 

Definition at line 2867 of file libpst.c.

if item->record_key.  size  ) 
 

Definition at line 2448 of file libpst.c.

if (list->elements[x]->size > 2)&&(((uint8_t) list->elements[x]->data[0])< 0x20)   ) 
 

Definition at line 2279 of file libpst.c.

if pst_strincmp("IPM.Note", item->ascii_type, 8)  = = 0  ) 
 

Definition at line 2219 of file libpst.c.

if !item->  ascii_type  ) 
 

if !item->email->  autoforward  ) 
 

memcpy item->outlook_version.  str,
list->elements->  data[x],
list->elements->  size[x]
 

Referenced by print_ldif_two(), print_pdf_short(), pst_build_id2(), pst_decode_assoc(), pst_decode_desc(), pst_decode_index(), pst_decode_table(), pst_decode_type3(), pst_getBlockOffset(), pst_load_extended_attributes(), pst_lzfu_decompress(), pst_vbappend(), and pst_vbset().

memcpy (item->internet_cpid),
list->elements->  data[x],
sizeof(item->internet_cpid
 

memcpy item->comment.  str,
list->elements->  data[x],
list->elements->  size[x]
 

memcpy item->file_as.  str,
list->elements->  data[x],
list->elements->  size[x]
 

memcpy item->body.  str,
list->elements->  data[x],
list->elements->  size[x]
 

memcpy (item->message_size),
list->elements->  data[x],
sizeof(item->message_size
 

memcpy item->  ascii_type,
list->elements->  data[x],
list->elements->  size[x]
 

memset item->  journal,
,
sizeof(pst_item_journal
 

Referenced by dumper(), main(), print_pdf_single(), process(), pst_convert_recurrence(), pst_debug_init(), pst_load_extended_attributes(), pst_lzfu_decompress(), pst_open(), pst_parse_item(), and try_fork().

memset ((char *) item->outlook_version.str)+list->elements->  size[x],
,
(size_t)  1
 

memset item->  appointment,
,
sizeof(pst_item_appointment
 

memset item->  message_store,
,
sizeof(pst_item_message_store
 

memset ((char *) item->comment.str)+list->elements->  size[x],
,
(size_t)  1
 

memset item->  contact,
,
sizeof(pst_item_contact
 

memset ((char *) item->file_as.str)+list->elements->  size[x],
,
(size_t)  1
 

memset ((char *) item->body.str)+list->elements->  size[x],
,
(size_t)  1
 

memset ((char *) item->ascii_type)+list->elements->  size[x],
,
(size_t)  1
 

memset item->  email,
,
sizeof(pst_item_email
 

size_t pst_append_holder pst_holder h,
size_t  size,
char **  buf,
size_t  z
[static]
 

size_t pst_attach_to_file pst_file pf,
pst_item_attach attach,
FILE *  fp
 

Write a binary attachment to a file.

Parameters:
pf pointer to the pst_file structure setup by pst_open().
attach pointer to the attachment record
fp pointer to an open FILE.

Definition at line 566 of file libpst.c.

References pst_item_attach::data, pst_binary::data, DEBUG_ENT, DEBUG_RET, DEBUG_WARN, pst_item_attach::i_id, pst_ff_getID2data(), pst_fwrite(), pst_getID(), size, and pst_binary::size.

Referenced by write_separate_attachment().

Here is the call graph for this function:

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.

Parameters:
pf pointer to the pst_file structure setup by pst_open().
attach pointer to the attachment record
fp pointer to an open FILE.

Definition at line 590 of file libpst.c.

References pst_item_attach::data, pst_binary::data, DEBUG_ENT, DEBUG_RET, DEBUG_WARN, pst_item_attach::i_id, pst_base64_encode(), pst_ff_getID2data(), pst_fwrite(), pst_getID(), size, and pst_binary::size.

Here is the call graph for this function:

pst_binary pst_attach_to_mem pst_file pf,
pst_item_attach attach
 

Assemble the binary attachment into a single buffer.

Parameters:
pf pointer to the pst_file structure setup by pst_open().
attach pointer to the attachment record
Returns:
structure containing size of and pointer to the buffer. the caller must free this buffer.

Definition at line 542 of file libpst.c.

References pst_binary::data, pst_item_attach::data, DEBUG_ENT, DEBUG_RET, DEBUG_WARN, pst_item_attach::i_id, pst_ff_getID2data(), pst_getID(), and pst_binary::size.

Here is the call graph for this function:

int pst_build_desc_ptr pst_file pf,
int64_t  offset,
int32_t  depth,
uint64_t  linku1,
uint64_t  start_val,
uint64_t  end_val
[static]
 

Referenced by pst_load_index().

pst_id2_tree * pst_build_id2 pst_file pf,
pst_index_ll list
[static]
 

Definition at line 3244 of file libpst.c.

References pst_id2_tree::child, pst_id2_assoc::child_id, DEBUG_ENT, DEBUG_HEXDUMPC, DEBUG_INFO, DEBUG_RET, DEBUG_WARN, pst_file::do_read64, head, pst_index_ll::i_id, pst_id2_tree::id, pst_id2_assoc::id, pst_id2_tree::id2, pst_id2_assoc::id2, LE16_CPU, memcpy(), pst_id2_tree::next, pst_index_ll::offset, pst_decode_assoc(), pst_getID(), pst_malloc(), pst_read_block_size(), pst_index_ll::size, pst_index_ll::u1, and x.

Referenced by pst_load_extended_attributes(), and pst_parse_item().

Here is the call graph for this function:

int pst_build_id_ptr pst_file pf,
int64_t  offset,
int32_t  depth,
uint64_t  linku1,
uint64_t  start_val,
uint64_t  end_val
[static]
 

Process the index1 b-tree from the pst file and create the pf->i_head linked list from it.

This tree holds the location (offset and size) of lower level objects (0xbcec descriptor blocks, etc) in the pst file.

Definition at line 975 of file libpst.c.

References BACKLINK_OFFSET, BLOCK_SIZE, DEBUG_ENT, DEBUG_HEXDUMPC, DEBUG_INFO, DEBUG_RET, DEBUG_WARN, pst_file::i_head, pst_file::i_tail, pst_index::id, INDEX_COUNT_MAX, ITEM_SIZE32, pst_index_ll::next, pst_table_ptr_struct::offset, pst_index::offset, pst_decode_index(), pst_decode_table(), pst_getIntAt(), pst_malloc(), pst_read_block_size(), pst_index::size, pst_table_ptr_struct::start, pst_table_ptr_struct::u1, pst_index::u1, and x.

Referenced by pst_load_index().

Here is the call graph for this function:

int pst_chr_count char *  str,
char  x
[static]
 

int pst_close pst_file pf  ) 
 

Close a pst file.

Parameters:
pf pointer to the pst_file structure setup by pst_open().

Definition at line 380 of file libpst.c.

References pst_file::cwd, pst_file::d_head, DEBUG_ENT, DEBUG_RET, DEBUG_WARN, pst_file::fname, pst_file::fp, pst_file::i_head, pst_free_desc(), pst_free_id(), pst_free_xattrib(), and pst_file::x_head.

Referenced by main().

Here is the call graph for this function:

pst_recurrence* pst_convert_recurrence pst_item_appointment appt  ) 
 

Decode raw recurrence data into a better structure.

Parameters:
appt pointer to appointment structure
Returns:
pointer to decoded recurrence structure that must be free'd by the caller.

Definition at line 4482 of file libpst.c.

References pst_recurrence::bydaymask, pst_recurrence::count, pst_binary::data, pst_recurrence::dayofmonth, pst_recurrence::interval, memset(), pst_recurrence::monthofyear, pst_recurrence::parm1, pst_recurrence::parm2, pst_recurrence::parm4, pst_recurrence::parm5, pst_recurrence::position, PST_LE_GET_UINT32, PST_LE_GET_UINT8, pst_malloc(), pst_recurrence, pst_item_appointment::recurrence_data, pst_recurrence::signature, pst_binary::size, pst_recurrence::sub_type, pst_recurrence::termination, and pst_recurrence::type.

Here is the call graph for this function:

void pst_convert_utf8 pst_item item,
pst_string str
 

Convert str to utf8 if possible; null strings are converted into empty strings.

Parameters:
item pointer to the containing mapi item
str pointer to the mapi string of interest

Definition at line 4452 of file libpst.c.

References pst_varbuf::b, DEBUG_ENT, DEBUG_RET, DEBUG_WARN, pst_string::is_utf8, pst_default_charset(), pst_vb_8bit2utf8(), pst_vballoc(), pst_vbuf, and pst_string::str.

Referenced by create_enter_dir(), process(), and pst_convert_utf8_null().

Here is the call graph for this function:

void pst_convert_utf8_null pst_item item,
pst_string str
 

Convert str to utf8 if possible; null strings are preserved.

Parameters:
item pointer to the containing mapi item
str pointer to the mapi string of interest

Definition at line 4441 of file libpst.c.

References pst_convert_utf8(), and pst_string::str.

Referenced by write_normal_email().

Here is the call graph for this function:

pst_debug __LINE__  ,
__FILE__  ,
__VA_ARGS__ 
 

Definition at line 2428 of file libpst.c.

pst_debug_hexdump __LINE__  ,
__FILE__  ,
(char *) item->appointment->recurrence_data.  data,
item->appointment->recurrence_data.  size,
0x10  ,
 

pst_debug_hexdump __LINE__  ,
__FILE__  ,
(char *) item->predecessor_change.  data,
item->predecessor_change.  size,
0x10  ,
 

pst_debug_hexdump __LINE__  ,
__FILE__  ,
(char *) item->record_key.  data,
item->record_key.  size,
0x10  ,
 

pst_debug_hexdump __LINE__  ,
__FILE__  ,
(char *) list->elements->  data[x],
list->elements->  size[x],
0x10  ,
 

size_t pst_decode_assoc pst_file pf,
pst_id2_assoc assoc,
char *  buf
[static]
 

Definition at line 919 of file libpst.c.

References pst_id2_assoc32::child_id, pst_id2_assoc::child_id, DEBUG_HEXDUMPC, DEBUG_INFO, pst_file::do_read64, pst_id2_assoc32::id, pst_id2_assoc::id, pst_id2_assoc32::id2, pst_id2_assoc::id2, LE32_CPU, LE64_CPU, memcpy(), pst_id2_assoc, and pst_id2_assoc32.

Referenced by pst_build_id2().

Here is the call graph for this function:

size_t pst_decode_desc pst_file pf,
pst_desc desc,
char *  buf
[static]
 

Definition at line 823 of file libpst.c.

References pst_desc32::d_id, pst_desc::d_id, DEBUG_HEXDUMPC, DEBUG_INFO, pst_desc32::desc_id, pst_desc::desc_id, pst_file::do_read64, LE32_CPU, LE64_CPU, memcpy(), pst_desc32::parent_d_id, pst_desc::parent_d_id, pst_desc, pst_desc32, pst_desc32::tree_id, pst_desc::tree_id, and pst_desc::u1.

Here is the call graph for this function:

size_t pst_decode_index pst_file pf,
pst_index index,
char *  buf
[static]
 

Definition at line 886 of file libpst.c.

References DEBUG_HEXDUMPC, DEBUG_INFO, pst_file::do_read64, pst_index32::id, pst_index::id, LE16_CPU, LE32_CPU, LE64_CPU, memcpy(), pst_index32::offset, pst_index::offset, pst_index, pst_index32, pst_index32::size, pst_index::size, pst_index::u0, pst_index32::u1, and pst_index::u1.

Referenced by pst_build_id_ptr().

Here is the call graph for this function:

size_t pst_decode_table pst_file pf,
struct pst_table_ptr_struct table,
char *  buf
[static]
 

Definition at line 857 of file libpst.c.

References DEBUG_HEXDUMPC, DEBUG_INFO, pst_file::do_read64, LE32_CPU, LE64_CPU, memcpy(), pst_table_ptr_struct32::offset, pst_table_ptr_struct::offset, pst_table_ptr_struct32::start, pst_table_ptr_struct::start, pst_table_ptr_struct32::u1, and pst_table_ptr_struct::u1.

Referenced by pst_build_id_ptr().

Here is the call graph for this function:

size_t pst_decode_type3 pst_file pf,
pst_table3_rec table3_rec,
char *  buf
[static]
 

Definition at line 947 of file libpst.c.

References DEBUG_ENT, DEBUG_HEXDUMPC, DEBUG_INFO, DEBUG_RET, pst_file::do_read64, pst_table3_rec32::id, pst_table3_rec::id, LE32_CPU, LE64_CPU, memcpy(), pst_table3_rec, and pst_table3_rec32.

Here is the call graph for this function:

int pst_decrypt uint64_t  i_id,
char *  buf,
size_t  size,
unsigned char  type
[static]
 

size_t pst_ff_compile_ID pst_file pf,
uint64_t  i_id,
pst_holder h,
size_t  size
[static]
 

size_t pst_ff_getID2block pst_file pf,
uint64_t  id2,
pst_id2_tree id2_head,
char **  buf
[static]
 

Referenced by pst_getBlockOffsetPointer().

size_t pst_ff_getID2data pst_file pf,
pst_index_ll ptr,
pst_holder h
[static]
 

Referenced by pst_attach_to_file(), pst_attach_to_file_base64(), and pst_attach_to_mem().

size_t pst_ff_getIDblock pst_file pf,
uint64_t  i_id,
char **  buf
[static]
 

size_t pst_finish_cleanup_holder pst_holder h,
size_t  size
[static]
 

void pst_free_attach pst_item_attach attach  )  [static]
 

Definition at line 3313 of file libpst.c.

References pst_item_attach::data, pst_item_attach::filename1, pst_item_attach::filename2, pst_item_attach::id2_head, pst_item_attach::mimetype, pst_item_attach::next, pst_free_id2(), SAFE_FREE_BIN, and SAFE_FREE_STR.

Referenced by pst_freeItem().

Here is the call graph for this function:

void pst_free_desc pst_desc_tree head  )  [static]
 

Definition at line 3218 of file libpst.c.

References pst_desc_tree::child, DEBUG_ENT, DEBUG_RET, head, and pst_desc_tree::next.

Referenced by pst_close().

void pst_free_id pst_index_ll head  )  [static]
 

Definition at line 3206 of file libpst.c.

References DEBUG_ENT, DEBUG_RET, head, and pst_index_ll::next.

Referenced by pst_close().

void pst_free_id2 pst_id2_tree head  )  [static]
 

Definition at line 3193 of file libpst.c.

References pst_id2_tree::child, DEBUG_ENT, DEBUG_RET, head, and pst_id2_tree::next.

Referenced by pst_free_attach(), pst_load_extended_attributes(), and pst_parse_item().

void pst_free_list pst_mapi_object list  )  [static]
 

Definition at line 3171 of file libpst.c.

References pst_mapi_element::data, DEBUG_ENT, DEBUG_RET, pst_mapi_object::elements, pst_mapi_object::next, pst_mapi_object::orig_count, and x.

Referenced by pst_load_extended_attributes(), and pst_parse_item().

void pst_free_recurrence pst_recurrence r  ) 
 

Free a recurrence structure.

Parameters:
r input pointer to be freed

Definition at line 4557 of file libpst.c.

void pst_free_xattrib pst_x_attrib_ll x  )  [static]
 

Definition at line 3231 of file libpst.c.

References pst_x_attrib_ll::data, DEBUG_ENT, DEBUG_RET, pst_x_attrib_ll::next, and x.

Referenced by pst_close().

void pst_freeItem pst_item item  ) 
 

Free the item returned by pst_parse_item().

Parameters:
item pointer to item returned from pst_parse_item().

Definition at line 3328 of file libpst.c.

References pst_item_contact::account_name, pst_item_contact::address1, pst_item_contact::address1_desc, pst_item_contact::address1_transport, pst_item_contact::address1a, pst_item_contact::address2, pst_item_contact::address2_desc, pst_item_contact::address2_transport, pst_item_contact::address2a, pst_item_contact::address3, pst_item_contact::address3_desc, pst_item_contact::address3_transport, pst_item_contact::address3a, pst_item_appointment::alarm_filename, pst_item::appointment, pst_item_email::arrival_date, pst_item::ascii_type, pst_item_contact::assistant_name, pst_item_contact::assistant_phone, pst_item::attach, pst_item_email::bcc_address, pst_item_contact::billing_information, pst_item_contact::birthday, pst_item::body, pst_item::body_charset, pst_item_contact::business_address, pst_item_contact::business_city, pst_item_contact::business_country, pst_item_contact::business_fax, pst_item_contact::business_homepage, pst_item_contact::business_phone, pst_item_contact::business_phone2, pst_item_contact::business_po_box, pst_item_contact::business_postal_code, pst_item_contact::business_state, pst_item_contact::business_street, pst_item_contact::callback_phone, pst_item_contact::car_phone, pst_item_email::cc_address, pst_item::comment, pst_item_contact::common_name, pst_item_message_store::common_view_folder, pst_item_contact::company_main_phone, pst_item_contact::company_name, pst_item_contact::computer_name, pst_item::contact, pst_item_email::conversation_index, pst_item::create_date, pst_item_contact::customer_id, DEBUG_ENT, DEBUG_RET, pst_item_contact::def_postal_address, pst_item_message_store::default_outbox_folder, pst_item_message_store::deleted_items_folder, pst_item_contact::department, pst_item_contact::display_name_prefix, pst_item::email, pst_item_email::encrypted_body, pst_item_email::encrypted_htmlbody, pst_item_journal::end, pst_item_appointment::end, pst_item::extra_fields, pst_item_extra_field::field_name, pst_item::file_as, pst_item_contact::first_name, pst_item::folder, pst_item_contact::followup, pst_item_contact::free_busy_address, pst_item_contact::ftp_site, pst_item_contact::fullname, pst_item_contact::gov_id, pst_item_email::header, pst_item_contact::hobbies, pst_item_contact::home_address, pst_item_contact::home_city, pst_item_contact::home_country, pst_item_contact::home_fax, pst_item_contact::home_phone, pst_item_contact::home_phone2, pst_item_contact::home_po_box, pst_item_contact::home_postal_code, pst_item_contact::home_state, pst_item_contact::home_street, pst_item_email::htmlbody, pst_item_email::in_reply_to, pst_item_contact::initials, pst_item_contact::isdn_phone, pst_item_contact::job_title, pst_item::journal, pst_item_contact::keyword, pst_item_contact::language, pst_item_contact::location, pst_item_appointment::location, pst_item_contact::manager_name, pst_item::message_store, pst_item_email::messageid, pst_item_contact::middle_name, pst_item_contact::mileage, pst_item_contact::mobile_phone, pst_item::modify_date, pst_item_extra_field::next, pst_item_contact::nickname, pst_item_contact::office_loc, pst_item_contact::org_id, pst_item_email::original_bcc, pst_item_email::original_cc, pst_item_email::original_to, pst_item_contact::other_address, pst_item_contact::other_city, pst_item_contact::other_country, pst_item_contact::other_phone, pst_item_contact::other_po_box, pst_item_contact::other_postal_code, pst_item_contact::other_state, pst_item_contact::other_street, pst_item_email::outlook_recipient, pst_item_email::outlook_recipient2, pst_item_email::outlook_recipient_name, pst_item_email::outlook_sender, pst_item_email::outlook_sender2, pst_item_email::outlook_sender_name, pst_item::outlook_version, pst_item_contact::pager_phone, pst_item_contact::personal_homepage, pst_item::predecessor_change, pst_item_contact::pref_name, pst_item_contact::primary_fax, pst_item_contact::primary_phone, pst_item_email::processed_subject, pst_item_contact::profession, pst_free_attach(), pst_item_contact::radio_phone, pst_item_email::recip2_access, pst_item_email::recip2_address, pst_item_email::recip_access, pst_item_email::recip_address, pst_item::record_key, pst_item_appointment::recurrence_data, pst_item_appointment::recurrence_description, pst_item_appointment::recurrence_end, pst_item_appointment::recurrence_start, pst_item_appointment::reminder, pst_item_email::reply_to, pst_item_email::report_text, pst_item_email::report_time, pst_item_email::return_path_address, pst_item_email::rtf_body_tag, pst_item_email::rtf_compressed, SAFE_FREE, SAFE_FREE_BIN, SAFE_FREE_STR, pst_item_message_store::search_root_folder, pst_item_email::sender2_access, pst_item_email::sender2_address, pst_item_email::sender_access, pst_item_email::sender_address, pst_item_email::sent_date, pst_item_message_store::sent_items_folder, pst_item_email::sentmail_folder, pst_item_email::sentto_address, pst_item_contact::spouse_name, pst_item_journal::start, pst_item_appointment::start, pst_item::subject, pst_item_contact::suffix, pst_item_email::supplementary_info, pst_item_contact::surname, pst_item_contact::telex, pst_item_appointment::timezonestring, pst_item_message_store::top_of_folder, pst_item_message_store::top_of_personal_folder, pst_item_contact::transmittable_display_name, pst_item_contact::ttytdd_phone, pst_item_journal::type, pst_item_message_store::user_views_folder, pst_item_extra_field::value, pst_item_contact::wedding_anniversary, pst_item_contact::work_address_city, pst_item_contact::work_address_country, pst_item_contact::work_address_postalcode, pst_item_contact::work_address_postofficebox, pst_item_contact::work_address_state, and pst_item_contact::work_address_street.

Referenced by dumper(), main(), process(), and pst_parse_item().

Here is the call graph for this function:

size_t pst_getAtPos pst_file pf,
int64_t  pos,
void *  buf,
size_t  size
[static]
 

Referenced by pst_open().

int pst_getBlockOffset char *  buf,
size_t  read_size,
uint32_t  i_offset,
uint32_t  offset,
pst_block_offset p
[static]
 

find the id in the descriptor tree rooted at pf->d_head

Parameters:
pf global pst file pointer
d_id the id we are looking for
Returns:
pointer to the pst_desc_tree node in the descriptor tree

Read a block of data from file into memory

Parameters:
pf PST file
offset offset in the pst file of the data
size size of the block to be read
buf reference to pointer to buffer. If this pointer is non-NULL, it will first be free()d
Returns:
size of block read into memory

Decrypt a block of data from the pst file.

Parameters:
i_id identifier of this block, needed as part of the key for the enigma cipher
buf pointer to the buffer to be decrypted in place
size size of the buffer
type 
  • 0 PST_NO_ENCRYPT, none
  • 1 PST_COMP_ENCRYPT, simple byte substitution cipher with fixed key
  • 2 PST_ENCRYPT, german enigma 3 rotor cipher with fixed key
Returns:
0 if ok, -1 if error (NULL buffer or unknown encryption type)

Read part of the pst file.

Parameters:
pf PST file structure
pos offset of the data in the pst file
buf buffer to contain the data
size size of the buffer and the amount of data to be read
Returns:
actual read size, 0 if seek error

Get an ID block from file using pst_ff_getIDblock() and decrypt if necessary

Parameters:
pf PST file structure
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.
Returns:
Size of block read into memory

Read a block of data from file into memory

Parameters:
pf PST file structure
i_id ID of block to read
buf reference to pointer to buffer that will contain the data block. If this pointer is non-NULL, it will first be free()d.
Returns:
size of block read into memory

find the actual data from an i_id and send it to the destination specified by the pst_holder h. h must be a new empty destination.

Parameters:
pf PST file structure
ptr 
h specifies the output destination (buffer, file, encoding)
Returns:
updated size of the output

find the actual data from an indirection i_id and send it to the destination specified by the pst_holder.

Parameters:
pf PST file structure
i_id ID of the block to read
h specifies the output destination (buffer, file, encoding)
size number of bytes of data already sent to h
Returns:
updated size of the output

Definition at line 3587 of file libpst.c.

References DEBUG_ENT, DEBUG_RET, DEBUG_WARN, pst_block_offset::from, LE16_CPU, memcpy(), and pst_block_offset::to.

Referenced by pst_getBlockOffsetPointer().

Here is the call graph for this function:

int pst_getBlockOffsetPointer pst_file pf,
pst_id2_tree i2_head,
pst_subblocks subblocks,
uint32_t  offset,
pst_block_offset_pointer p
[static]
 

The offset might be zero, in which case we have no data, so return a pair of null pointers.

Or, the offset might end in 0xf, so it is an id2 pointer, in which case we read the id2 block. Otherwise, the high order 16 bits of offset is the index into the subblocks, and the (low order 16 bits of offset)>>4 is an index into the table of offsets in the subblock.

Definition at line 3539 of file libpst.c.

References pst_subblock::buf, DEBUG_ENT, DEBUG_RET, DEBUG_WARN, pst_block_offset::from, pst_block_offset_pointer::from, pst_subblock::i_offset, pst_block_offset_pointer::needfree, pst_ff_getID2block(), pst_getBlockOffset(), pst_subblock::read_size, size, pst_subblocks::subblock_count, pst_subblocks::subs, pst_block_offset::to, and pst_block_offset_pointer::to.

Here is the call graph for this function:

pst_desc_tree* pst_getDptr pst_file pf,
uint64_t  d_id
[static]
 

Referenced by pst_getTopOfFolders(), pst_load_extended_attributes(), and record_descriptor().

pst_id2_tree* pst_getID2 pst_id2_tree ptr,
uint64_t  id
[static]
 

Referenced by pst_parse_item().

uint64_t pst_getIntAt pst_file pf,
char *  buf
[static]
 

Referenced by pst_build_id_ptr().

uint64_t pst_getIntAtPos pst_file pf,
int64_t  pos
[static]
 

Referenced by pst_open().

pst_desc_tree* pst_getNextDptr pst_desc_tree d  ) 
 

Walk the descriptor tree.

Parameters:
d pointer to the current item in the descriptor tree.
Returns:
pointer to the next item in the descriptor tree.

Definition at line 640 of file libpst.c.

References pst_desc_tree::child, DEBUG_ENT, DEBUG_RET, pst_desc_tree::next, and pst_desc_tree::parent.

Referenced by dumper().

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.

Parameters:
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).

Definition at line 510 of file libpst.c.

References pst_desc_tree::assoc_tree, pst_desc_tree::d_id, DEBUG_ENT, DEBUG_INFO, DEBUG_RET, pst_desc_tree::desc, pst_entryid::id, pst_item::message_store, pst_desc_tree::parent_d_id, pst_getDptr(), pst_malloc(), record_descriptor(), and pst_item_message_store::top_of_personal_folder.

Referenced by main().

Here is the call graph for this function:

int pst_load_extended_attributes pst_file pf  ) 
 

Load the extended attribute mapping table from the pst file.

Returns:
true(1) or false(0) to indicate whether the extended attributes have been loaded

Definition at line 664 of file libpst.c.

References pst_desc_tree::assoc_tree, pst_mapi_object::count_elements, pst_mapi_element::data, DEBUG_ENT, DEBUG_HEXDUMPC, DEBUG_INFO, DEBUG_RET, DEBUG_WARN, pst_desc_tree::desc, pst_mapi_object::elements, pst_x_attrib::extended, pst_index_ll::i_id, LE32_CPU, pst_x_attrib::map, pst_x_attrib_ll::map, pst_mapi_element::mapi_id, memcpy(), memset(), pst_x_attrib_ll::next, pst_build_id2(), pst_free_id2(), pst_free_list(), pst_getDptr(), PST_LE_GET_UINT16, PST_LE_GET_UINT32, pst_malloc(), pst_parse_block(), pst_printID2ptr(), pst_wide_to_single(), pst_mapi_element::size, pst_mapi_element::type, pst_x_attrib::type, x, and pst_file::x_head.

Referenced by main().

Here is the call graph for this function:

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().

Parameters:
pf pointer to the pst_file structure setup by pst_open().

Definition at line 618 of file libpst.c.

References pst_file::d_head, DEBUG_ENT, DEBUG_INFO, DEBUG_RET, DEBUG_WARN, pst_file::index1, pst_file::index1_back, pst_file::index2, pst_file::index2_back, pst_build_desc_ptr(), pst_build_id_ptr(), pst_printDptr(), and x.

Referenced by main().

Here is the call graph for this function:

int pst_open pst_file pf,
const char *  name
 

Open a pst file.

Parameters:
pf pointer to uninitialized pst_file structure. This structure will be filled in by this function.
name name of the file, suitable for fopen().
Returns:
0 if ok, -1 if error

Definition at line 293 of file libpst.c.

References DEBUG_ENT, DEBUG_INFO, DEBUG_RET, DEBUG_WARN, ENC_TYPE, FILE_SIZE_POINTER, INDEX_BACK, INDEX_POINTER, INDEX_TYPE32, INDEX_TYPE32A, INDEX_TYPE64, INDEX_TYPE64A, INDEX_TYPE_OFFSET, LE32_CPU, memset(), pst_getAtPos(), pst_getIntAtPos(), pst_malloc(), pst_unicode_init(), SECOND_BACK, SECOND_POINTER, and WARN.

Referenced by main().

Here is the call graph for this function:

pst_mapi_object* pst_parse_block pst_file pf,
uint64_t  block_id,
pst_id2_tree i2_head
[static]
 

Referenced by pst_load_extended_attributes(), and pst_parse_item().

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.

Parameters:
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.
Returns:
pointer to the mapi object. Must be free'd by pst_freeItem().

Definition at line 1209 of file libpst.c.

References pst_desc_tree::assoc_tree, pst_item::attach, pst_id2_tree::child, pst_mapi_object::count_objects, DEBUG_ENT, DEBUG_INFO, DEBUG_RET, DEBUG_WARN, deep_copy(), pst_desc_tree::desc, pst_index_ll::i_id, pst_item_attach::i_id, pst_id2_tree::id, pst_item_attach::id2_head, pst_item_attach::id2_val, memset(), pst_item_attach::next, pst_build_id2(), pst_free_id2(), pst_free_list(), pst_freeItem(), pst_getID2(), pst_item, pst_item_attach, pst_malloc(), pst_parse_block(), pst_printID2ptr(), pst_process(), and x.

Referenced by dumper(), main(), and process().

Here is the call graph for this function:

void pst_printDptr pst_file pf,
pst_desc_tree ptr
[static]
 

Referenced by pst_load_index().

void pst_printID2ptr pst_id2_tree ptr  )  [static]
 

Referenced by pst_load_extended_attributes(), and pst_parse_item().

int pst_process pst_mapi_object list,
pst_item item,
pst_item_attach attach
[static]
 

Referenced by pst_parse_item().

size_t pst_read_block_size pst_file pf,
int64_t  offset,
size_t  size,
char **  buf
[static]
 

Referenced by pst_build_id2(), and pst_build_id_ptr().

int pst_reopen pst_file pf  ) 
 

Reopen the pst file after a fork.

Parameters:
pf pointer to the pst_file structure setup by pst_open().
Returns:
0 if ok, -1 if error

Definition at line 370 of file libpst.c.

References pst_file::cwd, pst_file::fname, and pst_file::fp.

Referenced by try_fork().

int pst_stricmp char *  a,
char *  b
[static]
 

int pst_strincmp char *  a,
char *  b,
size_t  x
[static]
 

char* pst_wide_to_single char *  wt,
size_t  size
[static]
 

Referenced by pst_load_extended_attributes().

void record_descriptor pst_file pf,
pst_desc_tree node
[static]
 

add a pst descriptor node into the global tree.

Parameters:
pf global pst file pointer
node pointer to the new node to be added to the tree

Definition at line 433 of file libpst.c.

References add_descriptor_to_list(), pst_desc_tree::child, pst_desc_tree::child_tail, pst_file::d_head, pst_desc_tree::d_id, pst_file::d_tail, DEBUG_ENT, DEBUG_INFO, DEBUG_RET, pst_desc_tree::next, pst_desc_tree::no_child, pst_desc_tree::parent, pst_desc_tree::parent_d_id, pst_desc_tree::prev, and pst_getDptr().

Referenced by pst_getTopOfFolders().

Here is the call graph for this function:


Variable Documentation

default __FILE__
 

Definition at line 3058 of file libpst.c.

default __pad0__
 

Definition at line 3058 of file libpst.c.

case __VA_ARGS__
 

Definition at line 2872 of file libpst.c.

Must Travel Needs Anniversary
 

Definition at line 2982 of file libpst.c.

Must Attend
 

Definition at line 2982 of file libpst.c.

Must Travel Needs Birthday
 

Definition at line 2982 of file libpst.c.

break
 

Definition at line 3054 of file libpst.c.

Business
 

Definition at line 2982 of file libpst.c.

Busy
 

Definition at line 2959 of file libpst.c.

Must Travel Needs Phone Call
 

Definition at line 2982 of file libpst.c.

unsigned char comp_enc[] [static]
 

Initial value:

 {
    0x47, 0xf1, 0xb4, 0xe6, 0x0b, 0x6a, 0x72, 0x48, 0x85, 0x4e, 0x9e, 0xeb, 0xe2, 0xf8, 0x94, 0x53,
    0xe0, 0xbb, 0xa0, 0x02, 0xe8, 0x5a, 0x09, 0xab, 0xdb, 0xe3, 0xba, 0xc6, 0x7c, 0xc3, 0x10, 0xdd,
    0x39, 0x05, 0x96, 0x30, 0xf5, 0x37, 0x60, 0x82, 0x8c, 0xc9, 0x13, 0x4a, 0x6b, 0x1d, 0xf3, 0xfb,
    0x8f, 0x26, 0x97, 0xca, 0x91, 0x17, 0x01, 0xc4, 0x32, 0x2d, 0x6e, 0x31, 0x95, 0xff, 0xd9, 0x23,
    0xd1, 0x00, 0x5e, 0x79, 0xdc, 0x44, 0x3b, 0x1a, 0x28, 0xc5, 0x61, 0x57, 0x20, 0x90, 0x3d, 0x83,
    0xb9, 0x43, 0xbe, 0x67, 0xd2, 0x46, 0x42, 0x76, 0xc0, 0x6d, 0x5b, 0x7e, 0xb2, 0x0f, 0x16, 0x29,
    0x3c, 0xa9, 0x03, 0x54, 0x0d, 0xda, 0x5d, 0xdf, 0xf6, 0xb7, 0xc7, 0x62, 0xcd, 0x8d, 0x06, 0xd3,
    0x69, 0x5c, 0x86, 0xd6, 0x14, 0xf7, 0xa5, 0x66, 0x75, 0xac, 0xb1, 0xe9, 0x45, 0x21, 0x70, 0x0c,
    0x87, 0x9f, 0x74, 0xa4, 0x22, 0x4c, 0x6f, 0xbf, 0x1f, 0x56, 0xaa, 0x2e, 0xb3, 0x78, 0x33, 0x50,
    0xb0, 0xa3, 0x92, 0xbc, 0xcf, 0x19, 0x1c, 0xa7, 0x63, 0xcb, 0x1e, 0x4d, 0x3e, 0x4b, 0x1b, 0x9b,
    0x4f, 0xe7, 0xf0, 0xee, 0xad, 0x3a, 0xb5, 0x59, 0x04, 0xea, 0x40, 0x55, 0x25, 0x51, 0xe5, 0x7a,
    0x89, 0x38, 0x68, 0x52, 0x7b, 0xfc, 0x27, 0xae, 0xd7, 0xbd, 0xfa, 0x07, 0xf4, 0xcc, 0x8e, 0x5f,
    0xef, 0x35, 0x9c, 0x84, 0x2b, 0x15, 0xd5, 0x77, 0x34, 0x49, 0xb6, 0x12, 0x0a, 0x7f, 0x71, 0x88,
    0xfd, 0x9d, 0x18, 0x41, 0x7d, 0x93, 0xd8, 0x58, 0x2c, 0xce, 0xfe, 0x24, 0xaf, 0xde, 0xb8, 0x36,
    0xc8, 0xa1, 0x80, 0xa6, 0x99, 0x98, 0xa8, 0x2f, 0x0e, 0x81, 0x65, 0x73, 0xe4, 0xc2, 0xa2, 0x8a,
    0xd4, 0xe1, 0x11, 0xd0, 0x08, 0x8b, 0x2a, 0xf2, 0xed, 0x9a, 0x64, 0x3f, 0xc1, 0x6c, 0xf9, 0xec
}
for "compressible" encryption, just a simple substitution cipher, plaintext = comp_enc[ciphertext]; for "strong" encryption, this is the first rotor of an Enigma 3 rotor cipher.

Definition at line 197 of file libpst.c.

unsigned char comp_high1[] [static]
 

Initial value:

 {
    0x41, 0x36, 0x13, 0x62, 0xa8, 0x21, 0x6e, 0xbb, 0xf4, 0x16, 0xcc, 0x04, 0x7f, 0x64, 0xe8, 0x5d,
    0x1e, 0xf2, 0xcb, 0x2a, 0x74, 0xc5, 0x5e, 0x35, 0xd2, 0x95, 0x47, 0x9e, 0x96, 0x2d, 0x9a, 0x88,
    0x4c, 0x7d, 0x84, 0x3f, 0xdb, 0xac, 0x31, 0xb6, 0x48, 0x5f, 0xf6, 0xc4, 0xd8, 0x39, 0x8b, 0xe7,
    0x23, 0x3b, 0x38, 0x8e, 0xc8, 0xc1, 0xdf, 0x25, 0xb1, 0x20, 0xa5, 0x46, 0x60, 0x4e, 0x9c, 0xfb,
    0xaa, 0xd3, 0x56, 0x51, 0x45, 0x7c, 0x55, 0x00, 0x07, 0xc9, 0x2b, 0x9d, 0x85, 0x9b, 0x09, 0xa0,
    0x8f, 0xad, 0xb3, 0x0f, 0x63, 0xab, 0x89, 0x4b, 0xd7, 0xa7, 0x15, 0x5a, 0x71, 0x66, 0x42, 0xbf,
    0x26, 0x4a, 0x6b, 0x98, 0xfa, 0xea, 0x77, 0x53, 0xb2, 0x70, 0x05, 0x2c, 0xfd, 0x59, 0x3a, 0x86,
    0x7e, 0xce, 0x06, 0xeb, 0x82, 0x78, 0x57, 0xc7, 0x8d, 0x43, 0xaf, 0xb4, 0x1c, 0xd4, 0x5b, 0xcd,
    0xe2, 0xe9, 0x27, 0x4f, 0xc3, 0x08, 0x72, 0x80, 0xcf, 0xb0, 0xef, 0xf5, 0x28, 0x6d, 0xbe, 0x30,
    0x4d, 0x34, 0x92, 0xd5, 0x0e, 0x3c, 0x22, 0x32, 0xe5, 0xe4, 0xf9, 0x9f, 0xc2, 0xd1, 0x0a, 0x81,
    0x12, 0xe1, 0xee, 0x91, 0x83, 0x76, 0xe3, 0x97, 0xe6, 0x61, 0x8a, 0x17, 0x79, 0xa4, 0xb7, 0xdc,
    0x90, 0x7a, 0x5c, 0x8c, 0x02, 0xa6, 0xca, 0x69, 0xde, 0x50, 0x1a, 0x11, 0x93, 0xb9, 0x52, 0x87,
    0x58, 0xfc, 0xed, 0x1d, 0x37, 0x49, 0x1b, 0x6a, 0xe0, 0x29, 0x33, 0x99, 0xbd, 0x6c, 0xd9, 0x94,
    0xf3, 0x40, 0x54, 0x6f, 0xf0, 0xc6, 0x73, 0xb8, 0xd6, 0x3e, 0x65, 0x18, 0x44, 0x1f, 0xdd, 0x67,
    0x10, 0xf1, 0x0c, 0x19, 0xec, 0xae, 0x03, 0xa1, 0x14, 0x7b, 0xa9, 0x0b, 0xff, 0xf8, 0xa3, 0xc0,
    0xa2, 0x01, 0xf7, 0x2e, 0xbc, 0x24, 0x68, 0x75, 0x0d, 0xfe, 0xba, 0x2f, 0xb5, 0xd0, 0xda, 0x3d
}
for "strong" encryption, this is the second rotor of an Enigma 3 rotor cipher.

Definition at line 218 of file libpst.c.

unsigned char comp_high2[] [static]
 

Initial value:

 {
    0x14, 0x53, 0x0f, 0x56, 0xb3, 0xc8, 0x7a, 0x9c, 0xeb, 0x65, 0x48, 0x17, 0x16, 0x15, 0x9f, 0x02,
    0xcc, 0x54, 0x7c, 0x83, 0x00, 0x0d, 0x0c, 0x0b, 0xa2, 0x62, 0xa8, 0x76, 0xdb, 0xd9, 0xed, 0xc7,
    0xc5, 0xa4, 0xdc, 0xac, 0x85, 0x74, 0xd6, 0xd0, 0xa7, 0x9b, 0xae, 0x9a, 0x96, 0x71, 0x66, 0xc3,
    0x63, 0x99, 0xb8, 0xdd, 0x73, 0x92, 0x8e, 0x84, 0x7d, 0xa5, 0x5e, 0xd1, 0x5d, 0x93, 0xb1, 0x57,
    0x51, 0x50, 0x80, 0x89, 0x52, 0x94, 0x4f, 0x4e, 0x0a, 0x6b, 0xbc, 0x8d, 0x7f, 0x6e, 0x47, 0x46,
    0x41, 0x40, 0x44, 0x01, 0x11, 0xcb, 0x03, 0x3f, 0xf7, 0xf4, 0xe1, 0xa9, 0x8f, 0x3c, 0x3a, 0xf9,
    0xfb, 0xf0, 0x19, 0x30, 0x82, 0x09, 0x2e, 0xc9, 0x9d, 0xa0, 0x86, 0x49, 0xee, 0x6f, 0x4d, 0x6d,
    0xc4, 0x2d, 0x81, 0x34, 0x25, 0x87, 0x1b, 0x88, 0xaa, 0xfc, 0x06, 0xa1, 0x12, 0x38, 0xfd, 0x4c,
    0x42, 0x72, 0x64, 0x13, 0x37, 0x24, 0x6a, 0x75, 0x77, 0x43, 0xff, 0xe6, 0xb4, 0x4b, 0x36, 0x5c,
    0xe4, 0xd8, 0x35, 0x3d, 0x45, 0xb9, 0x2c, 0xec, 0xb7, 0x31, 0x2b, 0x29, 0x07, 0x68, 0xa3, 0x0e,
    0x69, 0x7b, 0x18, 0x9e, 0x21, 0x39, 0xbe, 0x28, 0x1a, 0x5b, 0x78, 0xf5, 0x23, 0xca, 0x2a, 0xb0,
    0xaf, 0x3e, 0xfe, 0x04, 0x8c, 0xe7, 0xe5, 0x98, 0x32, 0x95, 0xd3, 0xf6, 0x4a, 0xe8, 0xa6, 0xea,
    0xe9, 0xf3, 0xd5, 0x2f, 0x70, 0x20, 0xf2, 0x1f, 0x05, 0x67, 0xad, 0x55, 0x10, 0xce, 0xcd, 0xe3,
    0x27, 0x3b, 0xda, 0xba, 0xd7, 0xc2, 0x26, 0xd4, 0x91, 0x1d, 0xd2, 0x1c, 0x22, 0x33, 0xf8, 0xfa,
    0xf1, 0x5a, 0xef, 0xcf, 0x90, 0xb6, 0x8b, 0xb5, 0xbd, 0xc0, 0xbf, 0x08, 0x97, 0x1e, 0x6c, 0xe2,
    0x61, 0xe0, 0xc6, 0xc1, 0x59, 0xab, 0xbb, 0x58, 0xde, 0x5f, 0xdf, 0x60, 0x79, 0x7e, 0xb2, 0x8a
}
for "strong" encryption, this is the third rotor of an Enigma 3 rotor cipher.

Definition at line 239 of file libpst.c.

Company Confidential
 

Definition at line 2274 of file libpst.c.

item create_date = (FILETIME*) pst_realloc( item->create_date , sizeof(FILETIME))
 

Definition at line 2507 of file libpst.c.

Daily
 

Definition at line 2999 of file libpst.c.

default __VA_ARGS__ list elements [x] data = off
 

Definition at line 3058 of file libpst.c.

Referenced by pst_base64_encode(), pst_base64_encode_multiple(), and pst_base64_encode_single().

item create_date dwHighDateTime = (((( item->create_date ->dwHighDateTime ) & 0xff000000) >> 24) | ((( item->create_date ->dwHighDateTime ) & 0x00ff0000) >> 8 ) | ((( item->create_date ->dwHighDateTime ) & 0x0000ff00) << 8 ) | ((( item->create_date ->dwHighDateTime ) & 0x000000ff) << 24))
 

Definition at line 2507 of file libpst.c.

item create_date dwLowDateTime = (((( item->create_date ->dwLowDateTime ) & 0xff000000) >> 24) | ((( item->create_date ->dwLowDateTime ) & 0x00ff0000) >> 8 ) | ((( item->create_date ->dwLowDateTime ) & 0x0000ff00) << 8 ) | ((( item->create_date ->dwLowDateTime ) & 0x000000ff) << 24))
 

Definition at line 2507 of file libpst.c.

Female
 

Definition at line 2804 of file libpst.c.

Free
 

Definition at line 2959 of file libpst.c.

return head
 

Definition at line 3309 of file libpst.c.

Referenced by add_descriptor_to_list(), deep_copy(), pst_build_id2(), pst_free_desc(), pst_free_id(), and pst_free_id2().

High
 

Definition at line 2212 of file libpst.c.

attach id2_val = ut
 

Definition at line 2874 of file libpst.c.

Important
 

Definition at line 2982 of file libpst.c.

item internet_cpid = (((( item->internet_cpid ) & 0xff000000) >> 24) | ((( item->internet_cpid ) & 0x00ff0000) >> 8 ) | ((( item->internet_cpid ) & 0x0000ff00) << 8 ) | ((( item->internet_cpid ) & 0x000000ff) << 24))
 

Definition at line 2861 of file libpst.c.

item outlook_version is_utf8 = (list->elements[x]->type == 0x1f) ? 1 : 0
 

Definition at line 3038 of file libpst.c.

Low
 

Definition at line 2212 of file libpst.c.

Male
 

Definition at line 2804 of file libpst.c.

item message_size = (((( item->message_size ) & 0xff000000) >> 24) | ((( item->message_size ) & 0x00ff0000) >> 8 ) | ((( item->message_size ) & 0x0000ff00) << 8 ) | ((( item->message_size ) & 0x000000ff) << 24))
 

Definition at line 2428 of file libpst.c.

Monthly
 

Definition at line 2999 of file libpst.c.

None
 

Definition at line 2999 of file libpst.c.

NonUrgent
 

Definition at line 2257 of file libpst.c.

Normal
 

Definition at line 2257 of file libpst.c.

Out Of Office
 

Definition at line 2959 of file libpst.c.

Personal
 

Definition at line 2982 of file libpst.c.

Must Travel Needs Preparation
 

Definition at line 2982 of file libpst.c.

Private
 

Definition at line 2274 of file libpst.c.

Must Travel Required
 

Definition at line 2982 of file libpst.c.

return
 

Definition at line 3167 of file libpst.c.

case list elements [x] size = off
 

Definition at line 3038 of file libpst.c.

Referenced by main(), pst_attach_to_file(), pst_attach_to_file_base64(), pst_base64_encode(), pst_base64_encode_multiple(), pst_base64_encode_single(), pst_debug_hexdump(), pst_getBlockOffsetPointer(), pst_lzfu_decompress(), pst_malloc(), and pst_realloc().

Tentative
 

Definition at line 2959 of file libpst.c.

case __VA_ARGS__ list elements [x] time_buffer
 

Definition at line 3023 of file libpst.c.

Referenced by process().

Unspecified
 

Definition at line 2804 of file libpst.c.

Urgent
 

Definition at line 2257 of file libpst.c.

Vacation
 

Definition at line 2982 of file libpst.c.

Weekly
 

Definition at line 2999 of file libpst.c.

x
 

Definition at line 3305 of file libpst.c.

Referenced by pst_base64_encode_multiple(), pst_build_id2(), pst_build_id_ptr(), pst_free_list(), pst_free_xattrib(), pst_load_extended_attributes(), pst_load_index(), pst_parse_item(), register_string(), and write_separate_attachment().

case x0002
 

Definition at line 2201 of file libpst.c.

case x0003
 

Definition at line 2209 of file libpst.c.

case x0017
 

Definition at line 2212 of file libpst.c.

case x001A
 

Definition at line 2217 of file libpst.c.

case x0023
 

Definition at line 2249 of file libpst.c.

case x0026
 

Definition at line 2257 of file libpst.c.

case x0029
 

Definition at line 2260 of file libpst.c.

case x002B
 

Definition at line 2263 of file libpst.c.

case x002E
 

Definition at line 2267 of file libpst.c.

case x0032
 

Definition at line 2270 of file libpst.c.

case x0036
 

Definition at line 2274 of file libpst.c.

case x0037
 

Definition at line 2278 of file libpst.c.

case x0039
 

Definition at line 2290 of file libpst.c.

case x003B
 

Definition at line 2293 of file libpst.c.

case x003F
 

Definition at line 2296 of file libpst.c.

case x0040
 

Definition at line 2299 of file libpst.c.

case x0041
 

Definition at line 2302 of file libpst.c.

case x0042
 

Definition at line 2305 of file libpst.c.

case x0043
 

Definition at line 2308 of file libpst.c.

case x0044
 

Definition at line 2311 of file libpst.c.

case x004F
 

Definition at line 2314 of file libpst.c.

case x0050
 

Definition at line 2317 of file libpst.c.

case x0051
 

Definition at line 2320 of file libpst.c.

case x0052
 

Definition at line 2323 of file libpst.c.

case x0057
 

Definition at line 2327 of file libpst.c.

case x0058
 

Definition at line 2331 of file libpst.c.

case x0059
 

Definition at line 2335 of file libpst.c.

case x0063
 

Definition at line 2338 of file libpst.c.

case x0064
 

Definition at line 2341 of file libpst.c.

case x0065
 

Definition at line 2344 of file libpst.c.

case x0070
 

Definition at line 2347 of file libpst.c.

case x0071
 

Definition at line 2350 of file libpst.c.

case x0072
 

Definition at line 2353 of file libpst.c.

case x0073
 

Definition at line 2356 of file libpst.c.

case x0074
 

Definition at line 2359 of file libpst.c.

case x0075
 

Definition at line 2362 of file libpst.c.

case x0076
 

Definition at line 2365 of file libpst.c.

case x0077
 

Definition at line 2368 of file libpst.c.

case x0078
 

Definition at line 2371 of file libpst.c.

case x007D
 

Definition at line 2374 of file libpst.c.

case x0C04
 

Definition at line 2377 of file libpst.c.

case x0C05
 

Definition at line 2380 of file libpst.c.

case x0C06
 

Definition at line 2383 of file libpst.c.

case x0C17
 

Definition at line 2386 of file libpst.c.

case x0C19
 

Definition at line 2389 of file libpst.c.

case x0C1A
 

Definition at line 2392 of file libpst.c.

case x0C1B
 

Definition at line 2395 of file libpst.c.

case x0C1D
 

Definition at line 2398 of file libpst.c.

case x0C1E
 

Definition at line 2401 of file libpst.c.

case x0C1F
 

Definition at line 2404 of file libpst.c.

case x0C20
 

Definition at line 2407 of file libpst.c.

case x0E01
 

Definition at line 2410 of file libpst.c.

case x0E02
 

Definition at line 2413 of file libpst.c.

case x0E03
 

Definition at line 2416 of file libpst.c.

case x0E04
 

Definition at line 2419 of file libpst.c.

case x0E06
 

Definition at line 2422 of file libpst.c.

case x0E07
 

Definition at line 2425 of file libpst.c.

case x0E08
 

Definition at line 2428 of file libpst.c.

case x0E1F
 

Definition at line 2439 of file libpst.c.

case x0E20
 

Definition at line 2442 of file libpst.c.

case x0FF9
 

Definition at line 2448 of file libpst.c.

case x1000
 

Definition at line 2453 of file libpst.c.

case x1001
 

Definition at line 2456 of file libpst.c.

case x1006
 

Definition at line 2459 of file libpst.c.

case x1007
 

Definition at line 2464 of file libpst.c.

case x1008
 

Definition at line 2469 of file libpst.c.

case x1009
 

Definition at line 2472 of file libpst.c.

case x1010
 

Definition at line 2476 of file libpst.c.

case x1011
 

Definition at line 2480 of file libpst.c.

case x1013
 

Definition at line 2483 of file libpst.c.

case x1035
 

Definition at line 2486 of file libpst.c.

case x1042
 

Definition at line 2489 of file libpst.c.

case x1046
 

Definition at line 2492 of file libpst.c.

case x3001
 

Definition at line 2495 of file libpst.c.

case x3002
 

Definition at line 2498 of file libpst.c.

case x3003
 

Definition at line 2501 of file libpst.c.

case x3004
 

Definition at line 2504 of file libpst.c.

case x3007
 

Definition at line 2507 of file libpst.c.

case x3A46
 

Definition at line 2783 of file libpst.c.

case x3A47
 

Definition at line 2786 of file libpst.c.

case x3A48
 

Definition at line 2789 of file libpst.c.

case x3A49
 

Definition at line 2792 of file libpst.c.

case x3A4A
 

Definition at line 2795 of file libpst.c.

case x3A4B
 

Definition at line 2798 of file libpst.c.

case x3A4C
 

Definition at line 2801 of file libpst.c.

case x3A4D
 

Definition at line 2804 of file libpst.c.

case x3A4E
 

Definition at line 2807 of file libpst.c.

case x3A4F
 

Definition at line 2810 of file libpst.c.

case x3A50
 

Definition at line 2813 of file libpst.c.

case x3A51
 

Definition at line 2816 of file libpst.c.

case x3A57
 

Definition at line 2819 of file libpst.c.

case x3A58
 

Definition at line 2822 of file libpst.c.

case x3A59
 

Definition at line 2825 of file libpst.c.

case x3A5A
 

Definition at line 2828 of file libpst.c.

case x3A5B
 

Definition at line 2831 of file libpst.c.

case x3A5C
 

Definition at line 2834 of file libpst.c.

case x3A5D
 

Definition at line 2837 of file libpst.c.

case x3A5E
 

Definition at line 2840 of file libpst.c.

case x3A5F
 

Definition at line 2843 of file libpst.c.

case x3A60
 

Definition at line 2846 of file libpst.c.

case x3A61
 

Definition at line 2849 of file libpst.c.

case x3A62
 

Definition at line 2852 of file libpst.c.

case x3A63
 

Definition at line 2855 of file libpst.c.

case x3A64
 

Definition at line 2858 of file libpst.c.

case x3FDE
 

Definition at line 2861 of file libpst.c.

case x65E3
 

Definition at line 2867 of file libpst.c.

case x67F2
 

Definition at line 2872 of file libpst.c.

case x67FF
 

Definition at line 2877 of file libpst.c.

case x6F02
 

Definition at line 2880 of file libpst.c.

case x6F04
 

Definition at line 2883 of file libpst.c.

case x7C07
 

Definition at line 2886 of file libpst.c.

case x8005
 

Definition at line 2889 of file libpst.c.

case x801A
 

Definition at line 2892 of file libpst.c.

case x801B
 

Definition at line 2895 of file libpst.c.

case x801C
 

Definition at line 2898 of file libpst.c.

case x8045
 

Definition at line 2901 of file libpst.c.

case x8046
 

Definition at line 2904 of file libpst.c.

case x8047
 

Definition at line 2907 of file libpst.c.

case x8048
 

Definition at line 2910 of file libpst.c.

case x8049
 

Definition at line 2913 of file libpst.c.

case x804A
 

Definition at line 2916 of file libpst.c.

case x8082
 

Definition at line 2919 of file libpst.c.

case x8083
 

Definition at line 2922 of file libpst.c.

case x8084
 

Definition at line 2925 of file libpst.c.

case x8085
 

Definition at line 2928 of file libpst.c.

case x8092
 

Definition at line 2931 of file libpst.c.

case x8093
 

Definition at line 2934 of file libpst.c.

case x8094
 

Definition at line 2937 of file libpst.c.

case x8095
 

Definition at line 2940 of file libpst.c.

case x80A2
 

Definition at line 2943 of file libpst.c.

case x80A3
 

Definition at line 2946 of file libpst.c.

case x80A4
 

Definition at line 2949 of file libpst.c.

case x80A5
 

Definition at line 2952 of file libpst.c.

case x80D8
 

Definition at line 2955 of file libpst.c.

case x8205
 

Definition at line 2959 of file libpst.c.

case x8208
 

Definition at line 2962 of file libpst.c.

case x820d
 

Definition at line 2965 of file libpst.c.

case x820e
 

Definition at line 2968 of file libpst.c.

case x8214
 

Definition at line 2982 of file libpst.c.

case x8215
 

Definition at line 2985 of file libpst.c.

case x8216
 

Definition at line 2988 of file libpst.c.

case x8223
 

Definition at line 2991 of file libpst.c.

case x8231
 

Definition at line 2999 of file libpst.c.

case x8232
 

Definition at line 3002 of file libpst.c.

case x8234
 

Definition at line 3005 of file libpst.c.

case x8235
 

Definition at line 3008 of file libpst.c.

case x8236
 

Definition at line 3011 of file libpst.c.

case x8501
 

Definition at line 3014 of file libpst.c.

case x8503
 

Definition at line 3017 of file libpst.c.

case x8516
 

Definition at line 3020 of file libpst.c.

case x8517
 

Definition at line 3023 of file libpst.c.

case x851f
 

Definition at line 3026 of file libpst.c.

case x8530
 

Definition at line 3029 of file libpst.c.

case x8534
 

Definition at line 3032 of file libpst.c.

case x8535
 

Definition at line 3035 of file libpst.c.

case x8554
 

Definition at line 3038 of file libpst.c.

case x8560
 

Definition at line 3041 of file libpst.c.

case x8700
 

Definition at line 3044 of file libpst.c.

case x8706
 

Definition at line 3047 of file libpst.c.

case x8708
 

Definition at line 3050 of file libpst.c.

case x8712
 

Definition at line 3053 of file libpst.c.

Yearly
 

Definition at line 2999 of file libpst.c.


Generated on Sun Jul 10 16:52:35 2011 for 'LibPst' by  doxygen 1.3.9.1