Previously, this was performed by notmuch_database_add_message. This
happens to be the only caller currently (which is why this was safe),
but we're about to introduce more callers, and it makes more sense to
put responsibility for ID compression in the lower-level function
rather than requiring each caller to handle it.
*
* notmuch-sha1-<sha1_sum_of_message_id>
*/
*
* notmuch-sha1-<sha1_sum_of_message_id>
*/
-static char *
-_message_id_compressed (void *ctx, const char *message_id)
+char *
+_notmuch_message_id_compressed (void *ctx, const char *message_id)
{
char *sha1, *compressed;
{
char *sha1, *compressed;
return NOTMUCH_STATUS_NULL_POINTER;
if (strlen (message_id) > NOTMUCH_MESSAGE_ID_MAX)
return NOTMUCH_STATUS_NULL_POINTER;
if (strlen (message_id) > NOTMUCH_MESSAGE_ID_MAX)
- message_id = _message_id_compressed (notmuch, message_id);
+ message_id = _notmuch_message_id_compressed (notmuch, message_id);
try {
status = _notmuch_database_find_unique_doc_id (notmuch, "id",
try {
status = _notmuch_database_find_unique_doc_id (notmuch, "id",
_get_metadata_thread_id_key (void *ctx, const char *message_id)
{
if (strlen (message_id) > NOTMUCH_MESSAGE_ID_MAX)
_get_metadata_thread_id_key (void *ctx, const char *message_id)
{
if (strlen (message_id) > NOTMUCH_MESSAGE_ID_MAX)
- message_id = _message_id_compressed (ctx, message_id);
+ message_id = _notmuch_message_id_compressed (ctx, message_id);
return talloc_asprintf (ctx, NOTMUCH_METADATA_THREAD_ID_PREFIX "%s",
message_id);
return talloc_asprintf (ctx, NOTMUCH_METADATA_THREAD_ID_PREFIX "%s",
message_id);
* better than no message-id at all. */
if (message_id == NULL)
message_id = talloc_strdup (message_file, header);
* better than no message-id at all. */
if (message_id == NULL)
message_id = talloc_strdup (message_file, header);
-
- /* If a message ID is too long, substitute its sha1 instead. */
- if (message_id && strlen (message_id) > NOTMUCH_MESSAGE_ID_MAX) {
- char *compressed = _message_id_compressed (message_file,
- message_id);
- talloc_free (message_id);
- message_id = compressed;
- }
}
if (message_id == NULL ) {
}
if (message_id == NULL ) {
else if (*status_ret)
return NULL;
else if (*status_ret)
return NULL;
+ /* If the message ID is too long, substitute its sha1 instead. */
+ if (strlen (message_id) > NOTMUCH_MESSAGE_ID_MAX)
+ message_id = _notmuch_message_id_compressed (message, message_id);
+
term = talloc_asprintf (NULL, "%s%s",
_find_prefix ("id"), message_id);
if (term == NULL) {
term = talloc_asprintf (NULL, "%s%s",
_find_prefix ("id"), message_id);
if (term == NULL) {
const char *
_find_prefix (const char *name);
const char *
_find_prefix (const char *name);
+char *
+_notmuch_message_id_compressed (void *ctx, const char *message_id);
+
notmuch_status_t
_notmuch_database_ensure_writable (notmuch_database_t *notmuch);
notmuch_status_t
_notmuch_database_ensure_writable (notmuch_database_t *notmuch);