X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=lib%2Fnotmuch.h;h=7c3a30c1adb1fb90e299d99c6fba1161bab8d0a7;hp=998a4ae6fa46e6e5975739db9244e31af767f44b;hb=2fd7ef64baf02892a7bebfb57d593afb086145ef;hpb=3fbb518335fe2271a31a6c4779affa4df42cf203 diff --git a/lib/notmuch.h b/lib/notmuch.h index 998a4ae6..7c3a30c1 100644 --- a/lib/notmuch.h +++ b/lib/notmuch.h @@ -41,6 +41,30 @@ NOTMUCH_BEGIN_DECLS #define TRUE 1 #endif +#define NOTMUCH_MAJOR_VERSION 0 +#define NOTMUCH_MINOR_VERSION 17 +#define NOTMUCH_MICRO_VERSION 0 + +/* + * Check the version of the notmuch library being compiled against. + * + * Return true if the library being compiled against is of the + * specified version or above. For example: + * + * #if NOTMUCH_CHECK_VERSION(0, 18, 0) + * (code requiring notmuch 0.18 or above) + * #endif + * + * NOTMUCH_CHECK_VERSION has been defined since version 0.17.0; you + * can use #if !defined(NOTMUCH_CHECK_VERSION) to check for versions + * prior to that. + */ +#define NOTMUCH_CHECK_VERSION (major, minor, micro) \ + (NOTMUCH_MAJOR_VERSION > (major) || \ + (NOTMUCH_MAJOR_VERSION == (major) && NOTMUCH_MINOR_VERSION > (minor)) || \ + (NOTMUCH_MAJOR_VERSION == (major) && NOTMUCH_MINOR_VERSION == (minor) && \ + NOTMUCH_MICRO_VERSION >= (micro))) + typedef int notmuch_bool_t; /* Status codes used for the return values of most functions. @@ -101,6 +125,7 @@ typedef enum _notmuch_status { NOTMUCH_STATUS_TAG_TOO_LONG, NOTMUCH_STATUS_UNBALANCED_FREEZE_THAW, NOTMUCH_STATUS_UNBALANCED_ATOMIC, + NOTMUCH_STATUS_UNSUPPORTED_OPERATION, NOTMUCH_STATUS_LAST_STATUS } notmuch_status_t; @@ -215,8 +240,30 @@ notmuch_database_open (const char *path, void notmuch_database_close (notmuch_database_t *database); +/* A callback invoked by notmuch_database_compact to notify the user + * of the progress of the compaction process. + */ +typedef void (*notmuch_compact_status_cb_t)(const char *message, void *closure); + +/* Compact a notmuch database, backing up the original database to the + * given path. + * + * The database will be opened with NOTMUCH_DATABASE_MODE_READ_WRITE + * during the compaction process to ensure no writes are made. + * + * If the optional callback function 'status_cb' is non-NULL, it will + * be called with diagnostic and informational messages. The argument + * 'closure' is passed verbatim to any callback invoked. + */ +notmuch_status_t +notmuch_database_compact (const char* path, + const char* backup_path, + notmuch_compact_status_cb_t status_cb, + void *closure); + /* Destroy the notmuch database, closing it if necessary and freeing -* all associated resources. */ + * all associated resources. + */ void notmuch_database_destroy (notmuch_database_t *database); @@ -250,7 +297,8 @@ notmuch_database_needs_upgrade (notmuch_database_t *database); * provide progress indication to the user. If non-NULL it will be * called periodically with 'progress' as a floating-point value in * the range of [0.0 .. 1.0] indicating the progress made so far in - * the upgrade process. + * the upgrade process. The argument 'closure' is passed verbatim to + * any callback invoked. */ notmuch_status_t notmuch_database_upgrade (notmuch_database_t *database, @@ -746,12 +794,16 @@ notmuch_thread_get_total_messages (notmuch_thread_t *thread); * This iterator will not necessarily iterate over all of the messages * in the thread. It will only iterate over the messages in the thread * which are not replies to other messages in the thread. + * + * The returned list will be destroyed when the thread is destroyed. */ notmuch_messages_t * notmuch_thread_get_toplevel_messages (notmuch_thread_t *thread); /* Get a notmuch_thread_t iterator for all messages in 'thread' in * oldest-first order. + * + * The returned list will be destroyed when the thread is destroyed. */ notmuch_messages_t * notmuch_thread_get_messages (notmuch_thread_t *thread);