+ char * p1 = "Trouble in ";
+ char * p2 = " with ";
+ char * p3 = ".";
+ uint16_t size = strlen(p1) + strlen(parent) + strlen(p2) + strlen(child)
+ + strlen(p3) + 1;
+ char * msg = malloc(size);
+ exit_err(NULL == msg, "malloc() in trouble_msg() failed.");
+ sprintf(msg, "%s%s%s%s%s", p1, parent, p2, child, p3);
+ return msg;
+}
+
+
+
+extern void * try_malloc(size_t size, char * f)
+{
+ char * msg = trouble_msg(f, "malloc()");
+ void * p = malloc(size);
+ exit_err(NULL == p, msg);
+ free(msg);
+ return p;
+}
+
+
+
+extern void * try_calloc(size_t size1, size_t size2, char * f)
+{
+ char * msg = trouble_msg(f, "calloc()");
+ void * p = calloc(size1, size2);
+ exit_err(NULL == p, msg);
+ free(msg);
+ return p;
+}
+
+
+
+extern void check_files_xor(char * p1, char * p2)
+{
+ char * msg1 = "A file '";
+ char * msg2 = "' exists, but no file '";
+ char * msg3 = "'. If everything was in order, both or noe would exist. "
+ "The game won't start until this is corrected.";
+ uint16_t size = strlen(msg1) + strlen(p1) + strlen(msg2) + strlen(p2)
+ + strlen(msg3);
+ char msg[size];
+ if (!access(p1, F_OK) && access(p2, F_OK))