X-Git-Url: https://git.deb.at/w?a=blobdiff_plain;f=filter.c;h=ff3e511872f0e2bd3619680fa67c70de7699eff4;hb=9ccd2453b5a55c7bccae5de1e1022947c7ff889a;hp=653f7af71520e17ef44afa83a39c9b1065cae482;hpb=1b263d3d80f3b153c1d5f8255c05be5864b79ee8;p=pkg%2Fabook.git diff --git a/filter.c b/filter.c index 653f7af..ff3e511 100644 --- a/filter.c +++ b/filter.c @@ -29,6 +29,10 @@ #include "xmalloc.h" #include +#ifdef HAVE_VFORMAT +#include "vcard.h" +#endif + extern abook_field_list *fields_list; extern int fields_count; @@ -73,7 +77,8 @@ static int custom_export_database(FILE *out, struct db_enumerator e); */ void vcard_export_item(FILE *out, int item); - +void muttq_print_item(FILE *file, int item); +void custom_print_item(FILE *out, int item); /* * end of function declarations @@ -127,21 +132,21 @@ print_filters() { int i; - puts(_("input:")); + puts(_("input formats:")); for(i=0; *i_filters[i].filtname ; i++) printf("\t%s\t%s\n", i_filters[i].filtname, gettext(i_filters[i].desc)); putchar('\n'); - puts(_("output:")); + puts(_("output formats:")); for(i=0; *e_filters[i].filtname ; i++) printf("\t%s\t%s\n", e_filters[i].filtname, gettext(e_filters[i].desc)); putchar('\n'); - puts(_("output (with query):")); + puts(_("query-compatible output formats:")); for(i=0; *u_filters[i].filtname ; i++) printf("\t%s\t%s\n", u_filters[i].filtname, gettext(u_filters[i].desc)); @@ -292,6 +297,18 @@ import_file(char filtname[FILTNAME_LEN], char *filename) if(i < 0) return -1; +#ifdef HAVE_VFORMAT + // this is a special case for + // libvformat whose API expects a filename + if(!strcmp(filtname, "vcard")) { + if(!strcmp(filename, "-")) + ret = vcard_parse_file_libvformat("/dev/stdin"); + else + ret = vcard_parse_file_libvformat(filename); + } + else +#endif + if(!strcmp(filename, "-")) { struct stat s; if((fstat(fileno(stdin), &s)) == -1 || S_ISDIR(s.st_mode)) @@ -614,8 +631,8 @@ ldif_convert(ldif_item item, char *type, char *value) } for(i=0; i < LDIF_ITEM_FIELDS; i++) { - if(!safe_strcmp(ldif_field_names[i], type) && *value) { - if(i == LDIF_ITEM_FIELDS - 1) /* this is a dirty hack */ + if(!strcasecmp(ldif_field_names[i], type) && *value) { + if(i == LDIF_ITEM_FIELDS - 1) /* this is a dirty hack */ if(safe_strcmp("person", value)) break; @@ -623,6 +640,7 @@ ldif_convert(ldif_item item, char *type, char *value) free(item_fget(item, i)); item_fput(item, i, xstrdup(value)); + break; } } }