summaryrefslogtreecommitdiffstats
path: root/stdlib/sys.ml
diff options
context:
space:
mode:
authorXavier Leroy <xavier.leroy@inria.fr>1995-05-04 10:15:53 +0000
committerXavier Leroy <xavier.leroy@inria.fr>1995-05-04 10:15:53 +0000
commit61bd8ace6bdb2652f4d51d64e3239a7105f56c26 (patch)
treee8b957df0957c1b483d41d68973824e280445548 /stdlib/sys.ml
parent8f9ea2a7b886e3e0a5cfd76b11fe79d083a7f20c (diff)
Passage a la version bootstrappee (franchissement du Rubicon)
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@2 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'stdlib/sys.ml')
-rw-r--r--stdlib/sys.ml52
1 files changed, 52 insertions, 0 deletions
diff --git a/stdlib/sys.ml b/stdlib/sys.ml
new file mode 100644
index 000000000..b6172e418
--- /dev/null
+++ b/stdlib/sys.ml
@@ -0,0 +1,52 @@
+(* System interface *)
+
+type open_flag =
+ Open_rdonly | Open_wronly | Open_rdwr
+ | Open_append | Open_creat | Open_trunc | Open_excl
+ | Open_binary | Open_text
+
+external get_argv: unit -> string array = "sys_get_argv"
+
+let argv = get_argv()
+
+external remove: string -> unit = "sys_remove"
+external getenv: string -> string = "sys_getenv"
+external open_desc: string -> open_flag list -> int -> int = "sys_open"
+external close_desc: int -> unit = "sys_close"
+external command: string -> int = "sys_system_command"
+external chdir: string -> unit = "sys_chdir"
+
+type signal_behavior =
+ Signal_default
+ | Signal_ignore
+ | Signal_handle of (int -> unit)
+
+external signal: int -> signal_behavior -> unit = "install_signal_handler"
+
+let sigabrt = -1
+let sigalrm = -2
+let sigfpe = -3
+let sighup = -4
+let sigill = -5
+let sigint = -6
+let sigkill = -7
+let sigpipe = -8
+let sigquit = -9
+let sigsegv = -10
+let sigterm = -11
+let sigusr1 = -12
+let sigusr2 = -13
+let sigchld = -14
+let sigcont = -15
+let sigstop = -16
+let sigtstp = -17
+let sigttin = -18
+let sigttou = -19
+
+exception Break
+
+let catch_break on =
+ if on then
+ signal sigint (Signal_handle(fun _ -> raise Break))
+ else
+ signal sigint Signal_default