Simon Tatham f729f51e47 WASM: move save file encoding from JS into C.
The previous fix worked OK, but it was conceptually wrong. Puzzles
save files are better regarded as binary, not text: the length fields
are measured in bytes, so translating the file into a different
multibyte character encoding would invalidate them.

So it was wrong to fetch a C byte string containing the exactly right
binary data, then translate it into a Javascript string as if decoding
from UTF-8, then retranslate to a representation of a bytewise
encoding via encodeURIComponent, and then label the result as
application/octet-stream.

This probably wouldn't have caused any problems in practice, because I
don't remember any situation in which my save files use characters
outside printable ASCII (plus newline). But it's not actually
forbidden, so a save file might choose to do that some day, so that
UTF-8 decode/reencode hidden in the JS was a latent bug.

Now the URI-encoding is done on the C side, while we still know
exactly what the binary data ought to look like and can be sure we're
translating it byte for byte into the output encoding for the data:
URI. By the time the JS receives a string pointer from get_save_file,
it's already URI-encoded, which _guarantees_ that it's in ASCII and
won't be messed about with by Emscripten's UTF8ToString.
2021-05-23 08:45:55 +01:00
2021-04-25 09:59:15 +01:00
2021-04-25 09:59:15 +01:00
2021-04-25 22:00:12 +01:00
2021-04-25 09:59:15 +01:00
2021-04-25 09:59:15 +01:00
2018-11-13 21:48:24 +00:00
2018-11-13 21:48:24 +00:00
2018-11-13 21:48:24 +00:00
2021-04-22 06:24:23 +01:00
2021-04-22 06:24:23 +01:00
2021-04-25 22:00:12 +01:00
2021-03-29 19:02:23 +01:00
2018-11-13 21:48:24 +00:00
2021-04-22 06:24:23 +01:00
2018-11-13 21:48:24 +00:00
2021-04-27 07:08:08 +01:00
2018-11-13 21:48:24 +00:00
2021-04-26 18:05:09 +01:00
2018-11-13 21:48:24 +00:00
2018-11-13 21:48:24 +00:00
2018-11-13 21:48:24 +00:00
2021-03-29 19:02:23 +01:00
2019-12-30 08:10:34 +00:00
2017-09-20 18:03:44 +01:00
2021-04-25 22:00:12 +01:00
2021-05-21 09:10:53 +01:00
2021-05-21 09:10:53 +01:00
2021-03-29 19:02:23 +01:00
2018-11-13 21:48:24 +00:00
2018-11-13 21:48:24 +00:00
2017-05-07 16:25:56 +01:00

This is the README accompanying the source code to Simon Tatham's
puzzle collection. The collection's web site is at
<https://www.chiark.greenend.org.uk/~sgtatham/puzzles/>.

The puzzle collection is built using CMake <https://cmake.org/>. To
compile in the simplest way (on any of Linux, Windows or Mac), run
these commands in the source directory:

  cmake .
  cmake --build .

The manual is provided in Windows Help format for the Windows build;
in text format for anyone who needs it; and in HTML for the Mac OS X
application and for the web site. It is generated from a Halibut
source file (puzzles.but), which is the preferred form for
modification. To generate the manual in other formats, rebuild it,
or learn about Halibut, visit the Halibut website at
<https://www.chiark.greenend.org.uk/~sgtatham/halibut/>.
Description
No description provided
Readme 26 MiB
Languages
C 93.3%
JavaScript 1.4%
Objective-C 1.1%
CMake 1.1%
HTML 0.8%
Other 2.2%