projects
/
open-adventure.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
018ca9a
)
Documentation update.
author
Eric S. Raymond
<esr@thyrsus.com>
Tue, 20 Jun 2017 12:20:34 +0000
(08:20 -0400)
committer
Eric S. Raymond
<esr@thyrsus.com>
Tue, 20 Jun 2017 12:20:34 +0000
(08:20 -0400)
notes.adoc
patch
|
blob
|
history
diff --git
a/notes.adoc
b/notes.adoc
index 75c2333375275de6032624803ed92f26757160c8..1baf354d694a667a9c81a3049765ad15048d1587 100644
(file)
--- a/
notes.adoc
+++ b/
notes.adoc
@@
-73,8
+73,8
@@
necessarily pretty ugly by modern standards. Encryption and
checksumming have been discarded - it's pointless to try
tamper-proofing saves when everyone has the source code.
checksumming have been discarded - it's pointless to try
tamper-proofing saves when everyone has the source code.
-A -r command-line been added. When it is given (with a file
-
path argument) it is functionally equivalent to
RESTORE command.
+A -r command-line been added. When it is given (with a file
path
+
argument) it is functionally equivalent to a
RESTORE command.
== Translation ==
== Translation ==
@@
-85,14
+85,14
@@
ugly and quite unreadable.
Jason Ninneman and I have moved it to what is almost, but not quite,
idiomatic modern C. We refactored the right way, checking correctness
against a comprehensive test suite that we built first and verified
Jason Ninneman and I have moved it to what is almost, but not quite,
idiomatic modern C. We refactored the right way, checking correctness
against a comprehensive test suite that we built first and verified
-with coverage tools (we have over 90% coverage, with the remaining
-confined to exception cases that are difficult to reach). This is
+with coverage tools (we
now
have over 90% coverage, with the remaining
+confined to exception cases that are
very
difficult to reach). This is
what you are running when you do "make check".
what you are running when you do "make check".
-Th
is move entailed some structural changes. The most important was
-the refactoring of over 350 gotos into if/loop/break structures. We
-also abolished almost all shared globals; the main one left is a
-struct holding the game's saveable/restorable state.
+Th
e move to modern C entailed some structural changes. The most
+important was the refactoring of over 350 gotos into if/loop/break
+structures. We also abolished almost all shared globals; the main one
+
left is a
struct holding the game's saveable/restorable state.
The original code was greatly complicated by a kind of bit-packing
that was performed because the FORTRAN it was written in had no string
The original code was greatly complicated by a kind of bit-packing
that was performed because the FORTRAN it was written in had no string
@@
-108,6
+108,11
@@
in favor of proper C strings. C strings may be a weak and leaky
abstraction, but this is one of the rare cases in which they are
an obvious improvement over what they're displacing...
abstraction, but this is one of the rare cases in which they are
an obvious improvement over what they're displacing...
+We have also conducted extensive fuzz testing on the game using
+afl (American Fuzzy Lop). We've found and fixed some crashers in
+our new code (which occasionally uses malloc(3)) but none as yet
+in Don's old code (which didn't).
+
The code falls short of being fully modern C in the following
ways:
The code falls short of being fully modern C in the following
ways: