Hi On Fri, 31 Oct 2014, Michal Sojka <sojkam1 at fel.cvut.cz> wrote: > On Fri, Oct 31 2014, Mark Walters wrote: >> My only query is in the text output: should the name part be printed as >> a quoted string. For example currently I get a line of the form >> >> Bloggs, Fred <fred at example.com> > > Good point. > > On Fri, Oct 31 2014, Mark Walters wrote: >> Hi >> >> I attach a patch which does the quoting for real names but I don't know >> if we want it: it changes (example taken from the test suite) >> >> Fran?ois Boulogne to >> >> =?iso-8859-1?q?Fran=E7ois?= Boulogne >> >> (which is what was in the original email) >> >> Plausibly the best thing is just to leave the series as is, so the >> text output is readable and parseable in the common cases. >> >> Anyway the patch is attached if anyone wants to experiment. >> >> Best wishes >> >> Mark >> >> From 53b1ced2d6a9fbbba93448325f795e6b99faa240 Mon Sep 17 00:00:00 2001 >> From: Mark Walters <markwalters1009 at gmail.com> >> Date: Fri, 31 Oct 2014 10:11:40 +0000 >> Subject: [PATCH] search: quote real names for output=sender/recipient in text >> format >> >> This quotes the real name (when gmime thinks appropriate) for the text >> output. For the other outputs the real name is separate from the >> address so the consumer can do any quoting necessary. >> --- >> notmuch-search.c | 8 ++++---- >> test/T090-search-output.sh | 8 ++++---- >> 2 files changed, 8 insertions(+), 8 deletions(-) >> >> diff --git a/notmuch-search.c b/notmuch-search.c >> index eae749a..8eac161 100644 >> --- a/notmuch-search.c >> +++ b/notmuch-search.c >> @@ -47,6 +47,7 @@ typedef struct { >> typedef struct { >> const char *name; >> const char *addr; >> + const char *string; >> } mailbox_t; >> >> /* Return two stable query strings that identify exactly the matched >> @@ -255,15 +256,13 @@ print_mailbox (const search_options_t *opt, const >> mailbox_t *mailbox) >> { >> const char *name = mailbox->name; >> const char *addr = mailbox->addr; >> + const char *string = mailbox->string; >> sprinter_t *format = opt->format; >> >> if (format->is_text_printer) { >> char *mailbox_str; >> >> - if (name && *name) >> - mailbox_str = talloc_asprintf (format, "%s <%s>", name, addr); >> - else >> - mailbox_str = talloc_strdup (format, addr); >> + mailbox_str = talloc_strdup (format, string); >> >> if (! mailbox_str) { >> fprintf (stderr, "Error: out of memory\n"); >> @@ -309,6 +308,7 @@ process_address_list (const search_options_t *opt, >> GHashTable *addrs, >> mailbox_t mbx = { >> .name = internet_address_get_name (address), >> .addr = internet_address_mailbox_get_addr (mailbox), >> + .string = internet_address_to_string (address, TRUE), > > I'd prefer having the second parameter (encode) FALSE. This will still > add quotes when necessary, but does not encode non-ascii characters so > the result would be human readable.
Yes that is clearly better. > > Another question is whether to add .string to mailbox_t. In this patch > it doesn't matter, but if --output=count patch will be merged, this > would mean that memory consumption doubles, because with --output=count > the addresses are kept in memory and printed only after the search is > completed. It would be therefore better to construct a new > InternetAddressMailbox from name and addr in print_mailbox() and perform > the conversion to string there. Thoughts? Yes I agree here too. Are you happy doing a replacement patch or should I? Best wishes Mark > > Thanks, > -Michal > >> }; >> >> if (is_duplicate (opt, addrs, mbx.name, mbx.addr)) >> diff --git a/test/T090-search-output.sh b/test/T090-search-output.sh >> index 841a721..776e3f4 100755 >> --- a/test/T090-search-output.sh >> +++ b/test/T090-search-output.sh >> @@ -390,7 +390,7 @@ test_expect_equal_file OUTPUT EXPECTED >> test_begin_subtest "--output=sender" >> notmuch search --output=sender '*' >OUTPUT >> cat <<EOF >EXPECTED >> -Fran?ois Boulogne <boulogne.f at gmail.com> >> +=?iso-8859-1?q?Fran=E7ois?= Boulogne <boulogne.f at gmail.com> >> Olivier Berger <olivier.berger at it-sudparis.eu> >> Chris Wilson <chris at chris-wilson.co.uk> >> Carl Worth <cworth at cworth.org> >> @@ -437,7 +437,7 @@ test_begin_subtest "--output=recipients" >> notmuch search --output=recipients '*' >OUTPUT >> cat <<EOF >EXPECTED >> Allan McRae <allan at archlinux.org> >> -Discussion about the Arch User Repository (AUR) <aur-general at >> archlinux.org> >> +"Discussion about the Arch User Repository (AUR)" <aur-general at >> archlinux.org> >> olivier.berger at it-sudparis.eu >> notmuch at notmuchmail.org >> notmuch <notmuch at notmuchmail.org> >> @@ -449,9 +449,9 @@ test_expect_equal_file OUTPUT EXPECTED >> test_begin_subtest "--output=sender --output=recipients" >> notmuch search --output=sender --output=recipients '*' >OUTPUT >> cat <<EOF >EXPECTED >> -Fran?ois Boulogne <boulogne.f at gmail.com> >> +=?iso-8859-1?q?Fran=E7ois?= Boulogne <boulogne.f at gmail.com> >> Allan McRae <allan at archlinux.org> >> -Discussion about the Arch User Repository (AUR) <aur-general at >> archlinux.org> >> +"Discussion about the Arch User Repository (AUR)" <aur-general at >> archlinux.org> >> Olivier Berger <olivier.berger at it-sudparis.eu> >> olivier.berger at it-sudparis.eu >> Chris Wilson <chris at chris-wilson.co.uk> >> -- >> 1.7.10.4