--- /dev/null
+OC = ocamlopt
+OCMKLIB = ocamlmklib
+
+.PHONY: all clean
+
+env.cmxa: env.cmx envprims.o
+tide: env.cmxa tide.cmx
+
+all: tide
+
+clean:
+ $(RM) *.cm* *.o *.a
+
+%:
+ $(OC) -o $@ $^ -I .
+
+%.cmxa:
+ $(OCMKLIB) -custom -o $* $^
+
+%.cmx: %.ml
+ $(OC) -c -o $@ $^
+
+%.o: %.c
+ $(OC) $(OCFLAGS) -c -o $@ $^
+
--- /dev/null
+(* Environment variable management routines *)
+external set : string -> string -> int = "caml_env_set"
+external get : string -> string = "caml_env_get"
+external unset : string -> int = "caml_env_unset"
--- /dev/null
+#include <curses.h>
+#include <caml/mlvalues.h>
+#include <caml/memory.h>
+#include <caml/alloc.h>
+#include <caml/custom.h>
+#include <stdlib.h>
+
+CAMLprim value caml_env_set(value var, value val) {
+ CAMLparam2(var, val);
+ puts("foo");
+ CAMLreturn(Val_int(0));
+}
+
+CAMLprim value caml_env_get(value var) {
+ CAMLparam1(var);
+ puts("bar");
+ CAMLreturn(caml_copy_string(""));
+}
+
+CAMLprim value caml_env_unset(value var) {
+ CAMLparam1(var);
+ puts("baz");
+ CAMLreturn(Val_int(0));
+}
--- /dev/null
+open Env
+
+let () =
+ let foo = Env.set "foo" "bar" in
+ let bar = Env.get "foo" in
+ let baz = Env.unset "foo" in
+ ()