]> git.notmuchmail.org Git - notmuch/blobdiff - lib/database.cc
lib: read "property" terms from messages.
[notmuch] / lib / database.cc
index 66ee267fe50ebb89b3e5feda2d4b88089d414800..33e22d86eae541668b6a896d1ae11fbde732dec0 100644 (file)
@@ -251,6 +251,7 @@ static prefix_t BOOLEAN_PREFIX_INTERNAL[] = {
     { "directory",             "XDIRECTORY" },
     { "file-direntry",         "XFDIRENTRY" },
     { "directory-direntry",    "XDDIRENTRY" },
+    { "property",               "XPROPERTY"  },
 };
 
 static prefix_t BOOLEAN_PREFIX_EXTERNAL[] = {
@@ -260,10 +261,10 @@ static prefix_t BOOLEAN_PREFIX_EXTERNAL[] = {
     { "id",                    "Q" },
     { "path",                  "P" },
     /*
-     * Without the ":", since this is a multi-letter prefix, Xapian
-     * will add a colon itself if the first letter of the path is
-     * upper-case ASCII. Including the ":" forces there to always be a
-     * colon, which keeps our own logic simpler.
+     * Unconditionally add ':' to reduce potential ambiguity with
+     * overlapping prefixes and/or terms that start with capital
+     * letters. See Xapian document termprefixes.html for related
+     * discussion.
      */
     { "folder",                        "XFOLDER:" },
 };
@@ -383,6 +384,22 @@ _notmuch_database_log (notmuch_database_t *notmuch,
        talloc_free (notmuch->status_string);
 
     notmuch->status_string = talloc_vasprintf (notmuch, format, va_args);
+    va_end (va_args);
+}
+
+void
+_notmuch_database_log_append (notmuch_database_t *notmuch,
+                     const char *format,
+                     ...)
+{
+    va_list va_args;
+
+    va_start (va_args, format);
+
+    if (notmuch->status_string)
+       notmuch->status_string = talloc_vasprintf_append (notmuch->status_string, format, va_args);
+    else
+       notmuch->status_string = talloc_vasprintf (notmuch, format, va_args);
 
     va_end (va_args);
 }