diff --git a/1984/anonymous/README.md b/1984/anonymous/README.md index 9b88a4a9f..72d0a9135 100644 --- a/1984/anonymous/README.md +++ b/1984/anonymous/README.md @@ -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, diff --git a/1984/decot/README.md b/1984/decot/README.md index ed0215d26..e8a963b9e 100644 --- a/1984/decot/README.md +++ b/1984/decot/README.md @@ -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 diff --git a/1985/applin/README.md b/1985/applin/README.md index 9e25e0993..eb34f5205 100644 --- a/1985/applin/README.md +++ b/1985/applin/README.md @@ -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 diff --git a/1985/lycklama/README.md b/1985/lycklama/README.md index a6deba5c4..6a1f47686 100644 --- a/1985/lycklama/README.md +++ b/1985/lycklama/README.md @@ -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 diff --git a/1985/sicherman/README.md b/1985/sicherman/README.md index 57a520938..20aa14279 100644 --- a/1985/sicherman/README.md +++ b/1985/sicherman/README.md @@ -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 diff --git a/1986/holloway/README.md b/1986/holloway/README.md index 06e540779..4be41a680 100644 --- a/1986/holloway/README.md +++ b/1986/holloway/README.md @@ -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 diff --git a/1986/marshall/README.md b/1986/marshall/README.md index 744b8c6e9..b1c1b880b 100644 --- a/1986/marshall/README.md +++ b/1986/marshall/README.md @@ -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 diff --git a/1986/wall/README.md b/1986/wall/README.md index 22c2fbc14..9dcf7fd83 100644 --- a/1986/wall/README.md +++ b/1986/wall/README.md @@ -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 diff --git a/1987/wall/README.md b/1987/wall/README.md index 776dec55a..cd6111c4a 100644 --- a/1987/wall/README.md +++ b/1987/wall/README.md @@ -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: diff --git a/1987/westley/README.md b/1987/westley/README.md index 729fc1ae2..2dca78a4e 100644 --- a/1987/westley/README.md +++ b/1987/westley/README.md @@ -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 diff --git a/1988/dale/README.md b/1988/dale/README.md index d44e6773a..5ba311efe 100644 --- a/1988/dale/README.md +++ b/1988/dale/README.md @@ -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 not all compilers support `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 diff --git a/1988/isaak/README.md b/1988/isaak/README.md index 251133c20..2a46aadfd 100644 --- a/1988/isaak/README.md +++ b/1988/isaak/README.md @@ -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). diff --git a/1988/phillipps/README.md b/1988/phillipps/README.md index 8c6c9a652..5340c1e6f 100644 --- a/1988/phillipps/README.md +++ b/1988/phillipps/README.md @@ -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. diff --git a/1989/fubar/README.md b/1989/fubar/README.md index 9c13c3d34..3c274babf 100644 --- a/1989/fubar/README.md +++ b/1989/fubar/README.md @@ -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 diff --git a/1989/jar.2/README.md b/1989/jar.2/README.md index 9c2afe5b8..f6798b2f2 100644 --- a/1989/jar.2/README.md +++ b/1989/jar.2/README.md @@ -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 -``` - -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: diff --git a/1989/paul/README.md b/1989/paul/README.md index 5b1fc5637..c7deb7b77 100644 --- a/1989/paul/README.md +++ b/1989/paul/README.md @@ -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 diff --git a/1989/robison/README.md b/1989/robison/README.md index 0171a7bd7..0009067f7 100644 --- a/1989/robison/README.md +++ b/1989/robison/README.md @@ -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 diff --git a/1989/tromp/README.md b/1989/tromp/README.md index 9e0a30474..6a1b073dc 100644 --- a/1989/tromp/README.md +++ b/1989/tromp/README.md @@ -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 diff --git a/1990/cmills/README.md b/1990/cmills/README.md index 7c9b8f5f4..95c51056e 100644 --- a/1990/cmills/README.md +++ b/1990/cmills/README.md @@ -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: diff --git a/1990/dds/README.md b/1990/dds/README.md index abe679176..82e1d75e5 100644 --- a/1990/dds/README.md +++ b/1990/dds/README.md @@ -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 diff --git a/1990/jaw/README.md b/1990/jaw/README.md index b934acb95..84f634e1d 100644 --- a/1990/jaw/README.md +++ b/1990/jaw/README.md @@ -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: diff --git a/THANKS.md b/THANKS.md new file mode 100644 index 000000000..0cb87c649 --- /dev/null +++ b/THANKS.md @@ -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 not all compilers support `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 +``` + +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]))