diff options
author | Adam Chlipala <adam@chlipala.net> | 2019-01-21 18:09:59 -0500 |
---|---|---|
committer | Adam Chlipala <adam@chlipala.net> | 2019-01-21 18:09:59 -0500 |
commit | 87d2eab53f8e9f81cc459429675123c9ff36f41e (patch) | |
tree | 81b658d13942148ed6ab7f745b0514ab6ffcc232 /src/c | |
parent | 38a20fdb9619e33ea989e171d98777cb3d7c6bc5 (diff) |
Basis.textOfBlob; try creating filecache directory if it doesn't exist
Diffstat (limited to 'src/c')
-rw-r--r-- | src/c/urweb.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/c/urweb.c b/src/c/urweb.c index ae2fc0a8..c8cfb0c6 100644 --- a/src/c/urweb.c +++ b/src/c/urweb.c @@ -4075,6 +4075,20 @@ uw_Basis_blob uw_Basis_textBlob(uw_context ctx, uw_Basis_string s) { return b; } +uw_Basis_string uw_Basis_textOfBlob(uw_context ctx, uw_Basis_blob b) { + size_t i; + uw_Basis_string r; + + for (i = 0; i < b.size; ++i) + if (b.data[i] == 0) + return NULL; + + r = uw_malloc(ctx, b.size + 1); + memcpy(r, b.data, b.size); + r[b.size] = 0; + return r; +} + uw_Basis_blob uw_Basis_fileData(uw_context ctx, uw_Basis_file f) { (void)ctx; return f.data; @@ -5207,7 +5221,7 @@ uw_unit uw_Basis_cache_file(uw_context ctx, uw_Basis_blob contents) { fd = mkstemp(tempfile); if (fd < 0) - uw_error(ctx, FATAL, "Error creating temporary file for cache"); + uw_error(ctx, FATAL, "Error creating temporary file %s for cache", tempfile); while (written_so_far < contents.size) { ssize_t written_just_now = write(fd, contents.data + written_so_far, contents.size - written_so_far); |