From: Ian Jackson Date: Sat, 21 Nov 2020 19:08:53 +0000 (+0000) Subject: in_basedir less complex thunk X-Git-Tag: otter-0.2.0~424 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=117e5de3d300ce0051f2ba51b0992cf1105c047a;p=otter.git in_basedir less complex thunk Signed-off-by: Ian Jackson --- diff --git a/src/config.rs b/src/config.rs index eece6441..581cb16a 100644 --- a/src/config.rs +++ b/src/config.rs @@ -150,13 +150,13 @@ fn default_basedir_from_executable(verbose: bool) -> Option { }) } -fn in_basedir Option> - (basedir: &mut Thunk,F>, +fn in_basedir + (basedir: Option<&String>, subdir: &str, localdir: &str, leaf: &str) -> String { - match basedir.as_ref() { + match basedir { Some(basedir) => format!("{}/{}/{}", basedir, subdir, leaf), None => format!( "{}/{}", localdir, leaf), } @@ -165,12 +165,15 @@ fn in_basedir Option> impl ServerConfig { #[throws(StartupError)] pub fn read(config_filename: Option<&str>, verbose: bool) { - let mut basedir = Thunk::new( + let basedir = Thunk::new( move || default_basedir_from_executable(verbose) ); - let config_filename = config_filename.map(|s| s.to_string()).unwrap_or_else( - || in_basedir(&mut basedir, "etc", "", DEFAULT_CONFIG_FILENAME) - ); + let config_filename = config_filename + .map( + |s| s.to_string() + ).unwrap_or_else( + || in_basedir(basedir.as_ref(), "etc", "", DEFAULT_CONFIG_FILENAME) + ); let mut buf = String::new(); File::open(&config_filename).with_context(||config_filename.to_string())? .read_to_string(&mut buf)?;