[Libpst-devel] Re: PATCH: readpst.c code reorganisation
Arne Ahrend
aahrend at web.de
Sun Feb 19 19:41:50 UTC 2006
On Sun, 19 Feb 2006 20:33:56 +0100
Arne Ahrend <aahrend at web.de> wrote:
Seventh patch
> This is a series of patches succesively taking chunks of code out of
> the huge main() function in readpst.c and into separate functions.
>
> No functionality change, but improvement of readability.
>
> Arne
--- readpst.c-06 2006-02-19 20:04:43.000000000 +0100
+++ readpst.c 2006-02-19 20:04:49.000000000 +0100
@@ -93,6 +93,8 @@ void write_fabricated_header(FILE* f_out
void write_normal_email(FILE* f_output, char f_name[], pst_item* item, int mode, pst_file* pst);
void create_enter_dir(struct file_ll* f, char file_as[], int mode, int overwrite);
void write_vcard(FILE* f_output, pst_item_contact* contact, char comment[]);
+void write_appointment(FILE* f_output, pst_item_appointment* appointment, pst_item_email* email,
+ FILETIME* create_date, FILETIME* modify_date);
// }}}1
// Global Variables {{{1
char *prog_name;
@@ -431,61 +433,7 @@ int main(int argc, char** argv) {
if (f->type != PST_TYPE_APPOINTMENT) {
DEBUG_MAIN(("main: I have an appointment, but folder isn't specified as an appointment type. Processing...\n"));
}
- fprintf(f->output, "BEGIN:VEVENT\n");
- if (item->create_date != NULL)
- fprintf(f->output, "CREATED:%s\n", rfc2445_datetime_format(item->create_date));
- if (item->modify_date != NULL)
- fprintf(f->output, "LAST-MOD:%s\n", rfc2445_datetime_format(item->modify_date));
- if (item->email != NULL && item->email->subject != NULL)
- fprintf(f->output, "SUMMARY:%s\n", rfc2426_escape(item->email->subject->subj));
- if (item->email != NULL && item->email->body != NULL)
- fprintf(f->output, "DESCRIPTION:%s\n", rfc2426_escape(item->email->body));
- if (item->appointment != NULL && item->appointment->start != NULL)
- fprintf(f->output, "DTSTART;VALUE=DATE-TIME:%s\n", rfc2445_datetime_format(item->appointment->start));
- if (item->appointment != NULL && item->appointment->end != NULL)
- fprintf(f->output, "DTEND;VALUE=DATE-TIME:%s\n", rfc2445_datetime_format(item->appointment->end));
- if (item->appointment != NULL && item->appointment->location != NULL)
- fprintf(f->output, "LOCATION:%s\n", rfc2426_escape(item->appointment->location));
- if (item->appointment != NULL) {
- switch (item->appointment->showas) {
- case PST_FREEBUSY_TENTATIVE:
- fprintf(f->output, "STATUS:TENTATIVE\n");
- break;
- case PST_FREEBUSY_FREE:
- // mark as transparent and as confirmed
- fprintf(f->output, "TRANSP:TRANSPARENT\n");
- case PST_FREEBUSY_BUSY:
- case PST_FREEBUSY_OUT_OF_OFFICE:
- fprintf(f->output, "STATUS:CONFIRMED\n");
- break;
- }
- switch (item->appointment->label) {
- case PST_APP_LABEL_NONE:
- fprintf(f->output, "CATEGORIES:NONE\n"); break;
- case PST_APP_LABEL_IMPORTANT:
- fprintf(f->output, "CATEGORIES:IMPORTANT\n"); break;
- case PST_APP_LABEL_BUSINESS:
- fprintf(f->output, "CATEGORIES:BUSINESS\n"); break;
- case PST_APP_LABEL_PERSONAL:
- fprintf(f->output, "CATEGORIES:PERSONAL\n"); break;
- case PST_APP_LABEL_VACATION:
- fprintf(f->output, "CATEGORIES:VACATION\n"); break;
- case PST_APP_LABEL_MUST_ATTEND:
- fprintf(f->output, "CATEGORIES:MUST-ATTEND\n"); break;
- case PST_APP_LABEL_TRAVEL_REQ:
- fprintf(f->output, "CATEGORIES:TRAVEL-REQUIRED\n"); break;
- case PST_APP_LABEL_NEEDS_PREP:
- fprintf(f->output, "CATEGORIES:NEEDS-PREPARATION\n"); break;
- case PST_APP_LABEL_BIRTHDAY:
- fprintf(f->output, "CATEGORIES:BIRTHDAY\n"); break;
- case PST_APP_LABEL_ANNIVERSARY:
- fprintf(f->output, "CATEGORIES:ANNIVERSARY\n"); break;
- case PST_APP_LABEL_PHONE_CALL:
- fprintf(f->output, "CATEGORIES:PHONE-CALL\n"); break;
- }
- }
- fprintf(f->output, "END:VEVENT\n\n");
- // }}}2
+ write_appointment(f->output, item->appointment, item->email, item->create_date, item->modify_date);
} else {
f->skip_count++;
DEBUG_MAIN(("main: Unknown item type. %i. Ascii1=\"%s\"\n",
@@ -1489,3 +1437,75 @@ void write_vcard(FILE* f_output, pst_ite
fprintf(f_output, "VERSION: 3.0\n");
fprintf(f_output, "END:VCARD\n\n");
}
+
+void write_appointment(FILE* f_output, pst_item_appointment* appointment, pst_item_email* email,
+ FILETIME* create_date, FILETIME* modify_date)
+{
+ fprintf(f_output, "BEGIN:VEVENT\n");
+ if (create_date != NULL)
+ fprintf(f_output, "CREATED:%s\n", rfc2445_datetime_format(create_date));
+ if (modify_date != NULL)
+ fprintf(f_output, "LAST-MOD:%s\n", rfc2445_datetime_format(modify_date));
+ if (email != NULL && email->subject != NULL)
+ fprintf(f_output, "SUMMARY:%s\n", rfc2426_escape(email->subject->subj));
+ if (email != NULL && email->body != NULL)
+ fprintf(f_output, "DESCRIPTION:%s\n", rfc2426_escape(email->body));
+ if (appointment != NULL && appointment->start != NULL)
+ fprintf(f_output, "DTSTART;VALUE=DATE-TIME:%s\n", rfc2445_datetime_format(appointment->start));
+ if (appointment != NULL && appointment->end != NULL)
+ fprintf(f_output, "DTEND;VALUE=DATE-TIME:%s\n", rfc2445_datetime_format(appointment->end));
+ if (appointment != NULL && appointment->location != NULL)
+ fprintf(f_output, "LOCATION:%s\n", rfc2426_escape(appointment->location));
+ if (appointment != NULL) {
+ switch (appointment->showas) {
+ case PST_FREEBUSY_TENTATIVE:
+ fprintf(f_output, "STATUS:TENTATIVE\n");
+ break;
+ case PST_FREEBUSY_FREE:
+ // mark as transparent and as confirmed
+ fprintf(f_output, "TRANSP:TRANSPARENT\n");
+ case PST_FREEBUSY_BUSY:
+ case PST_FREEBUSY_OUT_OF_OFFICE:
+ fprintf(f_output, "STATUS:CONFIRMED\n");
+ break;
+ }
+ switch (appointment->label) {
+ case PST_APP_LABEL_NONE:
+ fprintf(f_output, "CATEGORIES:NONE\n");
+ break;
+ case PST_APP_LABEL_IMPORTANT:
+ fprintf(f_output, "CATEGORIES:IMPORTANT\n");
+ break;
+ case PST_APP_LABEL_BUSINESS:
+ fprintf(f_output, "CATEGORIES:BUSINESS\n");
+ break;
+ case PST_APP_LABEL_PERSONAL:
+ fprintf(f_output, "CATEGORIES:PERSONAL\n");
+ break;
+ case PST_APP_LABEL_VACATION:
+ fprintf(f_output, "CATEGORIES:VACATION\n");
+ break;
+ case PST_APP_LABEL_MUST_ATTEND:
+ fprintf(f_output, "CATEGORIES:MUST-ATTEND\n");
+ break;
+ case PST_APP_LABEL_TRAVEL_REQ:
+ fprintf(f_output, "CATEGORIES:TRAVEL-REQUIRED\n");
+ break;
+ case PST_APP_LABEL_NEEDS_PREP:
+ fprintf(f_output, "CATEGORIES:NEEDS-PREPARATION\n");
+ break;
+ case PST_APP_LABEL_BIRTHDAY:
+ fprintf(f_output, "CATEGORIES:BIRTHDAY\n");
+ break;
+ case PST_APP_LABEL_ANNIVERSARY:
+ fprintf(f_output, "CATEGORIES:ANNIVERSARY\n");
+ break;
+ case PST_APP_LABEL_PHONE_CALL:
+ fprintf(f_output, "CATEGORIES:PHONE-CALL\n");
+ break;
+ }
+ }
+ fprintf(f_output, "END:VEVENT\n\n");
+ // }}}2
+}
+
More information about the Libpst-devel
mailing list