Add error message to Augeas.Error
[ocaml-augeas.git] / augeas-c.c
index ae22dff..7f0531f 100644 (file)
@@ -87,8 +87,9 @@ static void
 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;
@@ -100,6 +101,7 @@ raise_error_and_maybe_close (augeas_t t, const char *msg, bool close_handle)
     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);
 
@@ -116,13 +118,14 @@ raise_error_and_maybe_close (augeas_t t, const char *msg, bool close_handle)
     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)
 
@@ -130,15 +133,16 @@ static void
 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 *