~sircmpwn/aerc

60c5a82a76a639137a15a1446bc71434e432d8cd — Reto Brunner 3 months ago 98d778e
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.
1 files changed, 9 insertions(+), 8 deletions(-)

M config/config.go
M config/config.go => config/config.go +9 -8
@@ 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{