From 53e491709d75477f8efe181315fe9301c6e845ba Mon Sep 17 00:00:00 2001 From: Christian Duerr Date: Sat, 2 Feb 2019 12:03:03 +0000 Subject: Fix reloading with empty config When loading an empty configuration file, Alacritty only prints an info message and then proceeds to load the default config. However when reloading the configuration file it would throw a hard error. This has been fixed and a hard error is now only thrown when an error is returned during reload which isn't the empty file error. --- src/config/mod.rs | 35 ++++++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/config/mod.rs b/src/config/mod.rs index 63c72d34..d9717704 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -2224,18 +2224,31 @@ impl Monitor { loop { match rx.recv().expect("watcher event") { DebouncedEvent::Rename(_, _) => continue, - DebouncedEvent::Write(path) | DebouncedEvent::Create(path) - | DebouncedEvent::Chmod(path) => { - // Reload file - if path == config_path { - match Config::load_from(path) { - Ok(config) => { - let _ = config_tx.send(config); - handler.on_config_reload(); - }, - Err(err) => error!("Ignoring invalid config: {}", err), + DebouncedEvent::Write(path) + | DebouncedEvent::Create(path) + | DebouncedEvent::Chmod(path) => + { + if path != config_path { + continue; + } + + let config = match Config::load_from(&path) { + Ok(config) => { + config + }, + Err(err) => { + if let Error::Empty = err { + info!("Config file {:?} is empty; loading default", path); + Config::default() + } else { + error!("Ignoring invalid config: {}", err); + continue; + } } - } + }; + + let _ = config_tx.send(config); + handler.on_config_reload(); } _ => {} } -- cgit v1.2.3-54-g00ecf