More updates to bugs.md + related files

Some entries were added to the bugs.md file.

As well some README.md files were updated wrt the bugs some of which
might have been better in an earlier commit.
This commit is contained in:
Cody Boone Ferguson committed 2023-03-19 08:51:06 -07:00
1 parent 03467e0594
commit 2ce08b66b4
3 files changed
+59 -48

No files matched your search

+4 -5
View File
@@ -12,7 +12,10 @@ Robbert van Renesse
./mullender
NOTE: This entry is likely to fail and/or dump core on modern computers.
> NOTE: If your machine is not a Vax-11 or pdp-11, this program will
> not execute correctly. In later years, machine dependent
> code was discouraged.
## Judges' comments:
@@ -25,10 +28,6 @@ be non machine specific.
This program was selected for the 1987 t-shirt collection.
> NOTE: If your machine is not a Vax-11 or pdp-11, this program will
> not execute correctly. In later years, machine dependent
> code was discouraged.
The C startup routine (via crt0.o) transfers control to a location
named main. In this case, main just happens to be in the data area.
The array of shorts, which has been further obfuscated by use of
+43 -43
View File
@@ -17,69 +17,69 @@
## Judges' comments
Also try:
Also try:
sh ./clock2
And for a good time, try:
And for a good time, try:
sh ./clock3
Time and time again, Brian Westley seems to come up with a winner!
We are amazed at how much is being done with only one relatively
short line. We think you will as well if you take the time to
understand it.
Time and time again, Brian Westley seems to come up with a winner!
We are amazed at how much is being done with only one relatively
short line. We think you will as well if you take the time to
understand it.
## Author's comments
This 1-line program allows various analog ASCII clocks
to print out the time; the ASCII clock is built from
the command line arguments, so many different types of
clocks can be generated. Three different scripts are
supplied to print out a grandfather clock, a mantle
clock that runs backwards, and a linear-style clock.
(they are clock1, clock2, and clock3)
This 1-line program allows various analog ASCII clocks
to print out the time; the ASCII clock is built from
the command line arguments, so many different types of
clocks can be generated. Three different scripts are
supplied to print out a grandfather clock, a mantle
clock that runs backwards, and a linear-style clock.
(they are `clock1`, `clock2`, and `clock3`)
The program makes the following (possibly non-portable) assumptions:
The program makes the following (possibly non-portable) assumptions:
1) Command line strings can be written to
1. Command line strings can be written to
2) argv[0] can be written to as if it were a long *
2. `argv[0]` can be written to as if it were a `long *`
3) The first three elements of the struct * returned by
localtime() are seconds, minutes, hours, and all are ints
3. The first three elements of the struct * returned by localtime() are seconds,
minutes, hours, and all are ints
4) My sample scripts assume ASCII, though this is not
inherent in the code, just my sample scripts
4. My sample scripts assume ASCII, though this is not inherent in the code, just
my sample scripts
These assumptions are pretty reasonable. 2) can be eliminated
by makes the code larger.
These assumptions are pretty reasonable. 2) can be eliminated
by makes the code larger.
The code is simple; the arguments passed are:
The code is simple; the arguments passed are:
prog minute_map hour_map hand_symbol clock_image
The program merely takes the minute (0-59) and the hour (0-23)
values, looks up the offsets in minute_map and hour_map
and writes the hand_symbol for each into the clock_image
string. This string is then printed.
The program merely takes the minute (0-59) and the hour (0-23)
values, looks up the offsets in `minute_map` and `hour_map`
and writes the `hand_symbol` for each into the `clock_image`
string. This string is then printed.
The for() loop starts by calling time() with argv[0], so
the time value (a long) is written into the program name.
The for() control value is argc, which starts at 5, but
the /=2 statement is executed before the test, so the for()
loop is executed twice, with h=2, then h=1 (for hour & minute).
The for() loop starts by calling time() with argv[0], so
the time value (a long) is written into the program name.
The for() control value is argc, which starts at 5, but
the /=2 statement is executed before the test, so the for()
loop is executed twice, with h=2, then h=1 (for hour & minute).
The statement of the for() loop takes the hour or minute
field of the struct returned by localtime() by casting it
to an int* and dereferencing element [h]. It is slightly
smaller to use the trick h[(int*)localtime(*m)] instead of
((int*)localtime(*m))[h].
The statement of the for() loop takes the hour or minute
field of the struct returned by localtime() by casting it
to an int* and dereferencing element [h]. It is slightly
smaller to use the trick `h[(int*)localtime(*m)]` instead of
`((int*)localtime(*m))[h]`.
This value is in turn indexed into the hour_map or minute_map
parameter to determine where the 'hand' symbol should be
written into the clock_image.
This value is in turn indexed into the `hour_map` or `minute_map`
parameter to determine where the 'hand' symbol should be
written into the `clock_image`.
Note that the hands move in a quantum fashion; 3:59 looks
deceptively like 2:59, since the hour hand will be at the 3
position. It won't move until both hands click over at 4:00.
Note that the hands move in a quantum fashion; 3:59 looks
deceptively like 2:59, since the hour hand will be at the 3
position. It won't move until both hands click over at 4:00.
+12
View File
@@ -87,6 +87,18 @@ but are noteworthy nonetheless.
This entry is likely to fail and/or dump core on any computer other than a
Vax-11 or pdp-11. In 1984 machine dependent code was allowed.
### [1986/august](1986/august/august.c) ([README.md](1986/august/README.md))
This entry is known to segfault after printing its output. It was documented by
the judges and needn't be fixed.
### [1996/westley](1996/westley/westley.c) ([README.md](1996/westley/README.md))
This entry will possibly segfault even when showing the proper output in the
`clock1`, `clock2` and `clock3` scripts. Though this doesn't need to be fixed as
long as it works right it wouldn't hurt to fix it either.
### [2019/endoh](2019/endoh/prog.c) ([README.md](2019/endoh/README.md))
As a backtrace quine this entry is SUPPOSED to segfault so this should not be