+ try
+ status := MatitaEngine.eval_from_stream !status is cb ;
+ !status
+ with
+ | CicTextualParser2.Parse_error (floc,err) ->
+ let (x, y) = CicAst.loc_of_floc floc in
+ MatitaLog.error (sprintf "Parse error at %d-%d: %s" x y err);
+ Http_getter.sync_dump_file ();
+ exit 1
+ | exn ->
+ MatitaLog.error (Printexc.to_string exn);
+ raise exn
+
+let _ =
+ 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);
+ let status = run_script fname in
+ 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
+ let proof_status = status.proof_status in
+ if proof_status <> MatitaTypes.No_proof then
+ begin
+ MatitaLog.error
+ "there are still incomplete proofs at the end of the script";
+ exit(-1)
+ end
+ else
+ begin
+ MatitaLog.message
+ (sprintf "execution of %s completed in %s." fname (hou^min^sec)) ;
+ exit(0)
+ end
+ ) scripts
+ with Sys.Break ->
+ MatitaLog.error "user break!";
+ exit (-1)