X-Git-Url: https://git.deb.at/?a=blobdiff_plain;f=filter.c;h=2ea5a2dd77bfa3acafa196f5f324a7b47cee2ed6;hb=126dbdaf881905b0406be15a27fa842fd91d11e1;hp=7f8bcd5ce3da16f61d61fa0b670b8ae44dbbc1e6;hpb=a2d4ea58437d93297c7f7e2e8efd4d48297ca46a;p=pkg%2Fabook.git diff --git a/filter.c b/filter.c index 7f8bcd5..2ea5a2d 100644 --- a/filter.c +++ b/filter.c @@ -1069,23 +1069,26 @@ html_export_database(FILE *out, struct db_enumerator e) html_export_write_head(out); db_enumerate_items(e) { - fprintf(out, ""); + fprintf(out, " \n"); for(cur = index_elements; cur; cur = cur->next) { if(cur->type != INDEX_FIELD) continue; - + get_list_field(e.item, cur, &f); + fprintf(out, " "); + if(f.type == FIELD_EMAILS) { - fprintf(out, ""); html_print_emails(out, &f); - fprintf(out, ""); - continue; } else { - fprintf(out, "%s", safe_str(f.data)); + if (strcmp(safe_str(f.data), "") == 0) + fprintf(out, " "); + else + fprintf(out, "%s", safe_str(f.data)); } + fprintf(out, "\n"); } - fprintf(out, "\n"); + fprintf(out, " \n"); } html_export_write_tail(out); @@ -1099,22 +1102,45 @@ html_export_write_head(FILE *out) char *realname = get_real_name(), *str; struct index_elem *cur; - fprintf(out, "\n"); - fprintf(out, "\n\n %s's addressbook", - realname ); - fprintf(out, "\n\n\n"); - fprintf(out, "\n

%s's addressbook

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

\n\n"); - - fprintf(out, "\n"); + fprintf(out, "\n"); + fprintf(out, "\n"); + fprintf(out, "\n"); + fprintf(out, " \n"); + fprintf(out, " "); + fprintf(out, _("%s's addressbook"), realname ); + fprintf(out, "\n"); + fprintf(out, " \n"); + fprintf(out, "\n"); + fprintf(out, "\n"); + fprintf(out, "

"); + fprintf(out, _("%s's addressbook"), realname); + fprintf(out, "

\n"); + + fprintf(out, "
\n"); + fprintf(out, "\n"); + fprintf(out, " \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"); } - fprintf(out, "\n\n"); + fprintf(out, " \n"); + fprintf(out, "\n"); + fprintf(out, "\n"); free(realname); } @@ -1122,8 +1148,9 @@ html_export_write_head(FILE *out) static void html_export_write_tail(FILE *out) { - fprintf(out, "\n
%s"); + + if (strcmp(str, "") == 0) + fprintf(out, " "); + else + fprintf(out, "%s", str); + + fprintf(out, "
\n"); - fprintf(out, "\n\n\n"); + fprintf(out, "\n"); + fprintf(out, "\n"); + fprintf(out, ""); } /* @@ -1557,8 +1584,9 @@ static char *vcard_fields[] = { "NICKNAME", /* NICK */ "URL", /* URL */ "NOTE", /* NOTES */ + "BDAY", /* ANNIVERSARY */ "N", /* NAME: special case/mapping in vcard_parse_line() */ - NULL /* not implemented: ANNIVERSARY, ITEM_FIELDS */ + NULL /* ITEM_FIELDS */ }; enum { @@ -2065,6 +2093,13 @@ vcard_export_item(FILE *out, int item) free(name); + if(db_fget(item, NICK)) + fprintf(out, "NICKNAME:%s\r\n", + safe_str(db_fget(item, NICK))); + if(db_fget(item, ANNIVERSARY)) + fprintf(out, "BDAY:%s\r\n", + safe_str(db_fget(item, ANNIVERSARY))); + // see rfc6350 section 6.3.1 if(db_fget(item, ADDRESS)) { fprintf(out, "ADR:;%s;%s;%s;%s;%s;%s\r\n", @@ -2612,7 +2647,7 @@ parse_custom_format(char *s, char *fmt_string, enum field_types *ft) cannotparse: fprintf(stderr, _("%s: invalid format, index %ld\n"), __FUNCTION__, (start - s)); free(fmt_string); - while(*ft) free(ft--); + free(ft); exit(EXIT_FAILURE); } @@ -2688,11 +2723,10 @@ extern char custom_format[FORMAT_STRING_LEN]; static int custom_export_database(FILE *out, struct db_enumerator e) { - char *format_string = - (char *)malloc(FORMAT_STRING_LEN * sizeof(char*)); + char *format_string = (char *)malloc(FORMAT_STRING_LEN); enum field_types *ft = - (enum field_types *)malloc(FORMAT_STRING_MAX_FIELDS * sizeof(enum field_types *)); + (enum field_types *)malloc(FORMAT_STRING_MAX_FIELDS * sizeof(enum field_types)); parse_custom_format(custom_format, format_string, ft);