aboutsummaryrefslogtreecommitdiffhomepage
path: root/database.cc
diff options
context:
space:
mode:
authorGravatar Carl Worth <cworth@cworth.org>2009-10-24 21:52:48 -0700
committerGravatar Carl Worth <cworth@cworth.org>2009-10-24 21:52:48 -0700
commite37b7cc2da75c9a43e31c1fa6d29f1177445c1d8 (patch)
tree0ace6d81e92b24c1dc597bb427c6d55c820c704c /database.cc
parente1e1f0cb3bf020cb8d8af219c58187abbd33ae23 (diff)
Move the prefix-string arrays back into database.cc from message.cc
Yes, I'm being wishy-washy here, moving code back and forth. But this is where these really do belong.
Diffstat (limited to 'database.cc')
-rw-r--r--database.cc57
1 files changed, 57 insertions, 0 deletions
diff --git a/database.cc b/database.cc
index 712ab260..7a3019e1 100644
--- a/database.cc
+++ b/database.cc
@@ -28,6 +28,63 @@
using namespace std;
+#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 <wmorgan-sup@masanjin.net>, 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" },
+ { "tag", "L" },
+ { "source_id", "I" },
+ { "attachment_extension", "O" },
+ { "msgid", "Q" },
+ { "thread", "H" },
+ { "ref", "R" },
+ { "timestamp", "KTS" },
+};
+
+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;
+
+ fprintf (stderr, "Internal error: No prefix exists for '%s'\n", name);
+ exit (1);
+
+ return "";
+}
+
const char *
notmuch_status_to_string (notmuch_status_t status)
{