readpst.c File Reference

#include "define.h"
#include "lzfu.h"
#include "msg.h"
Include dependency graph for readpst.c:

Go to the source code of this file.

Data Structures

struct  file_ll

Defines

#define OUTPUT_TEMPLATE   "%s"
#define OUTPUT_KMAIL_DIR_TEMPLATE   ".%s.directory"
#define KMAIL_INDEX   ".%s.index"
#define SEP_MAIL_FILE_TEMPLATE   "%i%s"
#define C_TIME_SIZE   500
#define MODE_NORMAL   0
#define MODE_KMAIL   1
#define MODE_RECURSE   2
#define MODE_SEPARATE   3
#define OUTPUT_NORMAL   0
#define OUTPUT_QUIET   1
#define MIME_TYPE_DEFAULT   "application/octet-stream"
#define RFC822   "message/rfc822"
#define CMODE_VCARD   0
#define CMODE_LIST   1
#define DMODE_EXCLUDE   0
#define DMODE_INCLUDE   1
#define OTMODE_EMAIL   1
#define OTMODE_APPOINTMENT   2
#define OTMODE_JOURNAL   4
#define OTMODE_CONTACT   8
#define RTF_ATTACH_NAME   "rtf-body.rtf"
#define RTF_ATTACH_TYPE   "application/rtf"

Functions

int grim_reaper ()
pid_t try_fork (char *folder)
void process (pst_item *outeritem, pst_desc_tree *d_ptr)
void write_email_body (FILE *f, char *body)
void removeCR (char *c)
void usage ()
void version ()
char * mk_kmail_dir (char *fname)
int close_kmail_dir ()
char * mk_recurse_dir (char *dir, int32_t folder_type)
int close_recurse_dir ()
char * mk_separate_dir (char *dir)
int close_separate_dir ()
void mk_separate_file (struct file_ll *f, char *extension, int openit)
void close_separate_file (struct file_ll *f)
char * my_stristr (char *haystack, char *needle)
void check_filename (char *fname)
int acceptable_ext (pst_item_attach *attach)
 check if the file name extension is acceptable.
void write_separate_attachment (char f_name[], pst_item_attach *attach, int attach_num, pst_file *pst)
void write_embedded_message (FILE *f_output, pst_item_attach *attach, char *boundary, pst_file *pf, int save_rtf, char **extra_mime_headers)
void write_inline_attachment (FILE *f_output, pst_item_attach *attach, char *boundary, pst_file *pst)
int valid_headers (char *header)
void header_has_field (char *header, char *field, int *flag)
void header_get_subfield (char *field, const char *subfield, char *body_subfield, size_t size_subfield)
char * header_get_field (char *header, char *field)
char * header_end_field (char *field)
void header_strip_field (char *header, char *field)
int test_base64 (char *body)
void find_html_charset (char *html, char *charset, size_t charsetlen)
void find_rfc822_headers (char **extra_mime_headers)
void write_body_part (FILE *f_output, pst_string *body, char *mime, char *charset, char *boundary, pst_file *pst)
void write_schedule_part_data (FILE *f_output, pst_item *item, const char *sender, const char *method)
void write_schedule_part (FILE *f_output, pst_item *item, const char *sender, const char *boundary)
void write_normal_email (FILE *f_output, char f_name[], pst_item *item, int mode, int mode_MH, pst_file *pst, int save_rtf, int embedding, char **extra_mime_headers)
void write_vcard (FILE *f_output, pst_item *item, pst_item_contact *contact, char comment[])
int write_extra_categories (FILE *f_output, pst_item *item)
 write extra vcard or vcalendar categories from the extra keywords fields
void write_journal (FILE *f_output, pst_item *item)
void write_appointment (FILE *f_output, pst_item *item)
void create_enter_dir (struct file_ll *f, pst_item *item)
void close_enter_dir (struct file_ll *f)
int grim_reaper (int waitall)
int main (int argc, char *const *argv)

Variables

const char * prog_name
char * output_dir = "."
char * kmail_chdir = NULL
int mode = 0
int mode_MH = 0
int mode_EX = 0
int mode_MSG = 0
int mode_thunder = 0
int output_mode = 0
int contact_mode = 0
int deleted_mode = 0
int output_type_mode = 0xff
int contact_mode_specified = 0
int overwrite = 0
int save_rtf_body = 1
int file_name_len = 10
pst_file pstfile
regex_t meta_charset_pattern
char * default_charset = NULL
char * acceptable_extensions = NULL
int number_processors = 1
int max_children = 0
int max_child_specified = 0
int active_children
pid_t * child_processes
int shared_memory_id
sem_t * global_children = NULL
sem_t * output_mutex = NULL

Define Documentation

#define C_TIME_SIZE   500

Definition at line 18 of file readpst.c.

#define CMODE_LIST   1

Definition at line 105 of file readpst.c.

Referenced by main().

#define CMODE_VCARD   0

Definition at line 104 of file readpst.c.

Referenced by main(), and process().

#define DMODE_EXCLUDE   0

Definition at line 108 of file readpst.c.

#define DMODE_INCLUDE   1

Definition at line 109 of file readpst.c.

Referenced by main(), and process().

#define KMAIL_INDEX   ".%s.index"

Definition at line 14 of file readpst.c.

Referenced by mk_kmail_dir().

#define MIME_TYPE_DEFAULT   "application/octet-stream"

Definition at line 100 of file readpst.c.

Referenced by write_inline_attachment().

#define MODE_KMAIL   1

Definition at line 81 of file readpst.c.

Referenced by close_enter_dir(), create_enter_dir(), and main().

#define MODE_NORMAL   0

Definition at line 77 of file readpst.c.

Referenced by write_embedded_message().

#define MODE_RECURSE   2

Definition at line 85 of file readpst.c.

Referenced by close_enter_dir(), create_enter_dir(), and main().

#define MODE_SEPARATE   3
#define OTMODE_APPOINTMENT   2

Definition at line 113 of file readpst.c.

Referenced by main(), and process().

#define OTMODE_CONTACT   8

Definition at line 115 of file readpst.c.

Referenced by main(), and process().

#define OTMODE_EMAIL   1

Definition at line 112 of file readpst.c.

Referenced by main(), and process().

#define OTMODE_JOURNAL   4

Definition at line 114 of file readpst.c.

Referenced by main(), and process().

#define OUTPUT_KMAIL_DIR_TEMPLATE   ".%s.directory"

Definition at line 13 of file readpst.c.

Referenced by mk_kmail_dir().

#define OUTPUT_NORMAL   0

Definition at line 94 of file readpst.c.

#define OUTPUT_QUIET   1

Definition at line 97 of file readpst.c.

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

#define OUTPUT_TEMPLATE   "%s"

Definition at line 12 of file readpst.c.

Referenced by create_enter_dir(), and mk_kmail_dir().

#define RFC822   "message/rfc822"

Definition at line 101 of file readpst.c.

Referenced by find_rfc822_headers(), and write_normal_email().

#define RTF_ATTACH_NAME   "rtf-body.rtf"

Definition at line 119 of file readpst.c.

Referenced by write_normal_email().

#define RTF_ATTACH_TYPE   "application/rtf"

Definition at line 121 of file readpst.c.

Referenced by write_normal_email().

#define SEP_MAIL_FILE_TEMPLATE   "%i%s"

Definition at line 15 of file readpst.c.

Referenced by mk_separate_dir(), and mk_separate_file().


Function Documentation

int acceptable_ext ( pst_item_attach attach  ) 

check if the file name extension is acceptable.

If not, the attachment will be discarded

Parameters:
attach pst attachment object
Returns:
true if the attachment filename contains an extension that we want.

Definition at line 1039 of file readpst.c.

References acceptable_extensions, DEBUG_ENT, DEBUG_INFO, DEBUG_RET, pst_item_attach::filename1, pst_item_attach::filename2, pst_stricmp(), and pst_string::str.

Referenced by write_normal_email().

Here is the call graph for this function:

void check_filename ( char *  fname  ) 

Definition at line 1018 of file readpst.c.

References DEBUG_ENT, and DEBUG_RET.

void close_enter_dir ( struct file_ll f  ) 
int close_kmail_dir (  ) 

Definition at line 819 of file readpst.c.

References DEBUG_ENT, DEBUG_RET, DIE, and kmail_chdir.

Referenced by close_enter_dir().

int close_recurse_dir (  ) 

Definition at line 878 of file readpst.c.

References DEBUG_ENT, DEBUG_RET, and DIE.

Referenced by close_enter_dir().

int close_separate_dir (  ) 

Definition at line 948 of file readpst.c.

References DEBUG_ENT, DEBUG_RET, and DIE.

Referenced by close_enter_dir().

void close_separate_file ( struct file_ll f  ) 

Definition at line 977 of file readpst.c.

References DEBUG_ENT, DEBUG_RET, DEBUG_WARN, file_ll::name, and file_ll::output.

Referenced by process().

void create_enter_dir ( struct file_ll f,
pst_item item 
)
void find_html_charset ( char *  html,
char *  charset,
size_t  charsetlen 
)

Definition at line 1337 of file readpst.c.

References DEBUG_ENT, DEBUG_HEXDUMPC, DEBUG_INFO, DEBUG_RET, and meta_charset_pattern.

Referenced by write_normal_email().

void find_rfc822_headers ( char **  extra_mime_headers  ) 

Definition at line 1366 of file readpst.c.

References DEBUG_ENT, DEBUG_INFO, DEBUG_RET, header_get_field(), and RFC822.

Referenced by write_normal_email().

Here is the call graph for this function:

int grim_reaper ( int  waitall  ) 

Definition at line 155 of file readpst.c.

References active_children, child_processes, DEBUG_INFO, and global_children.

int grim_reaper (  ) 

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

char * header_end_field ( char *  field  ) 

Definition at line 1286 of file readpst.c.

Referenced by header_get_subfield(), and header_strip_field().

char * header_get_field ( char *  header,
char *  field 
)

Definition at line 1276 of file readpst.c.

References my_stristr().

Referenced by find_rfc822_headers(), header_strip_field(), and write_normal_email().

Here is the call graph for this function:

void header_get_subfield ( char *  field,
const char *  subfield,
char *  body_subfield,
size_t  size_subfield 
)

Definition at line 1245 of file readpst.c.

References DEBUG_ENT, DEBUG_INFO, DEBUG_RET, header_end_field(), and my_stristr().

Referenced by write_normal_email().

Here is the call graph for this function:

void header_has_field ( char *  header,
char *  field,
int *  flag 
)

Definition at line 1234 of file readpst.c.

References DEBUG_ENT, DEBUG_INFO, DEBUG_RET, and my_stristr().

Referenced by write_normal_email().

Here is the call graph for this function:

void header_strip_field ( char *  header,
char *  field 
)

Definition at line 1296 of file readpst.c.

References header_end_field(), and header_get_field().

Referenced by write_normal_email().

Here is the call graph for this function:

int main ( int  argc,
char *const *  argv 
)
char * mk_kmail_dir ( char *  fname  ) 

Definition at line 781 of file readpst.c.

References check_filename(), D_MKDIR, DEBUG_ENT, DEBUG_RET, DIE, kmail_chdir, KMAIL_INDEX, OUTPUT_KMAIL_DIR_TEMPLATE, OUTPUT_TEMPLATE, pst_malloc(), and pst_realloc().

Referenced by create_enter_dir().

Here is the call graph for this function:

char * mk_recurse_dir ( char *  dir,
int32_t  folder_type 
)
char * mk_separate_dir ( char *  dir  ) 

Definition at line 890 of file readpst.c.

References check_filename(), D_MKDIR, DEBUG_ENT, DEBUG_INFO, DEBUG_RET, DEBUG_WARN, DIE, overwrite, and SEP_MAIL_FILE_TEMPLATE.

Referenced by create_enter_dir().

Here is the call graph for this function:

void mk_separate_file ( struct file_ll f,
char *  extension,
int  openit 
)

Definition at line 960 of file readpst.c.

References check_filename(), DEBUG_ENT, DEBUG_INFO, DEBUG_RET, DIE, file_ll::item_count, file_ll::name, file_ll::output, and SEP_MAIL_FILE_TEMPLATE.

Referenced by process().

Here is the call graph for this function:

char * my_stristr ( char *  haystack,
char *  needle 
)

Definition at line 993 of file readpst.c.

Referenced by header_get_field(), header_get_subfield(), and header_has_field().

void process ( pst_item outeritem,
pst_desc_tree d_ptr 
)
void removeCR ( char *  c  ) 

Definition at line 721 of file readpst.c.

References DEBUG_ENT, and DEBUG_RET.

Referenced by write_body_part(), and write_normal_email().

int test_base64 ( char *  body  ) 

Definition at line 1318 of file readpst.c.

References DEBUG_ENT, DEBUG_HEXDUMPC, DEBUG_INFO, and DEBUG_RET.

Referenced by write_body_part().

pid_t try_fork ( char *  folder  ) 

Definition at line 200 of file readpst.c.

References active_children, child_processes, global_children, grim_reaper(), max_children, and pst_reopen().

Referenced by process().

Here is the call graph for this function:

void usage ( void   ) 

Definition at line 736 of file readpst.c.

References DEBUG_ENT, DEBUG_RET, prog_name, and version().

Here is the call graph for this function:

int valid_headers ( char *  header  ) 

Definition at line 1204 of file readpst.c.

References DEBUG_INFO.

Referenced by write_normal_email().

void version ( void   ) 

Definition at line 767 of file readpst.c.

References DEBUG_ENT, DEBUG_RET, and VERSION.

void write_appointment ( FILE *  f_output,
pst_item item 
)
void write_body_part ( FILE *  f_output,
pst_string body,
char *  mime,
char *  charset,
char *  boundary,
pst_file pst 
)
void write_email_body ( FILE *  f,
char *  body 
)

Definition at line 701 of file readpst.c.

References DEBUG_ENT, DEBUG_RET, mode, MODE_SEPARATE, and pst_fwrite().

Referenced by write_body_part().

Here is the call graph for this function:

void write_embedded_message ( FILE *  f_output,
pst_item_attach attach,
char *  boundary,
pst_file pf,
int  save_rtf,
char **  extra_mime_headers 
)
int write_extra_categories ( FILE *  f_output,
pst_item item 
)

write extra vcard or vcalendar categories from the extra keywords fields

Parameters:
f_output open file pointer
item pst item containing the keywords
Returns:
true if we write a categories line

Definition at line 1985 of file readpst.c.

References pst_item::extra_fields, pst_item_extra_field::field_name, pst_item_extra_field::next, pst_rfc2426_escape(), and pst_item_extra_field::value.

Referenced by write_appointment(), and write_vcard().

Here is the call graph for this function:

void write_inline_attachment ( FILE *  f_output,
pst_item_attach attach,
char *  boundary,
pst_file pst 
)
void write_journal ( FILE *  f_output,
pst_item item 
)
void write_normal_email ( FILE *  f_output,
char  f_name[],
pst_item item,
int  mode,
int  mode_MH,
pst_file pst,
int  save_rtf,
int  embedding,
char **  extra_mime_headers 
)

Definition at line 1489 of file readpst.c.

References acceptable_ext(), pst_item::attach, pst_item_email::bcc_address, pst_item::body, C_TIME_SIZE, pst_item_email::cc_address, pst_item_attach::data, pst_binary::data, DEBUG_ENT, DEBUG_INFO, DEBUG_RET, pst_item::email, pst_item_email::encrypted_body, pst_item_email::encrypted_htmlbody, pst_item_attach::filename1, pst_item_attach::filename2, find_html_charset(), find_rfc822_headers(), pst_item::flags, pst_item_email::header, header_get_field(), header_get_subfield(), header_has_field(), header_strip_field(), pst_item_email::htmlbody, pst_item_attach::i_id, pst_string::is_utf8, pst_item_email::messageid, pst_item_attach::method, pst_item_attach::mimetype, MODE_SEPARATE, pst_item_attach::next, pst_item_email::outlook_sender_name, PST_ATTACH_EMBEDDED, pst_convert_utf8(), pst_convert_utf8_null(), pst_default_charset(), pst_fileTimeToUnixTime(), PST_FLAG_READ, pst_lzfu_decompress(), pst_malloc(), pst_rfc2047(), PST_TYPE_REPORT, PST_TYPE_SCHEDULE, removeCR(), pst_item_email::report_text, RFC822, RTF_ATTACH_NAME, RTF_ATTACH_TYPE, pst_item_email::rtf_compressed, pst_item_email::sender_address, pst_item_email::sent_date, pst_item_email::sentto_address, pst_binary::size, pst_string::str, pst_item::subject, pst_item::type, valid_headers(), write_body_part(), write_embedded_message(), write_inline_attachment(), write_schedule_part(), and write_separate_attachment().

Referenced by process(), and write_embedded_message().

Here is the call graph for this function:

void write_schedule_part ( FILE *  f_output,
pst_item item,
const char *  sender,
const char *  boundary 
)

Definition at line 1466 of file readpst.c.

References pst_item::appointment, and write_schedule_part_data().

Referenced by write_normal_email().

Here is the call graph for this function:

void write_schedule_part_data ( FILE *  f_output,
pst_item item,
const char *  sender,
const char *  method 
)

Definition at line 1447 of file readpst.c.

References pst_item::email, pst_item_email::outlook_sender_name, pst_string::str, VERSION, and write_appointment().

Referenced by process(), and write_schedule_part().

Here is the call graph for this function:

void write_separate_attachment ( char  f_name[],
pst_item_attach attach,
int  attach_num,
pst_file pst 
)
void write_vcard ( FILE *  f_output,
pst_item item,
pst_item_contact contact,
char  comment[] 
)

Definition at line 1820 of file readpst.c.

References pst_item_contact::address1, pst_item_contact::address2, pst_item_contact::address3, pst_item_contact::assistant_name, pst_item_contact::assistant_phone, pst_item_contact::birthday, pst_item::body, pst_item_contact::business_address, pst_item_contact::business_city, pst_item_contact::business_country, pst_item_contact::business_fax, 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::car_phone, pst_item_contact::company_name, DEBUG_ENT, DEBUG_RET, pst_item_contact::display_name_prefix, pst_item_contact::first_name, pst_item_contact::fullname, 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_contact::isdn_phone, pst_item_contact::job_title, pst_item_contact::middle_name, pst_item_contact::mobile_phone, pst_item_contact::nickname, 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_contact::pager_phone, pst_item_contact::primary_fax, pst_item_contact::primary_phone, pst_item_contact::profession, pst_convert_utf8_null(), pst_rfc2425_datetime_format(), pst_rfc2426_escape(), pst_item_contact::radio_phone, pst_string::str, pst_item_contact::suffix, pst_item_contact::surname, pst_item_contact::telex, and write_extra_categories().

Referenced by process().

Here is the call graph for this function:


Variable Documentation

char* acceptable_extensions = NULL

Definition at line 140 of file readpst.c.

Referenced by acceptable_ext(), and main().

Definition at line 145 of file readpst.c.

Referenced by grim_reaper(), main(), and try_fork().

Definition at line 146 of file readpst.c.

Referenced by grim_reaper(), main(), and try_fork().

int contact_mode = 0

Definition at line 130 of file readpst.c.

Referenced by main(), and process().

Definition at line 133 of file readpst.c.

Referenced by main().

char* default_charset = NULL

Definition at line 139 of file readpst.c.

Referenced by main().

int deleted_mode = 0

Definition at line 131 of file readpst.c.

Referenced by main(), and process().

int file_name_len = 10

Definition at line 136 of file readpst.c.

Referenced by create_enter_dir(), and main().

sem_t* global_children = NULL

Definition at line 150 of file readpst.c.

Referenced by grim_reaper(), main(), process(), and try_fork().

char* kmail_chdir = NULL

Definition at line 73 of file readpst.c.

Referenced by close_kmail_dir(), and mk_kmail_dir().

Definition at line 144 of file readpst.c.

Referenced by main().

int max_children = 0

Definition at line 143 of file readpst.c.

Referenced by main(), and try_fork().

Definition at line 138 of file readpst.c.

Referenced by find_html_charset(), and main().

int mode = 0

Definition at line 124 of file readpst.c.

Referenced by close_enter_dir(), create_enter_dir(), main(), process(), and write_email_body().

int mode_EX = 0

Definition at line 126 of file readpst.c.

Referenced by main(), and process().

int mode_MH = 0

Definition at line 125 of file readpst.c.

Referenced by main(), and process().

int mode_MSG = 0

Definition at line 127 of file readpst.c.

Referenced by main(), and process().

int mode_thunder = 0

Definition at line 128 of file readpst.c.

Referenced by close_enter_dir(), create_enter_dir(), and main().

Definition at line 142 of file readpst.c.

Referenced by main().

char* output_dir = "."

Definition at line 72 of file readpst.c.

Referenced by main().

int output_mode = 0

Definition at line 129 of file readpst.c.

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

sem_t* output_mutex = NULL

Definition at line 151 of file readpst.c.

Referenced by main().

int output_type_mode = 0xff

Definition at line 132 of file readpst.c.

Referenced by main(), and process().

int overwrite = 0

Definition at line 134 of file readpst.c.

Referenced by create_enter_dir(), main(), and mk_separate_dir().

const char* prog_name

Definition at line 71 of file readpst.c.

Definition at line 137 of file readpst.c.

int save_rtf_body = 1

Definition at line 135 of file readpst.c.

Referenced by main(), and process().

Definition at line 149 of file readpst.c.

Referenced by main().


Generated on 12 Jun 2013 for 'LibPst' by  doxygen 1.6.1