X-Git-Url: https://git.notmuchmail.org/git?a=blobdiff_plain;f=lib%2Fconfig.cc;h=e502858d623db091628e4945d7736c0db2d5b2cd;hb=1e7d33961e626488b09b56c8543e8edf00648670;hp=abdc19c3de000b610d57f9f98d71127a51797f7f;hpb=31098c4ae40511ffda9788a6654adbf898063d7f;p=notmuch diff --git a/lib/config.cc b/lib/config.cc index abdc19c3..e502858d 100644 --- a/lib/config.cc +++ b/lib/config.cc @@ -46,6 +46,7 @@ struct _notmuch_config_pairs { }; static const char *_notmuch_config_key_to_string (notmuch_config_key_t key); +static char *_expand_path (void *ctx, const char *key, const char *val); static int _notmuch_config_list_destroy (notmuch_config_list_t *list) @@ -257,9 +258,18 @@ _notmuch_config_load_from_database (notmuch_database_t *notmuch) return status; for (; notmuch_config_list_valid (list); notmuch_config_list_move_to_next (list)) { - _notmuch_string_map_append (notmuch->config, - notmuch_config_list_key (list), - notmuch_config_list_value (list)); + const char *key = notmuch_config_list_key (list); + char *normalized_val = NULL; + + /* If we opened from a given path, do not overwrite it */ + if (strcmp (key, "database.path") == 0 && + (notmuch->params & NOTMUCH_PARAM_DATABASE) && + notmuch->xapian_db) + continue; + + normalized_val = _expand_path (list, key, notmuch_config_list_value (list)); + _notmuch_string_map_append (notmuch->config, key, normalized_val); + talloc_free (normalized_val); } return status; @@ -316,7 +326,7 @@ notmuch_config_values_valid (notmuch_config_values_t *values) const char * notmuch_config_values_get (notmuch_config_values_t *values) { - return talloc_strndup (values, values->iterator, values->tok_len); + return talloc_strndup (values->children, values->iterator, values->tok_len); } void @@ -430,6 +440,13 @@ _notmuch_config_load_from_file (notmuch_database_t *notmuch, status = NOTMUCH_STATUS_FILE_ERROR; goto DONE; } + + /* If we opened from a given path, do not overwrite it */ + if (strcmp (absolute_key, "database.path") == 0 && + (notmuch->params & NOTMUCH_PARAM_DATABASE) && + notmuch->xapian_db) + continue; + normalized_val = _expand_path (notmuch, absolute_key, val); _notmuch_string_map_set (notmuch->config, absolute_key, normalized_val); g_free (val); @@ -541,25 +558,11 @@ _get_username_from_passwd_file (void *ctx) static const char * _get_email_from_passwd_file (void *ctx) { - - char hostname[256]; - struct hostent *hostent; - const char *domainname; char *email; char *username = _get_username_from_passwd_file (ctx); - gethostname (hostname, 256); - hostname[255] = '\0'; - - hostent = gethostbyname (hostname); - if (hostent && (domainname = strchr (hostent->h_name, '.'))) - domainname += 1; - else - domainname = "(none)"; - - email = talloc_asprintf (ctx, "%s@%s.%s", - username, hostname, domainname); + email = talloc_asprintf (ctx, "%s@localhost", username); talloc_free (username); return email; @@ -591,6 +594,8 @@ _notmuch_config_key_to_string (notmuch_config_key_t key) return "user.other_email"; case NOTMUCH_CONFIG_USER_NAME: return "user.name"; + case NOTMUCH_CONFIG_AUTOCOMMIT: + return "database.autocommit"; default: return NULL; } @@ -636,6 +641,8 @@ _notmuch_config_default (notmuch_database_t *notmuch, notmuch_config_key_t key) return email; case NOTMUCH_CONFIG_NEW_IGNORE: return ""; + case NOTMUCH_CONFIG_AUTOCOMMIT: + return "8000"; case NOTMUCH_CONFIG_HOOK_DIR: case NOTMUCH_CONFIG_BACKUP_DIR: case NOTMUCH_CONFIG_OTHER_EMAIL: