mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-28 13:44:12 +01:00
lib/open: track which parameters are passed
This will be used to fine tune the loading of configuration for certain special configuration items (initially just "database.path").
This commit is contained in:
parent
378415a557
commit
d467444085
2 changed files with 49 additions and 4 deletions
|
@ -190,6 +190,39 @@ operator& (notmuch_field_flag_t a, notmuch_field_flag_t b)
|
||||||
Xapian::QueryParser::FLAG_WILDCARD | \
|
Xapian::QueryParser::FLAG_WILDCARD | \
|
||||||
Xapian::QueryParser::FLAG_PURE_NOT)
|
Xapian::QueryParser::FLAG_PURE_NOT)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Which parameters were explicit when the database was opened */
|
||||||
|
typedef enum {
|
||||||
|
NOTMUCH_PARAM_NONE = 0,
|
||||||
|
NOTMUCH_PARAM_DATABASE = 1 << 0,
|
||||||
|
NOTMUCH_PARAM_CONFIG = 1 << 1,
|
||||||
|
NOTMUCH_PARAM_PROFILE = 1 << 2,
|
||||||
|
} notmuch_open_param_t;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* define bitwise operators to hide casts */
|
||||||
|
|
||||||
|
inline notmuch_open_param_t
|
||||||
|
operator| (notmuch_open_param_t a, notmuch_open_param_t b)
|
||||||
|
{
|
||||||
|
return static_cast<notmuch_open_param_t>(
|
||||||
|
static_cast<unsigned>(a) | static_cast<unsigned>(b));
|
||||||
|
}
|
||||||
|
|
||||||
|
inline notmuch_open_param_t&
|
||||||
|
operator|= (notmuch_open_param_t &a, notmuch_open_param_t b)
|
||||||
|
{
|
||||||
|
a = a | b;
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline notmuch_open_param_t
|
||||||
|
operator& (notmuch_open_param_t a, notmuch_open_param_t b)
|
||||||
|
{
|
||||||
|
return static_cast<notmuch_open_param_t>(
|
||||||
|
static_cast<unsigned>(a) & static_cast<unsigned>(b));
|
||||||
|
}
|
||||||
|
|
||||||
struct _notmuch_database {
|
struct _notmuch_database {
|
||||||
bool exception_reported;
|
bool exception_reported;
|
||||||
|
|
||||||
|
@ -249,6 +282,9 @@ struct _notmuch_database {
|
||||||
|
|
||||||
/* Cached and possibly overridden configuration */
|
/* Cached and possibly overridden configuration */
|
||||||
notmuch_string_map_t *config;
|
notmuch_string_map_t *config;
|
||||||
|
|
||||||
|
/* Track what parameters were specified when opening */
|
||||||
|
notmuch_open_param_t params;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Prior to database version 3, features were implied by the database
|
/* Prior to database version 3, features were implied by the database
|
||||||
|
|
17
lib/open.cc
17
lib/open.cc
|
@ -247,7 +247,7 @@ _choose_database_path (void *ctx,
|
||||||
}
|
}
|
||||||
|
|
||||||
static notmuch_database_t *
|
static notmuch_database_t *
|
||||||
_alloc_notmuch ()
|
_alloc_notmuch (const char *database_path, const char *config_path, const char *profile)
|
||||||
{
|
{
|
||||||
notmuch_database_t *notmuch;
|
notmuch_database_t *notmuch;
|
||||||
|
|
||||||
|
@ -263,6 +263,15 @@ _alloc_notmuch ()
|
||||||
notmuch->transaction_count = 0;
|
notmuch->transaction_count = 0;
|
||||||
notmuch->transaction_threshold = 0;
|
notmuch->transaction_threshold = 0;
|
||||||
notmuch->view = 1;
|
notmuch->view = 1;
|
||||||
|
|
||||||
|
notmuch->params = NOTMUCH_PARAM_NONE;
|
||||||
|
if (database_path)
|
||||||
|
notmuch->params |= NOTMUCH_PARAM_DATABASE;
|
||||||
|
if (config_path)
|
||||||
|
notmuch->params |= NOTMUCH_PARAM_CONFIG;
|
||||||
|
if (profile)
|
||||||
|
notmuch->params |= NOTMUCH_PARAM_PROFILE;
|
||||||
|
|
||||||
return notmuch;
|
return notmuch;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -510,7 +519,7 @@ notmuch_database_open_with_config (const char *database_path,
|
||||||
|
|
||||||
_notmuch_init ();
|
_notmuch_init ();
|
||||||
|
|
||||||
notmuch = _alloc_notmuch ();
|
notmuch = _alloc_notmuch (database_path, config_path, profile);
|
||||||
if (! notmuch) {
|
if (! notmuch) {
|
||||||
status = NOTMUCH_STATUS_OUT_OF_MEMORY;
|
status = NOTMUCH_STATUS_OUT_OF_MEMORY;
|
||||||
goto DONE;
|
goto DONE;
|
||||||
|
@ -610,7 +619,7 @@ notmuch_database_create_with_config (const char *database_path,
|
||||||
|
|
||||||
_notmuch_init ();
|
_notmuch_init ();
|
||||||
|
|
||||||
notmuch = _alloc_notmuch ();
|
notmuch = _alloc_notmuch (database_path, config_path, profile);
|
||||||
if (! notmuch) {
|
if (! notmuch) {
|
||||||
status = NOTMUCH_STATUS_OUT_OF_MEMORY;
|
status = NOTMUCH_STATUS_OUT_OF_MEMORY;
|
||||||
goto DONE;
|
goto DONE;
|
||||||
|
@ -812,7 +821,7 @@ notmuch_database_load_config (const char *database_path,
|
||||||
|
|
||||||
_notmuch_init ();
|
_notmuch_init ();
|
||||||
|
|
||||||
notmuch = _alloc_notmuch ();
|
notmuch = _alloc_notmuch (database_path, config_path, profile);
|
||||||
if (! notmuch) {
|
if (! notmuch) {
|
||||||
status = NOTMUCH_STATUS_OUT_OF_MEMORY;
|
status = NOTMUCH_STATUS_OUT_OF_MEMORY;
|
||||||
goto DONE;
|
goto DONE;
|
||||||
|
|
Loading…
Reference in a new issue