const char *
notmuch_config_get_database_path (notmuch_config_t *config)
{
- return _config_get (config, &config->database_path, "database", "path");
+ char *db_path = (char *)_config_get (config, &config->database_path, "database", "path");
+
+ if (db_path && *db_path != '/') {
+ /* If the path in the configuration file begins with any
+ * character other than /, presume that it is relative to
+ * $HOME and update as appropriate.
+ */
+ char *abs_path = talloc_asprintf (config, "%s/%s", getenv ("HOME"), db_path);
+ talloc_free (db_path);
+ db_path = config->database_path = abs_path;
+ }
+
+ return db_path;
}
void
}
#define BUILT_WITH_PREFIX "built_with."
-#define QUERY_PREFIX "query."
+
+static bool
+_stored_in_db (const char *item)
+{
+ const char * db_configs[] = {
+ "index.decrypt",
+ };
+ if (STRNCMP_LITERAL (item, "query.") == 0)
+ return true;
+ for (size_t i = 0; i < ARRAY_SIZE (db_configs); i++)
+ if (strcmp (item, db_configs[i]) == 0)
+ return true;
+ return false;
+}
static int
_print_db_config(notmuch_config_t *config, const char *name)
} else if (STRNCMP_LITERAL (item, BUILT_WITH_PREFIX) == 0) {
printf ("%s\n",
notmuch_built_with (item + strlen (BUILT_WITH_PREFIX)) ? "true" : "false");
- } else if (STRNCMP_LITERAL (item, QUERY_PREFIX) == 0) {
+ } else if (_stored_in_db (item)) {
return _print_db_config (config, item);
} else {
char **value;
return 1;
}
- if (STRNCMP_LITERAL (item, QUERY_PREFIX) == 0) {
+ if (_stored_in_db (item)) {
return _set_db_config (config, item, argc, argv);
}