X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=lib%2Fnotmuch-private.h;h=592cfb2b40d029aa19597b1a659efac436adb6ca;hp=3768d6f88d034bd3fe4401fa8993b56d6cd0deb5;hb=b099fc9ea77e7d1fc68b5dd10d1d3adc764c6efc;hpb=5b8b0377cb68904eac8fc58a933d47f605a81725 diff --git a/lib/notmuch-private.h b/lib/notmuch-private.h index 3768d6f8..592cfb2b 100644 --- a/lib/notmuch-private.h +++ b/lib/notmuch-private.h @@ -48,6 +48,8 @@ NOTMUCH_BEGIN_DECLS #include "xutil.h" +#pragma GCC visibility push(hidden) + #ifdef DEBUG # define DEBUG_DATABASE_SANITY 1 # define DEBUG_QUERY 1 @@ -55,6 +57,9 @@ NOTMUCH_BEGIN_DECLS #define COMPILE_TIME_ASSERT(pred) ((void)sizeof(char[1 - 2*!(pred)])) +#define STRNCMP_LITERAL(var, literal) \ + strncmp ((var), (literal), sizeof (literal) - 1) + /* There's no point in continuing when we've detected that we've done * something wrong internally (as opposed to the user passing in a * bogus value). @@ -108,6 +113,16 @@ typedef enum { * programmatically. */ #define NOTMUCH_TERM_MAX 245 +#define NOTMUCH_METADATA_THREAD_ID_PREFIX "thread_id_" + +/* For message IDs we have to be even more restrictive. Beyond fitting + * into the term limit, we also use message IDs to construct + * metadata-key values. And the documentation says that these should + * be restricted to about 200 characters. (The actual limit for the + * chert backend at least is 252.) + */ +#define NOTMUCH_MESSAGE_ID_MAX (200 - sizeof (NOTMUCH_METADATA_THREAD_ID_PREFIX)) + typedef enum _notmuch_private_status { /* First, copy all the public status values. */ NOTMUCH_PRIVATE_STATUS_SUCCESS = NOTMUCH_STATUS_SUCCESS, @@ -167,6 +182,9 @@ _notmuch_database_split_path (void *ctx, const char * _notmuch_database_get_directory_db_path (const char *path); +unsigned int +_notmuch_database_generate_doc_id (notmuch_database_t *notmuch); + notmuch_private_status_t _notmuch_database_find_unique_doc_id (notmuch_database_t *notmuch, const char *prefix_name, @@ -246,6 +264,10 @@ notmuch_status_t _notmuch_message_add_filename (notmuch_message_t *message, const char *filename); +notmuch_status_t +_notmuch_message_rename (notmuch_message_t *message, + const char *new_filename); + void _notmuch_message_ensure_thread_id (notmuch_message_t *message); @@ -429,6 +451,40 @@ _notmuch_tags_add_tag (notmuch_tags_t *tags, const char *tag); void _notmuch_tags_prepare_iterator (notmuch_tags_t *tags); +/* filenames.c */ + +typedef struct _notmuch_filename_node { + char *filename; + struct _notmuch_filename_node *next; +} notmuch_filename_node_t; + +typedef struct _notmuch_filename_list { + notmuch_filename_node_t *head; + notmuch_filename_node_t **tail; +} notmuch_filename_list_t; + +notmuch_filename_list_t * +_notmuch_filename_list_create (const void *ctx); + +/* Add 'filename' to 'list'. + * + * The list will create its own talloced copy of 'filename'. + */ +void +_notmuch_filename_list_add_filename (notmuch_filename_list_t *list, + const char *filename); + +void +_notmuch_filename_list_destroy (notmuch_filename_list_t *list); + +/* The notmuch_filenames_t is an iterator object for a + * notmuch_filename_list_t */ +notmuch_filenames_t * +_notmuch_filenames_create (const void *ctx, + notmuch_filename_list_t *list); + +#pragma GCC visibility pop + NOTMUCH_END_DECLS #endif