raise_error_and_maybe_close (augeas_t t, const char *msg, bool close_handle)
{
value *exn = caml_named_value ("Augeas.Error");
- value args[4];
+ value args[5];
const int code = aug_error (t);
+ const char *aug_err_msg;
const char *aug_err_minor;
const char *aug_err_details;
int ocaml_code = -1;
caml_raise_out_of_memory ();
}
+ aug_err_msg = aug_error_message (t);
aug_err_minor = aug_error_minor_message (t);
aug_err_details = aug_error_details (t);
Store_field (args[0], 0, Val_int (code));
}
args[1] = caml_copy_string (msg);
- args[2] = caml_copy_string (aug_err_minor ? : "");
- args[3] = caml_copy_string (aug_err_details ? : "");
+ args[2] = caml_copy_string (aug_err_msg);
+ args[3] = caml_copy_string (aug_err_minor ? : "");
+ args[4] = caml_copy_string (aug_err_details ? : "");
if (close_handle)
aug_close (t);
- caml_raise_with_args (*exn, 4, args);
+ caml_raise_with_args (*exn, 5, args);
}
#define raise_error(t, msg) raise_error_and_maybe_close(t, msg, false)
raise_init_error (const char *msg)
{
value *exn = caml_named_value ("Augeas.Error");
- value args[4];
+ value args[5];
args[0] = caml_alloc (1, 0);
Store_field (args[0], 0, Val_int (-1));
args[1] = caml_copy_string (msg);
- args[2] = caml_copy_string ("augeas initialization failed");
- args[3] = caml_copy_string ("");
+ args[2] = caml_copy_string ("aug_init failed");
+ args[3] = caml_copy_string ("augeas initialization failed");
+ args[4] = caml_copy_string ("");
- caml_raise_with_args (*exn, 4, args);
+ caml_raise_with_args (*exn, 5, args);
}
static const char *
| Include
| Exclude
-exception Error of error_code * string * string * string
+exception Error of error_code * string * string * string * string
type path = string
= "ocaml_augeas_source"
let () =
- Callback.register_exception "Augeas.Error" (Error (AugErrInternal, "", "", ""))
+ Callback.register_exception "Augeas.Error" (Error (AugErrInternal, "", "", "", ""))
| Exclude
(** The operation mode for the {!transform} function. *)
-exception Error of error_code * string * string * string
+exception Error of error_code * string * string * string * string
(** This exception is thrown when the underlying Augeas library
returns an error. The tuple represents:
- the Augeas error code
- the ocaml-augeas error string
+ - the Augeas error message
- the human-readable explanation of the Augeas error, if available
- a string with details of the Augeas error
*)