chiark / gitweb /
otter: Further improve error printing
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 15 May 2021 19:40:17 +0000 (20:40 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 15 May 2021 19:40:49 +0000 (20:40 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/bin/otter.rs

index 75016025c6cd86cfa43d4403c2eb413e32719fb7..4548034721fac0ab3bab1ddbb07b02e9b8456326 100644 (file)
@@ -436,11 +436,27 @@ fn main() {
                             &subcommand));
 
   call(sc, mo, subargs).unwrap_or_else(|e|{
-    eprint!("otter: error");
+    #[derive(Default,Debug)] struct Sol { any: bool }
+    impl Sol {
+      fn nl(&mut self) {
+        if self.any { eprintln!("") };
+        self.any = false;
+      }
+      fn head(&mut self) {
+        if ! self.any { eprint!("otter: error"); }
+        self.any = true
+      }
+    }
+    let mut sol: Sol = default();
     for e in e.chain() {
-      eprint!(": {}", &e);
+      let s = e.to_string();
+      let long = s.len() > 80;
+      if long && sol.any { sol.nl() }
+      sol.head();
+      eprint!(": {}", s);
+      if long { sol.nl() }
     }
-    eprintln!("");
+    sol.nl();
     exit(12);
   })
 }