aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--ide/coq.ml3
-rw-r--r--ide/coqide.ml17
-rw-r--r--ide/coqide_main.ml414
-rw-r--r--ide/ideutils.ml13
-rw-r--r--ide/ideutils.mli6
5 files changed, 34 insertions, 19 deletions
diff --git a/ide/coq.ml b/ide/coq.ml
index 3c7ee2de8..1acea4a9b 100644
--- a/ide/coq.ml
+++ b/ide/coq.ml
@@ -8,9 +8,6 @@
open Ideutils
-let prerr_endline s = if !debug then prerr_endline s else ()
-
-
(** * Version and date *)
let get_version_date () =
diff --git a/ide/coqide.ml b/ide/coqide.ml
index 726931cac..08c41aeaa 100644
--- a/ide/coqide.ml
+++ b/ide/coqide.ml
@@ -190,7 +190,7 @@ let signals_to_crash = [Sys.sigabrt; Sys.sigalrm; Sys.sigfpe; Sys.sighup;
let crash_save i =
(* ignore (Unix.sigprocmask Unix.SIG_BLOCK signals_to_crash);*)
- Pervasives.prerr_endline "Trying to save all buffers in .crashcoqide files";
+ safe_prerr_endline "Trying to save all buffers in .crashcoqide files";
let count = ref 0 in
List.iter
(function {script=view; analyzed_view = av } ->
@@ -202,12 +202,12 @@ let crash_save i =
in
try
if try_export filename (view#buffer#get_text ()) then
- Pervasives.prerr_endline ("Saved "^filename)
- else Pervasives.prerr_endline ("Could not save "^filename)
- with _ -> Pervasives.prerr_endline ("Could not save "^filename))
+ safe_prerr_endline ("Saved "^filename)
+ else safe_prerr_endline ("Could not save "^filename)
+ with _ -> safe_prerr_endline ("Could not save "^filename))
)
session_notebook#pages;
- Pervasives.prerr_endline "Done. Please report.";
+ safe_prerr_endline "Done. Please report.";
if i <> 127 then exit i
let ignore_break () =
@@ -3188,11 +3188,10 @@ let process_argv argv =
try
let continue,filtered = Coq.filter_coq_opts (List.tl argv) in
if not continue then
- (List.iter Pervasives.prerr_endline filtered; exit 0);
+ (List.iter safe_prerr_endline filtered; exit 0);
let opts = List.filter (fun arg -> String.get arg 0 == '-') filtered in
if opts <> [] then
- (output_string stderr ("Illegal option: "^List.hd opts^"\n");
- exit 1);
+ (safe_prerr_endline ("Illegal option: "^List.hd opts); exit 1);
filtered
with _ ->
- (output_string stderr "coqtop choked on one of your option"; exit 1)
+ (safe_prerr_endline "coqtop choked on one of your option"; exit 1)
diff --git a/ide/coqide_main.ml4 b/ide/coqide_main.ml4
index c63db0031..9fc0f72b7 100644
--- a/ide/coqide_main.ml4
+++ b/ide/coqide_main.ml4
@@ -1,3 +1,11 @@
+(************************************************************************)
+(* v * The Coq Proof Assistant / The Coq Development Team *)
+(* <O___,, * INRIA - CNRS - LIX - LRI - PPS - Copyright 1999-2010 *)
+(* \VV/ **************************************************************)
+(* // * This file is distributed under the terms of the *)
+(* * GNU Lesser General Public License Version 2.1 *)
+(************************************************************************)
+
IFDEF MacInt THEN
external gtk_mac_init : (string -> unit) -> (unit -> bool) -> unit
= "caml_gtk_mac_init"
@@ -41,9 +49,9 @@ let () =
try
GtkThread.main ()
with
- | Sys.Break -> prerr_endline "Interrupted." ; flush stderr
+ | Sys.Break -> Ideutils.prerr_endline "Interrupted." ; flush stderr
| e ->
- Pervasives.prerr_endline ("CoqIde unexpected error:" ^ (Printexc.to_string e));
- flush stderr;
+ Ideutils.safe_prerr_endline
+ ("CoqIde unexpected error:" ^ (Printexc.to_string e));
Coqide.crash_save 127
done
diff --git a/ide/ideutils.ml b/ide/ideutils.ml
index a4126ae33..faaaa3742 100644
--- a/ide/ideutils.ml
+++ b/ide/ideutils.ml
@@ -31,10 +31,17 @@ let pbar = GRange.progress_bar ~pulse_step:0.2 ()
let debug = Flags.debug
+(* On a Win32 application with no console, writing to stderr raise
+ a Sys_error "bad file descriptor", hence the "try" below.
+ Ideally, we should re-route message to a log file somewhere, or
+ print in the response buffer.
+*)
+
+let safe_prerr_endline s =
+ try prerr_endline s;flush stderr with _ -> ()
+
let prerr_endline s =
- if !debug then (prerr_endline s;flush stderr)
-let prerr_string s =
- if !debug then (prerr_string s;flush stderr)
+ if !debug then try prerr_endline s;flush stderr with _ -> ()
let lib_ide_file f =
Filename.concat (Filename.concat !Minilib.coqlib "ide") f
diff --git a/ide/ideutils.mli b/ide/ideutils.mli
index f15cd120c..fe8936877 100644
--- a/ide/ideutils.mli
+++ b/ide/ideutils.mli
@@ -30,8 +30,12 @@ val is_char_start : char -> bool
val lib_ide_file : string -> string
val my_stat : string -> Unix.stats option
+(** safe version of Pervasives.prerr_endline
+ (avoid exception in win32 without console) *)
+val safe_prerr_endline : string -> unit
+(** debug printing *)
val prerr_endline : string -> unit
-val prerr_string : string -> unit
+
val print_id : 'a -> unit
val revert_timer : GMain.Timeout.id option ref