]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/matita/matitac.ml
The getter maps are now dumped also if matitac exits abruptly.
[helm.git] / helm / matita / matitac.ml
index 607fe703b065c1f122b0c17309c5cad997776736..b3767c5397cf3477ad62c607f9df011a0e8d48bb 100644 (file)
@@ -50,7 +50,6 @@ let scripts =
   List.rev !acc
 
 let run_script fname =
-  MatitaLog.message (sprintf "execution of %s started:" fname);
   let is =
     Stream.of_channel
       (match fname with
@@ -84,10 +83,29 @@ let run_script fname =
       raise exn
         
 let _ = 
-  List.iter (fun fname -> 
+  at_exit
+    (fun () ->
+       Http_getter_logger.log "Sync map tree to disk...";
+       Http_getter.sync_dump_file ();
+       print_endline "\nThanks for using Matita!\n");
+  Sys.catch_break true;
+  try
+   List.iter (fun fname -> 
+    let time = Unix.time () in
+    MatitaLog.message (sprintf "execution of %s started:" fname);
     run_script fname;
-    MatitaLog.message (sprintf "execution of %s completed." fname)) scripts;
-  Http_getter.sync_dump_file ();
-  exit(0)
-  
-
+    let elapsed = Unix.time () -. time in
+    let tm = Unix.gmtime elapsed in
+    let sec = 
+      if tm.Unix.tm_sec > 0 then  (string_of_int tm.Unix.tm_sec ^ "''") else "" 
+    in
+    let min = 
+      if tm.Unix.tm_min > 0 then  (string_of_int tm.Unix.tm_min ^ "' ") else "" 
+    in
+    let hou = 
+      if tm.Unix.tm_hour > 0 then (string_of_int tm.Unix.tm_hour ^ "h ") else "" 
+    in
+    MatitaLog.message 
+      (sprintf "execution of %s completed in %s." fname (hou^min^sec))) scripts;
+    exit(0)
+  with Sys.Break -> exit (-1)