+ raise_error (t, "Augeas.save");
+
+ CAMLreturn (Val_unit);
+}
+
+/* val load : t -> unit */
+CAMLprim value
+ocaml_augeas_load (value tv)
+{
+ CAMLparam1 (tv);
+ augeas_t t = Augeas_t_val (tv);
+
+ if (aug_load (t) == -1)
+ raise_error (t, "Augeas.load");
+
+ CAMLreturn (Val_unit);
+}
+
+/* val set : t -> -> path -> value option -> unit */
+CAMLprim value
+ocaml_augeas_set (value tv, value pathv, value valuev)
+{
+ CAMLparam3 (tv, pathv, valuev);
+ augeas_t t = Augeas_t_val (tv);
+ const char *path = String_val (pathv);
+ const char *val;
+
+ val =
+ valuev == Val_int (0)
+ ? NULL
+ : String_val (Field (valuev, 0));
+
+ if (aug_set (t, path, val) == -1)
+ raise_error (t, "Augeas.set");
+
+ CAMLreturn (Val_unit);
+}
+
+/* val transform : t -> string -> string -> transform_mode -> unit */
+CAMLprim value
+ocaml_augeas_transform (value tv, value lensv, value filev, value modev)
+{
+ CAMLparam4 (tv, lensv, filev, modev);
+ augeas_t t = Augeas_t_val (tv);
+ const char *lens = String_val (lensv);
+ const char *file = String_val (filev);
+ const int excl = Int_val (modev) == 1 ? 1 : 0;
+
+ if (aug_transform (t, lens, file, excl) == -1)
+ raise_error (t, "Augeas.transform");