From cdeee7ac152ca6b9170015e8318148a8bfe90745 Mon Sep 17 00:00:00 2001 From: David Bremner Date: Mon, 7 Sep 2015 10:15:46 +2100 Subject: [PATCH] [PATCH 2/3] cli/count: update to use notmuch_query_search_messages_st --- db/1e5181e3ea8f6edfc6b9b736e9d03a9d027fe8 | 161 ++++++++++++++++++++++ 1 file changed, 161 insertions(+) create mode 100644 db/1e5181e3ea8f6edfc6b9b736e9d03a9d027fe8 diff --git a/db/1e5181e3ea8f6edfc6b9b736e9d03a9d027fe8 b/db/1e5181e3ea8f6edfc6b9b736e9d03a9d027fe8 new file mode 100644 index 000000000..d9b4882cf --- /dev/null +++ b/db/1e5181e3ea8f6edfc6b9b736e9d03a9d027fe8 @@ -0,0 +1,161 @@ +Return-Path: +X-Original-To: notmuch@notmuchmail.org +Delivered-To: notmuch@notmuchmail.org +Received: from localhost (localhost [127.0.0.1]) + by arlo.cworth.org (Postfix) with ESMTP id 4E7806DE1633 + for ; Sun, 6 Sep 2015 06:58:45 -0700 (PDT) +X-Virus-Scanned: Debian amavisd-new at cworth.org +X-Spam-Flag: NO +X-Spam-Score: 2.649 +X-Spam-Level: ** +X-Spam-Status: No, score=2.649 tagged_above=-999 required=5 tests=[AWL=-1.041, + RCVD_IN_BRBL_LASTEXT=1.644, RCVD_IN_SBL=2.596, RP_MATCHES_RCVD=-0.55] + autolearn=disabled +Received: from arlo.cworth.org ([127.0.0.1]) + by localhost (arlo.cworth.org [127.0.0.1]) (amavisd-new, port 10024) + with ESMTP id 4IASAOxUZILH for ; + Sun, 6 Sep 2015 06:58:43 -0700 (PDT) +Received: from yantan.tethera.net (yantan.tethera.net [199.188.72.155]) + by arlo.cworth.org (Postfix) with ESMTPS id 8B76E6DE1636 + for ; Sun, 6 Sep 2015 06:58:43 -0700 (PDT) +Received: from remotemail by yantan.tethera.net with local (Exim 4.80) + (envelope-from ) + id 1ZYZnX-0002x9-2s; Sun, 06 Sep 2015 10:15:55 -0300 +Received: (nullmailer pid 29728 invoked by uid 1000); Sun, 06 Sep 2015 + 13:15:48 -0000 +From: David Bremner +To: notmuch@notmuchmail.org +Subject: [PATCH 2/3] cli/count: update to use notmuch_query_search_messages_st +Date: Sun, 6 Sep 2015 10:15:46 -0300 +Message-Id: <1441545347-29549-2-git-send-email-david@tethera.net> +X-Mailer: git-send-email 2.5.1 +In-Reply-To: <1441545347-29549-1-git-send-email-david@tethera.net> +References: <1441545347-29549-1-git-send-email-david@tethera.net> +X-BeenThere: notmuch@notmuchmail.org +X-Mailman-Version: 2.1.18 +Precedence: list +List-Id: "Use and development of the notmuch mail system." + +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +X-List-Received-Date: Sun, 06 Sep 2015 13:58:45 -0000 + +This brings back status information that may have been hidden by the +great library logging conversion. + +Note the change of the internal API / return-value for count_files The +other count calls to the lib will also get error handling when that +API is updated in the lib. +--- + notmuch-count.c | 22 ++++++++++++++++------ + test/T060-count.sh | 30 ++++++++++++++++++++++++++++++ + 2 files changed, 46 insertions(+), 6 deletions(-) + +diff --git a/notmuch-count.c b/notmuch-count.c +index f26e726..65e1f4e 100644 +--- a/notmuch-count.c ++++ b/notmuch-count.c +@@ -34,17 +34,19 @@ enum { + EXCLUDE_FALSE, + }; + +-static unsigned int ++/* Return the number of files matching the query, or -1 for an error */ ++static int + count_files (notmuch_query_t *query) + { + notmuch_messages_t *messages; + notmuch_message_t *message; + notmuch_filenames_t *filenames; +- unsigned int count = 0; ++ notmuch_status_t status; ++ int count = 0; + +- messages = notmuch_query_search_messages (query); +- if (messages == NULL) +- return 0; ++ status = notmuch_query_search_messages_st (query, &messages); ++ if (print_status_query ("notmuch count", query, status)) ++ return -1; + + for (; + notmuch_messages_valid (messages); +@@ -72,6 +74,7 @@ print_count (notmuch_database_t *notmuch, const char *query_str, + { + notmuch_query_t *query; + size_t i; ++ int count; + unsigned long revision; + const char *uuid; + int ret = 0; +@@ -93,7 +96,13 @@ print_count (notmuch_database_t *notmuch, const char *query_str, + printf ("%u", notmuch_query_count_threads (query)); + break; + case OUTPUT_FILES: +- printf ("%u", count_files (query)); ++ count = count_files (query); ++ if (count >= 0) { ++ printf ("%u", count); ++ } else { ++ ret = -1; ++ goto DONE; ++ } + break; + } + +@@ -104,6 +113,7 @@ print_count (notmuch_database_t *notmuch, const char *query_str, + fputs ("\n", stdout); + } + ++ DONE: + notmuch_query_destroy (query); + + return ret; +diff --git a/test/T060-count.sh b/test/T060-count.sh +index 5ef3879..3fec94e 100755 +--- a/test/T060-count.sh ++++ b/test/T060-count.sh +@@ -93,5 +93,35 @@ notmuch count --output=messages >>EXPECTED + notmuch count --output=messages tag:inbox >>EXPECTED + test_expect_equal_file EXPECTED OUTPUT + ++backup_database ++test_begin_subtest "error message for database open" ++dd if=/dev/zero of="${MAIL_DIR}/.notmuch/xapian/postlist.DB" count=3 ++notmuch count '*' 2>OUTPUT 1>/dev/null ++output=$(sed 's/^\(A Xapian exception [^:]*\):.*$/\1/' OUTPUT) ++test_expect_equal "${output}" "A Xapian exception occurred opening database" ++restore_database ++ ++cat < count-files.gdb ++set breakpoint pending on ++break count_files ++commands ++shell cp /dev/null ${MAIL_DIR}/.notmuch/xapian/postlist.DB ++continue ++end ++run ++EOF ++ ++backup_database ++test_begin_subtest "error message from query_search_messages" ++gdb --batch-silent --return-child-result -x count-files.gdb \ ++ --args notmuch count --output=files '*' 2>OUTPUT 1>/dev/null ++cat < EXPECTED ++notmuch count: A Xapian exception occurred ++A Xapian exception occurred performing query ++Query string was: * ++EOF ++sed 's/^\(A Xapian exception [^:]*\):.*$/\1/' < OUTPUT > OUTPUT.clean ++test_expect_equal_file EXPECTED OUTPUT.clean ++restore_database + + test_done +-- +2.5.1 + -- 2.26.2