]> git.deb.at Git - pkg/abook.git/blobdiff - filter.c
mutt-query (3/3): register the --mutt-query-format per-item filter and use it
[pkg/abook.git] / filter.c
index 51445ee1f1bf9947c323bc478a4f7fcafb22f9da..2735331d1d5a110d09d79cdf61bf020606158795 100644 (file)
--- a/filter.c
+++ b/filter.c
@@ -60,6 +60,7 @@ static int    allcsv_export_database(FILE *out, struct db_enumerator e);
 static int     palm_export_database(FILE *out, struct db_enumerator e);
 static int     vcard_export_database(FILE *out, struct db_enumerator e);
 static int     mutt_alias_export(FILE *out, struct db_enumerator e);
+static int     mutt_query_export_database(FILE *out, struct db_enumerator e);
 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);
@@ -87,6 +88,7 @@ struct abook_output_filter e_filters[] = {
        { "ldif", N_("ldif / Netscape addressbook (.4ld)"), ldif_export_database },
        { "vcard", N_("vCard 2 file"), vcard_export_database },
        { "mutt", N_("mutt alias"), mutt_alias_export },
+       { "muttq", N_("mutt query format (internal use)"), mutt_query_export_database },
        { "html", N_("html document"), html_export_database },
        { "pine", N_("pine addressbook"), pine_export_database },
        { "csv", N_("comma separated values"), csv_export_database },
@@ -101,6 +103,7 @@ struct abook_output_filter e_filters[] = {
 };
 
 struct abook_output_item_filter u_filters[] = {
+       { "muttq", N_("mutt alias"), muttq_print_item },
        { "\0", NULL }
 };
 
@@ -2038,6 +2041,33 @@ mutt_alias_export(FILE *out, struct db_enumerator e)
        return 0;
 }
 
+void muttq_print_item(FILE *file, int item)
+{
+       abook_list *emails, *e;
+       char *tmp = db_email_get(item);
+
+       emails = csv_to_abook_list(tmp);
+       free(tmp);
+
+       for(e = emails; e; e = e->next) {
+               fprintf(file, "%s\t%s\t%s\n", e->data, db_name_get(item),
+                               !db_fget(item, NOTES) ?" " :db_fget(item, NOTES)
+                               );
+               if(!opt_get_bool(BOOL_MUTT_RETURN_ALL_EMAILS))
+                       break;
+       }
+       abook_list_free(&emails);
+}
+
+static int
+mutt_query_export_database(FILE *out, struct db_enumerator e)
+{
+  fprintf(out, "All items\n");
+  db_enumerate_items(e)
+    muttq_print_item(out, e.item);
+  return 0;
+}
+
 /*
  * end of mutt alias export filter
  */