* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
- * along with this program. If not, see http://www.gnu.org/licenses/ .
+ * along with this program. If not, see https://www.gnu.org/licenses/ .
*
* Author: Carl Worth <cworth@cworth.org>
*/
from, relative_date, tags);
}
+static const char *_get_disposition(GMimeObject *meta)
+{
+ GMimeContentDisposition *disposition;
+
+ disposition = g_mime_object_get_content_disposition (meta);
+ if (!disposition)
+ return NULL;
+
+ return g_mime_content_disposition_get_disposition (disposition);
+}
+
/* Emit a sequence of key/value pairs for the metadata of message.
* The caller should begin a map before calling this. */
static void
sp->boolean (sp, notmuch_message_get_flag (message, NOTMUCH_MESSAGE_FLAG_EXCLUDED));
sp->map_key (sp, "filename");
- sp->string (sp, notmuch_message_get_filename (message));
+ if (notmuch_format_version >= 3) {
+ notmuch_filenames_t *filenames;
+
+ sp->begin_list (sp);
+ for (filenames = notmuch_message_get_filenames (message);
+ notmuch_filenames_valid (filenames);
+ notmuch_filenames_move_to_next (filenames)) {
+ sp->string (sp, notmuch_filenames_get (filenames));
+ }
+ notmuch_filenames_destroy (filenames);
+ sp->end (sp);
+ } else {
+ sp->string (sp, notmuch_message_get_filename (message));
+ }
sp->map_key (sp, "timestamp");
date = notmuch_message_get_date (message);
notmuch_message_get_flag (message, NOTMUCH_MESSAGE_FLAG_EXCLUDED) ? 1 : 0,
notmuch_message_get_filename (message));
} else {
- GMimeContentDisposition *disposition = g_mime_object_get_content_disposition (meta);
+ const char *disposition = _get_disposition (meta);
const char *cid = g_mime_object_get_content_id (meta);
const char *filename = leaf ?
g_mime_part_get_filename (GMIME_PART (node->part)) : NULL;
if (disposition &&
- strcmp (disposition->disposition, GMIME_DISPOSITION_ATTACHMENT) == 0)
+ strcasecmp (disposition, GMIME_DISPOSITION_ATTACHMENT) == 0)
part_type = "attachment";
else
part_type = "part";
GMimeObject *meta = node->envelope_part ?
GMIME_OBJECT (node->envelope_part) : node->part;
GMimeContentType *content_type = g_mime_object_get_content_type (meta);
+ const char *disposition = _get_disposition (meta);
const char *cid = g_mime_object_get_content_id (meta);
const char *filename = GMIME_IS_PART (node->part) ?
g_mime_part_get_filename (GMIME_PART (node->part)) : NULL;
sp->map_key (sp, "content-type");
sp->string (sp, g_mime_content_type_to_string (content_type));
+ if (disposition) {
+ sp->map_key (sp, "content-disposition");
+ sp->string (sp, disposition);
+ }
+
if (cid) {
sp->map_key (sp, "content-id");
sp->string (sp, cid);
return 1;
if (count != 1) {
- fprintf (stderr, "Error: search term did not match precisely one message.\n");
+ fprintf (stderr, "Error: search term did not match precisely one message (matched %d messages).\n", count);
return 1;
}