/* Get a string representation of a notmuch_status_t value.
*
- * The result is readonly.
+ * The result is read-only.
*/
const char *
notmuch_status_to_string (notmuch_status_t status);
*
* It's not strictly necessary to call this function. All memory from
* the notmuch_threads_t object will be reclaimed when the
- * containg query object is destroyed.
+ * containing query object is destroyed.
*/
void
notmuch_threads_destroy (notmuch_threads_t *threads);
* Note: If this message corresponds to multiple files in the mail
* store, (that is, multiple files contain identical message IDs),
* this function will arbitrarily return a single one of those
- * filenames.
+ * filenames. See notmuch_message_get_filenames for returning the
+ * complete list of filenames.
*/
const char *
notmuch_message_get_filename (notmuch_message_t *message);
+/* Get all filenames for the email corresponding to 'message'.
+ *
+ * Returns a notmuch_filenames_t iterator listing all the filenames
+ * associated with 'message'. These files may not have identical
+ * content, but each will have the identical Message-ID.
+ *
+ * Each filename in the iterator is an absolute filename, (the initial
+ * component will match notmuch_database_get_path() ).
+ */
+notmuch_filenames_t *
+notmuch_message_get_filenames (notmuch_message_t *message);
+
/* Message flags */
typedef enum _notmuch_message_flag {
NOTMUCH_MESSAGE_FLAG_MATCH
* flags, and adds or removes tags on 'message' as follows when these
* flags are present:
*
- * Flag Action
- * ---- ------
+ * Flag Action if present
+ * ---- -----------------
* 'D' Adds the "draft" tag to the message
* 'F' Adds the "flagged" tag to the message
* 'P' Adds the "passed" tag to the message
* 'R' Adds the "replied" tag to the message
* 'S' Removes the "unread" tag from the message
*
- * The only filenames examined for flags are filenames which appear to
- * be within a maildir directory, (the file must be in a directory
- * named "new" or "cur" and there must be a neighboring directory
- * named respectively "cur" or "new"). The flags are identified as
- * trailing components of the filename after a sequence of ":2,".
+ * For each flag that is not present, the opposite action (add/remove)
+ * is performed for the corresponding tags.
+ *
+ * Flags are identified as trailing components of the filename after a
+ * sequence of ":2,".
*
* If there are multiple filenames associated with this message, the
* flag is considered present if it appears in one or more
*
* Specifically, for each filename corresponding to this message:
*
- * If the filename is not in a maildir directory, do nothing.
- * (A maildir directory is determined as a directory named "new" or
- * "cur" with a neighboring directory named respectively "cur" or
- * "new".)
+ * If the filename is not in a maildir directory, do nothing. (A
+ * maildir directory is determined as a directory named "new" or
+ * "cur".) Similarly, if the filename has invalid maildir info,
+ * (repeated or outof-ASCII-order flag characters after ":2,"), then
+ * do nothing.
*
* If the filename is in a maildir directory, rename the file so that
* its filename ends with the sequence ":2," followed by zero or more
* of the following single-character flags (in ASCII order):
*
- * 'D' if the message has the "draft" tag
- * 'F' if the message has the "flagged" tag
- * 'P' if the message has the "passed" tag
- * 'R' if the message has the "replied" tag
- * 'S' if the message does not have the "unread" tag
+ * 'D' iff the message has the "draft" tag
+ * 'F' iff the message has the "flagged" tag
+ * 'P' iff the message has the "passed" tag
+ * 'R' iff the message has the "replied" tag
+ * 'S' iff the message does not have the "unread" tag
*
- * Any existing flags unmentioned in the list above are left
- * unaffected by the rename.
+ * Any existing flags unmentioned in the list above will be preserved
+ * in the renaming.
*
* Also, if this filename is in a directory named "new", rename it to
* be within the neighboring directory named "cur".