From 91cf2dcec768f87ff956fd5a0fbf8aac2f2c2b90 Mon Sep 17 00:00:00 2001 From: "Dirk-Jan C. Binnema" Date: Thu, 30 Sep 2021 15:18:50 +0300 Subject: [PATCH] mu-find: unbreak json output Fixes: #2149 Needs backporting to 1.6.x --- mu/mu-cmd-find.cc | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/mu/mu-cmd-find.cc b/mu/mu-cmd-find.cc index e56a6887..b9c1e475 100644 --- a/mu/mu-cmd-find.cc +++ b/mu/mu-cmd-find.cc @@ -1,5 +1,5 @@ /* -** Copyright (C) 2008-2020 Dirk-Jan C. Binnema +** Copyright (C) 2008-2021 Dirk-Jan C. Binnema ** ** This program is free software; you can redistribute it and/or modify it ** under the terms of the GNU General Public License as published by the @@ -47,6 +47,7 @@ struct OutputInfo{ Xapian::docid docid{}; bool header{}; bool footer{}; + bool last{}; Option match_info; }; @@ -522,8 +523,8 @@ output_json (MuMsg *msg, const OutputInfo& info, const MuConfig *opts, GError ** return true; } - g_print("%s\n", msg_to_sexp(msg, info.docid, MU_MSG_OPTION_HEADERS_ONLY) - .to_sexp_string().c_str()); + g_print("%s%s\n", msg_to_sexp(msg, info.docid, MU_MSG_OPTION_HEADERS_ONLY) + .to_json_string().c_str(), info.last ? "" : ","); return true; } @@ -598,8 +599,10 @@ output_query_results (const QueryResults& qres, const MuConfig *opts, GError **e gboolean rv{true}; output_func (NULL, FirstOutput, opts, NULL); + size_t n{0}; for (auto&& item: qres) { + n++; auto msg{item.floating_msg()}; if (!msg) continue; @@ -607,7 +610,9 @@ output_query_results (const QueryResults& qres, const MuConfig *opts, GError **e if (opts->after != 0 && mu_msg_get_timestamp(msg) < opts->after) continue; - rv = output_func (msg, {item.doc_id(), false, false, item.query_match()}, + rv = output_func (msg, {item.doc_id(), false, false, + n == qres.size(), /* last? */ + item.query_match()}, opts, err); if (!rv) break;