]> git.notmuchmail.org Git - notmuch/blobdiff - lib/notmuch.h
Fix double free in guess_from_received_header().
[notmuch] / lib / notmuch.h
index b15f12499439732448168fdd9731b811203509e7..e508309ebfcf01c95b52555baa9cc992daab5c3e 100644 (file)
@@ -772,11 +772,24 @@ notmuch_message_get_replies (notmuch_message_t *message);
  * 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
@@ -902,19 +915,19 @@ notmuch_message_remove_all_tags (notmuch_message_t *message);
  * 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
@@ -934,23 +947,24 @@ notmuch_message_maildir_flags_to_tags (notmuch_message_t *message);
  *
  * 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".