Add Augeas.set
authorPino Toscano <ptoscano@redhat.com>
Fri, 15 Sep 2017 14:42:03 +0000 (16:42 +0200)
committerRichard W.M. Jones <rjones@redhat.com>
Fri, 15 Sep 2017 15:45:28 +0000 (16:45 +0100)
Simple binding for aug_set, so it is possible to actually change the
value of nodes.

augeas-c.c
augeas.ml
augeas.mli

index 4db3f6c..3952910 100644 (file)
@@ -349,3 +349,23 @@ ocaml_augeas_load (value tv)
 
   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);
+}
index ba3626e..974a940 100644 (file)
--- a/augeas.ml
+++ b/augeas.ml
@@ -70,6 +70,8 @@ external save : t -> unit
   = "ocaml_augeas_save"
 external load : t -> unit
   = "ocaml_augeas_load"
+external set : t -> path -> value option -> unit
+  = "ocaml_augeas_set"
 
 let () =
   Callback.register_exception "Augeas.Error" (Error (AugErrInternal, "", "", ""))
index a896270..ef43e43 100644 (file)
@@ -115,3 +115,6 @@ val save : t -> unit
 
 val load : t -> unit
   (** [load t] loads files into the tree. *)
+
+val set : t -> path -> value option -> unit
+  (** [set t path] sets [value] as new value at [path]. *)