From 1fad29cd2f66994da88193c039eba20500c82a54 Mon Sep 17 00:00:00 2001
From: Cody Boone Ferguson <53008573+xexyl@users.noreply.github.com>
Date: Mon, 29 Jul 2024 08:47:22 -0700
Subject: [PATCH] Fixes in 1998 html files
This includes some notices to those who wish for a greater challenge.
In the 1998/schweikh3 the man page (and its copy to demonstrate the
entry) have been updated slightly but only in comment (move 'or' from
the command suggested to render it in text to its own line before the
next command also in comment).
The bugs file was updated for an entry or two.
---
1998/banks/README.md | 4 +-
1998/banks/index.html | 4 +-
1998/chaos/README.md | 11 ++-
1998/chaos/index.html | 8 +-
1998/dlowe/README.md | 7 +-
1998/dlowe/index.html | 4 +-
1998/dloweneil/README.md | 10 +--
1998/dloweneil/index.html | 10 ++-
1998/dorssel/README.md | 18 ++--
1998/dorssel/dorssel.html | 98 ++++++++++++--------
1998/dorssel/dorssel.md | 86 ++++++++++--------
1998/dorssel/index.html | 15 ++--
1998/schnitzi/README.md | 38 ++++----
1998/schnitzi/index.html | 38 ++++----
1998/schweikh1/README.md | 57 ++++++------
1998/schweikh1/index.html | 54 +++++------
1998/schweikh1/macos.html | 25 ++++--
1998/schweikh1/macos.md | 31 +++++--
1998/schweikh2/README.md | 10 ++-
1998/schweikh2/index.html | 6 +-
1998/schweikh3/README.md | 27 +++---
1998/schweikh3/index.html | 20 +++--
1998/schweikh3/samefile.1 | 5 +-
1998/schweikh3/samefile.1.dupe | 5 +-
1998/tomtorfs/README.md | 90 ++++++++++++-------
1998/tomtorfs/index.html | 140 ++++++++++++++++++++++-------
bugs.html | 160 +++++++++++++++++++--------------
bugs.md | 36 ++++++++
28 files changed, 647 insertions(+), 370 deletions(-)
diff --git a/1998/banks/README.md b/1998/banks/README.md
index e7e17217b..72290b60c 100644
--- a/1998/banks/README.md
+++ b/1998/banks/README.md
@@ -46,8 +46,8 @@ because in the header file you can see that `XK_u` corresponds to `u` and `XK_d`
corresponds to `d`:
```
- #define XK_d 0x0064 /* U+0064 LATIN SMALL LETTER D */
- #define XK_u 0x0075 /* U+0075 LATIN SMALL LETTER U */
+ #define XK_d 0x0064 /* U+0064 LATIN SMALL LETTER D */
+ #define XK_u 0x0075 /* U+0075 LATIN SMALL LETTER U */
```
Note that the [keysym.h](%%REPO_URL%%/1998/banks/keysym.h) file is not complete from X11; it's just the
diff --git a/1998/banks/index.html b/1998/banks/index.html
index 1fc04c855..c3ed02a8f 100644
--- a/1998/banks/index.html
+++ b/1998/banks/index.html
@@ -437,8 +437,8 @@ the throttle up and down to u and d:
make clobber IT=XK_u DT=XK_d all
because in the header file you can see that XK_u corresponds to u and XK_d
corresponds to d:
#define XK_d 0x0064 /* U+0064 LATIN SMALL LETTER D */
- #define XK_u 0x0075 /* U+0075 LATIN SMALL LETTER U */
+ #define XK_d 0x0064 /* U+0064 LATIN SMALL LETTER D */
+ #define XK_u 0x0075 /* U+0075 LATIN SMALL LETTER U */
Note that the keysym.h file is not complete from X11; it’s just the more likely candidates (and some that are probably unlikely :-) ).
The upper case letters would be NOTE: Some systems do not implement The current status of this entry is: STATUS: INABIAF - please DO NOT fix For more detailed information see 1998/chaos in bugs.html. where the first one would show the text as rendered but without links, images
etc. and the second one would write the html to For an old example of it working as a CGI script see: For an old example of it working as a CGI script see
+https://web.archive.org/web/20040326083431/http://www.pootpoot.com/poot/pootify/?URL=http%3A%2F%2Fwww.ioccc.org. This program is a text filter, it reads Read the authors’ remarks below to find out how to play. We believe that your
experience may mirror one of our experiences: Originally, I didn’t appreciate the game. Then I actually read the
+description of the controls. I started playing. I struggled. I spelled my
+first “poot”. I was hooked … The object of this game is to spell If you want a greater challenge, don’t read any further:
-just try to understand the program without running the command below. If you get stuck, come back and run the following command:XK_U and XK_D and you can search the header
diff --git a/1998/chaos/README.md b/1998/chaos/README.md
index f350c4a55..0711b1297 100644
--- a/1998/chaos/README.md
+++ b/1998/chaos/README.md
@@ -5,13 +5,22 @@
```
NOTE: Some systems do not implement `halfdelay()` in their `libcurses`.
-You might try compiling with -lncurses if you have that library.
+You might try compiling with `-lncurses` if you have that library.
Or you can build this entry without the `halfdelay()` call by:
```
make chaos_nohalf
```
+### Bugs and (Mis)features:
+
+The current status of this entry is:
+
+> **STATUS: INABIAF - please DO NOT fix**
+
+For more detailed information see [1998/chaos in bugs.html](../../bugs.html#1998_chaos).
+
+
## To use:
diff --git a/1998/chaos/index.html b/1998/chaos/index.html
index a0156c17b..6c4ebc8f0 100644
--- a/1998/chaos/index.html
+++ b/1998/chaos/index.html
@@ -410,9 +410,15 @@ Location: US - United States of America
To build:
make chaoshalfdelay() in their libcurses.
-You might try compiling with -lncurses if you have that library.
+You might try compiling with -lncurses if you have that library.
Or you can build this entry without the halfdelay() call by:
+ make chaos_nohalfBugs and (Mis)features:
+
+
+To use:
./chaosTry:
diff --git a/1998/dlowe/README.md b/1998/dlowe/README.md
index fbde0eb3a..916f1fddd 100644
--- a/1998/dlowe/README.md
+++ b/1998/dlowe/README.md
@@ -139,11 +139,8 @@ where the first one would show the text as rendered but without links, images
etc. and the second one would write the html to `ms.html` so that you could open
it in a browser.
-For an old example of it working as a CGI script see:
-
-```
- https://web.archive.org/web/20040326083431/http://www.pootpoot.com/poot/pootify/?URL=http%3A%2F%2Fwww.ioccc.org
-```
+For an old example of it working as a CGI script see
+less(1). For insta
ms.html so that you could open
it in a browser.
+ https://web.archive.org/web/20040326083431/http://www.pootpoot.com/poot/pootify/?URL=http%3A%2F%2Fwww.ioccc.orgAuthor’s remarks:
stdin and outputs the
“corrected” text to stdout.l does as well. Instead of using d to drop t
Judges’ remarks:
+ Originally, I didn't appreciate the game. Then I actually read the
- description of the controls. I started playing. I struggled.
- I spelled my first "poot". I was hooked ...
+
Author’s remarks:
Usage
./pootris [X size of board] [Y size of board]Synopsis
POOT as much as possible. There
is no time pressure. You’re given one letter at a time (sort of randomly
-chosen from the set ‘P’, ‘O’, and ‘T’) and you get to move it freely
+chosen from the set ‘P’, ‘O’, and ‘T’) and you get to move it freely
around the border of the playing board, and decide when and where to drop
it into the board. Sound easy? Of course, there’s a catch…Controls
diff --git a/1998/dorssel/README.md b/1998/dorssel/README.md
index 290586cca..c68bd8e89 100644
--- a/1998/dorssel/README.md
+++ b/1998/dorssel/README.md
@@ -116,25 +116,17 @@ is the same as
**If you want a greater challenge, don't read any further**:
just try to understand the program without running the command below.
+If you get stuck, come back and read the below.
-If you get stuck, come back and run the following command:
+The file [dorssel.html](dorssel.html) contains all the information needed to
+understand this program.
+
+For more information you might also try:
```
./dorssel < dorssel.md
```
-
-### NOTICE to those who wish for a greater challenge:
-
-**If you want a greater challenge, don't read any further**:
-just try to understand the program via the source.
-
-If you get stuck, come back and read below for additional hints and information.
-
-- The file [dorssel.html](dorssel.html) contains all the information needed to
-understand this program. For spoiler information, try:
-
-
putchar(45 + encoding % 2);
@@ -111,7 +111,8 @@ The assignment can be incorporated into the `while` control test, and a
as a `while` loop with a comma operator in the test:
```
- while(putchar(45 + encoding % 2), encoding = encoding + 32 >> 1);
+ while(putchar(45 + encoding % 2),
+ encoding = encoding + 32 >> 1);
```
Voila.
@@ -141,25 +142,25 @@ is a valid encoding ! We must, however, use `memchr(3)` instead of `strchr(3)`
the decoding lookup because of this `'\0'`. Since it is far more obscure
this way, I hope you'll forgive me.
-The outline of the program is roughly as follows
+The outline of the program is roughly as follows (pseudo C):
```
while (more lines) {
- if (line is in morse) {
- while (more characters) {
- skip next sequence
- if (' ')
- putchar(' ');
- else
- decode_sequence; /* backwards */
- }
- } else {
- while (more characters) {
- if (isalnum)
- encode_character;
- putchar(' ');
- }
+ if (line is in morse) {
+ while (more characters) {
+ skip next sequence
+ if (' ')
+ putchar(' ');
+ else
+ decode_sequence; /* backwards */
}
+ } else {
+ while (more characters) {
+ if (isalnum)
+ encode_character;
+ putchar(' ');
+ }
+ }
```
Because of the *two* `while(more characters)` loops are the same, I've
@@ -176,30 +177,41 @@ as the temporary `l[0]` will remain `!= 0`.
I've put the `if`s in the above layout into a single switch. Hope you don't
mind ;-)
-Summary of the use of l[999]:
+Summary of the use of `l[999]`:
-```
- l[0] result of "is this line in morse" test
- l[0] temporary shift during encoding
- l[0] - l[33] Morse codings (letters and digits, plus garbage)
- l[11] - l[14] strspn argument
- l[12] - l[14] strspn argument
- l[34] terminator for backward decoding
- l[35] - l[998] input line
-```
+- `l[0]`
+ * **result of "is this line in morse" test**
+
+- `l[0]`
+ * **temporary shift during encoding**
+
+- `l[0] - l[33]`
+ * **Morse codings (letters and digits, plus garbage)**
+
+- `l[11] - l[14]`
+ * **`strspn(3)` argument**
+
+- `l[12] - l[14]`
+ * **`strspn(3)` argument**
+
+- `l[34]`
+ * **terminator for backward decoding**
+
+- `l[35] - l[998]`
+ * **input line**
Selected notes:
-- We don't need to declare `isalnum(3)` (or include ctype.h) as its implicit
- declaration is correct (int argument, int result). This is not so for
+- We don't need to declare `isalnum(3)` (or include `ctype.h`) as its implicit
+ declaration is correct (`int` argument, `int` result). This is not so for
`strlen(3)`, `strspn(3)`, and `memchr(3)` as they use `size_t`.
- During development, my gcc 2.7.2.3 had an internal compiler error (signal
- 6) on code that was correct !
+ 6\) on code that was correct !
- lclint 2.4b thinks that "the observer is modified" a couple of times,
whereas it is not. Well, it is, but there is a sequence point in between.
-- lclint 2.4b parses line 13 as ` ./dorssel < dorssel.c | ./dorsselNOTICE to those who wish for a greater challenge:
The file dorssel.html contains all the information needed to +understand this program.
+For more information you might also try:
./dorssel < dorssel.md
-If you want a greater challenge, don’t read any further: -just try to understand the program via the source.
-If you get stuck, come back and read below for additional hints and information.
-This document describes how this was fixed to work with macOS as well as some of the magic in the entry. Even if you don’t have a Mac it might be worth your time reading especially as some of it details some important fixes and changes in the original entry as well.
-If you want a greater challenge, don’t read any further: +just try to understand the program via the source.
+If you get stuck, come back and read below for additional hints and information. +Of course, if you do not have a Mac the code might make less sense, so you might +just wish to read this in that case, should you wish to understand it.
+As an aside: if you have a Mac with the Apple chip, some of the header files
will report an unsupported architecture and unsupported compiler (error,
warning). This will not make the program abort, however, but even with an Intel
@@ -401,20 +408,26 @@ CPU though, the original entry will not work in macOS as it stands because
/usr/include is hard-coded in the code and macOS does not have it.
Nevertheless, although some of it would not work in other systems where
/usr/include exists, the #defines would still be found okay, at least until
-a file was not found (this limitation was removed in both versions in 2023). see
However, as noted, macOS does not have /usr/include so this would never
work for macOS without some changes, described next. For macOS you will need the
command line tools installed which can be done like:
sudo xcode-select --install
+An important point is that the original version hard-coded gcc but just like
the entry, the alternate version has also removed this limitation despite gcc
-existing (though it’s clang) in macOS.
clang) in macOS; instead it is cc.
+Now as far as how this works if you look at the code of -schweikh1.c, on line 55 you’ll see a funny command (this goes for -the alternate version as well but a bit different).
+schweikh1.c, on line +55 you’ll see a funny command +(this goes for the alternate +version, also on line +55, but the command is necessarily +different).Now the key is two magic numbers, one (two times) on a different line shortly below the string and the other a couple lines further below.
-In the original the numbers are, respectively, 44 and 46, but with the gcc
+
In the original the numbers are, respectively, 44 and 46, but with the gcc
limitation removed the numbers now are 43 and 45. But how does this work? Well
the command is:
"0gcc -ansi -E -dM -undef %s /usr/include/%s>r\0 ("
diff --git a/1998/schweikh1/macos.md b/1998/schweikh1/macos.md
index 43664abdc..97ef6ff60 100644
--- a/1998/schweikh1/macos.md
+++ b/1998/schweikh1/macos.md
@@ -1,9 +1,20 @@
+# Introduction to this document:
+
This document describes how this was fixed to work with macOS as well as some of
the magic in the entry. Even if you don't have a Mac it might be worth your time
reading especially as some of it details some important fixes and changes in the
original entry as well.
-# macOS changes
+## NOTICE to those who wish for a greater challenge:
+
+**If you want a greater challenge, don't read any further**:
+just try to understand the program via the source.
+
+If you get stuck, come back and read below for additional hints and information.
+Of course, if you do not have a Mac the code might make less sense, so you might
+just wish to read this in that case, should you wish to understand it.
+
+# macOS aside:
As an aside: if you have a Mac with the Apple chip, some of the header files
will report an unsupported architecture and unsupported compiler (error,
@@ -13,7 +24,7 @@ CPU though, the original entry will not work in macOS as it stands because
Nevertheless, although some of it would not work in other systems where
`/usr/include` exists, the `#define`s would still be found okay, at least until
-a file was not found (this limitation was removed in both versions in 2023). see
+a file was not found (this limitation was removed in both versions in 2023).
However, as noted, macOS does **not** have `/usr/include` so this would never
work for macOS without some changes, described next. For macOS you will need the
@@ -23,18 +34,26 @@ command line tools installed which can be done like:
sudo xcode-select --install
```
+# Important point about the hard-coded compiler:
+
An important point is that the original version hard-coded `gcc` but just like
the entry, the alternate version has also removed this limitation despite `gcc`
-existing (though it's `clang`) in macOS.
+existing (though it's `clang`) in macOS; instead it is `cc`.
+
+# How this entry works (the magic):
Now as far as how this works if you look at the code of
-[schweikh1.c](%%REPO_URL%%/1998/schweikh1/schweikh1.c), on line 55 you'll see a funny command (this goes for
-the alternate version as well but a bit different).
+[schweikh1.c](%%REPO_URL%%/1998/schweikh1/schweikh1.c), on [line
+55](%%REPO_URL%%/1998/schweikh1/schweikh1.c#L55) you'll see a funny command
+(this goes for the [alternate
+version](%%REPO_URL%%/1998/schweikh1/schweikh1.alt.c), also on [line
+55](%%REPO_URL%%/1998/schweikh1/schweikh1.c#L55), but the command is necessarily
+different).
Now the key is two magic numbers, one (two times) on a different line shortly below the
string and the other a couple lines further below.
-In the original the numbers are, respectively, `44` and `46`, but with the gcc
+In the original the numbers are, respectively, `44` and `46`, but with the `gcc`
limitation removed the numbers now are `43` and `45`. But how does this work? Well
the command is:
diff --git a/1998/schweikh2/README.md b/1998/schweikh2/README.md
index 7efb4b437..688b6caf9 100644
--- a/1998/schweikh2/README.md
+++ b/1998/schweikh2/README.md
@@ -137,6 +137,14 @@ and now it works with both clang and gcc.
## Author's remarks:
+### NOTICE to those who wish for a greater challenge:
+
+**If you want a greater challenge, don't read any further**:
+just try to understand the program via the source.
+
+If you get stuck, come back and read below for additional hints and information.
+
+
### What this program does
My entry is a `yarng`, which stands for, you guessed it, yet another
@@ -167,7 +175,7 @@ For example:
### Why I think this is obfuscated
-- Ever seen a 'do for ... while' loop?
+- Ever seen a `do for ... while` loop?
- I avoided `int` like the plague. Instead I used storage class specifiers
(`register`, `auto`) to get implicit `int`. The Standard allows implicit `int` even in
diff --git a/1998/schweikh2/index.html b/1998/schweikh2/index.html
index 726a5644f..33e5076a0 100644
--- a/1998/schweikh2/index.html
+++ b/1998/schweikh2/index.html
@@ -472,6 +472,10 @@ compiler error:
#line 10 ONE(O(1,1,2,6,0,6))
and now it works with both clang and gcc.
If you want a greater challenge, don’t read any further: +just try to understand the program via the source.
+If you get stuck, come back and read below for additional hints and information.
My entry is a yarng, which stands for, you guessed it, yet another
random number generator, and is pronounced ‘yawn’ due to its
@@ -496,7 +500,7 @@ different values? How long would you need for an empirical test?
Ever seen a ‘do for … while’ loop?
Ever seen a do for ... while loop?
I avoided The author stated: An alternate version allows one to fix this; see alternate
+ In the remote event that the input has more than An alternate version allows one to fix this; see Alternate
code below. If The source is expected to conform to IEEE Std 1003.1-1990 (“POSIX”).
Thank God the IEEE does not standardize a coding style… This is best explained in the man page. The troff source for this
-man page can be found in the file samefile.1. To render try: This is best explained in the man page. The troff source for this man page can
+be found in the file samefile.1. To
+render try: Otherwise: If you want a greater challenge, don’t read any further:
+just try to understand the program via the source. If you get stuck, come back and read below for additional hints and information. where:int like the plague. Instead I used storage class specifiers
(register, auto) to get implicit int. The Standard allows implicit int even in
casts as you can see in (void(*)(register))main. Where implicit int is
diff --git a/1998/schweikh3/README.md b/1998/schweikh3/README.md
index 89d7e20a5..e0428daec 100644
--- a/1998/schweikh3/README.md
+++ b/1998/schweikh3/README.md
@@ -6,14 +6,12 @@
The author stated:
-```
- In the remote event that the input has more than `8192` files with
- the same size (on systems where `sizeof (char *) == 4`, or `4096` when
- `sizeof (char *) == 8`), increase the manifest constant 32767 on line
- 31.
-```
+> In the remote event that the input has more than `8192` files with the same
+size (on systems where `sizeof (char *) == 4`, or `4096` when `sizeof (char *)
+== 8`), increase the manifest constant 32767 on [line
+31](%%REPO_URL%%/1998/schweikh3/schweikh3.c#L31).
-An alternate version allows one to fix this; see [alternate
+An alternate version allows one to fix this; see [Alternate
code](#alternate-code) below.
@@ -78,10 +76,11 @@ The source is expected to conform to IEEE Std 1003.1-1990 ("POSIX").
Thank God the IEEE does not standardize a coding style...
-### What this program does
+### What this program does
-This is best explained in the man page. The troff source for this
-man page can be found in the file [samefile.1](%%REPO_URL%%/1998/schweikh3/samefile.1). To render try:
+This is best explained in the man page. The troff source for this man page can
+be found in the file [samefile.1](%%REPO_URL%%/1998/schweikh3/samefile.1). To
+render try:
```
`man ./samefile.1
@@ -207,6 +206,14 @@ otherwise.
`find(1)`, `ln(1)`, `rm(1)`
+### NOTICE to those who wish for a greater challenge
+
+**If you want a greater challenge, don't read any further**:
+just try to understand the program via the source.
+
+If you get stuck, come back and read below for additional hints and information.
+
+
### Why I think it is obfuscated
- The code is commented but this gives only an *extremely* faint clue.
diff --git a/1998/schweikh3/index.html b/1998/schweikh3/index.html
index 8d739adc1..f76e7fd0e 100644
--- a/1998/schweikh3/index.html
+++ b/1998/schweikh3/index.html
@@ -410,11 +410,12 @@ Location: DE - Federal Republic of Germ
To build:
make all
- In the remote event that the input has more than `8192` files with
- the same size (on systems where `sizeof (char *) == 4`, or `4096` when
- `sizeof (char *) == 8`), increase the manifest constant 32767 on line
- 31.
+
+8192 files with the same
+size (on systems where sizeof (char *) == 4, or 4096 when sizeof (char *) == 8), increase the manifest constant 32767 on line
+31.To use:
dir is the directory (or a directory tree) where you keep
@@ -446,8 +447,9 @@ the tool as well at h
What this program does
- `man ./samefile.1SAMEFILE(1) User Manuals SAMEFILE(1)
@@ -524,6 +526,10 @@ How much space is wasted below our site’s /pub directory?SEE ALSO
find(1), ln(1), rm(1)NOTICE to those who wish for a greater challenge
+Why I think it is obfuscated
To use:
./tomtorfs filename bitwidth polynom reflected init xor
+ filename : file to calculate the CRC of
- bitwidth : width of the CRC in bits (decimal)
- polynom : polynomial used for the CRC (hexadecimal)
- reflected : 0 if the CRC is not reflected, 1 if it is
- init : initial value for the CRC (hexadecimal)
- xor : value to xor the final CRC with (hexadecimal)
+
filename
+
+
bitwidth
+
+
polynom
+
+
reflected
+
+
init
+
+
xor
+
+
Try:
./try.shJudges’ remarks:
@@ -425,15 +445,35 @@ Location: BE - Kingdom of Belgium
of the program with the value of CRCs computed by PKZIP or any other
archiver that uses the CRC-32 algorithm.
Usage:
- ./tomtorfs filename bitwidth polynom reflected init xor
-
- filename : file to calculate the CRC of
- bitwidth : width of the CRC in bits (decimal)
- polynom : polynomial used for the CRC (hexadecimal)
- reflected : 0 if the CRC is not reflected, 1 if it is
- init : initial value for the CRC (hexadecimal)
- xor : value to xor the final CRC with (hexadecimal)
+Usage:
+ ./tomtorfs filename bitwidth polynom reflected init xor
+where:
+filename
+bitwidth
+polynom
+reflected
+init
+xor
+ ./tomtorfs filename 16 1021 0 FFFF 0000
@@ -461,22 +501,60 @@ the nice code shape I worked so hard on ;-) ) the code will become a bit more
readable.
The variable names are not very descriptive. They have the following meanings:
- a = argc
- A = argv
-
- b = array of unsigned long variables
- b[0] = bit-width of the CRC (argv[2])
- b[1] = CRC polynomial (argv[3])
- b[2] = nonzero if CRC is reflected (argv[4])
- b[3] = initial value of CRC (argv[5])
- b[4] = value final CRC is XORed with (argv[6])
- b[5] = CRC value
- b[6] = byte from file
- b[7] = counter
-
- B = FILE * through which the file argv[1] is opened
-
- C = typedef for unsigned long
+a
+A
+b
+unsigned long variables:b[0]
+argv[2])b[1]
+argv[3])b[2]
+b[3]
+b[4]
+b[5]
+b[6]
+b[7]
+B
+FILE * through which the file argv[1] is openedC
+typedef for unsigned longThe first for loop simply reads the command-line arguments
in the b[] array. The third parameter to strtoul(3) causes
all arguments to be in base-16 (hex) except the first one,
diff --git a/bugs.html b/bugs.html
index 87d2f6605..1f34403d3 100644
--- a/bugs.html
+++ b/bugs.html
@@ -1632,6 +1632,34 @@ We greatly appreciate your help here!
The author stated the following:
++Memory
+malloc(3)ed is never freed. This shouldn’t be a big deal, since only +one block is ever allocated, and the OS should recover it.My local flavor of lint doesn’t seem to like the fact that I never
+return+frommain(). Feh, what does it know? Otherwise, ignoring lint’s over +protectiveness (“Of course I’m not using all of the functions defined in +curses.h!”), it’s lint clean.If the compiler happens to generate the byte sequence “AlWuzEre” in the +executable by chance, the program may be unable to locate the embedded string. +As a result, running the program without an external data file may act in +undefined ways. +If the compiler doesn’t store
+char * P’s data in a nice contiguous stream, +it would be bad. As above, it would break running the program without an +external data file.If the incoming data is corrupt, the results are undefined. (Although dumping +core is a popular result.)
+When a point passes behind the camera, it is still plotted. The object will +“bounce” off the camera, but the result (some points in front, some reflected +from the rear) looks really odd. And it sometimes hangs. So just don’t fly +through objects. You’ll be happier.
+
A point worth considering is that as the number passed into the program gets @@ -1816,7 +1844,7 @@ on the stack at that point:
5which might (?) suggest that the + operator is unimplemented. Unfortunately it
has been many years since I have used perl and I was never a guru either.
The author states that in perl < 5.6.0 there is a bug with a core dump in what
they said is in Perl_sv_upgrade. As this is documented it is not considered a
bug to be fixed. For the curious this will crash in macOS. Cody notes that the
@@ -1858,7 +1886,7 @@ of 92 warnings! Nonetheless neither works okay and both crash.
This program does not do what you might think it does! Running it like:
@@ -1876,7 +1904,7 @@ make a pull request.If DISPLAY is not set the program will very likely crash, do something strange
@@ -1890,7 +1918,7 @@ fire! :-) ).
Cody Boone Ferguson fixed this so that it @@ -1909,7 +1937,7 @@ elves of Imladris :-(
This program will crash without an arg.
This program deliberately crashes if it loses (which is what it aims to do).
@@ -1986,7 +2014,7 @@ appreciate your help!Sometimes when one player presses q it will result in broken pipe on the other
@@ -2004,7 +2032,7 @@ set. In other words both have to be ASCII or EBCDIC - not one of each.
This program will very likely crash or do something unexpected if you do not @@ -2020,7 +2048,7 @@ wanted to install it as a tool but this is missing.
The glob pattern must match the whole string. See the author’s comments for @@ -2188,13 +2216,13 @@ compile under clang. The following patch was applied:
gavin_files: boot.b lilo.conf prim gavin_install.txtThe current (Makefile was modified to try and fit into the current IOCCC build environment.
-See known features in the index.html for things that are not bugs but documented (mis)features.
The author stated that:
@@ -2219,7 +2247,7 @@ things that are not bugs but documented (mis)features.The generated code will very likely segfault or do something not intended if not @@ -2232,7 +2260,7 @@ given the right args. See the index.html file for the correct syntax.
This program sometimes will create unsolvable puzzles :-) just to hook you.
@@ -2246,7 +2274,7 @@ dimensions. Try 100 100 100 for instance and see what happens!
This entry will very likely segfault or do something strange if the source code @@ -2255,7 +2283,7 @@ does not exist.
The author states:
@@ -2289,7 +2317,7 @@ for running itself.Cody Boone Ferguson notes that, though @@ -2303,7 +2331,7 @@ website itself.
The author stated the below points of interest.
@@ -2344,7 +2372,7 @@ with at leastcomputer.tofu input file:
The string specified must be <= 42 characters and may only consist of the @@ -2353,7 +2381,7 @@ with possibly corrupt GIF files.
This program will likely crash or do something funny without an arg.
@@ -2372,12 +2400,12 @@ but you are welcome to try and fix it. provide it as an additional alt version. Fixing this is very likely to be very challenging and in some systems it will not be possible to fix but you are welcome to try and fix it if you wish to! -Incorrect formulas will ungracefully crash the program.
This program will likely crash or do something funny if the file cannot be @@ -2385,7 +2413,7 @@ opened. The number of args is however checked.
The author stated:
@@ -2402,7 +2430,7 @@ opened. The number of args is however checked.Cody Boone Ferguson fixed this program to @@ -2449,7 +2477,7 @@ case-sensitive.
For a great amount of data points the program will crash, depending on your @@ -2474,7 +2502,7 @@ for security in modern days!). Do you have a server with enough bandwid would like to set it up? We’ll gladly thank you in the thanks file file and link to the page as well! You’ll also have IOCCC fame for reviving a pootifier! :-)
-The author states the following:
Bad input (e.g. nonexistent files, non-numeric number of iterations, etc.) @@ -2486,7 +2514,7 @@ tends to result in empty output.
The author stated that there are a number of features and limitations. As the @@ -2496,7 +2524,7 @@ remarks instead.
This program will very likely crash or do something funny without an arg.
@@ -2665,7 +2693,7 @@ defined.The author stated that the program will crash if no argument is passed to the @@ -2679,7 +2707,7 @@ fire :-)
The author stated:
@@ -2688,7 +2716,7 @@ fire :-)The author stated:
@@ -2721,7 +2749,7 @@ fire :-)The author stated:
@@ -2735,7 +2763,7 @@ doesn’t make it possible to lock drawing to the display refresh rate.)The author stated:
@@ -2756,7 +2784,7 @@ doesn’t make it possible to lock drawing to the display refresh rate.)The author stated that the program will crash if no argument is passed to the @@ -2772,7 +2800,7 @@ fire :-)
The author stated:
@@ -2792,7 +2820,7 @@ and endianness conversion would make the source too large for IOCCC rule 2).This program will possibly crash or draw something strange with 0 args. Then @@ -2811,7 +2839,7 @@ used.
From the author:
@@ -2827,7 +2855,7 @@ used.From the author:
@@ -2840,14 +2868,14 @@ such asC2E2.
Invalid input files will very likely crash the program.
This program will not terminate on its own; you must kill hou (but not Qiming
@@ -2855,7 +2883,7 @@ Hou :-) ) yourself. This should not be fixed.
The author reminds us that if you kill the program you will have to wait a short @@ -2872,7 +2900,7 @@ it out as a known limitation it is not a bug but a feature.
The author noted that in macOS the colours might be wrong. They gave a solution. @@ -2896,7 +2924,7 @@ player become bigger, stay away from blocks!
This program will very likely crash if no arg is given.
@@ -2937,7 +2965,7 @@ rely on the entry as the below shows. One should be able to do:The author stated:
@@ -2981,7 +3009,7 @@ because it is the same thing as the other, just updated to useprog.alt
2015/mills2
-STATUS: INABIAF - please DO NOT fix
+STATUS: INABIAF - please DO NOT fix
Source code: 2015/mills2/prog.c
Information: 2015/mills2/index.html
The program doesn’t look at the header of files so if it’s passed something hat
@@ -2990,7 +3018,7 @@ is not compressed data it’s likely to crash.
2015/schweikhardt
-STATUS: INABIAF - please DO NOT fix
+STATUS: INABIAF - please DO NOT fix
Source code: 2015/schweikhardt/prog.c
Information: 2015/schweikhardt/index.html
The program assumes that EOF is -1. This can be fixed but at this time it is
@@ -3023,7 +3051,7 @@ use 8 * sizeof(typ) bits per place. It does not work when CHA
2018/algmyr
-STATUS: INABIAF - please DO NOT fix
+STATUS: INABIAF - please DO NOT fix
Source code: 2018/algmyr/prog.c
Information: 2018/algmyr/index.html
The author wrote:
@@ -3042,7 +3070,7 @@ loop printing whitespace.
2018/hou
-STATUS: INABIAF - please DO NOT fix
+STATUS: INABIAF - please DO NOT fix
Source code: 2018/hou/prog.c
Information: 2018/hou/index.html
When you run it on a JSON file you will see something like:
@@ -3067,7 +3095,7 @@ likely see:
where [] is the cursor. When this happens if you hit enter (this is necessary
or else it’ll happen again) and then exit again (ctrl-e) and run prog again
it’ll be okay.
-STATUS: INABIAF - please DO NOT fix
+STATUS: INABIAF - please DO NOT fix
The author stated that if you make a typo it can happen that the boot loader can
crash and halt. If this is the case type ctrl-e to quit the emulator and try
again.
@@ -3082,7 +3110,7 @@ in the case of compiled code it won’t be executable).
2018/vokes
-STATUS: INABIAF - please DO NOT fix
+STATUS: INABIAF - please DO NOT fix
Source code: 2018/vokes/prog.c
Information: 2018/vokes/index.html
The author wrote the following:
@@ -3132,7 +3160,7 @@ this program has nothing to do with a hand.
2019/adamovsky
-STATUS: INABIAF - please DO NOT fix
+STATUS: INABIAF - please DO NOT fix
Source code: 2019/adamovsky/prog.c
Information: 2019/adamovsky/index.html
Certain input can crash this program. The file
@@ -3140,7 +3168,7 @@ this program has nothing to do with a hand.
2019/burton
-STATUS: INABIAF - please DO NOT fix
+STATUS: INABIAF - please DO NOT fix
Source code: 2019/burton/prog.c
Information: 2019/burton/index.html
The author pointed out that some implementations of wc(1) show different
@@ -3148,7 +3176,7 @@ values but his implementation matches that of macOS and FreeBSD.
2019/ciura
-STATUS: INABIAF - please DO NOT fix
+STATUS: INABIAF - please DO NOT fix
Source code: 2019/ciura/prog.c
Information: 2019/ciura/index.html
Cody Boone Ferguson fixed the scripts so
@@ -3182,7 +3210,7 @@ for more information on the change to fgets(3).
2019/duble
-STATUS: INABIAF - please DO NOT fix
+STATUS: INABIAF - please DO NOT fix
Source code: 2019/duble/prog.c
Information: 2019/duble/index.html
There are two things to be aware of with this entry.
@@ -3211,7 +3239,7 @@ in the directory:
2019/endoh
-STATUS: INABIAF - please DO NOT fix
+STATUS: INABIAF - please DO NOT fix
Source code: 2019/endoh/prog.c
Information: 2019/endoh/index.html
As a backtrace quine this entry is SUPPOSED to segfault so this should not be
@@ -3219,7 +3247,7 @@ touched either.
2019/karns
-STATUS: INABIAF - please DO NOT fix
+STATUS: INABIAF - please DO NOT fix
Source code: 2019/karns/prog.c
Information: 2019/karns/index.html
The author stated the following:
@@ -3249,7 +3277,7 @@ touched either.
2019/lynn
-STATUS: INABIAF - please DO NOT fix
+STATUS: INABIAF - please DO NOT fix
Source code: 2019/lynn/prog.c
Information: 2019/lynn/index.html
The author wrote that there are a number of differences from what one might
@@ -3259,7 +3287,7 @@ remarks in the sections Syntax and
2019/mills
-STATUS: INABIAF - please DO NOT fix
+STATUS: INABIAF - please DO NOT fix
Source code: 2019/mills/prog.c
Information: 2019/mills/index.html
The author wrote that if you decide to change networks or use a different input
@@ -3279,7 +3307,7 @@ a crash.
2019/poikola
-STATUS: INABIAF - please DO NOT fix
+STATUS: INABIAF - please DO NOT fix
Source code: 2019/poikola/prog.c
Information: 2019/poikola/index.html
This program will not validate input so it might fail or get stuck if invoked
@@ -3288,7 +3316,7 @@ erroneously.
2019/yang
-STATUS: INABIAF - please DO NOT fix
+STATUS: INABIAF - please DO NOT fix
Source code: 2019/yang/prog.c
Information: 2019/yang/index.html
The author noted that if the program runs out of memory it is likely to crash.
@@ -3303,7 +3331,7 @@ ignored except line feeds (preserved) and tabs (expanded to 8 spaces).’
2020/burton
-STATUS: INABIAF - please DO NOT fix
+STATUS: INABIAF - please DO NOT fix
Source code: 2020/burton/prog.c
Information: 2020/burton/index.html
This entry is known to crash if no arg is specified. Although easy to fix it is
@@ -3314,7 +3342,7 @@ either. But can you figure out why this happens?
2020/carlini
-STATUS: INABIAF - please DO NOT fix
+STATUS: INABIAF - please DO NOT fix
Source code: 2020/carlini/prog.c
Information: 2020/carlini/index.html
The author stated that bad things happen if the entered move is outside of the
@@ -3328,7 +3356,7 @@ move.
2020/ferguson1
-STATUS: INABIAF - please DO NOT fix
+STATUS: INABIAF - please DO NOT fix
Source code: 2020/ferguson1/prog.c
Information: 2020/ferguson1/index.html
There are some things that might appear to be bugs but are actually features or
@@ -3338,7 +3366,7 @@ things that are misinterpreted as bugs. See the
2020/giles
-STATUS: INABIAF - please DO NOT fix
+STATUS: INABIAF - please DO NOT fix
Source code: 2020/giles/prog.c
Information: 2020/giles/index.html
The author noted that the program only supports WAV files that have
@@ -3347,7 +3375,7 @@ audio channels.
2020/otterness
-STATUS: INABIAF - please DO NOT fix
+STATUS: INABIAF - please DO NOT fix
Source code: 2020/otterness/prog.c
Information: 2020/otterness/index.html
The author listed the following limitations:
diff --git a/bugs.md b/bugs.md
index 6f362ae0f..7e85734c8 100644
--- a/bugs.md
+++ b/bugs.md
@@ -1790,6 +1790,42 @@ There was no IOCCC in 1997.
+
+## 1998/chaos
+
+
+### STATUS: INABIAF - please **DO NOT** fix
+### Source code: [1998/chaos/chaos.c](%%REPO_URL%%/1998/chaos/chaos.c)
+### Information: [1998/chaos/index.html](1998/chaos/index.html)
+
+The author stated the following:
+
+> Memory `malloc(3)`ed is never freed. This shouldn't be a big deal, since only
+one block is ever allocated, and the OS should recover it.
+>
+> My local flavor of lint doesn't seem to like the fact that I never `return`
+from `main()`. Feh, what does it know? Otherwise, ignoring lint's over
+protectiveness ("Of course I'm not using all of the functions defined in
+`curses.h`!"), it's lint clean.
+>
+>
+> If the compiler happens to generate the byte sequence "AlWuzEre" in the
+executable by chance, the program may be unable to locate the embedded string.
+As a result, running the program without an external data file may act in
+undefined ways.
+> If the compiler doesn't store `char * P`'s data in a nice contiguous stream,
+it would be bad. As above, it would break running the program without an
+external data file.
+>
+> If the incoming data is corrupt, the results are undefined. (Although dumping
+core is a popular result.)
+>
+> When a point passes behind the camera, it is still plotted. The object will
+"bounce" off the camera, but the result (some points in front, some reflected
+from the rear) looks really odd. And it sometimes hangs. So just don't fly
+through objects. You'll be happier.
+
+
## 1998/dlowe