mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-21 18:38:08 +01:00
lib: split notmuch_database_compact
The "back end" function takes an open notmuch database, which should know its own path (i.e. the path needs to be cached in the configuration data).
This commit is contained in:
parent
87e3a82feb
commit
5232462dcf
2 changed files with 45 additions and 9 deletions
|
@ -705,27 +705,51 @@ notmuch_database_compact (const char *path,
|
|||
notmuch_compact_status_cb_t status_cb,
|
||||
void *closure)
|
||||
{
|
||||
void *local;
|
||||
char *notmuch_path, *xapian_path, *compact_xapian_path;
|
||||
notmuch_status_t ret = NOTMUCH_STATUS_SUCCESS;
|
||||
notmuch_database_t *notmuch = NULL;
|
||||
struct stat statbuf;
|
||||
bool keep_backup;
|
||||
char *message = NULL;
|
||||
|
||||
local = talloc_new (NULL);
|
||||
if (! local)
|
||||
return NOTMUCH_STATUS_OUT_OF_MEMORY;
|
||||
|
||||
ret = notmuch_database_open_verbose (path,
|
||||
NOTMUCH_DATABASE_MODE_READ_WRITE,
|
||||
¬much,
|
||||
&message);
|
||||
if (ret) {
|
||||
if (status_cb) status_cb (message, closure);
|
||||
goto DONE;
|
||||
return ret;
|
||||
}
|
||||
|
||||
_notmuch_config_cache (notmuch, NOTMUCH_CONFIG_DATABASE_PATH, path);
|
||||
|
||||
return notmuch_database_compact_db (notmuch,
|
||||
backup_path,
|
||||
status_cb,
|
||||
closure);
|
||||
}
|
||||
|
||||
notmuch_status_t
|
||||
notmuch_database_compact_db (notmuch_database_t *notmuch,
|
||||
const char *backup_path,
|
||||
notmuch_compact_status_cb_t status_cb,
|
||||
void *closure) {
|
||||
void *local;
|
||||
char *notmuch_path, *xapian_path, *compact_xapian_path;
|
||||
const char* path;
|
||||
notmuch_status_t ret = NOTMUCH_STATUS_SUCCESS;
|
||||
struct stat statbuf;
|
||||
bool keep_backup;
|
||||
|
||||
ret = _notmuch_database_ensure_writable (notmuch);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
path = notmuch_config_get (notmuch, NOTMUCH_CONFIG_DATABASE_PATH);
|
||||
if (! path)
|
||||
return NOTMUCH_STATUS_PATH_ERROR;
|
||||
|
||||
local = talloc_new (NULL);
|
||||
if (! local)
|
||||
return NOTMUCH_STATUS_OUT_OF_MEMORY;
|
||||
|
||||
if (! (notmuch_path = talloc_asprintf (local, "%s/%s", path, ".notmuch"))) {
|
||||
ret = NOTMUCH_STATUS_OUT_OF_MEMORY;
|
||||
goto DONE;
|
||||
|
|
|
@ -497,6 +497,18 @@ notmuch_database_compact (const char *path,
|
|||
notmuch_compact_status_cb_t status_cb,
|
||||
void *closure);
|
||||
|
||||
/**
|
||||
* Like notmuch_database_compact, but take an open database as a
|
||||
* parameter.
|
||||
*
|
||||
* @since libnnotmuch 5.4 (notmuch 0.32)
|
||||
*/
|
||||
notmuch_status_t
|
||||
notmuch_database_compact_db (notmuch_database_t *database,
|
||||
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.
|
||||
|
|
Loading…
Reference in a new issue