diff --git a/src/conf.rs b/src/conf.rs index 4b45af83d..995fd5485 100644 --- a/src/conf.rs +++ b/src/conf.rs @@ -762,15 +762,26 @@ pub fn create_config_file(p: &Path) -> Result<()> { .write(true) .create_new(true) .open(p) - .expect("Could not create config file."); + .chain_err_summary(|| format!("Cannot create configuration file in {}", p.display()))?; file.write_all(include_bytes!("../docs/samples/sample-config.toml")) - .expect("Could not write to config file."); + .and_then(|()| file.flush()) + .chain_err_summary(|| format!("Could not write to configuration file {}", p.display()))?; println!("Written example configuration to {}", p.display()); - let metadata = file.metadata()?; - let mut permissions = metadata.permissions(); + let set_permissions = |file: std::fs::File| -> Result<()> { + let metadata = file.metadata()?; + let mut permissions = metadata.permissions(); - permissions.set_mode(0o600); // Read/write for owner only. - file.set_permissions(permissions)?; + permissions.set_mode(0o600); // Read/write for owner only. + file.set_permissions(permissions)?; + Ok(()) + }; + if let Err(err) = set_permissions(file) { + println!( + "Warning: Could not set permissions of {} to 0o600: {}", + p.display(), + err + ); + } Ok(()) }