summaryrefslogtreecommitdiff
path: root/jsstate.c
diff options
context:
space:
mode:
authorTor Andersson <tor.andersson@artifex.com>2018-09-03 19:41:05 +0200
committerTor Andersson <tor.andersson@artifex.com>2018-09-04 11:27:34 +0200
commitd4655ae8882ef601b06d3f6f0e35bc38ebeea763 (patch)
tree0f39d8c7aed38d6cc78f502aca1110e6fd1ecc4c /jsstate.c
parent924649a69ecbebbf60339f638e73a0595cfb0732 (diff)
Show system error message in js_loadfile.
Diffstat (limited to 'jsstate.c')
-rw-r--r--jsstate.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/jsstate.c b/jsstate.c
index 01b9791..3ff6936 100644
--- a/jsstate.c
+++ b/jsstate.c
@@ -130,36 +130,37 @@ void js_loadfile(js_State *J, const char *filename)
f = fopen(filename, "rb");
if (!f) {
- js_error(J, "cannot open file: '%s'", filename);
+ js_error(J, "cannot open file '%s': %s", filename, strerror(errno));
}
if (fseek(f, 0, SEEK_END) < 0) {
fclose(f);
- js_error(J, "cannot seek in file: '%s'", filename);
+ js_error(J, "cannot seek in file '%s': %s", filename, strerror(errno));
}
n = ftell(f);
if (n < 0) {
fclose(f);
- js_error(J, "cannot tell in file: '%s'", filename);
+ js_error(J, "cannot tell in file '%s': %s", filename, strerror(errno));
}
if (fseek(f, 0, SEEK_SET) < 0) {
fclose(f);
- js_error(J, "cannot seek in file: '%s'", filename);
+ js_error(J, "cannot seek in file '%s': %s", filename, strerror(errno));
}
- s = js_malloc(J, n + 1); /* add space for string terminator */
- if (!s) {
+ if (js_try(J)) {
fclose(f);
- js_error(J, "cannot allocate storage for file contents: '%s'", filename);
+ js_throw(J);
}
+ s = js_malloc(J, n + 1); /* add space for string terminator */
+ js_endtry(J);
t = fread(s, 1, (size_t)n, f);
if (t != n) {
js_free(J, s);
fclose(f);
- js_error(J, "cannot read data from file: '%s'", filename);
+ js_error(J, "cannot read data from file '%s': %s", filename, strerror(errno));
}
s[n] = 0; /* zero-terminate string containing file data */