X-Git-Url: https://git.deb.at/w?a=blobdiff_plain;ds=sidebyside;f=filter.c;h=70ec2d4e8aa5e054b2227311399b8f8ee13c6976;hb=a6f8a3ccfd258fed701bdd17ddcdc7463462ca7f;hp=cb52ade5919e1cd2797551856763408d756523ef;hpb=5e6789725323e9fb91ea4ec9f75cea4cc069885f;p=pkg%2Fabook.git diff --git a/filter.c b/filter.c index cb52ade..70ec2d4 100644 --- a/filter.c +++ b/filter.c @@ -832,37 +832,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]; - 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); - fprintf(out, "%s\n", db_email_get(e.item)); - 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); @@ -871,9 +890,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", @@ -882,11 +902,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"); @@ -1035,14 +1057,18 @@ pine_parse_file(FILE *in) static int pine_export_database(FILE *out, struct db_enumerator e) { + char *emails; + db_enumerate_items(e) { - fprintf(out, have_multiple_emails(e.item) ? + emails = db_email_get(e.item); + fprintf(out, strchr(emails, ',') /* multiple addresses? */ ? "%s\t%s\t(%s)\t\t%s\n" : "%s\t%s\t%s\t\t%s\n", safe_str(db_fget(e.item, NICK)), safe_str(db_name_get(e.item)), - safe_str(db_email_get(e.item)), + emails, safe_str(db_fget(e.item, NOTES)) ); + free(emails); } return 0; @@ -1499,7 +1525,7 @@ static int gcrd_export_database(FILE *out, struct db_enumerator e) { int j; - char *name; + char *name, *tmp; abook_list *emails, *em; db_enumerate_items(e) { @@ -1542,14 +1568,16 @@ gcrd_export_database(FILE *out, struct db_enumerator e) fprintf(out, "TEL;CELL:%s\r\n", db_fget(e.item, MOBILEPHONE)); - if(*db_email_get(e.item)) { - emails = csv_to_abook_list(db_email_get(e.item)); + tmp = db_email_get(e.item); + if(*tmp) { + emails = csv_to_abook_list(tmp); for(em = emails; em; em = em->next) fprintf(out, "EMAIL;INTERNET:%s\r\n", em->data); abook_list_free(&emails); } + free(tmp); if(db_fget(e.item, NOTES)) fprintf(out, "NOTE:%s\r\n", @@ -1689,7 +1717,7 @@ text_export_database(FILE * out, struct db_enumerator e) { abook_list *emails, *em; int j; - char *realname = get_real_name(), *str = NULL; + char *realname = get_real_name(), *str = NULL, *tmp; char *style = opt_get_str(STR_ADDRESS_STYLE); fprintf(out, @@ -1706,8 +1734,9 @@ text_export_database(FILE * out, struct db_enumerator e) fprintf(out, "\n(%s)", db_fget(e.item, NICK)); fprintf(out, "\n"); - if(*db_email_get(e.item)) { - emails = csv_to_abook_list(db_email_get(e.item)); + tmp = db_email_get(e.item); + if(*tmp) { + emails = csv_to_abook_list(tmp); fprintf(out, "\n"); for(em = emails; em; em = em->next) @@ -1715,6 +1744,7 @@ text_export_database(FILE * out, struct db_enumerator e) abook_list_free(&emails); } + free(tmp); /* Print address */ if(db_fget(e.item, ADDRESS)) { if(!safe_strcmp(style, "us")) /* US like */ @@ -1734,8 +1764,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)); } @@ -1795,8 +1825,8 @@ spruce_export_database (FILE *out, struct db_enumerator e) fprintf(out, "# This is a generated file made by abook for the Spruce e-mail client.\n\n"); db_enumerate_items(e) { - if(strcmp(safe_str(db_email_get(e.item)), "")) { - get_first_email(email, e.item); + get_first_email(email, e.item); + if(strcmp(email, "")) { fprintf(out, "# Address %d\nName: %s\nEmail: %s\nMemo: %s\n\n", e.item, db_name_get(e.item), @@ -1822,19 +1852,19 @@ spruce_export_database (FILE *out, struct db_enumerator e) static int wl_export_database(FILE *out, struct db_enumerator e) { - abook_list *emails; + char email[MAX_EMAIL_LEN]; fprintf(out, "# Wanderlust address book written by %s\n\n", PACKAGE); db_enumerate_items(e) { - if((emails = csv_to_abook_list(db_email_get(e.item))) != NULL) { + get_first_email(email, e.item); + if(*email) { fprintf(out, "%s\t\"%s\"\t\"%s\"\n", - emails->data, + email, safe_str(db_fget(e.item, NICK)), safe_str(db_name_get(e.item)) ); } - abook_list_free(&emails); } fprintf (out, "\n# End of address book file.\n");
%s