changeset 275:7cd36dae08dd

options/infolog: Put logger into Option.
author Lewin Bormann <lbo@spheniscida.de>
date Thu, 21 Sep 2017 18:24:42 +0200
parents 5d65cde43e38
children 5577baac7c4a
files src/infolog.rs src/options.rs
diffstat 2 files changed, 8 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/infolog.rs	Thu Sep 21 18:24:15 2017 +0200
+++ b/src/infolog.rs	Thu Sep 21 18:24:42 2017 +0200
@@ -9,8 +9,10 @@
 
 #[macro_export]
 macro_rules! log {
-    ($l:expr) => ($l.borrow_mut().0.write("\n".as_bytes()).is_ok());
-    ($l:expr, $fmt:expr) => ($l.borrow_mut().0.write(concat!($fmt, "\n").as_bytes()).is_ok());
+    ($l:expr) => ($l.as_ref().map(|l| l.borrow_mut().0.write("\n".as_bytes()).is_ok()));
+    ($l:expr, $fmt:expr) => (
+        $l.as_ref().map(|l| l.borrow_mut().0.write(concat!($fmt, "\n").as_bytes()).is_ok()));
     ($l:expr, $fmt:expr, $($arg:tt)*) => (
-        $l.borrow_mut().0.write_fmt(format_args!(concat!($fmt, "\n"), $($arg)*)).is_ok());
+        $l.as_ref().map(
+            |l| l.borrow_mut().0.write_fmt(format_args!(concat!($fmt, "\n"), $($arg)*)).is_ok()));
 }
--- a/src/options.rs	Thu Sep 21 18:24:15 2017 +0200
+++ b/src/options.rs	Thu Sep 21 18:24:42 2017 +0200
@@ -41,7 +41,7 @@
 pub struct Options {
     pub cmp: Rc<Box<Cmp>>,
     pub env: Rc<Box<Env>>,
-    pub log: Shared<Logger>,
+    pub log: Option<Shared<Logger>>,
     pub create_if_missing: bool,
     pub error_if_exists: bool,
     pub paranoid_checks: bool,
@@ -61,7 +61,7 @@
         Options {
             cmp: Rc::new(Box::new(DefaultCmp)),
             env: Rc::new(Box::new(disk_env::PosixDiskEnv::new())),
-            log: share(Logger(Box::new(io::sink()))),
+            log: None,
             create_if_missing: true,
             error_if_exists: false,
             paranoid_checks: false,
@@ -82,7 +82,7 @@
 pub fn for_test() -> Options {
     let mut o = Options::default();
     o.env = Rc::new(Box::new(MemEnv::new()));
-    o.log = share(infolog::stderr());
+    o.log = Some(share(infolog::stderr()));
     o
 }