X-Git-Url: https://git.deb.at/w?p=pkg%2Fabook.git;a=blobdiff_plain;f=filter.c;h=f13d0995943dbbba872a5c70b5f924c302c28bb1;hp=bda11accc1cf9e59afdca62f5b84e8b3e2e76d4a;hb=2cd2b91adea5118cff59a43c15082078ae6f214a;hpb=23d6687f69d455ff4794199b086817574deea3b8 diff --git a/filter.c b/filter.c index bda11ac..f13d099 100644 --- a/filter.c +++ b/filter.c @@ -1,6 +1,6 @@ /* - * $Id: filter.c,v 1.53 2006/08/07 19:20:26 cduval Exp $ + * $Id: filter.c,v 1.55 2006/09/06 02:46:44 cduval Exp $ * * by JH * @@ -61,6 +61,7 @@ static int elm_alias_export(FILE *out, struct db_enumerator e); static int text_export_database(FILE *out, struct db_enumerator e); static int spruce_export_database(FILE *out, struct db_enumerator e); static int wl_export_database(FILE *out, struct db_enumerator e); +static int bsdcal_export_database(FILE *out, struct db_enumerator e); /* * end of function declarations @@ -91,6 +92,7 @@ struct abook_output_filter e_filters[] = { { "text", N_("plain text"), text_export_database }, { "wl", N_("Wanderlust address book"), wl_export_database }, { "spruce", N_("Spruce address book"), spruce_export_database }, + { "bsdcal", N_("BSD calendar"), bsdcal_export_database }, { "\0", NULL, NULL } }; @@ -832,39 +834,56 @@ ldif_export_database(FILE *out, struct db_enumerator e) * html export filter */ -static void html_export_write_head(FILE *out, int extra_column); +static void html_export_write_head(FILE *out); static void html_export_write_tail(FILE *out); +extern struct index_elem *index_elements; + +static void +html_print_emails(FILE *out, struct list_field *f) +{ + abook_list *l = csv_to_abook_list(f->data); + + for(; l; l = l->next) { + fprintf(out, "%s", l->data, l->data); + if(l->next) + fprintf(out, ", "); + } + + abook_list_free(&l); +} + static int html_export_database(FILE *out, struct db_enumerator e) { - char tmp[MAX_EMAILSTR_LEN], *emails; - int extra_column; + struct list_field f; + struct index_elem *cur; if(list_is_empty()) return 2; - extra_column = init_extra_field(STR_EXTRA_COLUMN); - html_export_write_head(out, extra_column); + init_index(); - db_enumerate_items(e) { - get_first_email(tmp, e.item); - if (*tmp) - fprintf(out, "\n" - "%s" - "\n", - tmp, - db_name_get(e.item)); - else - fprintf(out, "\n%s\n", db_name_get(e.item)); + html_export_write_head(out); - emails = db_email_get(e.item); - fprintf(out, "%s\n", emails); - free(emails); - if(extra_column >= 0) - fprintf(out, "%s\n", - safe_str(db_fget_byid(e.item, extra_column))); - fprintf(out, "\n\n"); + db_enumerate_items(e) { + fprintf(out, ""); + for(cur = index_elements; cur; cur = cur->next) { + if(cur->type != INDEX_FIELD) + continue; + + get_list_field(e.item, cur, &f); + + if(f.type == FIELD_EMAILS) { + fprintf(out, ""); + html_print_emails(out, &f); + fprintf(out, ""); + continue; + } else { + fprintf(out, "%s", safe_str(f.data)); + } + } + fprintf(out, "\n"); } html_export_write_tail(out); @@ -873,9 +892,10 @@ html_export_database(FILE *out, struct db_enumerator e) } static void -html_export_write_head(FILE *out, int extra_column) +html_export_write_head(FILE *out) { - char *realname = get_real_name(), *extra_column_name = NULL; + char *realname = get_real_name(), *str; + struct index_elem *cur; fprintf(out, "\n"); fprintf(out, "\n\n %s's addressbook", @@ -884,11 +904,13 @@ html_export_write_head(FILE *out, int extra_column) fprintf(out, "\n

%s's addressbook

\n", realname ); fprintf(out, "

\n\n"); - fprintf(out, "\n"); - fprintf(out, "\n"); - if(extra_column >= 0) { - get_field_keyname(extra_column, NULL, &extra_column_name); - fprintf(out, "", safe_str(extra_column_name)); + fprintf(out, "
NameE-mail address(es)%s
\n"); + for(cur = index_elements; cur; cur = cur->next) { + if(cur->type != INDEX_FIELD) + continue; + + get_field_info(cur->d.field.id, NULL, &str, NULL); + fprintf(out, "", str); } fprintf(out, "\n\n"); @@ -1744,8 +1766,8 @@ text_export_database(FILE * out, struct db_enumerator e) fprintf(out, "\n"); for(j = PHONE; j <= MOBILEPHONE; j++) if(db_fget(e.item, j)) { - get_field_keyname(field_id(j), - NULL, &str); + get_field_info(field_id(j), + NULL, &str, NULL); fprintf(out, "%s: %s\n", str, db_fget(e.item, j)); } @@ -1856,3 +1878,33 @@ wl_export_database(FILE *out, struct db_enumerator e) * end of wanderlust addressbook export filter */ +/* + * BSD calendar export filter + */ + +static int +bsdcal_export_database(FILE *out, struct db_enumerator e) +{ + db_enumerate_items(e) { + int year, month = 0, day = 0; + char *anniversary = db_fget(e.item, ANNIVERSARY); + + if(anniversary) { + parse_date_string(anniversary, &day, &month, &year); + + fprintf(out, + _("%02d/%02d\tAnniversary of %s\n"), + month, + day, + safe_str(db_name_get(e.item)) + ); + } + } + + return 0; +} + +/* + * end of BSD calendar export filter + */ +
%s