From 206938ec9b4ddee28793f2f052a5314d6d7ab08d Mon Sep 17 00:00:00 2001 From: Austin Clements Date: Thu, 9 Dec 2010 00:32:35 -0500 Subject: Add a generic function to get a list of terms with some prefix. Replace _notmuch_convert_tags with this and simplify _create_filenames_for_terms_with_prefix. This will also come in handy shortly to get the message file name list. --- lib/directory.cc | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) (limited to 'lib/directory.cc') diff --git a/lib/directory.cc b/lib/directory.cc index aeee9caf..70e1693e 100644 --- a/lib/directory.cc +++ b/lib/directory.cc @@ -23,10 +23,6 @@ /* Create an iterator to iterate over the basenames of files (or * directories) that all share a common parent directory. - * - * The code here is general enough to be reused for any case of - * iterating over the non-prefixed portion of terms sharing a common - * prefix. */ static notmuch_filenames_t * _create_filenames_for_terms_with_prefix (void *ctx, @@ -35,21 +31,14 @@ _create_filenames_for_terms_with_prefix (void *ctx, { notmuch_string_list_t *filename_list; Xapian::TermIterator i, end; - int prefix_len = strlen (prefix); - filename_list = _notmuch_string_list_create (ctx); + i = notmuch->xapian_db->allterms_begin(); + end = notmuch->xapian_db->allterms_end(); + filename_list = _notmuch_database_get_terms_with_prefix (ctx, i, end, + prefix); if (unlikely (filename_list == NULL)) return NULL; - end = notmuch->xapian_db->allterms_end (prefix); - - for (i = notmuch->xapian_db->allterms_begin (prefix); i != end; i++) - { - std::string term = *i; - - _notmuch_string_list_append (filename_list, term.c_str () + prefix_len); - } - return _notmuch_filenames_create (ctx, filename_list); } -- cgit v1.2.3