int r;
r = aug_get (t, path, &val);
- if (r == 1) { /* Return Some val */
+ if (r == 1 && val) { /* Return Some val */
v = caml_copy_string (val);
optv = caml_alloc (1, 0);
Field (optv, 0) = v;
- } else if (r == 0) /* Return None */
+ } else if (r == 0 || !val) /* Return None */
optv = Val_int (0);
else if (r == -1) /* Error or multiple matches */
raise_error (t, "Augeas.get");
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");
+
+ CAMLreturn (Val_unit);
+}