* file format is not tolerant for character set changes
 
+--
+[25]
+name=Lastname, Firstname
+email="Lastname, Firstname" <firstname.lastname@example.com>
+
+but the command "abook --mutt-query lastname" returns two email addresses
+
+"Lastname       Lastname, Firstname
+Firstname" <firstname.lastname@example.com>     Lastname, Firstname
+
+In other words, the mutt-query doesn't treat the comma as protected by the
+quotes, although the conversion from pine format did.
+--
+
 Filters:
 * mutt / elm / pine export filters allow to create a file with duplicate
   aliases
 
 * fseek in ldif import filter should be eliminated
 
-$Id: BUGS,v 1.16 2005/08/29 10:02:50 jheinonen Exp $
+$Id: BUGS,v 1.16.2.1 2006/02/23 13:39:13 jheinonen Exp $
 
+0.5.6
+ - translation fixes
+ - fixed gcrd export format (\r\n line endings according to RFC, Marc Tardif)
+ - fix localized keybindings with --disable-nls
+
 0.5.5
  - i18n support (Cedric Duval)
  - French translation (Cedric Duval)
 
 Summary:       Text-based addressbook program
 Name:          abook
-Version:       0.5.5
+Version:       0.5.6
 Release:       1
 License:       GPL
 Group:         Utilities
 
 
 # Define the identity of the package.
  PACKAGE=abook
- VERSION=0.5.5
+ VERSION=0.5.6
 
 
 cat >>confdefs.h <<_ACEOF
 
 dnl abook configure.in
 
 AC_INIT(abook.c)
-AM_INIT_AUTOMAKE(abook, 0.5.5)
+AM_INIT_AUTOMAKE(abook, 0.5.6)
 AM_CONFIG_HEADER(config.h)
 
 dnl ---------------
 
 
 /*
- * $Id: filter.c,v 1.48.2.1 2005/10/26 19:45:23 jheinonen Exp $
+ * $Id: filter.c,v 1.48.2.1.2.2 2006/04/10 16:02:10 jheinonen Exp $
  *
  * by JH <jheinonen@users.sourceforge.net>
  *
 {
        int i,j;
 
-       for(i=0,j=0; j < (int)strlen(buf); i++, j++)
+       for(i = 0,j = 0; j < (int)strlen(buf); i++, j++)
                buf[i] = buf[j] == '\n' ? buf[++j] : buf[j];
 }
 
        if(s == NULL || *s != '(')
                return;
 
-       for(i=0; s[i]; i++ )
-               s[i] = s[i+1];
+       for(i = 0; s[i]; i++)
+               s[i] = s[i + 1];
 
        if( ( tmp = strchr(s,')')) )
-               *tmp=0;
+               *tmp = '\0';
 
        for(i = 1; ( tmp = strchr(s, ',') ) != NULL ; i++, s = tmp + 1)
                if(i > MAX_EMAILS - 1) {
-                       *tmp = 0;
+                       *tmp = '\0';
                        break;
                }
-
 }
 
 static void
        char *end;
        char tmp[PINE_BUF_SIZE];
        int i, len, last;
-       int pine_conv_table[]= {NICK, NAME, EMAIL, -1, NOTES};
+       int pine_conv_table[] = {NICK, NAME, EMAIL, -1, NOTES};
 
        memset(&item, 0, sizeof(item));
 
-       for(i=0, last=0; !last ; i++) {
+       for(i = 0, last=0; !last ; i++) {
                if( !(end = strchr(start, '\t')) )
                        last=1;
 
        char *name;
 
        db_enumerate_items(e) {
-               fprintf(out, "BEGIN:VCARD\nFN:%s\n",
+               fprintf(out, "BEGIN:VCARD\r\nFN:%s\r\n",
                                safe_str(database[e.item][NAME]));
 
                name = get_surname(database[e.item][NAME]);
                        if(database[e.item][NAME][j] == ' ')
                                break;
                }
-               fprintf(out, "N:%s;%.*s\n",
+               fprintf(out, "N:%s;%.*s\r\n",
                        safe_str(name),
                        j,
                        safe_str(database[e.item][NAME])
                free(name);
 
                if ( database[e.item][ADDRESS] )
-                       fprintf(out, "ADR:;;%s;%s;%s;%s;%s;%s\n",
+                       fprintf(out, "ADR:;;%s;%s;%s;%s;%s;%s\r\n",
                                safe_str(database[e.item][ADDRESS]),
                                safe_str(database[e.item][ADDRESS2]),
                                safe_str(database[e.item][CITY]),
                                );
 
                if (database[e.item][PHONE])
-                       fprintf(out, "TEL;HOME:%s\n", database[e.item][PHONE]);
+                       fprintf(out, "TEL;HOME:%s\r\n",
+                               database[e.item][PHONE]);
                if (database[e.item][WORKPHONE])
-                       fprintf(out, "TEL;WORK:%s\n", database[e.item][WORKPHONE]);
+                       fprintf(out, "TEL;WORK:%s\r\n",
+                               database[e.item][WORKPHONE]);
+
                if (database[e.item][FAX])
-                       fprintf(out, "TEL;FAX:%s\n", database[e.item][FAX]);
+                       fprintf(out, "TEL;FAX:%s\r\n", database[e.item][FAX]);
                if (database[e.item][MOBILEPHONE])
-                       fprintf(out, "TEL;CELL:%s\n", database[e.item][MOBILEPHONE]);
+                       fprintf(out, "TEL;CELL:%s\r\n", database[e.item][MOBILEPHONE]);
 
                if ( database[e.item][EMAIL] ) {
                        split_emailstr(e.item, emails);
                        for(j=0; j < MAX_EMAILS ; j++) {
                                if ( *emails[j] )
-                                       fprintf(out, "EMAIL;INTERNET:%s\n",
+                                       fprintf(out, "EMAIL;INTERNET:%s\r\n",
                                                emails[j]);
                        }
                }
 
                if ( database[e.item][NOTES] )
-                       fprintf(out, "NOTE:%s\n", database[e.item][NOTES]);
+                       fprintf(out, "NOTE:%s\r\n", database[e.item][NOTES]);
                if (database[e.item][URL])
-                       fprintf(out, "URL:%s\n",  database[e.item][URL]);
+                       fprintf(out, "URL:%s\r\n",  database[e.item][URL]);
 
-               fprintf(out, "END:VCARD\n\n");
+               fprintf(out, "END:VCARD\r\n\r\n");
 
        }
 
 
 #      include "config.h"
 #endif
 
-#ifdef ENABLE_NLS
 #include <string.h>
 #include "gettext.h"
 
-char *
+const char *
 sgettext(const char *msgid)
 {
-       char *msgval = gettext(msgid);
+       const char *msgval = gettext(msgid);
 
        if(msgval == msgid)
                msgval = strrchr(msgid, '|') + 1;
 
        return msgval;
 }
-#endif
+
 
 #ifndef _GETTEXT_H
 #define _GETTEXT_H
 
+const char *sgettext(const char *msgid); /* Strip context prefix */
+
 # if ENABLE_NLS
 #  include <libintl.h>
-char *sgettext(const char *msgid); /* Strip context prefix */
 # else
 #  define gettext(Msgid) ((const char *) (Msgid))
-#  define sgettext(Msgid) ((const char *) (Msgid))
-
-#  define textdomain(Domainname) ((const char *) (Domainname))
-#  define bindtextdomain(Domainname, Dirname) ((const char *) (Dirname))
+#  define textdomain(Domainname) do {} while(0)
+#  define bindtextdomain(Domainname, Dirname) do {} while(0)
 # endif /* ENABLE_NLS */
 
 # define _(String) gettext (String)
 
 N_("   Z               move current item down\n"),
 "\n",
 N_("   m               send mail with mutt\n"),
-N_("   u               view URL with web browser\n"),
+N_("   v               view URL with web browser\n"),
 NULL
 
 };
 
 
 /*
- * $Id: options.c,v 1.27 2005/09/21 16:50:31 jheinonen Exp $
+ * $Id: options.c,v 1.27.4.1 2006/04/09 18:57:34 jheinonen Exp $
  *
  * by JH <jheinonen@users.sourceforge.net>
  *
        }
 }
 
-static char *
+static const char *
 opt_set_set_option(char *var, char *p, struct option *opt)
 {
        int len;
        return NULL;
 }
 
-static char *
+static const char *
 opt_parse_set(buffer *b)
 {
        int i;
 
 #include "database.h" /* needed for change_custom_field_name */
 
-static char *
+static const char *
 opt_parse_customfield(buffer *b)
 {
        char *p, num[5];
 
 static struct {
        char *token;
-       char * (*func) (buffer *line);
+       const char * (*func) (buffer *line);
 } opt_parsers[] = {
        { "set", opt_parse_set },
        { "customfield", opt_parse_customfield },
 opt_parse_line(char *line, int n, char *fn)
 {
        int i;
-       char *err = NULL;
+       const char *err = NULL;
        char *token;
        buffer b;
 
 
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: <cedricduval+abook@free.fr>\n"
-"POT-Creation-Date: 2005-10-27 17:07+0300\n"
+"POT-Creation-Date: 2005-12-06 07:50+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 msgstr ""
 
 #: help.h:47
-msgid "\tu\t\tview URL with web browser\n"
+msgid "\tv\t\tview URL with web browser\n"
 msgstr ""
 
 #: help.h:55
 
 msgstr ""
 "Project-Id-Version: abook 0.5.5pre1\n"
 "Report-Msgid-Bugs-To: <cedricduval+abook@free.fr>\n"
-"POT-Creation-Date: 2005-10-27 17:07+0300\n"
+"POT-Creation-Date: 2005-12-06 07:50+0200\n"
 "PO-Revision-Date: 2005-10-03 00:56+0200\n"
 "Last-Translator: Johannes Weißl <jargon@molb.org>\n"
 "Language-Team: German <de@li.org>\n"
 msgstr "\tm\t\tE-Mail mit Mutt senden\n"
 
 #: help.h:47
-msgid "\tu\t\tview URL with web browser\n"
-msgstr "\tu\t\tURL mit Web-Browser anzeigen\n"
+msgid "\tv\t\tview URL with web browser\n"
+msgstr "\tv\t\tURL mit Web-Browser anzeigen\n"
 
 #: help.h:55
 msgid "\ta,c,p,o,C/arrows/h,l\tchange tab\n"
 
 msgstr ""
 "Project-Id-Version: abook\n"
 "Report-Msgid-Bugs-To: <cedricduval+abook@free.fr>\n"
-"POT-Creation-Date: 2005-10-27 17:07+0300\n"
+"POT-Creation-Date: 2005-12-06 07:50+0200\n"
 "PO-Revision-Date: 2005-10-03 10:53+0200\n"
 "Last-Translator: Cedric Duval <cedricduval+abook@free.fr>\n"
 "Language-Team: french\n"
 
 #: help.h:37
 msgid "\tS\t\t\"surname sort\"\n"
-msgstr "\ts\t\tclassement par nom de famille\n"
+msgstr "\tS\t\tclassement par nom de famille\n"
 
 #: help.h:38
 msgid "\tF\t\tsort by field (defined in configuration file)\n"
 msgstr "\tm\t\tenvoyer un courrier électronique avec mutt\n"
 
 #: help.h:47
-msgid "\tu\t\tview URL with web browser\n"
-msgstr "\tu\t\tvisualiser l'URL avec un navigateur web\n"
+msgid "\tv\t\tview URL with web browser\n"
+msgstr "\tv\t\tvisualiser l'URL avec un navigateur web\n"
 
 #: help.h:55
 msgid "\ta,c,p,o,C/arrows/h,l\tchange tab\n"
 
 msgstr ""
 "Project-Id-Version: 0.5.5\n"
 "Report-Msgid-Bugs-To: <cedricduval+abook@free.fr>\n"
-"POT-Creation-Date: 2005-10-27 17:07+0300\n"
+"POT-Creation-Date: 2005-12-06 07:50+0200\n"
 "PO-Revision-Date: 2005-10-18 18:10+0200\n"
 "Last-Translator: TAKAHASHI Tamotsu <ttakah@lapis.plala.or.jp>\n"
 "Language-Team: japanese\n"
 msgstr "\tm\t\tMutt ¤Ç¥á¡¼¥ë¤òÁ÷¤ë\n"
 
 #: help.h:47
-msgid "\tu\t\tview URL with web browser\n"
-msgstr "\tu\t\tURL ¤ò¥Ö¥é¥¦¥¶¤Ç±ÜÍ÷¤¹¤ë\n"
+msgid "\tv\t\tview URL with web browser\n"
+msgstr "\tv\t\tURL ¤ò¥Ö¥é¥¦¥¶¤Ç±ÜÍ÷¤¹¤ë\n"
 
 #: help.h:55
 msgid "\ta,c,p,o,C/arrows/h,l\tchange tab\n"
 
 msgstr ""
 "Project-Id-Version: abook 0.5.4\n"
 "Report-Msgid-Bugs-To: <cedricduval+abook@free.fr>\n"
-"POT-Creation-Date: 2005-10-27 17:07+0300\n"
+"POT-Creation-Date: 2005-12-06 07:50+0200\n"
 "PO-Revision-Date: 2005-09-23 22:13+0200\n"
 "Last-Translator: Susanna Björverud <susanna.bjorverud@telia.com>\n"
 "Language-Team: none\n"
 msgstr "\tm\t\tskicka post med mutt\n"
 
 #: help.h:47
-msgid "\tu\t\tview URL with web browser\n"
-msgstr "\tu\t\tvisa URL i webbläsare\n"
+msgid "\tv\t\tview URL with web browser\n"
+msgstr "\tv\t\tvisa URL i webbläsare\n"
 
 #: help.h:55
 msgid "\ta,c,p,o,C/arrows/h,l\tchange tab\n"
 
 
 /*
- * $Id: ui.c,v 1.54 2005/10/05 11:03:36 jheinonen Exp $
+ * $Id: ui.c,v 1.54.4.1 2006/04/09 18:57:34 jheinonen Exp $
  *
  * by JH <jheinonen@users.sourceforge.net>
  *
 }
 
 char *
-ui_readline(char *prompt, char *s, size_t limit, bool use_completion)
+ui_readline(const char *prompt, char *s, size_t limit, bool use_completion)
 {
        int y, x;
        char *ret;
 }
 
 int
-statusline_ask_boolean(char *msg, int def)
+statusline_ask_boolean(const char *msg, int def)
 {
        int ret;
        char *msg2 = strconcat(msg,  def ? _(" (Y/n)?") : _(" (y/N)?"), NULL);
 }
 
 char *
-ask_filename(char *prompt)
+ask_filename(const char *prompt)
 {
        char *buf = NULL;
 
 
 void           headerline(const char *str);
 void            refresh_screen();
 int            statusline_msg(const char *msg);
-int            statusline_askchoice(const char *msg, const char *choices, short dflt);
-char           *ask_filename(char *prompt);
-int            statusline_ask_boolean(char *msg, int def);
+int            statusline_askchoice(const char *msg, const char *choices,
+                       short dflt);
+char           *ask_filename(const char *prompt);
+int            statusline_ask_boolean(const char *msg, int def);
 void            clear_statusline();
 void           display_help(int help);
 void           statusline_addstr(const char *str);
-char *         ui_readline(char *prompt, char *s, size_t limit, bool use_completion);
+char *         ui_readline(const char *prompt, char *s, size_t limit,
+                       bool use_completion);
 void           refresh_statusline();
 void           get_commands();
 void           ui_remove_items();