ocaml/debugger/question.ml

49 lines
2.0 KiB
OCaml

(**************************************************************************)
(* *)
(* OCaml *)
(* *)
(* Nicolas Pouillard, projet Gallium, INRIA Rocquencourt *)
(* *)
(* Copyright 2006 Institut National de Recherche en Informatique et *)
(* en Automatique. *)
(* *)
(* All rights reserved. This file is distributed under the terms of *)
(* the GNU Lesser General Public License version 2.1, with the *)
(* special exception on linking described in the file LICENSE. *)
(* *)
(**************************************************************************)
open Input_handling
open Primitives
module Lexer = Debugger_lexer
(* Ask user a yes or no question. *)
let yes_or_no message =
if !interactif then
let finally =
let old_prompt = !current_prompt in
fun () -> stop_user_input (); current_prompt := old_prompt
in
Fun.protect ~finally @@ fun () ->
current_prompt := message ^ " ? (y or n) ";
let answer =
let rec ask () =
resume_user_input ();
let line =
string_trim (Lexer.line (Lexing.from_function read_user_input))
in
match (if String.length line > 0 then line.[0] else ' ') with
'y' -> true
| 'n' -> false
| _ ->
stop_user_input ();
print_string "Please answer y or n.";
print_newline ();
ask ()
in
ask ()
in
answer
else
false