]> git.deb.at Git - pkg/abook.git/blobdiff - filter.c
*** empty log message ***
[pkg/abook.git] / filter.c
index 41756ad029889ee2db0c07ea1a3655904bb91cc0..62394ca0cf2c1b05fca28541c600b3b1b99e4603 100644 (file)
--- a/filter.c
+++ b/filter.c
@@ -23,6 +23,7 @@
 #include "list.h"
 #include "misc.h"
 #include "options.h"
+#include "ui.h"
 #include "xmalloc.h"
 #include <assert.h>
 
@@ -60,6 +61,7 @@ static int    mutt_alias_export(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);
+static int     wl_export_database(FILE *out, struct db_enumerator e);
 
 /*
  * end of function declarations
@@ -88,6 +90,7 @@ struct abook_output_filter e_filters[] = {
        { "palmcsv", N_("Palm comma separated values"), palm_export_database},
        { "elm", N_("elm alias"), elm_alias_export },
        { "text", N_("plain text"), text_export_database },
+       { "wl", N_("Wanderlust address book"), wl_export_database },
        { "spruce", N_("Spruce address book"), spruce_export_database },
        { "\0", NULL, NULL }
 };
@@ -319,16 +322,19 @@ export_database()
                return 1;
        }
 
-       mvaddstr(5+filter, 2, "->");
+       mvaddstr(5 + filter, 2, "->");
 
        if(selected_items()) {
-               /* TODO gettext: handle translated keypresses? */
-               statusline_addstr(_("Export All/Selected/Cancel (A/s/c)?"));
-               switch( tolower(getch()) ) {
-                       case 's':
+               switch(statusline_askchoice(
+                       _("Export <a>ll, export <s>elected, or <c>ancel?"),
+                       S_("keybindings:all/selected/cancel|asc"), 3)) {
+                       case 1:
+                               break;
+                       case 2:
                                enum_mode = ENUM_SELECTED;
                                break;
-                       case 'c':
+                       case 0:
+                       case 3:
                                refresh_screen();
                                return 1;
                }
@@ -789,7 +795,7 @@ ldif_export_database(FILE *out, struct db_enumerator e)
                int j;
                get_first_email(email, e.item);
 
-               tmp = mkstr("cn=%s,mail=%s", database[e.item][NAME], email);
+               tmp = strdup_printf("cn=%s,mail=%s", database[e.item][NAME], email);
                ldif_fput_type_and_value(out, "dn", tmp);
                free(tmp);
 
@@ -1810,3 +1816,34 @@ spruce_export_database (FILE *out, struct db_enumerator e)
  * end of Spruce export filter
  */
 
+/*
+ * wanderlust addressbook export filter
+ */
+
+static int
+wl_export_database(FILE *out, struct db_enumerator e)
+{
+       char emails[MAX_EMAILS][MAX_EMAIL_LEN];
+
+       fprintf (out, "# Wanderlust address book written by %s\n\n", PACKAGE);
+       db_enumerate_items(e) {
+               split_emailstr(e.item, emails);
+               if (**emails) {
+                       fprintf(out,
+                               "%s\t\"%s\"\t\"%s\"\n",
+                               *emails,
+                               safe_str(database[e.item][NICK]),
+                               safe_str(database[e.item][NAME])
+                       );
+               }
+       }
+
+       fprintf (out, "\n# End of address book file.\n");
+
+       return 0;
+}
+
+/*
+ * end of wanderlust addressbook export filter
+ */
+