aboutsummaryrefslogtreecommitdiff
path: root/message.cc
diff options
context:
space:
mode:
authorCarl Worth <cworth@cworth.org>2009-10-23 05:25:58 -0700
committerCarl Worth <cworth@cworth.org>2009-10-23 05:25:58 -0700
commitc78358fa8adc0e8fa4f889e479df76e8df186264 (patch)
treef3150d98f018857234469dcf986512d857ed8bda /message.cc
parent97775ef438a6015c63d6a5cf25f85937153cde59 (diff)
Move thread_id generation code from database.cc to message.cc
It's really up to the message to decide how to generate these.
Diffstat (limited to 'message.cc')
-rw-r--r--message.cc29
1 files changed, 29 insertions, 0 deletions
diff --git a/message.cc b/message.cc
index 74a173e1..4e59fce0 100644
--- a/message.cc
+++ b/message.cc
@@ -205,6 +205,35 @@ notmuch_message_get_thread_ids (notmuch_message_t *message)
return thread_ids;
}
+void
+thread_id_generate (thread_id_t *thread_id)
+{
+ static int seeded = 0;
+ FILE *dev_random;
+ uint32_t value;
+ char *s;
+ int i;
+
+ if (! seeded) {
+ dev_random = fopen ("/dev/random", "r");
+ if (dev_random == NULL) {
+ srand (time (NULL));
+ } else {
+ fread ((void *) &value, sizeof (value), 1, dev_random);
+ srand (value);
+ fclose (dev_random);
+ }
+ seeded = 1;
+ }
+
+ s = thread_id->str;
+ for (i = 0; i < NOTMUCH_THREAD_ID_DIGITS; i += 8) {
+ value = rand ();
+ sprintf (s, "%08x", value);
+ s += 8;
+ }
+}
+
/* Synchronize changes made to message->doc into the database. */
static void
_notmuch_message_sync (notmuch_message_t *message)