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:
1 parent
b14a363570
commit
a981cacbee
22 files changed
+499
-214
No files matched your search
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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).
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
|
||||
@@ -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
@@ -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:
|
||||
|
||||
|
||||
@@ -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]))
|
||||
Reference in new issue
Block a user