lib/compact: enable split config

This promotes _choose_xapian_path from static to extern linkage in
order to share between open.cc and database.cc.
This commit is contained in:
David Bremner 2021-02-02 07:51:23 -04:00
parent 74c3cc03c2
commit b30a59157d
4 changed files with 21 additions and 13 deletions

View file

@ -610,11 +610,12 @@ notmuch_database_compact_db (notmuch_database_t *notmuch,
void *closure) void *closure)
{ {
void *local; void *local;
char *notmuch_path, *xapian_path, *compact_xapian_path; const char *xapian_path, *compact_xapian_path;
const char *path; const char *path;
notmuch_status_t ret = NOTMUCH_STATUS_SUCCESS; notmuch_status_t ret = NOTMUCH_STATUS_SUCCESS;
struct stat statbuf; struct stat statbuf;
bool keep_backup; bool keep_backup;
char *message;
ret = _notmuch_database_ensure_writable (notmuch); ret = _notmuch_database_ensure_writable (notmuch);
if (ret) if (ret)
@ -628,15 +629,9 @@ notmuch_database_compact_db (notmuch_database_t *notmuch,
if (! local) if (! local)
return NOTMUCH_STATUS_OUT_OF_MEMORY; return NOTMUCH_STATUS_OUT_OF_MEMORY;
if (! (notmuch_path = talloc_asprintf (local, "%s/%s", path, ".notmuch"))) { ret = _notmuch_choose_xapian_path (local, path, &xapian_path, &message);
ret = NOTMUCH_STATUS_OUT_OF_MEMORY; if (ret)
goto DONE; goto DONE;
}
if (! (xapian_path = talloc_asprintf (local, "%s/%s", notmuch_path, "xapian"))) {
ret = NOTMUCH_STATUS_OUT_OF_MEMORY;
goto DONE;
}
if (! (compact_xapian_path = talloc_asprintf (local, "%s.compact", xapian_path))) { if (! (compact_xapian_path = talloc_asprintf (local, "%s.compact", xapian_path))) {
ret = NOTMUCH_STATUS_OUT_OF_MEMORY; ret = NOTMUCH_STATUS_OUT_OF_MEMORY;

View file

@ -724,6 +724,11 @@ _notmuch_config_load_defaults (notmuch_database_t *db);
void void
_notmuch_config_cache (notmuch_database_t *db, notmuch_config_key_t key, const char *val); _notmuch_config_cache (notmuch_database_t *db, notmuch_config_key_t key, const char *val);
/* open.cc */
notmuch_status_t
_notmuch_choose_xapian_path (void *ctx, const char *database_path, const char **xapian_path,
char **message);
NOTMUCH_END_DECLS NOTMUCH_END_DECLS
#ifdef __cplusplus #ifdef __cplusplus

View file

@ -258,9 +258,9 @@ _trial_open (const char *xapian_path, char **message_ptr)
return NOTMUCH_STATUS_SUCCESS; return NOTMUCH_STATUS_SUCCESS;
} }
static notmuch_status_t notmuch_status_t
_choose_xapian_path (void *ctx, const char *database_path, const char **xapian_path, _notmuch_choose_xapian_path (void *ctx, const char *database_path,
char **message_ptr) const char **xapian_path, char **message_ptr)
{ {
notmuch_status_t status; notmuch_status_t status;
const char *trial_path, *notmuch_path; const char *trial_path, *notmuch_path;
@ -489,7 +489,8 @@ notmuch_database_open_with_config (const char *database_path,
_set_database_path (notmuch, database_path); _set_database_path (notmuch, database_path);
status = _choose_xapian_path (notmuch, database_path, &notmuch->xapian_path, &message); status = _notmuch_choose_xapian_path (notmuch, database_path,
&notmuch->xapian_path, &message);
if (status) if (status)
goto DONE; goto DONE;

View file

@ -177,6 +177,13 @@ EOF
cur_msg_filename=$(notmuch search --output=files "subject:insert-subject") cur_msg_filename=$(notmuch search --output=files "subject:insert-subject")
test_expect_equal_file "$cur_msg_filename" "$gen_msg_filename" test_expect_equal_file "$cur_msg_filename" "$gen_msg_filename"
test_begin_subtest "compact+search ($config)"
notmuch search --output=messages '*' | sort > EXPECTED
notmuch compact
notmuch search --output=messages '*' | sort > OUTPUT
test_expect_equal_file EXPECTED OUTPUT
restore_config restore_config
done done