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 1/3] 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 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 chaos

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.

To use:

    ./chaos

Try:

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 +. ## Author's remarks: diff --git a/1998/dlowe/index.html b/1998/dlowe/index.html index 28edd0bea..8577ca788 100644 --- a/1998/dlowe/index.html +++ b/1998/dlowe/index.html @@ -487,8 +487,8 @@ can look at locally in a browser or pipe through less(1). For insta

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 +https://web.archive.org/web/20040326083431/http://www.pootpoot.com/poot/pootify/?URL=http%3A%2F%2Fwww.ioccc.org.

Author’s remarks:

This program is a text filter, it reads stdin and outputs the “corrected” text to stdout.

diff --git a/1998/dloweneil/README.md b/1998/dloweneil/README.md index e6d5671fb..bec949b2a 100644 --- a/1998/dloweneil/README.md +++ b/1998/dloweneil/README.md @@ -60,11 +60,9 @@ clockwise `l` does as well. Instead of using `d` to drop the letter you can do 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 ... -``` +> 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: @@ -79,7 +77,7 @@ experience may mirror one of our experiences: The object of this game is to spell `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... diff --git a/1998/dloweneil/index.html b/1998/dloweneil/index.html index 699ad0e38..05c3c38a5 100644 --- a/1998/dloweneil/index.html +++ b/1998/dloweneil/index.html @@ -442,16 +442,18 @@ clockwise l does as well. Instead of using d to drop t

Judges’ remarks:

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 ...
+
+

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

The object of this game is to spell 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 ``, whereas it is correct code. +- lclint 2.4b parses [line 13](%%REPO_URL%%/1998/dorssel/dorssel.c:L13) as ``, whereas it is correct code. - lclint 2.4b is positive the second `while` loop is infinite, whereas it is not. diff --git a/1998/dorssel/index.html b/1998/dorssel/index.html index 2a8bd6b04..daf509f68 100644 --- a/1998/dorssel/index.html +++ b/1998/dorssel/index.html @@ -474,17 +474,12 @@ text that can be reversibly Morsified, i.e.
    ./dorssel < dorssel.c | ./dorssel

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 without running the command below.

-

If you get stuck, come back and run the following command:

+just try to understand the program without running the command below. +If you get stuck, come back and read the below.

+

The file 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 contains all the information needed to -understand this program. For spoiler information, try:
  • -
+

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, 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

+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 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, 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.

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 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?

10011

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 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

    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.
    -

    An alternate version allows one to fix this; see alternate +

    +

    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.

    +
    +

    An alternate version allows one to fix this; see Alternate code below.

    To use:

    If dir is the directory (or a directory tree) where you keep @@ -446,8 +447,9 @@ the tool as well at h

    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

    -

    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:

        `man ./samefile.1

    Otherwise:

    SAMEFILE(1) User Manuals SAMEFILE(1)

    @@ -524,6 +526,10 @@ How much space is wasted below our site’s /pub directory?

    otherwise.

    SEE ALSO

    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/samefile.1 b/1998/schweikh3/samefile.1 index 7b90919e0..8c47fb51a 100644 --- a/1998/schweikh3/samefile.1 +++ b/1998/schweikh3/samefile.1 @@ -1,7 +1,10 @@ .\" .\" To format this file into a text file say .\" -.\" nroff -man samefile.1 or +.\" nroff -man samefile.1 +.\" +.\" or +.\" .\" groff -man -Tascii samefile.1 .\" .TH SAMEFILE 1 "OCTOBER 1997" IOCCC "User Manuals" diff --git a/1998/schweikh3/samefile.1.dupe b/1998/schweikh3/samefile.1.dupe index 7b90919e0..8c47fb51a 100644 --- a/1998/schweikh3/samefile.1.dupe +++ b/1998/schweikh3/samefile.1.dupe @@ -1,7 +1,10 @@ .\" .\" To format this file into a text file say .\" -.\" nroff -man samefile.1 or +.\" nroff -man samefile.1 +.\" +.\" or +.\" .\" groff -man -Tascii samefile.1 .\" .TH SAMEFILE 1 "OCTOBER 1997" IOCCC "User Manuals" diff --git a/1998/tomtorfs/README.md b/1998/tomtorfs/README.md index edff9e10e..73491801f 100644 --- a/1998/tomtorfs/README.md +++ b/1998/tomtorfs/README.md @@ -13,14 +13,18 @@ where: -``` - 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` + * 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) ## Try: @@ -39,18 +43,28 @@ archiver that uses the CRC-32 algorithm. ## Author's remarks: -``` - Usage: - ./tomtorfs filename bitwidth polynom reflected init xor +Usage: - 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) +``` + ./tomtorfs filename bitwidth polynom reflected init xor ``` +where: + +- `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) + + ### Examples @@ -116,24 +130,34 @@ readable. The variable names are not very descriptive. They have the following meanings: -``` - a = argc - A = argv +- `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 = 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 - B = FILE * through which the file argv[1] is opened - - C = typedef for unsigned long -``` +- `C` + - `typedef` for `unsigned long` The first `for` loop simply reads the command-line arguments in the `b[]` array. The third parameter to `strtoul(3)` causes diff --git a/1998/tomtorfs/index.html b/1998/tomtorfs/index.html index 80090fb19..b9e792217 100644 --- a/1998/tomtorfs/index.html +++ b/1998/tomtorfs/index.html @@ -412,12 +412,32 @@ Location: BE - Kingdom of Belgium

      To use:

          ./tomtorfs filename bitwidth polynom reflected init xor

      where:

      -
          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 +
          +
        • 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)
        • +
      • +

      Try:

          ./try.sh

      Judges’ 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.

      Author’s remarks:

      -
          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 +
          +
        • 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)
        • +
      • +

      Examples

      CRC-16:

          ./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 +
          +
        • 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
        • +
      • +

      The 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!

      1998


      +
      +

      1998/chaos

      +
      +

      STATUS: INABIAF - please DO NOT fix

      +

      Source code: 1998/chaos/chaos.c

      +

      Information: 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

      @@ -1659,7 +1687,7 @@ IOCCC fame for reviving a pootifier! :-)

      1998/schnitzi

      -

      STATUS: INABIAF - please DO NOT fix

      +

      STATUS: INABIAF - please DO NOT fix

      Source code: 1998/schnitzi/schnitzi.c

      Information: 1998/schnitzi/index.html

      A point worth considering is that as the number passed into the program gets @@ -1816,7 +1844,7 @@ on the stack at that point:

      5

      which 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.

      -

      STATUS: INABIAF - please DO NOT fix

      +

      STATUS: INABIAF - please DO NOT fix

      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.

      2000/primenum

      -

      STATUS: INABIAF - please DO NOT fix

      +

      STATUS: INABIAF - please DO NOT fix

      Source code: 2000/primenum/primenum.c

      Information: 2000/primenum/index.html

      This program does not do what you might think it does! Running it like:

      @@ -1876,7 +1904,7 @@ make a pull request.

      2000/rince

      -

      STATUS: INABIAF - please DO NOT fix

      +

      STATUS: INABIAF - please DO NOT fix

      Source code: 2000/rince/rince.c

      Information: 2000/rince/index.html

      If DISPLAY is not set the program will very likely crash, do something strange @@ -1890,7 +1918,7 @@ fire! :-) ).

      2001/anonymous

      -

      STATUS: INABIAF - please DO NOT fix

      +

      STATUS: INABIAF - please DO NOT fix

      Source code: 2001/anonymous/anonymous.c

      Information: 2001/anonymous/index.html

      Cody Boone Ferguson fixed this so that it @@ -1909,7 +1937,7 @@ elves of Imladris :-(

      2001/bellard

      -

      STATUS: INABIAF - please DO NOT fix

      +

      STATUS: INABIAF - please DO NOT fix

      STATUS: doesn’t work with some platforms - please help us fix it

      Source code: 2001/bellard/bellard.c

      Information: 2001/bellard/index.html

      @@ -1958,14 +1986,14 @@ before the fixes there.

      2001/cheong

      -

      STATUS: INABIAF - please DO NOT fix

      +

      STATUS: INABIAF - please DO NOT fix

      Source code: 2001/cheong/cheong.c

      Information: 2001/cheong/index.html

      This program will crash without an arg.

      2001/dgbeards

      -

      STATUS: INABIAF - please DO NOT fix

      +

      STATUS: INABIAF - please DO NOT fix

      Source code: 2001/dgbeards/dgbeards.c

      Information: 2001/dgbeards/index.html

      This program deliberately crashes if it loses (which is what it aims to do).

      @@ -1986,7 +2014,7 @@ appreciate your help!

      2001/kev

      -

      STATUS: INABIAF - please DO NOT fix

      +

      STATUS: INABIAF - please DO NOT fix

      Source code: 2001/kev/kev.c

      Information: 2001/kev/index.html

      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.

      2001/ollinger

      -

      STATUS: INABIAF - please DO NOT fix

      +

      STATUS: INABIAF - please DO NOT fix

      Source code: 2001/ollinger/ollinger.c

      Information: 2001/ollinger/index.html

      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.

      2001/schweikh

      -

      STATUS: INABIAF - please DO NOT fix

      +

      STATUS: INABIAF - please DO NOT fix

      Source code: 2001/schweikh/schweikh.c

      Information: 2001/schweikh/index.html

      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.txt

      The current (Makefile was modified to try and fit into the current IOCCC build environment.

      -

      STATUS: INABIAF - please DO NOT fix

      +

      STATUS: INABIAF - please DO NOT fix

      See known features in the index.html for things that are not bugs but documented (mis)features.

      2004/jdalbec

      -

      STATUS: INABIAF - please DO NOT fix

      +

      STATUS: INABIAF - please DO NOT fix

      Source code: 2004/jdalbec/jdalbec.c

      Information: 2004/jdalbec/index.html

      The author stated that:

      @@ -2219,7 +2247,7 @@ things that are not bugs but documented (mis)features.

      2004/sds

      -

      STATUS: INABIAF - please DO NOT fix

      +

      STATUS: INABIAF - please DO NOT fix

      Source code: 2004/sds/sds.c

      Information: 2004/sds/index.html

      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.

      2005/anon

      -

      STATUS: INABIAF - please DO NOT fix

      +

      STATUS: INABIAF - please DO NOT fix

      Source code: 2005/anon/anon.c

      Information: 2005/anon/index.html

      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!

      2005/giljade

      -

      STATUS: INABIAF - please DO NOT fix

      +

      STATUS: INABIAF - please DO NOT fix

      Source code: 2005/giljade/giljade.c

      Information: 2005/giljade/index.html

      This entry will very likely segfault or do something strange if the source code @@ -2255,7 +2283,7 @@ does not exist.

      2005/mikeash

      -

      STATUS: INABIAF - please DO NOT fix

      +

      STATUS: INABIAF - please DO NOT fix

      Source code: 2005/mikeash/mikeash.c

      Information: 2005/mikeash/index.html

      The author states:

      @@ -2289,7 +2317,7 @@ for running itself.

      2005/mynx

      -

      STATUS: INABIAF - please DO NOT fix

      +

      STATUS: INABIAF - please DO NOT fix

      Source code: 2005/mynx/mynx.c

      Information: 2005/mynx/index.html

      Cody Boone Ferguson notes that, though @@ -2303,7 +2331,7 @@ website itself.

      2005/sykes

      -

      STATUS: INABIAF - please DO NOT fix

      +

      STATUS: INABIAF - please DO NOT fix

      Source code: 2005/sykes/sykes.c

      Information: 2005/sykes/index.html

      The author stated the below points of interest.

      @@ -2344,7 +2372,7 @@ with at least computer.tofu input file:

      2006/borsanyi

      -

      STATUS: INABIAF - please DO NOT fix

      +

      STATUS: INABIAF - please DO NOT fix

      Source code: 2006/borsanyi/borsanyi.c

      Information: 2006/borsanyi/index.html

      The string specified must be <= 42 characters and may only consist of the @@ -2353,7 +2381,7 @@ with possibly corrupt GIF files.

      2006/hamre

      -

      STATUS: INABIAF - please DO NOT fix

      +

      STATUS: INABIAF - please DO NOT fix

      Source code: 2006/hamre/hamre.c

      Information: 2006/hamre/index.html

      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!

      -

      STATUS: INABIAF - please DO NOT fix

      +

      STATUS: INABIAF - please DO NOT fix

      Incorrect formulas will ungracefully crash the program.

      2006/stewart

      -

      STATUS: INABIAF - please DO NOT fix

      +

      STATUS: INABIAF - please DO NOT fix

      Source code: 2006/stewart/stewart.c

      Information: 2006/stewart/index.html

      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.

      2006/sykes1

      -

      STATUS: INABIAF - please DO NOT fix

      +

      STATUS: INABIAF - please DO NOT fix

      Source code: 2006/sykes1/sykes1.c

      Information: 2006/sykes1/index.html

      The author stated:

      @@ -2402,7 +2430,7 @@ opened. The number of args is however checked.

      2006/toledo2

      -

      STATUS: INABIAF - please DO NOT fix

      +

      STATUS: INABIAF - please DO NOT fix

      Source code: 2006/toledo2/toledo2.c

      Information: 2006/toledo2/index.html

      Cody Boone Ferguson fixed this program to @@ -2449,7 +2477,7 @@ case-sensitive.

      2011/borsanyi

      -

      STATUS: INABIAF - please DO NOT fix

      +

      STATUS: INABIAF - please DO NOT fix

      Source code: 2011/borsanyi/borsanyi.c

      Information: 2011/borsanyi/index.html

      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! :-)

      -

      STATUS: INABIAF - please DO NOT fix

      +

      STATUS: INABIAF - please DO NOT fix

      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.

      • 2011/fredriksson

        -

        STATUS: INABIAF - please DO NOT fix

        +

        STATUS: INABIAF - please DO NOT fix

        Source code: 2011/fredriksson/fredriksson.c

        Information: 2011/fredriksson/index.html

        The author stated that there are a number of features and limitations. As the @@ -2496,7 +2524,7 @@ remarks instead.

        2011/konno

        -

        STATUS: INABIAF - please DO NOT fix

        +

        STATUS: INABIAF - please DO NOT fix

        Source code: 2011/konno/konno.c

        Information: 2011/konno/index.html

        This program will very likely crash or do something funny without an arg.

        @@ -2665,7 +2693,7 @@ defined.

        2011/vik

        -

        STATUS: INABIAF - please DO NOT fix

        +

        STATUS: INABIAF - please DO NOT fix

        Source code: 2011/vik/vik.c

        Information: 2011/vik/index.html

        The author stated that the program will crash if no argument is passed to the @@ -2679,7 +2707,7 @@ fire :-)

        2012/blakely

        -

        STATUS: INABIAF - please DO NOT fix

        +

        STATUS: INABIAF - please DO NOT fix

        Source code: 2012/blakely/blakely.c

        Information: 2012/blakely/index.html

        The author stated:

        @@ -2688,7 +2716,7 @@ fire :-)

        2012/deckmyn

        -

        STATUS: INABIAF - please DO NOT fix

        +

        STATUS: INABIAF - please DO NOT fix

        Source code: 2012/deckmyn/deckmyn.c

        Information: 2012/deckmyn/index.html

        The author stated:

        @@ -2721,7 +2749,7 @@ fire :-)

        2012/dlowe

        -

        STATUS: INABIAF - please DO NOT fix

        +

        STATUS: INABIAF - please DO NOT fix

        Source code: 2012/dlowe/dlowe.c

        Information: 2012/dlowe/index.html

        The author stated:

        @@ -2735,7 +2763,7 @@ doesn’t make it possible to lock drawing to the display refresh rate.)

        2012/tromp

        -

        STATUS: INABIAF - please DO NOT fix

        +

        STATUS: INABIAF - please DO NOT fix

        Source code: 2012/tromp/tromp.c

        Information: 2012/tromp/index.html

        The author stated:

        @@ -2756,7 +2784,7 @@ doesn’t make it possible to lock drawing to the display refresh rate.)

        2012/vik

        -

        STATUS: INABIAF - please DO NOT fix

        +

        STATUS: INABIAF - please DO NOT fix

        Source code: 2012/vik/vik.c

        Information: 2012/vik/index.html

        The author stated that the program will crash if no argument is passed to the @@ -2772,7 +2800,7 @@ fire :-)

        2013/cable2

        -

        STATUS: INABIAF - please DO NOT fix

        +

        STATUS: INABIAF - please DO NOT fix

        Source code: 2013/cable2/cable2.c

        Information: 2013/cable2/index.html

        The author stated:

        @@ -2792,7 +2820,7 @@ and endianness conversion would make the source too large for IOCCC rule 2).

        2013/dlowe

        -

        STATUS: INABIAF - please DO NOT fix

        +

        STATUS: INABIAF - please DO NOT fix

        Source code: 2013/dlowe/dlowe.c

        Information: 2013/dlowe/index.html

        This program will possibly crash or draw something strange with 0 args. Then @@ -2811,7 +2839,7 @@ used.

        2013/endoh1

        -

        STATUS: INABIAF - please DO NOT fix

        +

        STATUS: INABIAF - please DO NOT fix

        Source code: 2013/endoh1/endoh1.c

        Information: 2013/endoh1/index.html

        From the author:

        @@ -2827,7 +2855,7 @@ used.

        2013/endoh3

        -

        STATUS: INABIAF - please DO NOT fix

        +

        STATUS: INABIAF - please DO NOT fix

        Source code: 2013/endoh3/endoh3.c

        Information: 2013/endoh3/index.html

        From the author:

        @@ -2840,14 +2868,14 @@ such as C2E2.

        2013/endoh4

        -

        STATUS: INABIAF - please DO NOT fix

        +

        STATUS: INABIAF - please DO NOT fix

        Source code: 2013/endoh4/endoh4.c

        Information: 2013/endoh4/index.html

        Invalid input files will very likely crash the program.

        2013/hou

        -

        STATUS: INABIAF - please DO NOT fix

        +

        STATUS: INABIAF - please DO NOT fix

        Source code: 2013/hou/hou.c

        Information: 2013/hou/index.html

        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.

        2013/mills

        -

        STATUS: INABIAF - please DO NOT fix

        +

        STATUS: INABIAF - please DO NOT fix

        Source code: 2013/mills/mills.c

        Information: 2013/mills/index.html

        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.

        2014/maffiodo1

        -

        STATUS: INABIAF - please DO NOT fix

        +

        STATUS: INABIAF - please DO NOT fix

        Source code: 2014/maffiodo1/prog.c

        Information: 2014/maffiodo1/index.html

        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!

        2014/maffiodo2

        -

        STATUS: INABIAF - please DO NOT fix

        +

        STATUS: INABIAF - please DO NOT fix

        Source code: 2014/maffiodo2/prog.c

        Information: 2014/maffiodo2/index.html

        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:

        2015/hou

        -

        STATUS: INABIAF - please DO NOT fix

        +

        STATUS: INABIAF - please DO NOT fix

        Source code: 2015/hou/prog.c

        Information: 2015/hou/index.html

        The author stated:

        @@ -2981,7 +3009,7 @@ because it is the same thing as the other, just updated to use prog.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 From c03df8ee01b6e8a8daa1aa3780e2d9fbb1301235 Mon Sep 17 00:00:00 2001 From: Cody Boone Ferguson <53008573+xexyl@users.noreply.github.com> Date: Mon, 29 Jul 2024 09:17:34 -0700 Subject: [PATCH 2/3] Fix #L in link in 1998/dorssel/dorssel.md --- 1998/dorssel/dorssel.html | 2 +- 1998/dorssel/dorssel.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/1998/dorssel/dorssel.html b/1998/dorssel/dorssel.html index 449717fac..fac46db75 100644 --- a/1998/dorssel/dorssel.html +++ b/1998/dorssel/dorssel.html @@ -554,7 +554,7 @@ declaration is correct (int argument, int result). Thi 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 <error>, whereas it is correct code.
      • +
      • lclint 2.4b parses line 13 as <error>, whereas it is correct code.
      • lclint 2.4b is positive the second while loop is infinite, whereas it is not.
      diff --git a/1998/dorssel/dorssel.md b/1998/dorssel/dorssel.md index 527277b07..ffb5f5169 100644 --- a/1998/dorssel/dorssel.md +++ b/1998/dorssel/dorssel.md @@ -211,7 +211,7 @@ Selected notes: 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](%%REPO_URL%%/1998/dorssel/dorssel.c:L13) as ``, whereas it is correct code. +- lclint 2.4b parses [line 13](%%REPO_URL%%/1998/dorssel/dorssel.c:#L13) as ``, whereas it is correct code. - lclint 2.4b is positive the second `while` loop is infinite, whereas it is not. From 28649c6760364db5bbe3882a8aa6a7cf0fa39e1f Mon Sep 17 00:00:00 2001 From: Cody Boone Ferguson <53008573+xexyl@users.noreply.github.com> Date: Mon, 29 Jul 2024 09:19:28 -0700 Subject: [PATCH 3/3] Typo fix c03df8ee01b6e8a8daa1aa3780e2d9fbb1301235 --- 1998/dorssel/dorssel.html | 2 +- 1998/dorssel/dorssel.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/1998/dorssel/dorssel.html b/1998/dorssel/dorssel.html index fac46db75..be33d80ab 100644 --- a/1998/dorssel/dorssel.html +++ b/1998/dorssel/dorssel.html @@ -554,7 +554,7 @@ declaration is correct (int argument, int result). Thi 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 <error>, whereas it is correct code.
    • +
    • lclint 2.4b parses line 13 as <error>, whereas it is correct code.
    • lclint 2.4b is positive the second while loop is infinite, whereas it is not.
    diff --git a/1998/dorssel/dorssel.md b/1998/dorssel/dorssel.md index ffb5f5169..33e9900c7 100644 --- a/1998/dorssel/dorssel.md +++ b/1998/dorssel/dorssel.md @@ -211,7 +211,7 @@ Selected notes: 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](%%REPO_URL%%/1998/dorssel/dorssel.c:#L13) as ``, whereas it is correct code. +- lclint 2.4b parses [line 13](%%REPO_URL%%/1998/dorssel/dorssel.c#L13) as ``, whereas it is correct code. - lclint 2.4b is positive the second `while` loop is infinite, whereas it is not.