magic number or versioning, relied on random(3) never changing to a
different implementation, and were also saving pointers to disk and
reading them back again. It *looks* as if the pointers thus loaded
were reset before being used, but it's not particularly clear as the
main loop of this thing is goto-based FORTRAN translated lightly to C.
I've changed the logic to null these pointers instead of saving and
loading them, and things seem to still work.
The new save files have a header, support versioning, write only sized
types in network byte order, and for the toy encryption to discourage
cheating do something self-contained instead of using random(3) as a
stream cipher.
Because between the original import from 4.4 until earlier today
trying to save would result in SIGSEGV on most platforms, it's
unlikely anyone has a save file, but just in case (since the pointer
issue appears to be nonlethal) I've kept compat code for old save
files.
chars by default (i.e., almost all machines). Makes it possible to save
the game. This has been broken since 4.4 and probably ever since the
FORTRAN -> C translation.
Crash reported by Petri Laakso in private mail.
Per [2] a furlong is 220 yards and a yard is exactly 0.9144 m.
Per [3] a fortnight is 14 days.
As I didn't find a good authority for what definition of a day a fortnight is
measured in, I'll assume here a day is 86400 SI seconds.
Thus, the speed of light in a vaccum is approximately
1.80*10^12 furlongs per fortnight.
1.80*10^12 = 299792458*86400*14/(220*0.9144)
[1] Resolution 1 of the 17th meeting of the CGPM (1983)
http://www.bipm.org/en/CGPM/db/17/1/
[2] Weights and Measures Act 1985
http://www.legislation.gov.uk/ukpga/1985/72
[3] The Concise Oxford Dictionary, 5th Edition, 1964, p. 480
return value.
(XXX: Except for a pile of allocation macros that produce typed pointer
results; there the typechecking of the result assignment is more valuable
than the warning if the alloc function isn't declared properly. These
macros should go away.)
the "u" variable doesn't shadow stuff, found later in time.h inlines.
kind of a hack, but i don't want to modify time.h either.
XXX: seems kind of annoying