return _notmuch_messages_create (message->replies);
}
-/* Set the filename for 'message' to 'filename'.
- *
- * XXX: We should still figure out if we think it's important to store
- * multiple filenames for email messages with identical message IDs.
+/* Add an additional 'filename' for 'message'.
*
* This change will not be reflected in the database until the next
* call to _notmuch_message_set_sync. */
notmuch_status_t
-_notmuch_message_set_filename (notmuch_message_t *message,
+_notmuch_message_add_filename (notmuch_message_t *message,
const char *filename)
{
- const char *relative, *directory, *basename;
- char *term;
- Xapian::docid directory_id;
notmuch_status_t status;
void *local = talloc_new (message);
+ char *direntry;
if (message->filename) {
talloc_free (message->filename);
if (filename == NULL)
INTERNAL_ERROR ("Message filename cannot be NULL.");
- relative = _notmuch_database_relative_path (message->notmuch, filename);
-
- status = _notmuch_database_split_path (local, relative,
- &directory, &basename);
- if (status)
- return status;
-
- status = _notmuch_database_find_directory_id (message->notmuch, directory,
- &directory_id);
+ status = _notmuch_database_filename_to_direntry (local,
+ message->notmuch,
+ filename, &direntry);
if (status)
return status;
- term = talloc_asprintf (local, "%s%u:%s",
- _find_prefix ("direntry"), directory_id, basename);
-
- message->doc.add_term (term);
+ _notmuch_message_add_term (message, "file-direntry", direntry);
talloc_free (local);
const char *
notmuch_message_get_filename (notmuch_message_t *message)
{
- const char *prefix = _find_prefix ("direntry");
+ const char *prefix = _find_prefix ("file-direntry");
int prefix_len = strlen (prefix);
Xapian::TermIterator i;
char *direntry, *colon;