FILE *fp = fopen(config->filename, "r");
if (fp == NULL) {
- /* If create_new is true, then the caller is prepared for a
- * default configuration file in the case of FILE NOT FOUND.
- */
- if (create_new) {
- config->is_new = TRUE;
- ret = TRUE;
- goto out;
- } else if (errno == ENOENT) {
- fprintf (stderr, "Configuration file %s not found.\n"
- "Try running 'notmuch setup' to create a configuration.\n",
- config->filename);
- goto out;
+ if (errno == ENOENT) {
+ /* If create_new is true, then the caller is prepared for a
+ * default configuration file in the case of FILE NOT FOUND.
+ */
+ if (create_new) {
+ config->is_new = TRUE;
+ ret = TRUE;
+ } else {
+ fprintf (stderr, "Configuration file %s not found.\n"
+ "Try running 'notmuch setup' to create a configuration.\n",
+ config->filename);
+ }
} else {
- fprintf (stderr, "Error opening config file '%s': %s\n"
- "Try running 'notmuch setup' to create a configuration.\n",
+ fprintf (stderr, "Error opening config file '%s': %s\n",
config->filename, strerror(errno));
- goto out;
}
+ goto out;
}
config_str = talloc_zero_array (config, char, config_bufsize);
notmuch_config_t *
notmuch_config_open (void *ctx,
const char *filename,
- notmuch_bool_t create_new)
+ notmuch_config_mode_t config_mode)
{
GError *error = NULL;
size_t tmp;
int file_had_search_group;
int file_had_crypto_group;
- notmuch_config_t *config = talloc (ctx, notmuch_config_t);
+ notmuch_config_t *config = talloc_zero (ctx, notmuch_config_t);
if (config == NULL) {
fprintf (stderr, "Out of memory.\n");
return NULL;
talloc_set_destructor (config, notmuch_config_destructor);
+ /* non-zero defaults */
+ config->maildir_synchronize_flags = TRUE;
+
if (filename) {
config->filename = talloc_strdup (config, filename);
} else if ((notmuch_config_env = getenv ("NOTMUCH_CONFIG"))) {
config->key_file = g_key_file_new ();
- config->is_new = FALSE;
- config->database_path = NULL;
- config->user_name = NULL;
- config->user_primary_email = NULL;
- config->user_other_email = NULL;
- config->user_other_email_length = 0;
- config->new_tags = NULL;
- config->new_tags_length = 0;
- config->new_ignore = NULL;
- config->new_ignore_length = 0;
- config->maildir_synchronize_flags = TRUE;
- config->search_exclude_tags = NULL;
- config->search_exclude_tags_length = 0;
- config->crypto_gpg_path = NULL;
+ if (config_mode & NOTMUCH_CONFIG_OPEN) {
+ notmuch_bool_t create_new = (config_mode & NOTMUCH_CONFIG_CREATE) != 0;
- if (! get_config_from_file (config, create_new)) {
- talloc_free (config);
- return NULL;
+ if (! get_config_from_file (config, create_new)) {
+ talloc_free (config);
+ return NULL;
+ }
}
/* Whenever we know of configuration sections that don't appear in
static void
_config_set_list (notmuch_config_t *config,
- const char *group, const char *name,
+ const char *group, const char *key,
const char *list[],
size_t length, const char ***config_var )
{
- g_key_file_set_string_list (config->key_file, group, name, list, length);
+ g_key_file_set_string_list (config->key_file, group, key, list, length);
/* drop the cached value */
talloc_free (*config_var);