about summary refs log tree commit diff
diff options
context:
space:
mode:
authorKevin Ballard <kevin@sb.org>2013-06-27 13:37:55 -0700
committerKevin Ballard <kevin@sb.org>2013-06-27 14:32:33 -0700
commitd9fed2b06f0850fa9e2455e98606644d5d54757f (patch)
tree5928e2117063a9f2d17f5a79f22aa32826080f2f
parent9b6dfb85782a6ec50c39292626acf2c74b0ae754 (diff)
downloadrust-d9fed2b06f0850fa9e2455e98606644d5d54757f.tar.gz
rust-d9fed2b06f0850fa9e2455e98606644d5d54757f.zip
Teach extra::term::Terminal.reset() to handle missing op
Unlike fg() and bg(), we haven't already checked for the presence of
"op" in the terminfo when we call reset(), so we need to handle the case
where it's missing.

Also update the warn!() lines to avoid double-quoting the output.

Fixes #7431.
-rw-r--r--src/libextra/term.rs11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/libextra/term.rs b/src/libextra/term.rs
index 9a4469cb526..880b89f2bbe 100644
--- a/src/libextra/term.rs
+++ b/src/libextra/term.rs
@@ -97,7 +97,7 @@ impl Terminal {
             if s.is_ok() {
                 self.out.write(s.unwrap());
             } else {
-                warn!(s.unwrap_err());
+                warn!("%s", s.unwrap_err());
             }
         }
     }
@@ -113,17 +113,20 @@ impl Terminal {
             if s.is_ok() {
                 self.out.write(s.unwrap());
             } else {
-                warn!(s.unwrap_err());
+                warn!("%s", s.unwrap_err());
             }
         }
     }
     pub fn reset(&self) {
         let mut vars = Variables::new();
-        let s = expand(*self.ti.strings.find_equiv(&("op")).unwrap(), [], &mut vars);
+        let s = do self.ti.strings.find_equiv(&("op"))
+                       .map_consume_default(Err(~"can't find op")) |&op| {
+                           expand(op, [], &mut vars)
+                       };
         if s.is_ok() {
             self.out.write(s.unwrap());
         } else {
-            warn!(s.unwrap_err());
+            warn!("%s", s.unwrap_err());
         }
     }