mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-25 04:18:08 +01:00
Move thread_id generation code from database.cc to message.cc
It's really up to the message to decide how to generate these.
This commit is contained in:
parent
97775ef438
commit
c78358fa8a
3 changed files with 41 additions and 36 deletions
36
database.cc
36
database.cc
|
@ -50,42 +50,6 @@ notmuch_status_to_string (notmuch_status_t status)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* "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)
|
|
||||||
typedef struct _thread_id {
|
|
||||||
char str[NOTMUCH_THREAD_ID_DIGITS + 1];
|
|
||||||
} thread_id_t;
|
|
||||||
|
|
||||||
static 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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* XXX: We should drop this function and convert all callers to call
|
/* XXX: We should drop this function and convert all callers to call
|
||||||
* _notmuch_message_add_term instead. */
|
* _notmuch_message_add_term instead. */
|
||||||
static void
|
static void
|
||||||
|
|
29
message.cc
29
message.cc
|
@ -205,6 +205,35 @@ notmuch_message_get_thread_ids (notmuch_message_t *message)
|
||||||
return thread_ids;
|
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. */
|
/* Synchronize changes made to message->doc into the database. */
|
||||||
static void
|
static void
|
||||||
_notmuch_message_sync (notmuch_message_t *message)
|
_notmuch_message_sync (notmuch_message_t *message)
|
||||||
|
|
|
@ -102,6 +102,18 @@ _notmuch_message_create (const void *talloc_owner,
|
||||||
notmuch_database_t *notmuch,
|
notmuch_database_t *notmuch,
|
||||||
unsigned int doc_id);
|
unsigned int doc_id);
|
||||||
|
|
||||||
|
/* XXX: Here temporarily during code movement only. */
|
||||||
|
/* "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)
|
||||||
|
typedef struct _thread_id {
|
||||||
|
char str[NOTMUCH_THREAD_ID_DIGITS + 1];
|
||||||
|
} thread_id_t;
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
thread_id_generate (thread_id_t *thread_id);
|
||||||
|
|
||||||
/* Lookup a prefix value by name.
|
/* Lookup a prefix value by name.
|
||||||
*
|
*
|
||||||
* XXX: This should really be static inside of message.cc, and we can
|
* XXX: This should really be static inside of message.cc, and we can
|
||||||
|
|
Loading…
Reference in a new issue