From 60c5a82a76a639137a15a1446bc71434e432d8cd Mon Sep 17 00:00:00 2001 From: Reto Brunner Date: Sat, 17 Apr 2021 18:50:35 +0200 Subject: [PATCH] load config: do not overwrite the config upon error It makes absolutely no sense to copy over the default template from aerc.conf when the syntax is invalid and our ini parser fails. The only valid case to do that is if the file is actually missing. --- config/config.go | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/config/config.go b/config/config.go index 8032201..af9c63b 100644 --- a/config/config.go +++ b/config/config.go @@ -462,18 +462,19 @@ func LoadConfigFromFile(root *string, sharedir string) (*AercConfig, error) { return nil, err } filename = path.Join(*root, "aerc.conf") + + // if it doesn't exist copy over the template, then load + if _, err := os.Stat(filename); errors.Is(err, os.ErrNotExist) { + if err := installTemplate(*root, sharedir, "aerc.conf"); err != nil { + return nil, err + } + } + file, err := ini.LoadSources(ini.LoadOptions{ KeyValueDelimiters: "=", }, filename) if err != nil { - if err := installTemplate(*root, sharedir, "aerc.conf"); err != nil { - return nil, err - } - if file, err = ini.LoadSources(ini.LoadOptions{ - KeyValueDelimiters: "=", - }, filename); err != nil { - return nil, err - } + return nil, err } file.NameMapper = mapName config := &AercConfig{