From 6142216132ca5aa2727431e8cde44422de6ed24c Mon Sep 17 00:00:00 2001 From: Carl Worth Date: Wed, 21 Oct 2009 14:07:40 -0700 Subject: [PATCH 1/1] Move find_prefix function from database.cc to message.cc It's definitely a better fit there for now, (and can likely eventually be made static as add_term moves from database to message as well). --- database.cc | 59 ++--------------------------------------------- message.cc | 52 +++++++++++++++++++++++++++++++++++++++++ notmuch-private.h | 7 ++++++ 3 files changed, 61 insertions(+), 57 deletions(-) diff --git a/database.cc b/database.cc index e73e210d..b73b806e 100644 --- a/database.cc +++ b/database.cc @@ -28,61 +28,6 @@ using namespace std; -#define ARRAY_SIZE(arr) (sizeof (arr) / sizeof (arr[0])) - -/* Xapian complains if we provide a term longer than this. */ -#define NOTMUCH_MAX_TERM 245 - -/* These prefix values are specifically chosen to be compatible - * with sup, (http://sup.rubyforge.org), written by - * William Morgan , and released - * under the GNU GPL v2. - */ - -typedef struct { - const char *name; - const char *prefix; -} prefix_t; - -prefix_t NORMAL_PREFIX[] = { - { "subject", "S" }, - { "body", "B" }, - { "from_name", "FN" }, - { "to_name", "TN" }, - { "name", "N" }, - { "attachment", "A" } -}; - -prefix_t BOOLEAN_PREFIX[] = { - { "type", "K" }, - { "from_email", "FE" }, - { "to_email", "TE" }, - { "email", "E" }, - { "date", "D" }, - { "label", "L" }, - { "source_id", "I" }, - { "attachment_extension", "O" }, - { "msgid", "Q" }, - { "thread", "H" }, - { "ref", "R" } -}; - -static const char * -find_prefix (const char *name) -{ - unsigned int i; - - for (i = 0; i < ARRAY_SIZE (NORMAL_PREFIX); i++) - if (strcmp (name, NORMAL_PREFIX[i].name) == 0) - return NORMAL_PREFIX[i].prefix; - - for (i = 0; i < ARRAY_SIZE (BOOLEAN_PREFIX); i++) - if (strcmp (name, BOOLEAN_PREFIX[i].name) == 0) - return BOOLEAN_PREFIX[i].prefix; - - return ""; -} - /* "128 bits of thread-id ought to be enough for anybody" */ #define NOTMUCH_THREAD_ID_BITS 128 #define NOTMUCH_THREAD_ID_DIGITS (NOTMUCH_THREAD_ID_BITS / 4) @@ -130,7 +75,7 @@ add_term (Xapian::Document doc, if (value == NULL) return; - prefix = find_prefix (prefix_name); + prefix = _find_prefix (prefix_name); term = g_strdup_printf ("%s%s", prefix, value); @@ -150,7 +95,7 @@ find_messages_by_term (Xapian::Database *db, Xapian::PostingIterator i; char *term; - term = g_strdup_printf ("%s%s", find_prefix (prefix_name), value); + term = g_strdup_printf ("%s%s", _find_prefix (prefix_name), value); *begin = db->postlist_begin (term); diff --git a/message.cc b/message.cc index ca4a16c7..cce304ce 100644 --- a/message.cc +++ b/message.cc @@ -32,6 +32,58 @@ struct _notmuch_tags { Xapian::TermIterator iterator_end; }; +#define ARRAY_SIZE(arr) (sizeof (arr) / sizeof (arr[0])) + +/* These prefix values are specifically chosen to be compatible + * with sup, (http://sup.rubyforge.org), written by + * William Morgan , and released + * under the GNU GPL v2. + */ + +typedef struct { + const char *name; + const char *prefix; +} prefix_t; + +prefix_t NORMAL_PREFIX[] = { + { "subject", "S" }, + { "body", "B" }, + { "from_name", "FN" }, + { "to_name", "TN" }, + { "name", "N" }, + { "attachment", "A" } +}; + +prefix_t BOOLEAN_PREFIX[] = { + { "type", "K" }, + { "from_email", "FE" }, + { "to_email", "TE" }, + { "email", "E" }, + { "date", "D" }, + { "label", "L" }, + { "source_id", "I" }, + { "attachment_extension", "O" }, + { "msgid", "Q" }, + { "thread", "H" }, + { "ref", "R" } +}; + +const char * +_find_prefix (const char *name) +{ + unsigned int i; + + for (i = 0; i < ARRAY_SIZE (NORMAL_PREFIX); i++) + if (strcmp (name, NORMAL_PREFIX[i].name) == 0) + return NORMAL_PREFIX[i].prefix; + + for (i = 0; i < ARRAY_SIZE (BOOLEAN_PREFIX); i++) + if (strcmp (name, BOOLEAN_PREFIX[i].name) == 0) + return BOOLEAN_PREFIX[i].prefix; + + return ""; +} + /* We end up having to call the destructor explicitly because we had * to use "placement new" in order to initialize C++ objects within a * block that we allocated with talloc. So C++ is making talloc diff --git a/notmuch-private.h b/notmuch-private.h index c60c4d89..384cc2de 100644 --- a/notmuch-private.h +++ b/notmuch-private.h @@ -76,6 +76,9 @@ typedef enum { NOTMUCH_VALUE_DATE = 2 } notmuch_value_t; +/* Xapian complains if we provide a term longer than this. */ +#define NOTMUCH_MAX_TERM 245 + /* message.cc */ notmuch_message_t * @@ -83,6 +86,10 @@ _notmuch_message_create (notmuch_results_t *owner, notmuch_database_t *notmuch, unsigned int doc_id); +/* Lookup a prefix value by name. */ +const char * +_find_prefix (const char *name); + /* message-file.c */ /* XXX: I haven't decided yet whether these will actually get exported -- 2.43.0