+static char * build_visible_map(struct Thing * player);
+
+/* Write to "file" game map as visible to "player" right now, as drawn by
+ * build_visible_map(), and thereafter game map as memorized by player in its
+ * .mem_map and .t_mem. Write one row per \n-delimited line.
+ */
+static void write_map(struct Thing * player, FILE * file);
+
+
+
+static void write_key_space(FILE * file, char * key)
+{
+ try_fwrite(key, strlen(key), 1, file, __func__);
+ try_fputc(' ', file, __func__);
+}
+
+
+
+static void write_uvalue(FILE * file, uint32_t value)
+{
+ char * line = try_malloc(11, __func__);
+ exit_trouble(-1 == sprintf(line, "%u", value), __func__, s[S_FCN_SPRINTF]);
+ try_fwrite(line, strlen(line), 1, file, __func__);
+ free(line);
+}
+
+
+
+static void write_string(FILE * file, char * string)
+{
+ try_fputc('\'', file, __func__);
+ try_fwrite(string, strlen(string), 1, file, __func__);
+ try_fputc('\'', file, __func__);
+}
+
+
+
+static void write_key_space_uvalue(FILE * file, char * key, uint32_t value)
+{
+ write_key_space(file, key);
+ write_uvalue(file, value);
+ try_fputc('\n', file, __func__);
+}
+
+
+
+static void write_key_space_svalue(FILE * file, char * key, int32_t value)
+{
+ write_key_space(file, key);
+ char * line = try_malloc(11, __func__);
+ exit_trouble(-1 == sprintf(line, "%d", value), __func__, s[S_FCN_SPRINTF]);
+ try_fwrite(line, strlen(line), 1, file, __func__);
+ free(line);
+ try_fputc('\n', file, __func__);
+}
+
+
+
+static void write_key_space_string(FILE * file, char * key, char * string)
+{
+ write_key_space(file, key);
+ write_string(file, string);
+ try_fputc('\n', file, __func__);
+}