Begin centralising thank yous to a single file

NOTE: this is just one way to fix the problem described below but it can
be modified - perhaps greatly changed - or rejected and done
differently. That being said it does isolate the entries that can be
modified except for the one by Simon Cooper as I had intended to do all
entries before a commit but I am too tired to continue and there are
more important things to be done for the IOCCC (hopefully later today).
I don't mind but I wanted to save Landon some of the work as I started
the problem even though all with good intention after Landon noted he
wanted to thank those in the README.md files.

First I would like to also apologise to any previous winners if there
was upset or concern; this was all done with the best intentions and I
know that it was a fine line but the judges' goal is to make it so
previous entries do work in modern systems so that everyone can enjoy
them. Still I am sorry if I caused any offence or anything else! I
actually agree with the situation and I had been wondering about how to
go about it too. Now for the rationale behind this update.

A couple previous winners have voiced concern about the way the thank
you notes are displayed in the README.md files I have started the work
to save Landon some of the trouble as although it was with good
intentions (and based on the note that Landon wanted to thank those who
fixed an entry) I started the problem so it seems only right that I help
rectify it. I also agree with the problem and had thought of it before,
even thinking that in some entries it needs not have any reference to
anyone but the winner! This commit has removed the thank you notes from
several entries and added a THANKS.md file.

The THANKS.md file has the rest of the entries that were fixed as well
which should if nothing else help isolate the entries that need to be
modified. Some entries actually referred to me but were not a thank you
note due to a fix; some were from winners themselves for instance.

Note that I did not update the bugs.md file or any other file that might
refer to these things in the README.md files. The bugs.md for instance
refers to adding credits to those who fix problems or provide missing
links or files to the respective README.md files and this will have to
change once the way this is done is finalised. But hopefully this is a
help to Landon so that he may also focus on the important jprint tool in
the mkiocccentry repo.
This commit is contained in:
Cody Boone Ferguson committed 2023-06-06 04:50:41 -07:00
1 parent b14a363570
commit a981cacbee
22 files changed
+499 -214

No files matched your search

-6
View File
@@ -15,12 +15,6 @@ make all
./anonymous
```
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed this to work
under macOS. The fix was to not use implicit `int`s in the `read()` function as
it once did. Instead the second arg is a `void *`. In the `read()` function
(which actually calls `write(2)`) the `i` (which is the `void *`) has to be cast
to an `int`. This solves the problem. Thank you Cody for your assistance!
### Alternate code:
The original version of this entry was added, by request,
-11
View File
@@ -8,17 +8,6 @@ Dave Decot
make all
```
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed this to not
require `-traditional-cpp` which not all compilers support (clang does not
support it for example). Clang is also more strict about the args' types in
`main()` and this was also a problem that Cody fixed, making it work with both
clang and gcc. For the original code with the gcc fix described below, see the
alternate code section below. Thank you Cody for your assistance!
Originally [Yusuke Endoh](/winners.html#Yusuke_Endoh) supplied a patch so that
this entry would compile with gcc - but not clang - or at least some versions.
Thank you Yusuke!
## To run:
```sh
-21
View File
@@ -16,27 +16,6 @@ make all
./applin
```
[Yusuke Endoh](/winners.html#Yusuke_Endoh) provided a patch to get this to
not issue crash and [Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson)
fixed this to work with macOS (it printed the string `H????` in a seemingly
infinite loop of printing more and more `?`s).
The problem with the crash is that it destructively rewrites string literals but
with `strdup()` it's safe.
For macOS it's because there was no prototype for `execlp()` and macOS has
problems with missing prototypes for some functions (this was also seen when
Cody fixed [1984/anonymous](/1984/anonymous/anonymous.c) for macOS as well
though that fix was more complicated). Ironically this fix was discovered
through linux!
NOTE: originally this entry did not print a newline prior to returning to the
shell, after the output (despite having `\n` in the string - why?) but to make
it more friendly to users Cody made it print a `\n` prior to returning to the
shell.
Thank you Yusuke and Cody for your help!
## Judges' remarks:
One liner programs are short but twisted. This `Hello, world!` version
-7
View File
@@ -9,13 +9,6 @@ make all
```
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed this to compile
with modern compilers. In the past one could get away with defining some macro
to `#define` and then use `#foo` to have the same effect as using `#define` but
this does not work in modern systems so Cody changed the `#o` lines to
`#define`. The `lycklama.alt.c` is the original source code as it provides some
fun input for the entry. Thank you Cody!
With a tip from [Yusuke Endoh](/winners.html#Yusuke_Endoh) it was indirectly
noticed that if one slows down the call to `write()` one can see some fun output
that's not visible with modern systems so Cody added a call to `usleep()`. The
-6
View File
@@ -9,12 +9,6 @@ make all
```
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed this _very twisted
entry_ to not require `-traditional-cpp`. He'd like to refer you to the original
file in [sicherman.alt.c](sicherman.alt.c) and he suggests that you then compare
it to [sicherman.c](sicherman.c) for some good old C-fashioned fun! Thank you
Cody for your assistance!
## Try:
```sh
-8
View File
@@ -9,14 +9,6 @@ US
make all
```
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed this to
compile and work with clang (it already worked with gcc). The problem was that
clang is more strict about the type of second arg to main(). However simply
changing it to a `char **` and updating the `*s` to `**s` caused a segfault. By
adding a new variable, `char *t`, initialising it to `s` and then using `t`
instead of `s` it compiles and runs successfully under clang and gcc. Thank you
Cody for your assistance!
## Try:
```sh
-7
View File
@@ -9,13 +9,6 @@ make all
```
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) got this to
compile and work with clang. It did not work with clang because it is more
strict about the second and third args to main() and the third arg was an int.
He notes that he tried to keep the picture as close to the original. The line
lengths are the same but some spaces had to be changed to non-spaces. Thank you
Cody for your help!
## Try:
```sh
-8
View File
@@ -9,14 +9,6 @@ US
make all
```
We used a patch provided by [Yusuke Endoh](/winners.html#Yusuke_Endoh) to make
this work with gcc (in particular the patch uses `strdup()` on two strings).
Thank you Yusuke! [Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed
this so that it does not require `-traditional-cpp`. This took a fair bit of
tinkering as this entry *is* strange. The original code is provided to allow one
to easily see how different C was in those days. See below for details. Thank
you Cody for your assistance!
## To use:
```sh
-4
View File
@@ -20,10 +20,6 @@ make all
# enter some strings
```
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) made this safer by
using `fgets()` instead of `gets()`. This prevents an annoying and potentially
alarming warning at compiling, linking or runtime.
## Try:
-5
View File
@@ -14,11 +14,6 @@ US
make all
```
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed this for modern
systems. The problem was 'assignment to cast is illegal, lvalue casts are not
supported'. For the original file see below. Thank you Cody for your assistance!
## To run:
```sh
-45
View File
@@ -9,51 +9,6 @@ Australia
make all
```
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed this for modern
compilers. There were two problems to address. One was that the entry required
`-traditional-cpp` (which <strike>not all compilers support</strike> `clang`
does not support) which Cody fixed. It needed that option because of two things
it did:
```c
#define a(x)get/***/x/***/id())
/* ... */
p Z=chroot("/");L(!a(u)execv((q(v="/ipu6ljov"),v),C);Z-=kill(l);
/* ... */
case_2:L(!--V){O/*/*/c*c+c);wait(A+c*c-c);L(!Z)f(A,"\n",c);return(A*getgid());};C++;
```
no longer works to create `getuid()` and `getgid()`. The second is that
```c
for/*/(;;);/*/k()){O/*/*/c);
```
cannot form `fork())` in modern C compilers. What is quite fun is that the cpp
can!
The other problem was that modern compilers do not allow directives like:
```c
#define _ define
+#_ P char
+#_ p int
+#_ O close(
...
```
so Cody changed the lines to be in the form of:
```c
#define foo bar
```
Thank you Cody for your assistance!
## Try:
```sh
-5
View File
@@ -19,11 +19,6 @@ make all
./isaak
```
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed this to work for
modern systems. The problem was that the important function, a redefinition of
exit(), was not being called in main(). See below notes for the original,
alternative version. Thank you Cody for your assistance!
### Alternate code:
The original version of this code is in [isaak.alt.c](isaak.alt.c).
-9
View File
@@ -15,15 +15,6 @@ make all
```
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed this for modern
systems. It did not compile with clang because it requires the second and third
args to main() to be `char **` but even before that with gcc it printed random
characters. After fixing it for clang by changing main() to call the new
function pain() (chosen because it's a pain that clang requires these args to
be `char **` :-) ) with the correct args it now works. Thank you Cody for your
assistance!
## Judges' remarks:
Compile and run without parameters.
-4
View File
@@ -13,10 +13,6 @@ US
make all
```
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) got this to work with
modern systems. Thank you Cody for your assistance!
## To run:
```sh
-16
View File
@@ -13,22 +13,6 @@ Finland
make all
```
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed this to work with
modern compilers. Modern compilers do not allow code like:
```c
#define D define
#define a include
#D foo bar
#a <stdio.h>
```
He notes that there _is_ a way to get it (or something close to it) to work. Do
you know how?
Thank you Cody for your assistance!
## To run:
-5
View File
@@ -20,11 +20,6 @@ make all
./paul
```
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed a segfault under
macOS. The problem was that the int (from `#define f`) should be a long. This
became apparent when he was using lldb and saw that the type of a pointer was
long. Thank you Cody for your assistance!
## Judges' remarks:
The original source contained a long line which caused many
-4
View File
@@ -14,10 +14,6 @@ make all
```
NOTE: we were able to get this to compile under modern systems with a patch from
[Yusuke Endoh](/winners.html#Yusuke_Endoh). Thank you for your assistance
Yusuke!
## To run:
```sh
-13
View File
@@ -12,19 +12,6 @@ Netherlands
make all
```
We used a patch from [Yusuke Endoh](/winners.html#Yusuke_Endoh)
to get this to compile under gcc. Thank you Yusuke for your assistance!
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) got this to work with
clang by further changing the variable `a` to be not the third argument to
`main()` and instead be a variable declared in `main()`.
Cody also bug fixed it so that the high score file would work (it was not even
being created) and after this making sure the terminal stayed sane (the letter
`u` could not be typed and echo was disabled outright after the segfault fix /
high score file was reinstated). We thank you for your assistance Cody (he
cynically notes that he did it because tetris just has to work)!
## To run:
```sh
-11
View File
@@ -18,17 +18,6 @@ make all
./cmills [starting_cash]
```
We used a patch from [Yusuke Endoh](/winners.html#Yusuke_Endoh) to get this to
work in modern systems (it resulted in a bus error otherwise). Thank you Yusuke
for your assistance!
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) made this safer by
using `fgets()` instead of `gets()`. This avoids an annoying and potentially
alarming warning at compiling and/or linking and/or runtime that in some cases
is interspersed with the program's output. Thank you Cody for your assistance!
For the original code see the [1992 archive](/archive/archive-1990.tar.bz2).
## Try:
-8
View File
@@ -12,14 +12,6 @@ make all
```
[Yusuke Endoh](/winners.html#Yusuke_Endoh) fixed this for modern systems. Thank
you Yusuke!
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) removed the erroneous
prototype to `fopen()` and made this use `fgets()` instead of `gets()` to make
it safer and to prevent an annoying and potentially alarming warning at
compiling and/or linking and/or runtime. Thank you Cody for your assistance!
## To run:
```sh
+2 -11
View File
@@ -25,17 +25,8 @@ US
make all
```
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed the script to
work properly in modern environments (to do with PATH not having '.' in it). He
notes that with an invocation in the try section below will with macOS show
what appears to be an error message but is actually okay. He gives more
information in the [bugs.md](/bugs.md) file. Thank you Cody for the help and
notes!
NOTE: as `btoa` is not common we used a ruby script from [Yusuke
Endoh](/winners.html#Yusuke_Endoh). Thank you Yusuke for your implementation of
`btoa`!
NOTE: see the [bugs.md](/bugs.md) file for information on what appears to be a
bug in macOS but is actually not.
## Try:
+497
View File
@@ -0,0 +1,497 @@
We would like to extend our gratitude to various people - some previous winners,
some not - for fixes to the following entries.
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed many entries so
that they worked in modern systems. He also added several scripts to showcase
entries and he provided some fun remarks and try commands and questions to
ponder.
Cody also spent a great deal of time and effort fixing formatting of the
README.md files as well as the many typo and consistency fixes, though this is
currently (as of 6 June 2023) a work in progress.
He also provided some alternate versions sometimes as a fix or enhancement (a
good example is when the entry moved too fast due to faster computers but this
is not the only type of alternate version) and other times for some other
reason. However as this is part of the respective entries we have kept them in
the README.md files.
Thank you Cody!
[Yusuke Endoh](/winners.html#Yusuke_Endoh) provided fixes to quite a few
entries as well though at this time he is unaware of it :-) Thank you Yusuke!
Misha Dynin provided a fix for [1988/westley](1988/westley/westley.c)
([README.md](1988/westley/README.md)) so that it would compile and work with
both K&R and more modern C compilers. Thank you Misha!
Simon Cooper fixed an entry as well which will be noted in the respective entry.
In cases where there is an alt version we will also refer to it below.
Please also see the [bugs.md](bugs.md) file!
The below entries were modified or had alternate versions provided with details
for each entry modified. As Misha is already noted above the entry is not listed
again but this does not mean we appreciate it any less!
## [1984/anonymous](1984/anonymous/anonymous.c) ([README.md](1984/anonymous/README.md]))
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed this to work
under macOS. The fix was to not use implicit `int`s in the `read()` function as
it once did. Instead the second arg is a `void *`. In the `read()` function
(which actually calls `write(2)`) the `i` (which is the `void *`) has to be cast
to an `int`. This solves the problem. Thank you Cody for your assistance!
## [1984/decot](1984/decot/decot.c) ([README.md](1984/decot/README.md]))
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed this to not
require `-traditional-cpp` which not all compilers support (clang does not
support it for example). Clang is also more strict about the args' types in
`main()` and this was also a problem that Cody fixed, making it work with both
clang and gcc. For the original code with the gcc fix described below, see the
alternate code section below. Thank you Cody for your assistance!
Originally [Yusuke Endoh](/winners.html#Yusuke_Endoh) supplied a patch so that
this entry would compile with gcc - but not clang - or at least some versions.
Thank you Yusuke!
## [1984/mullender](1984/mullender/mullender.c) ([README.md](1984/mullender/README.md]))
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) provided an alternate
version which was an improved version from the judges so that everyone can enjoy
it in systems that are not VAX/PDP. We also refer you to the [faq](faq.md) as
there are some winning entries that also let one enjoy it - with more to them of
course!
## [1985/applin](1985/applin/applin.c) ([README.md](1985/applin/README.md]))
[Yusuke Endoh](/winners.html#Yusuke_Endoh) provided a patch to get this to
not issue crash and [Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson)
fixed this to work with macOS (it printed the string `H????` in a seemingly
infinite loop of printing more and more `?`s).
The problem with the crash is that it destructively rewrites string literals but
with `strdup()` it's safe.
For macOS it's because there was no prototype for `execlp()` and macOS has
problems with missing prototypes for some functions (this was also seen when
Cody fixed [1984/anonymous](/1984/anonymous/anonymous.c) for macOS as well
though that fix was more complicated). Ironically this fix was discovered
through linux!
NOTE: originally this entry did not print a newline prior to returning to the
shell, after the output (despite having `\n` in the string - why?) but to make
it more friendly to users Cody made it print a `\n` prior to returning to the
shell.
Thank you Yusuke and Cody for your help!
## [1985/lycklama](1985/lycklama/lycklama.c) ([README.md](1985/lycklama/README.md]))
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed this to compile
with modern compilers. In the past one could get away with defining some macro
to `#define` and then use `#foo` to have the same effect as using `#define` but
this does not work in modern systems so Cody changed the `#o` lines to
`#define`. The `lycklama.alt.c` is the original source code as it provides some
fun input for the entry. Thank you Cody!
[Yusuke Endoh](/winners.html#Yusuke_Endoh) provided some useful information that
amounts to an alternate version but which does not actually modify the code.
Perhaps it should be an alternate version but in any case see the README.md file
for details.
## [1985/sicherman](1985/sicherman/sicherman.c) ([README.md](1985/sicherman/README.md]))
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed this _very twisted
entry_ to not require `-traditional-cpp`. He'd like to refer you to the original
file in [sicherman.alt.c](1985/sicherman.alt.c) and he suggests that you then compare
it to [sicherman.c](1985/sicherman/sicherman.c) for some good old C-fashioned fun!
## [1986/holloway](1986/holloway/holloway.c) ([README.md](1986/holloway/README.md]))
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed this to
compile and work with clang (it already worked with gcc). The problem was that
clang is more strict about the type of second arg to main(). However simply
changing it to a `char **` and updating the `*s` to `**s` caused a segfault. By
adding a new variable, `char *t`, initialising it to `s` and then using `t`
instead of `s` it compiles and runs successfully under clang and gcc.
## [1986/marshall](1986/marshall/marshall.c) ([README.md](1986/marshall/README.md]))
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) got this to
compile and work with clang. It did not work with clang because it is more
strict about the second and third args to main() and the third arg was an int.
He notes that he tried to keep the picture as close to the original. The line
lengths are the same but some spaces had to be changed to non-spaces.
## [1986/wall](1986/wall/wall.c) ([README.md](1986/wall/README.md]))
We used a patch provided by [Yusuke Endoh](/winners.html#Yusuke_Endoh) to make
this work with gcc (in particular the patch uses `strdup()` on two strings).
Thank you Yusuke! [Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed
this so that it does not require `-traditional-cpp`. This took a fair bit of
tinkering as this entry *is* strange. The original code is provided to allow one
to easily see how different C was in those days. See below for details. Thank
you Cody for your assistance!
## [1987/wall](1987/wall/wall.c) ([README.md](1987/wall/README.md]))
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) made this safer by
using `fgets()` instead of `gets()`. This prevents an annoying and potentially
alarming warning at compiling, linking or runtime.
## [1987/westley](1987/westley/westley.c) ([README.md](1987/westley/README.md]))
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed this for modern
systems. The problem was 'assignment to cast is illegal, lvalue casts are not
supported'. For the original file see below. Thank you Cody for your assistance!
## [1988/dale](1988/dale/dale.c) ([README.md](1988/dale/README.md]))
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed this for modern
compilers. There were two problems to address. One was that the entry required
`-traditional-cpp` (which <strike>not all compilers support</strike> `clang`
does not support) which Cody fixed. It needed that option because of two things
it did:
```c
#define a(x)get/***/x/***/id())
/* ... */
p Z=chroot("/");L(!a(u)execv((q(v="/ipu6ljov"),v),C);Z-=kill(l);
/* ... */
case_2:L(!--V){O/*/*/c*c+c);wait(A+c*c-c);L(!Z)f(A,"\n",c);return(A*getgid());};C++;
```
no longer works to create `getuid()` and `getgid()`. The second is that
```c
for/*/(;;);/*/k()){O/*/*/c);
```
cannot form `fork())` in modern C compilers. What is quite fun is that the cpp
can!
The other problem was that modern compilers do not allow directives like:
```c
#define _ define
+#_ P char
+#_ p int
+#_ O close(
...
```
so Cody changed the lines to be in the form of:
```c
#define foo bar
```
## [1988/isaak](1988/isaak/isaak.c) ([README.md](1988/isaak/README.md]))
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed this to work for
modern systems. The problem was that the important function, a redefinition of
exit(), was not being called in main(). See below notes for the original,
alternative version.
The original version is in [1988/isaak/isaak.alt.c](1988/isaak/isaak.alt.c).
## [1988/phillipps](1988/phillipps/phillipps.c) ([README.md](1988/phillipps/README.md]))
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed this for modern
systems. It did not compile with clang because it requires the second and third
args to main() to be `char **` but even before that with gcc it printed random
characters. After fixing it for clang by changing main() to call the new
function pain() (chosen because it's a pain that clang requires these args to
be `char **` :-) ) with the correct args it now works. Thank you Cody for your
assistance!
## [1988/spinellis](1988/spinellis/spinellis.c) ([README.md](1988/spinellis/README.md]))
An alternate version was provided by Cody for this so that it works for
compilers like clang.
## [1989/fubar](1989/fubar/fubar.c) ([README.md](1989/fubar/README.md]))
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) got this to work with
modern systems. The main issues were an `#include` had to be added and fixing the
path to files referred to in the code was also needed.
## [1989/jar.2](1989/jar.2/jar.2.c) ([README.md](1989/jar.2/README.md]))
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed this to work with
modern compilers. Modern compilers do not allow code like:
```c
#define D define
#define a include
#D foo bar
#a <stdio.h>
```
He notes that there _is_ a way to get it (or something close to it) to work. Do
you know how?
## [1989/ovdluhe](1989/ovdluhe/ovdluhe.c) ([README.md](1989/ovdluhe/README.md]))
Cody provided an alternate version based on the author's remarks. See the
README.md for details.
## [1989/paul](1989/paul/paul.c) ([README.md](1989/paul/README.md]))
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed a segfault under
macOS. The problem was that the int (from `#define f`) should be a long. This
became apparent when he was using lldb and saw that the type of a pointer was
long. Thank you Cody for your assistance!
## [1989/robison](1989/robison/robison.c) ([README.md](1989/robison/README.md]))
Yusuke Endoh fixed this to compile under modern systems.
## [1989/tromp](1989/tromp/tromp.c) ([README.md](1989/tromp/README.md]))
We used a patch from [Yusuke Endoh](/winners.html#Yusuke_Endoh)
to get this to compile under gcc. Thank you Yusuke for your assistance!
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) got this to work with
clang by further changing the variable `a` to be not the third argument to
`main()` and instead be a variable declared in `main()`.
Cody also bug fixed it so that the high score file would work (it was not even
being created) and after this making sure the terminal stayed sane (the letter
`u` could not be typed and echo was disabled outright after the segfault fix /
high score file was reinstated). We thank you for your assistance Cody (he
cynically notes that he did it because tetris just has to work)!
## [1989/westley](1989/westley/westley.c) ([README.md](1989/westley/README.md]))
Cody got this to partly work with clang. As there are some important notes on
this in the README.md file we have left the details in that file, at least for
now. Perhaps the [bugs.md](bugs.md) file is a better place but this can be
decided later.
## [1990/baruch](1990/baruch/baruch.c) ([README.md](1990/baruch/README.md]))
Cody added an alternate version which allows certain compilers to compile the
code, based on the author's remarks.
## [1990/cmills](1990/cmills/cmills.c) ([README.md](1990/cmills/README.md]))
Yusuke got this to work in modern systems (it resulted in a bus error).
To prevent alarming warnings at linking or runtime Cody made the entry use
`fgets()` rather than `gets()`. He notes that another option would have been to
redirect `stderr` to `/dev/null` but he did not think of that at the time.
For the original code see the [1992 archive](/archive/archive-1990.tar.bz2).
## [1990/dds](1990/dds/dds.c) ([README.md](1990/dds/README.md]))
[Yusuke Endoh](/winners.html#Yusuke_Endoh) fixed this for modern systems. Thank
you Yusuke!
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) removed the erroneous
prototype to `fopen()` and made this use `fgets()` instead of `gets()` to make
it safer and to prevent an annoying and potentially alarming warning at
compiling and/or linking and/or runtime. Thank you Cody for your assistance!
## [1990/jaw](1990/jaw/jaw.c) ([README.md](1990/jaw/README.md]))
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed the script to
work properly in modern environments (to do with PATH not having '.' in it). He
notes that with an invocation in the try section will with macOS show
what appears to be an error message but is actually okay. He gives more
information in the [bugs.md](/bugs.md) file. Thank you Cody for the help and
notes!
NOTE: as `btoa` is not common we used a ruby script from [Yusuke
Endoh](/winners.html#Yusuke_Endoh). Thank you Yusuke for your implementation of
`btoa`!
## [1990/scjones](1990/scjones/scjones.c) ([README.md](1990/scjones/README.md]))
## [1990/tbr](1990/tbr/tbr.c) ([README.md](1990/tbr/README.md]))
## [1990/theorem](1990/theorem/theorem.c) ([README.md](1990/theorem/README.md]))
## [1990/westley](1990/westley/westley.c) ([README.md](1990/westley/README.md]))
## [1991/brnstnd](1991/brnstnd/brnstnd.c) ([README.md](1991/brnstnd/README.md]))
## [1991/dds](1991/dds/dds.c) ([README.md](1991/dds/README.md]))
## [1991/westley](1991/westley/westley.c) ([README.md](1991/westley/README.md]))
## [1992/adrian](1992/adrian/adrian.c) ([README.md](1992/adrian/README.md]))
## [1992/gson](1992/gson/gson.c) ([README.md](1992/gson/README.md]))
## [1992/kivinen](1992/kivinen/kivinen.c) ([README.md](1992/kivinen/README.md]))
## [1992/lush](1992/lush/lush.c) ([README.md](1992/lush/README.md]))
## [1992/westley](1992/westley/westley.c) ([README.md](1992/westley/README.md]))
## [1993/jonth](1993/jonth/jonth.c) ([README.md](1993/jonth/README.md]))
## [1993/leo](1993/leo/leo.c) ([README.md](1993/leo/README.md]))
## [1993/lmfjyh](1993/lmfjyh/lmfjyh.c) ([README.md](1993/lmfjyh/README.md]))
## [1993/plummer](1993/plummer/plummer.c) ([README.md](1993/plummer/README.md]))
## [1993/rince](1993/rince/rince.c) ([README.md](1993/rince/README.md]))
## [1993/schnitzi](1993/schnitzi/schnitzi.c) ([README.md](1993/schnitzi/README.md]))
## [1993/vanb](1993/vanb/vanb.c) ([README.md](1993/vanb/README.md]))
## [1994/ldb](1994/ldb/ldb.c) ([README.md](1994/ldb/README.md]))
## [1994/schnitzi](1994/schnitzi/schnitzi.c) ([README.md](1994/schnitzi/README.md]))
## [1994/shapiro](1994/shapiro/shapiro.c) ([README.md](1994/shapiro/README.md]))
## [1994/westley](1994/westley/westley.c) ([README.md](1994/westley/README.md]))
## [1995/cdua](1995/cdua/cdua.c) ([README.md](1995/cdua/README.md]))
## [1995/garry](1995/garry/garry.c) ([README.md](1995/garry/README.md]))
## [1996/august](1996/august/august.c) ([README.md](1996/august/README.md]))
## [1996/dalbec](1996/dalbec/dalbec.c) ([README.md](1996/dalbec/README.md]))
## [1996/eldby](1996/eldby/eldby.c) ([README.md](1996/eldby/README.md]))
## [1996/gandalf](1996/gandalf/gandalf.c) ([README.md](1996/gandalf/README.md]))
## [1996/westley](1996/westley/westley.c) ([README.md](1996/westley/README.md]))
## [1998/chaos](1998/chaos/chaos.c) ([README.md](1998/chaos/README.md]))
## [1998/schnitzi](1998/schnitzi/schnitzi.c) ([README.md](1998/schnitzi/README.md]))
## [1998/schweikh1](1998/schweikh1/schweikh1.c) ([README.md](1998/schweikh1/README.md]))
## [2000/anderson](2000/anderson/anderson.c) ([README.md](2000/anderson/README.md]))
## [2000/briddlebane](2000/briddlebane/briddlebane.c) ([README.md](2000/briddlebane/README.md]))
## [2000/dlowe](2000/dlowe/dlowe.c) ([README.md](2000/dlowe/README.md]))
## [2000/jarijyrki](2000/jarijyrki/jarijyrki.c) ([README.md](2000/jarijyrki/README.md]))
## [2000/natori](2000/natori/natori.c) ([README.md](2000/natori/README.md]))
## [2000/thadgavin](2000/thadgavin/thadgavin.c) ([README.md](2000/thadgavin/README.md]))
## [2001/anonymous](2001/anonymous/anonymous.c) ([README.md](2001/anonymous/README.md]))
## [2001/bellard](2001/bellard/bellard.c) ([README.md](2001/bellard/README.md]))
## [2001/cheong](2001/cheong/cheong.c) ([README.md](2001/cheong/README.md]))
## [2001/coupard](2001/coupard/coupard.c) ([README.md](2001/coupard/README.md]))
## [2001/ctk](2001/ctk/ctk.c) ([README.md](2001/ctk/README.md]))
## [2001/dgbeards](2001/dgbeards/dgbeards.c) ([README.md](2001/dgbeards/README.md]))
## [2001/herrmann2](2001/herrmann2/herrmann2.c) ([README.md](2001/herrmann2/README.md]))
## [2001/kev](2001/kev/kev.c) ([README.md](2001/kev/README.md]))
## [2001/westley](2001/westley/westley.c) ([README.md](2001/westley/README.md]))
## [2004/arachnid](2004/arachnid/arachnid.c) ([README.md](2004/arachnid/README.md]))
## [2004/burley](2004/burley/burley.c) ([README.md](2004/burley/README.md]))
## [2004/gavin](2004/gavin/gavin.c) ([README.md](2004/gavin/README.md]))
## [2004/kopczynski](2004/kopczynski/kopczynski.c) ([README.md](2004/kopczynski/README.md]))
## [2004/newbern](2004/newbern/newbern.c) ([README.md](2004/newbern/README.md]))
## [2005/aidan](2005/aidan/aidan.c) ([README.md](2005/aidan/README.md]))
## [2005/anon](2005/anon/anon.c) ([README.md](2005/anon/README.md]))
## [2005/giljade](2005/giljade/giljade.c) ([README.md](2005/giljade/README.md]))
## [2005/mynx](2005/mynx/mynx.c) ([README.md](2005/mynx/README.md]))
## [2006/birken](2006/birken/birken.c) ([README.md](2006/birken/README.md]))
## [2006/borsanyi](2006/borsanyi/borsanyi.c) ([README.md](2006/borsanyi/README.md]))
## [2006/monge](2006/monge/monge.c) ([README.md](2006/monge/README.md]))
## [2006/night](2006/night/night.c) ([README.md](2006/night/README.md]))
## [2006/sloane](2006/sloane/sloane.c) ([README.md](2006/sloane/README.md]))
## [2006/toledo2](2006/toledo2/toledo2.c) ([README.md](2006/toledo2/README.md]))
## [2006/toledo3](2006/toledo3/toledo3.c) ([README.md](2006/toledo3/README.md]))
## [2011/eastman](2011/eastman/eastman.c) ([README.md](2011/eastman/README.md]))
## [2011/goren](2011/goren/goren.c) ([README.md](2011/goren/README.md]))
## [2011/richards](2011/richards/richards.c) ([README.md](2011/richards/README.md]))
## [2011/vik](2011/vik/vik.c) ([README.md](2011/vik/README.md]))
## [2012/kang](2012/kang/kang.c) ([README.md](2012/kang/README.md]))
## [2012/tromp](2012/tromp/tromp.c) ([README.md](2012/tromp/README.md]))
## [2012/vik](2012/vik/vik.c) ([README.md](2012/vik/README.md]))
## [2013/birken](2013/birken/birken.c) ([README.md](2013/birken/README.md]))
## [2013/cable3](2013/cable3/cable3.c) ([README.md](2013/cable3/README.md]))
## [2014/maffiodo1](2014/maffiodo1/maffiodo1.c) ([README.md](2014/maffiodo1/README.md]))
## [2014/vik](2014/vik/vik.c) ([README.md](2014/vik/README.md]))
## [2015/endoh3](2015/endoh3/prog.c) ([README.md](2015/endoh3/README.md]))
## [2015/yang](2015/yang/prog.c) ([README.md](2015/yang/README.md]))
## [2018/poikola](2018/poikola/prog.c) ([README.md](2018/poikola/README.md]))
## [2019/ciura](2019/ciura/prog.c) ([README.md](2019/ciura/README.md]))
## [2019/diels-grabsch1](2019/diels-grabsch1/prog.c) ([README.md](2019/diels-grabsch1/README.md]))
## [2019/diels-grabsch2](2019/diels-grabsch2/prog.c) ([README.md](2019/diels-grabsch2/README.md]))
## [2019/karns](2019/karns/prog.c) ([README.md](2019/karns/README.md]))