]> rtime.felk.cvut.cz Git - notmuch.git/commitdiff
Fix --filter-by=addrfold --output=count case
authorMichal Sojka <sojkam1@fel.cvut.cz>
Fri, 31 Oct 2014 16:29:44 +0000 (17:29 +0100)
committerMichal Sojka <sojkam1@fel.cvut.cz>
Fri, 31 Oct 2014 16:29:44 +0000 (17:29 +0100)
notmuch-search.c
test/T095-search-filter-by.sh

index 8bc80d3b125c62179718d91aae2c83efb4cf4851..7ca8125a31c6016c5d22bc706ecf0894270c1cc0 100644 (file)
@@ -246,33 +246,35 @@ is_duplicate (const search_options_t *opt, GHashTable *addrs, const char *name,
 {
     notmuch_bool_t duplicate;
     char *key;
+    gchar *addrfold = NULL;
     mailbox_t *mailbox;
 
     if (opt->filter_by == FILTER_BY_ADDRFOLD ||
-       opt->filter_by == FILTER_BY_NAMEADDRFOLD) {
-       gchar *folded = g_utf8_casefold (addr, -1);
-       addr = talloc_strdup (opt->format, folded);
-       g_free (folded);
-    }
+       opt->filter_by == FILTER_BY_NAMEADDRFOLD)
+       addrfold = g_utf8_casefold (addr, -1);
+
     switch (opt->filter_by) {
     case FILTER_BY_NAMEADDR:
-    case FILTER_BY_NAMEADDRFOLD:
        key = talloc_asprintf (opt->format, "%s <%s>", name, addr);
        break;
+    case FILTER_BY_NAMEADDRFOLD:
+       key = talloc_asprintf (opt->format, "%s <%s>", name, addrfold);
+       break;
     case FILTER_BY_NAME:
        key = talloc_strdup (opt->format, name); /* !name results in !key */
        break;
     case FILTER_BY_ADDR:
-    case FILTER_BY_ADDRFOLD:
        key = talloc_strdup (opt->format, addr);
        break;
+    case FILTER_BY_ADDRFOLD:
+       key = talloc_strdup (opt->format, addrfold);
+       break;
     default:
        INTERNAL_ERROR("invalid --filter-by flags");
     }
 
-    if (opt->filter_by == FILTER_BY_ADDRFOLD ||
-       opt->filter_by == FILTER_BY_NAMEADDRFOLD)
-       talloc_free ((char*)addr);
+    if (addrfold)
+       g_free (addrfold);
 
     if (! key)
        return FALSE;
index 97d9a9bc2f106e512fdade59efc355f81951ab87..8b05d768bb86e99aaed7b6b39828ae443ea0fa4d 100755 (executable)
@@ -61,4 +61,13 @@ Nickname <foo@example.com>
 EOF
 test_expect_equal_file OUTPUT EXPECTED
 
+test_begin_subtest "--output=recipients --filter-by=nameaddrfold --output=count"
+notmuch search --output=recipients --filter-by=nameaddrfold --output=count "*" | sort -n >OUTPUT
+cat <<EOF >EXPECTED
+1      Real Name <foo@example.com>
+2      Nickname <foo@example.com>
+3      Real Name <bar@example.com>
+EOF
+test_expect_equal_file OUTPUT EXPECTED
+
 test_done