Code looks good. Maybe put messages before threads in the documentation (both in the | list and in the descriptions), since that's the default? The output documentation for search does that. "--output" is an unfortunate name for this option since the *output* of count is always a count, but this seems necessary for consistency. On Sun, 6 Nov 2011 23:47:13 +0200, Jani Nikula <jani@nikula.org> wrote: > Add support for --output=messages (which remains the default) and > --output=threads to notmuch count. > > Signed-off-by: Jani Nikula <jani@nikula.org> > --- > NEWS | 5 +++++ > notmuch-count.c | 18 ++++++++++++++++-- > notmuch.1 | 29 +++++++++++++++++++++++++---- > 3 files changed, 46 insertions(+), 6 deletions(-) > > diff --git a/NEWS b/NEWS > index bfdba7b..009811f 100644 > --- a/NEWS > +++ b/NEWS > @@ -28,6 +28,11 @@ Add "notmuch search" --first and --maxitems options > The search command now takes options --first=[-]N and --maxitems=N to limit > the number of results shown. > > +Add "notmuch count --output" option > + > + The count command is now capable of counting threads in addition to > + messages. This is selected using the new --output=(threads|messages) option. > + > Notmuch 0.9 (2011-10-01) > ======================== > > diff --git a/notmuch-count.c b/notmuch-count.c > index a35be40..20ce334 100644 > --- a/notmuch-count.c > +++ b/notmuch-count.c > @@ -29,6 +29,7 @@ notmuch_count_command (void *ctx, int argc, char *argv[]) > notmuch_query_t *query; > char *query_str; > int i; > + notmuch_bool_t output_messages = TRUE; > > argc--; argv++; /* skip subcommand argument */ > > @@ -37,7 +38,17 @@ notmuch_count_command (void *ctx, int argc, char *argv[]) > i++; > break; > } > - { > + if (STRNCMP_LITERAL (argv[i], "--output=") == 0) { > + const char *opt = argv[i] + sizeof ("--output=") - 1; > + if (strcmp (opt, "threads") == 0) { > + output_messages = FALSE; > + } else if (strcmp (opt, "messages") == 0) { > + output_messages = TRUE; > + } else { > + fprintf (stderr, "Invalid value for --output: %s\n", opt); > + return 1; > + } > + } else { > fprintf (stderr, "Unrecognized option: %s\n", argv[i]); > return 1; > } > @@ -71,7 +82,10 @@ notmuch_count_command (void *ctx, int argc, char *argv[]) > return 1; > } > > - printf ("%u\n", notmuch_query_count_messages(query)); > + if (output_messages) > + printf ("%u\n", notmuch_query_count_messages (query)); > + else > + printf ("%u\n", notmuch_query_count_threads (query)); > > notmuch_query_destroy (query); > notmuch_database_close (notmuch); > diff --git a/notmuch.1 b/notmuch.1 > index c97334c..f53c183 100644 > --- a/notmuch.1 > +++ b/notmuch.1 > @@ -374,14 +374,35 @@ section below for details of the supported syntax for <search-terms>. > .RE > .RS 4 > .TP 4 > -.BR count " <search-term>..." > +.BR count " [options...] <search-term>..." > > Count messages matching the search terms. > > -The number of matching messages is output to stdout. > +The number of matching messages (or threads) is output to stdout. > > -With no search terms, a count of all messages in the database will be > -displayed. > +With no search terms, a count of all messages (or threads) in the database will > +be displayed. > + > +Supported options for > +.B count > +include > +.RS 4 > +.TP 4 > +.B \-\-output=(threads|messages) > + > +.RS 4 > +.TP 4 > +.B threads > + > +Output the number of matching threads. > +.RE > +.RS 4 > +.TP 4 > +.B messages > + > +Output the number of matching messages. This is the default. > +.RE > +.RE > .RE > .RE > > -- > 1.7.5.4 >