summaryrefslogtreecommitdiff
path: root/xen.c
diff options
context:
space:
mode:
authorIOhannes m zmölnig <zmoelnig@umlautS.umlaeute.mur.at>2018-02-23 16:22:29 +0100
committerIOhannes m zmölnig <zmoelnig@umlautS.umlaeute.mur.at>2018-02-23 16:22:29 +0100
commitb3b583be0f50487d478f02ee6c147848bdfcc73c (patch)
tree4e12aaceedbde1d991260c3fd9cd17675efec2fd /xen.c
parent1b3b1b2aeecc34416aa125e24abecda704a5c8ad (diff)
New upstream version 18.1
Diffstat (limited to 'xen.c')
-rw-r--r--xen.c24
1 files changed, 17 insertions, 7 deletions
diff --git a/xen.c b/xen.c
index 611ba13..7341b7d 100644
--- a/xen.c
+++ b/xen.c
@@ -502,13 +502,23 @@ Xen xen_rb_eval_string_with_error(const char *str)
}
-Xen xen_rb_load_file_with_error(Xen file)
-{
- int status = 0;
- rb_load_protect(file, 0, &status);
- if (status != 0)
- return(xen_rb_obj_as_string(rb_gv_get("$!")));
- return(Xen_true);
+void xen_rb_load_file_with_error(const char *file)
+{
+ int status = 0, i;
+ Xen err, info;
+ rb_load_protect(C_string_to_Xen_string(file), 0, &status);
+ if (status == 0)
+ return;
+ fprintf(stderr, "Can't load %s", file);
+ err = rb_gv_get("$!");
+ if (err != Qnil)
+ fprintf(stderr, ": %s", Xen_object_to_C_string(err));
+ fprintf(stderr, "\n");
+ info = rb_gv_get("$@");
+ if (info == Qnil)
+ return;
+ for (i = 0; i < Xen_vector_length(info); i++)
+ fprintf(stderr, "%s\n", Xen_string_to_C_string(Xen_vector_ref(info, i)));
}