X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=lib%2Fmessage.cc;h=baeaa46972867d10a1cc5cde801fac03c0817df1;hp=ea9c8bd96afb1b34ccb8ebb329c5f93ebcaa344b;hb=909f52bd8c4bdfa11cd3e75e3d0959e0293689bd;hpb=f93b7218c3e2d11c5b3cdd4c367a42ca7a7ede77 diff --git a/lib/message.cc b/lib/message.cc index ea9c8bd9..baeaa469 100644 --- a/lib/message.cc +++ b/lib/message.cc @@ -416,6 +416,24 @@ _notmuch_message_add_filename (notmuch_message_t *message, return NOTMUCH_STATUS_SUCCESS; } +/* Move the filename from the data field (as it was in database format + * version 0) to a file-direntry term instead (as in database format + * version 1). + */ +void +_notmuch_message_upgrade_filename_storage (notmuch_message_t *message) +{ + char *filename; + + filename = talloc_strdup (message, message->doc.get_data ().c_str ()); + if (filename && *filename != '\0') { + _notmuch_message_add_filename (message, filename); + message->doc.set_data (""); + _notmuch_message_sync (message); + } + talloc_free (filename); +} + const char * notmuch_message_get_filename (notmuch_message_t *message) { @@ -441,7 +459,10 @@ notmuch_message_get_filename (notmuch_message_t *message) { /* A message document created by an old version of notmuch * (prior to rename support) will have the filename in the - * data of the document rather than as a file-direntry term. */ + * data of the document rather than as a file-direntry term. + * + * It would be nice to do the upgrade of the document directly + * here, but the database is likely open in read-only mode. */ const char *data; data = message->doc.get_data ().c_str ();