diff --git a/thanks-for-fixes.md b/thanks-for-fixes.md index 298226ba3..44d8c3d1a 100644 --- a/thanks-for-fixes.md +++ b/thanks-for-fixes.md @@ -25,6 +25,7 @@ on a winner by winner basis. - [Makefile improvements](#makefile_improvements) - [Consistency improvements](#consistency_improvements) - [Thank you honor roll](#thank_you_honor_roll) +- [Did we neglect to credit you?](#neglect) # 1984 @@ -32,7 +33,7 @@ on a winner by winner basis. ## [1984/anonymous](1984/anonymous/anonymous.c) ([README.md](1984/anonymous/README.md)) -Cody fixed this to work for macOS. +[Cody](#cody) fixed this to work for macOS. The problem was to do with the way that the `read(2)` function was redefined. With macOS the second arg needs to be a `void *` and this also necessitated some @@ -55,7 +56,7 @@ Scovell](https://web.archive.org/web/20070120220721/https://thomasscovell.com/ta ## [1984/decot](1984/decot/decot.c) ([README.md](1984/decot/README.md])) -Cody fixed this to not require `-traditional-cpp` which some compilers like +[Cody](#cody) fixed this to not require `-traditional-cpp` which some compilers like clang do not support. Fixing `-traditional-cpp` is, as noted later on, very complicated, but we encourage you to look at the alternate code (which is the original code with a minor modification made by the judges) and the fixed @@ -65,7 +66,7 @@ Clang is also more strict about the type of args in `main()` and this was also a problem that Cody fixed, making it work with both clang and gcc. These fixes worked fine in macOS but it turned out that in some cases with clang -in linux it did not work so this had to be further fixed which Cody also did. It +in Linux it did not work so this had to be further fixed which Cody also did. It is no longer clear what the problem was as in fedora 38 with clang 16.0.6 the only difference is it causes additional warnings but it seems to work just fine. It seems unlikely that a fix was made just for warnings so it is presumed that @@ -108,7 +109,7 @@ do not support `-traditional-cpp`. If the ANSI C committee or a new version of clang messes this up (both of which seems possible) it is easy to fix but it is hoped that this won't happen. -Originally Yusuke supplied a patch so that this entry would compile with gcc - +Originally [Yusuke](#yusuke) supplied a patch so that this entry would compile with gcc - but not clang - or at least some versions. To see the difference from start to fixed: @@ -120,7 +121,7 @@ cd 1984/decot ; make diff_orig_prog ## [1984/laman](1984/laman/laman.c) ([README.md](1984/laman/README.md])) -Cody fixed this to not crash when no arg is specified. Note that if the arg is +[Cody](#cody) fixed this to not crash when no arg is specified. Note that if the arg is not a positive number it will not do anything useful or anything at all. This was fixed on 30 October 2023 after the bug status was changed from INABIAF @@ -129,7 +130,7 @@ This was fixed on 30 October 2023 after the bug status was changed from INABIAF ## [1984/mullender](1984/mullender/mullender.c) ([README.md](1984/mullender/README.md])) -Cody provided an [alternate version](1984/mullender/mullender.alt.c), an +[Cody](#cody) provided an [alternate version](1984/mullender/mullender.alt.c), an improved version of the judges, so that everyone can enjoy it with 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! @@ -154,7 +155,7 @@ Repo](https://github.com/dspinellis/unix-history-repo/tree/Research-Release). ## [1985/applin](1985/applin/applin.c) ([README.md](1985/applin/README.md])) -Both Cody and Yusuke fixed this; Yusuke got this to not crash and Cody fixed it +Both [Cody](#cody) and [Yusuke](#yusuke) fixed this; Yusuke got this to not crash and Cody fixed it to work with macOS. The crash was because it destructively rewrites string literals. However with @@ -168,7 +169,7 @@ The fix for macOS is that 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). As this is a one-liner the include of `unistd.h` was done in the Makefile. -Ironically this fix was discovered through linux! +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 - can you figure out @@ -178,7 +179,7 @@ returning to the shell. The original version does not have this change. ## [1985/august](1985/august/august.c) ([README.md](1985/august/README.md)) -Cody, out of abundance of caution, added a second arg to `main()` because some +[Cody](#cody), out of abundance of caution, added a second arg to `main()` because some versions of clang object to the number of args of `main()`, saying that it must be 0, 2 or 3. The version this has been observed in does not actually object to 1 arg but it is entirely possible that this changes so a second arg (that's not @@ -193,18 +194,18 @@ way. ## [1985/lycklama](1985/lycklama/lycklama.c) ([README.md](1985/lycklama/README.md])) -Cody fixed this to compile with modern compilers. In the past one could get away +[Cody](#cody) 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`. Also `unistd.h` had to be `#include`d. -Yusuke provided some useful information that amounts to an alternate version +[Yusuke](#yusuke) provided some useful information that amounts to an alternate version that Cody added. See the README.md for details. ## [1985/shapiro](1985/shapiro/shapiro.c) ([README.md](1985/shapiro/README.md])) -Cody added the alt code which allows one to resize the maze and he also added +[Cody](#cody) added the alt code which allows one to resize the maze and he also added the [try.alt.sh](1985/shapiro/try.alt.sh) script that randomly selects sizes (five times) and compiles and runs it. After the five runs it prompts you to enter a number, in an infinite loop, exiting if any non-digits are in input @@ -214,7 +215,7 @@ the default). ## [1985/sicherman](1985/sicherman/sicherman.c) ([README.md](1985/sicherman/README.md])) -Cody fixed this _very twisted entry_ to not require `-traditional-cpp`. Fixing +[Cody](#cody) fixed this _very twisted entry_ to not require `-traditional-cpp`. Fixing `-traditional-cpp` is, as noted later on, very complicated, but Cody would like to refer you to the original file [sicherman.orig.c](1985/sicherman/sicherman.orig.c) and he suggests that you @@ -323,12 +324,12 @@ case as `c`. ## [1986/hague](1986/hague/hague.c) ([README.md](1986/hague/README.md])) -Cody made this use `fgets()`. +[Cody](#cody) made this use `fgets()`. ## [1986/holloway](1986/holloway/holloway.c) ([README.md](1986/holloway/README.md])) -Cody fixed this to compile and work with clang (it already worked with gcc). +[Cody](#cody) 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` @@ -338,7 +339,7 @@ and gcc. ## [1986/marshall](1986/marshall/marshall.c) ([README.md](1986/marshall/README.md])) -Cody got this to compile and work with clang and gcc. He noted that he tried to +[Cody](#cody) got this to compile and work with clang and gcc. He noted that he tried to keep the ASCII art as close to the original as possible. The line lengths are the same but some spaces had to be changed to non-spaces. @@ -362,20 +363,20 @@ for entertainment! ## [1986/pawka](1986/pawka/pawka.c) ([README.md](1986/pawka/README.md)) -Cody noticed and fixed a funny mistake in the Makefile where a +[Cody](#cody) noticed and fixed a funny mistake in the Makefile where a `-Wno-strict-prototypes` was in the wrong location, suggesting that there is a `-D` needed to compile the entry. ## [1986/wall](1986/wall/wall.c) ([README.md](1986/wall/README.md])) -Cody fixed this so that it does not require `-traditional-cpp`. This took a fair +[Cody](#cody) fixed this so that it does not require `-traditional-cpp`. This took a fair bit of tinkering as this entry *very twisted*; fixing `-traditional-cpp` is, as noted earlier, very complicated, but we encourage you to look at [original code](1986/wall/wall.orig.c) to see how different C was in 1986, as well as below. -Yusuke originally patched this to use `strdup()` on two strings and this let it +[Yusuke](#yusuke) originally patched this to use `strdup()` on two strings and this let it work with gcc but it still required `-traditional-cpp`. The [alternate code](1986/wall/wall.alt.c) is the version patched by Yusuke should you wish to try it with a compiler that has the `-traditional-cpp`. See the README.md file @@ -459,7 +460,7 @@ Some of the changes required: ## [1987/heckbert](1987/heckbert/heckbert.c) ([README.md](1987/heckbert/README.md)) -Cody made this look more like the original entry by restoring the `#define` of +[Cody](#cody) made this look more like the original entry by restoring the `#define` of `define`. It's not used but it now looks closer to the original. Also because `index(3)` is deprecated and in some systems requires the inclusion @@ -470,7 +471,7 @@ that for System V we had to do this) Cody added to the Makefile ## [1987/lievaart](1987/lievaart/lievaart.c) ([README.md](1987/lievaart/README.md)) -Cody added back the documented checks for invalid input which no longer worked +[Cody](#cody) added back the documented checks for invalid input which no longer worked and instead resulted in either accepting the level, whether or not it was a number or out of range (see below on range). For the move it entered an infinite loop, prompting the player with `"You:"` but not letting the player input @@ -515,12 +516,12 @@ size constraints of the contest). ## [1987/wall](1987/wall/wall.c) ([README.md](1987/wall/README.md])) -Cody made this use `fgets(3)`. +[Cody](#cody) made this use `fgets(3)`. ## [1987/westley](1987/westley/westley.c) ([README.md](1987/westley/README.md])) -Cody fixed this for modern systems. The problem was `'assignment to cast is +[Cody](#cody) fixed this for modern systems. The problem was `'assignment to cast is illegal, lvalue casts are not supported'`. For the original file see the README.md file. Unfortunately this ruins some symmetry. To try and resolve this as much as possible at first code was commented out but later on the commented @@ -538,7 +539,7 @@ unlikely(?) but nevertheless suggested case that `putchar()` is not available. ## [1988/dale](1988/dale/dale.c) ([README.md](1988/dale/README.md])) -Cody fixed this twisted entry (as we called it :-) ) for modern compilers, +[Cody](#cody) fixed this twisted entry (as we called it :-) ) for modern compilers, including making it no longer require `-traditional-cpp`. Fixing `-traditional-cpp` is, as noted later on, very complicated, but we encourage you to compare the fix from the original entry. There was another problem to resolve @@ -616,7 +617,7 @@ version in case you have an older compiler or wish to try `-traditional-cpp`. ## [1988/isaak](1988/isaak/isaak.c) ([README.md](1988/isaak/README.md])) -Cody fixed this to work for modern systems. The problem was that the important +[Cody](#cody) fixed this to work for modern systems. The problem was that the important function, a redefinition of `exit()`, was not being called in `main()`. The original version is in [1988/isaak/isaak.alt.c](1988/isaak/isaak.alt.c). See the README.md file for more details. @@ -624,13 +625,13 @@ README.md file for more details. ## [1988/litmaath](1988/litmaath/litmaath.c) ([README.md](1988/litmaath/README.md)) -Cody added the alt code which is code that we suggested at the time of +[Cody](#cody) added the alt code which is code that we suggested at the time of publication, in the remarks, to help understand the entry, and for fun. ## [1988/phillipps](1988/phillipps/phillipps.c) ([README.md](1988/phillipps/README.md])) -Cody fixed this for modern systems. It did not compile with clang because it +[Cody](#cody) fixed this for modern systems. It did not compile with clang because it requires the second and third args of `main()` to be `char **` but even before that with gcc it printed garbage and then crashed. @@ -649,12 +650,12 @@ to itself and `pain()` does now. ## [1988/reddy](1988/reddy/reddy.c) ([README.md](1988/reddy/README.md)) -Cody made this use `fgets(3)`. +[Cody](#cody) made this use `fgets(3)`. ## [1988/spinellis](1988/spinellis/spinellis.c) ([README.md](1988/spinellis/README.md])) -Cody provided an [alternate version](1988/spinellis/spinellis.alt.c) so that +[Cody](#cody) provided an [alternate version](1988/spinellis/spinellis.alt.c) so that this will work with compilers like clang. An alternate version had to be provided because not doing so would be tampering with the entry too much. It would work but it would not show the same creativity and cleverness. @@ -675,7 +676,7 @@ was fixed by Misha Dynin, based on the judges' remarks, so that this would work with modern C compilers. We encourage you to try the alternate version to see what happens with current compilers! See the README.md files for details. -Cody changed the `int`s to be `float` as that's what they are printed as: not +[Cody](#cody) changed the `int`s to be `float` as that's what they are printed as: not strictly necessary but nonetheless more correct, even if not warned against. Cody added the [try.sh](1988/westley/try.sh) script to show the magic of the @@ -688,7 +689,7 @@ entry as seeing the code with the result at once is far more beautiful. ## [1989/fubar](1989/fubar/fubar.c) ([README.md](1989/fubar/README.md])) -Cody got this to work with modern systems. The main issues were that an +[Cody](#cody) got this to work with modern systems. The main issues were that an `#include` had to be added along with fixing the path (due to `.` not being in `$PATH`) to files referred to in the code. @@ -696,8 +697,9 @@ Cody got this to work with modern systems. The main issues were that an ## [1989/jar.1](1989/jar.1/jar.1.c) ([README.md](1989/jar.1/README.md])) To prevent annoying output to `/dev/tty` we changed the code to simulate the -output via `strings(1)` but Cody removed the ill-famed `useless use of cat` to -shut ShellCheck up. Why is it ill-famed? Because there is no such thing as a +output via `strings(1)` but [Cody](#cody) removed the ill-famed `useless use of cat` to +shut [ShellCheck](https://github.com/koalaman/shellcheck) up. +Why is it ill-famed? Because there is no such thing as a useless cat, that's why! For instance, the fact they even exist is proof that the Earth is **NOT** flat: because if it was they would have pushed everything off it by now! :-) They're also a great joy to all ailurophiles and yes they @@ -711,7 +713,7 @@ entry and the alt code) anyway, it works out well. ## [1989/jar.2](1989/jar.2/jar.2.c) ([README.md](1989/jar.2/README.md])) -Cody fixed this to work with modern compilers. Modern compilers do not allow +[Cody](#cody) fixed this to work with modern compilers. Modern compilers do not allow code like: ```c @@ -729,14 +731,14 @@ Cody also provided the [try.sh](1989/jar.2/try.sh) script and the supplementary files [try.txt](1989/jar.2/try.txt), [fib.lisp](1989/jar.2/fib.lisp) and [chocolate_cake.lisp](1989/jar.2/chocolate_cake.lisp). The `try.txt` comes -from the author and the `fib.lisp` comes from Yusuke. Cody wrote the script and +from the author and the `fib.lisp` comes from [Yusuke](#yusuke). Cody wrote the script and offered us some chocolate cake :-) See README.md for details on how to use the script. ## [1989/ovdluhe](1989/ovdluhe/ovdluhe.c) ([README.md](1989/ovdluhe/README.md])) -Cody fixed an infinite loop where the program would print the same thing over +[Cody](#cody) fixed an infinite loop where the program would print the same thing over and over again, flooding the screen. The problem is that there was a `for` loop that by necessity had to not have an increment stage but only in the `if` path (in the loop itself) did the pointer get updated. @@ -748,7 +750,7 @@ fixed in this version too, after it was discovered and fixed. ## [1989/paul](1989/paul/paul.c) ([README.md](1989/paul/README.md])) -Cody fixed a segfault under macOS that prevented it from working. The problem +[Cody](#cody) fixed a segfault under macOS that prevented it from working. 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 too `long` :-) @@ -759,7 +761,7 @@ README.md for details. ## [1989/robison](1989/robison/robison.c) ([README.md](1989/robison/README.md])) -Yusuke Endoh fixed this to compile under modern systems. To see the changes +[Yusuke Endoh](#yusuke) fixed this to compile under modern systems. To see the changes made, try: @@ -772,7 +774,7 @@ cd 1989/robison ; make diff_orig_prog ## [1989/tromp](1989/tromp/tromp.c) ([README.md](1989/tromp/README.md])) -Cody and Yusuke fixed this entry: Yusuke fixed this to compile with gcc and Cody +[Cody](#cody) and [Yusuke](#yusuke) fixed this entry: Yusuke fixed this to compile with gcc and Cody fixed it for clang and made some other fixes as well. To get it to work with clang the variable `a` had to not be the third argument @@ -801,7 +803,7 @@ not his only reason :-) ) ## [1989/westley](1989/westley/westley.c) ([README.md](1989/westley/README.md])) -Cody fixed this for clang, except that two versions generated by the program +[Cody](#cody) fixed this for clang, except that two versions generated by the program cannot be compiled by clang due to inherent defects in the compiler and how the entry works. This is an **incredibly hard** one to fix for clang whilst still being compilable with gcc (and gcc can compile every generated version with the @@ -874,7 +876,7 @@ environmental variable; see the README.md for details. ## [1990/baruch](1990/baruch/baruch.c) ([README.md](1990/baruch/README.md])) -Cody added an [alternate version](1990/baruch/baruch.alt.c) which allows Turbo-C +[Cody](#cody) added an [alternate version](1990/baruch/baruch.alt.c) which allows Turbo-C and MSC to compile this code, based on the authors' remarks, except that Cody did not change the `" #Q"` string as that showed worse looking output instead of improved output though he has no way to test the compilers in @@ -892,15 +894,15 @@ judges was retained. ## [1990/cmills](1990/cmills/cmills.c) ([README.md](1990/cmills/README.md])) -Yusuke got this to work in modern systems (it previously resulted in a bus +[Yusuke](#yusuke) got this to work in modern systems (it previously resulted in a bus error). -Cody made this use `fgets(3)`. +[Cody](#cody) made this use `fgets(3)`. ## [1990/dds](1990/dds/dds.c) ([README.md](1990/dds/README.md])) -Yusuke and Cody in conjunction fixed this for modern systems (both fixed a +[Yusuke](#yusuke) and [Cody](#cody) in conjunction fixed this for modern systems (both fixed a different compiler error but more fixes were also made). Yusuke added the comma operator for a binary expression with `free(3)` which is @@ -917,7 +919,7 @@ Cody also made this use `fgets(3)`. ## [1990/dg](1990/dg/dg.c) ([README.md](1990/dg/README.md])) -Cody fixed this for modern systems. There were two problems to be resolved. +[Cody](#cody) fixed this for modern systems. There were two problems to be resolved. One can no longer do: @@ -938,7 +940,7 @@ with if the C preprocessor botches single quotes in cpp expansion. ## [1990/jaw](1990/jaw/jaw.c) ([README.md](1990/jaw/README.md])) -Cody fixed the script to work properly in modern environments including writing +[Cody](#cody) fixed the script to work properly in modern environments including writing to and extracting from `stdout` and relying on the exit code in the commands to allow for `&& ...`. @@ -948,27 +950,27 @@ is 0 it shows what looks like an error. He added the [try.sh](1990/jaw/try.sh) to run the commands that we suggested at the time. -NOTE: as `btoa` is not common we used a ruby script from Yusuke but with a minor +NOTE: as `btoa` is not common we used a ruby script from [Yusuke](#yusuke) but with a minor fix applied by Cody that made the program just show `oops` twice from invalid input but which now works. ## [1990/pjr](1990/pjr/pjr.c) ([README.md](1990/pjr/README.md])) -Cody added the [alt code](1990/pjr/pjr.alt.c) which was suggested by the judges +[Cody](#cody) added the [alt code](1990/pjr/pjr.alt.c) which was suggested by the judges in the case that your compiler cannot compile `X=g()...` but it actually does something else and is recommended by the author as well. ## [1990/scjones](1990/scjones/scjones.c) ([README.md](1990/scjones/README.md])) -Yusuke suggested `-ansi` to get the entry to compile due to trigraphs and Cody +[Yusuke](#yusuke) suggested `-ansi` to get the entry to compile due to trigraphs and [Cody](#cody) suggested `-trigraphs`. Both work but we used Yusuke's idea. ## [1990/tbr](1990/tbr/tbr.c) ([README.md](1990/tbr/README.md])) -Cody fixed this to work with modern compilers; `exit(3)` returns void but the +[Cody](#cody) fixed this to work with modern compilers; `exit(3)` returns void but the function was used in a binary expression so this wouldn't even compile. Cody also changed the code to use `fgets()` instead of `gets()` so one would not get @@ -986,7 +988,7 @@ author intended, but more compact. ## [1990/theorem](1990/theorem/theorem.c) ([README.md](1990/theorem/README.md])) -Cody fixed this to compile with modern systems. +[Cody](#cody) fixed this to compile with modern systems. He also fixed some bugs that impacted the usability of this program including some segfaults under modern systems (and possibly in some cases earlier systems) with @@ -1013,18 +1015,18 @@ Since this program is so incredible the extra fixes were deemed worth having and this is why it was done. Cody later disabled a warning in the Makefile that proved to be a problem only -with clang in linux but which was defaulting to an error. This way was the +with clang in Linux but which was defaulting to an error. This way was the simplest way to deal with the problem in question due to the way the entry works. -Yusuke pointed out that `atof` nowadays needs `#include ` which was +[Yusuke](#yusuke) pointed out that `atof` nowadays needs `#include ` which was used in order to get this to work initially (prior to this output was there but incomplete). ## [1990/stig](1990/stig/stig.c) ([README.md](1990/stig/README.md)) -Cody fixed the paths in the Makefile so that this would build in linux (it +[Cody](#cody) fixed the paths in the Makefile so that this would build in Linux (it worked fine in macOS). He also changed the Makefile to use `bash` not `zsh` as not all systems have @@ -1033,7 +1035,7 @@ He also changed the Makefile to use `bash` not `zsh` as not all systems have ## [1990/westley](1990/westley/westley.c) ([README.md](1990/westley/README.md])) -Cody fixed this for modern systems. It had `1s` in places for a short int which +[Cody](#cody) fixed this for modern systems. It had `1s` in places for a short int which was changed to just `1`. Since it's instructional to see the differences he has provided an alternate version, [westley.alt.c](1990/westley/westley.alt.c), which is the original code. @@ -1053,7 +1055,7 @@ original code. ## [1991/ant](1991/ant/ant.c) ([README.md](1991/ant/README.md])) -Cody added [alt code](1991/ant/ant.alt.c) that will be a bit easier to use for +[Cody](#cody) added [alt code](1991/ant/ant.alt.c) that will be a bit easier to use for those familiar with vim in the following ways: - Use `0` to go to first column. @@ -1068,7 +1070,7 @@ The other keys were left unchanged. ## [1991/brnstnd](1991/brnstnd/brnstnd.c) ([README.md](1991/brnstnd/README.md])) -Cody fixed this for modern systems. There were two invalid operands to binary +[Cody](#cody) fixed this for modern systems. There were two invalid operands to binary expression (`char *` and `void` and `int` and `void`) to resolve and additionally a mis-feature of the C pre-processor which no longer works had to be changed as well in order to get this to compile. In particular the macro `C`, @@ -1081,7 +1083,7 @@ slightly more like the original, even though it's unused. ## [1991/buzzard](1991/buzzard/buzzard.c) ([README.md](1991/buzzard/README.md])) -Cody fixed this so that the coordinates being specified would not crash the +[Cody](#cody) fixed this so that the coordinates being specified would not crash the program. This happened because the function that calls `atoi(3)` took an arg without any type specified and as an implicit int it was not a `char *` which crashed the program in modern systems. @@ -1098,7 +1100,7 @@ more useful way to exit, just entering `q` followed by enter. ## [1991/davidguy](1991/davidguy/davidguy.c) ([README.md](1991/davidguy/README.md])) -As some systems like macOS can be particular about not declaring functions Cody +As some systems like macOS can be particular about not declaring functions [Cody](#cody) added to the Makefile some `-include` options. These appear to not be strictly necessary but it was done due to other syscalls being a problem not being declared first. @@ -1106,7 +1108,7 @@ declared first. ## [1991/dds](1991/dds/dds.c) ([README.md](1991/dds/README.md])) -Cody fixed a segfault that prevented this entry from working in any condition +[Cody](#cody) fixed a segfault that prevented this entry from working in any condition and he also made it work for clang. He also added checks for NULL `FILE *`s. Furthermore he changed it so that the C from the BASIC uses `fgets()`, not `gets()`. For the magic of clang and `fgets()` see below. @@ -1235,7 +1237,7 @@ entry was fixed. It has not been done in all. ## [1991/fine](1991/fine/fine.c) ([README.md](1991/fine/README.md)) -Cody made it look much more like the original entry even after the fix that +[Cody](#cody) made it look much more like the original entry even after the fix that increased the count in characters from 80 to 106, getting it back down to just 85 (and later back down to 80, see below). @@ -1258,7 +1260,7 @@ which ones? :-) ) ## [1991/rince](1991/rince/rince.c) ([README.md](1991/rince/README.md)) -Cody fixed it so that the messages that show if you won or lost will be seen +[Cody](#cody) fixed it so that the messages that show if you won or lost will be seen after the end of the game. The reason it did not work before is curses was ended at the end of the program which clears the screen. To make it look most like the original entry Cody left the message before ending curses in and printed another @@ -1273,7 +1275,7 @@ the above fix was applied to these versions too. ## [1991/westley](1991/westley/westley.c) ([README.md](1991/westley/README.md])) -Cody fixed a segfault in this program which prevented it from working. The +[Cody](#cody) fixed a segfault in this program which prevented it from working. The problem was that the read-only char array `char *z[]` was being written to. The fix was to change it to `char z[][100]` in two spots (see if you can determine why two places, not one!). Why 100 when the longest string is < 100? Because a @@ -1283,7 +1285,8 @@ value that works without having to find the correct value. Cody also fixed the `ttt.sh` script that prevented the game from working and he also improved it so that warnings/errors/about to compile messages are not shown unless the `-e` option is used. This is because the errors being shown kind of -ruins the experience. Finally he made it pass ShellCheck. +ruins the experience. Finally he made it pass +[ShellCheck](https://github.com/koalaman/shellcheck). Cody also added the alt version which is based on the author's remarks, a version that supposedly (:-) ) always wins. @@ -1297,7 +1300,7 @@ should have been removed. ## [1992/adrian](1992/adrian/adrian.c) ([README.md](1992/adrian/README.md])) -Cody fixed the code so that it will try opening the file the code was compiled +[Cody](#cody) fixed the code so that it will try opening the file the code was compiled from (`__FILE__`), not `adgrep.c`, as the latter does not exist: `adgrep` is simply a link to `adrian` as `adgrep` is what the program was submitted as but the winner is `adrian.c`. @@ -1367,7 +1370,7 @@ the additional tools. ## [1992/albert](1992/albert/albert.c) ([README.md](1992/albert/README.md])) -Cody fixed this to compile with modern systems. Note that in 1996 a bug fix was +[Cody](#cody) fixed this to compile with modern systems. Note that in 1996 a bug fix was applied to the code, provided as the alt code as that version is not obfuscated. Thus Cody's fix applies to the original entry. The problems were that `malloc.h` is not the correct header file now (at least in some systems?) and a non-void @@ -1377,7 +1380,7 @@ return void. ## [1992/ant](1992/ant/ant.c) ([README.md](1992/ant/README.md])) -Cody fixed the Makefile so that the program will actually work with it (or at +[Cody](#cody) fixed the Makefile so that the program will actually work with it (or at least the rule to clobber files and link `am` to `ant`). The issue was that the variables in the Makefile could not be evaluated in the same way as it's not as feature-rich as other implementations of `make`. Thus the use of `${RM}` and @@ -1396,7 +1399,7 @@ necessary to include `time.h` so Cody did this as well. ## [1992/buzzard.1](1992/buzzard.1/buzzard.1.c) ([README.md](1992/buzzard.1/README.md)) -Cody added a check for the right number of args, exiting 1 if not enough (2) +[Cody](#cody) added a check for the right number of args, exiting 1 if not enough (2) used. This was not originally done but at a time it was changed to be considered a bug so it was fixed at that point as it only took a few seconds and had to be verified that it was consistent with the [bugs.md](/bugs.md) file. @@ -1407,7 +1410,7 @@ commands that we suggested and some additional ones that provide for some fun. ## [1992/gson](1992/gson/gson.c) ([README.md](1992/gson/README.md])) -Cody fixed a crash that prevented this entry from working in some cases in some +[Cody](#cody) fixed a crash that prevented this entry from working in some cases in some systems (like macOS) by disabling the optimiser in the Makefile. Cody also changed the buffer size in such a way that `gets(3)` should be safe @@ -1426,7 +1429,8 @@ loop). Cody also added the [mkdict.sh](1992/gson/mkdict.sh) script that the author included in their remarks. See the README.md for its purpose. It was NOT fixed -for ShellCheck because the author deliberately obfuscated it so **PLEASE DO NOT +for [ShellCheck](https://github.com/koalaman/shellcheck) +because the author deliberately obfuscated it so **PLEASE DO NOT FIX THIS**. @@ -1434,15 +1438,15 @@ FIX THIS**. The original code, [imc.orig.c](1992/imc/imc.orig.c), assumed that `exit(3)` returned a value but this will cause problems where `exit(3)` returns void. The -source code was modified to avoid this problem but like Cody did with other fixes +source code was modified to avoid this problem but like [Cody](#cody) did with other fixes he made this more like the original by redefining `exit` to use the comma operator so that it could be used in binary expressions. ## [1992/kivinen](1992/kivinen/kivinen.c) ([README.md](1992/kivinen/README.md])) -It was observed that on modern systems this goes much too quick. Yusuke created -a patch that calls `usleep(3)` but Cody thought the value was too slow so he +It was observed that on modern systems this goes much too quick. [Yusuke](#yusuke) created +a patch that calls `usleep(3)` but [Cody](#cody) thought the value was too slow so he made it a macro in the Makefile `Z`, defaulting at 15000. This was made an [alt version](1992/kivinen/kivinen.alt.c) and it is recommended one use the alt version first. See the README.md file to see how to reconfigure it. @@ -1466,10 +1470,10 @@ it moves towards the right but if you click the mouse it goes back. ## [1992/lush](1992/lush/lush.c) ([README.md](1992/lush/README.md])) -Yusuke supplied a patch which makes this work with gcc. Due to how it works (see +[Yusuke](#yusuke) supplied a patch which makes this work with gcc. Due to how it works (see Judges' remarks in the README.md file) this will not work with clang. -Cody also provided the `runme.sh` script to demonstrate it as using make was +[Cody](#cody) also provided the `runme.sh` script to demonstrate it as using make was problematic. Cody made it use `fgets()` instead of `gets()`. @@ -1480,12 +1484,12 @@ NOTE: this entry cannot work with clang due to different compiler messages. See ## [1992/marangon](1992/marangon/marangon.c) ([README.md](1992/marangon/README.md)) -Cody made this more portable by changing the `void main()` to be `int main()`. +[Cody](#cody) made this more portable by changing the `void main()` to be `int main()`. ## [1992/nathan](1992/nathan/nathan.c) ([README.md](1992/nathan/README.md)) -Cody added the original file back as it was deemed that the export restrictions +[Cody](#cody) added the original file back as it was deemed that the export restrictions should no longer be a cause of concern for this entry. Doing this did require a change to Cody's [2020/ferguson2](2020/ferguson2/README.md) entry as it's referenced. @@ -1499,7 +1503,7 @@ that we suggested as well as one he provided. ## [1992/vern](1992/vern/vern.c) ([README.md](1992/vern/README.md])) -Cody fixed an infinite loop if one were to input numbers < `0` or > `077`. The +[Cody](#cody) fixed an infinite loop if one were to input numbers < `0` or > `077`. The problem was that it tried to use `scanf(3)` with the format specifier `"%o %o"` in a loop, reading again if `scanf(3)` did not return 2 (that was not a problem in that `scanf(2)` will not return until the number of specifiers have been @@ -1513,7 +1517,7 @@ both numbers (using `"%o %o"` does not solve the problem). ## [1992/westley](1992/westley/westley.c) ([README.md](1992/westley/README.md])) -Cody fixed this to work for clang by changing the third and fourth arg of +[Cody](#cody) fixed this to work for clang by changing the third and fourth arg of `main()` to be `char **` inside `main()`; clang requires args 2 - 4 to be `char **` and some versions do not even allow a fourth arg. @@ -1560,20 +1564,20 @@ encourage you to try the original without two args :-) ## [1993/cmills](1993/cmills/cmills.c) ([README.md](1993/cmills/README.md])) -Yusuke suggested that with modern systems this goes too fast so he added a call -to `usleep(3)` in a patch he made. Cody made it configurable at compilation by +[Yusuke](#yusuke) suggested that with modern systems this goes too fast so he added a call +to `usleep(3)` in a patch he made. [Cody](#cody) made it configurable at compilation by using a macro. This is in the alt version which is the recommended one to try first. ## [1993/dgibson](1993/dgibson/dgibson.c) ([README.md](1993/dgibson/README.md])) -Cody fixed the script to work which assumed that `.` is in the path. +[Cody](#cody) fixed the script to work which assumed that `.` is in the path. ## [1993/jonth](1993/jonth/jonth.c) ([README.md](1993/jonth/README.md])) -Both Cody and Yusuke fixed this so that it will work with modern systems. Yusuke +Both [Cody](#cody) and [Yusuke](#yusuke) fixed this so that it will work with modern systems. Yusuke provided some fixes of the X code and Cody fixed the C pre-processor directives so that it would compile. It used to be that you could get away with code like: @@ -1589,20 +1593,20 @@ prepended to them. ## [1993/leo](1993/leo/leo.c) ([README.md](1993/leo/README.md])) -Cody fixed this to work with modern compilers. This involved different header +[Cody](#cody) fixed this to work with modern compilers. This involved different header files for functions. ## [1993/lmfjyh](1993/lmfjyh/lmfjyh.c) ([README.md](1993/lmfjyh/README.md])) -Cody added an [alternate version](1993/lmfjyh/lmfjyh.alt.c) which does what the +[Cody](#cody) added an [alternate version](1993/lmfjyh/lmfjyh.alt.c) which does what the program did with gcc < 2.3.3. See the README.md file for details and for why this was made the alternate version, not the actual entry. ## [1993/plummer](1993/plummer/plummer.c) ([README.md](1993/plummer/README.md])) -Cody added check for two args. +[Cody](#cody) added check for two args. Cody also added an [alternate version](1993/plummer/plummer.alt.c) which uses `usleep()` so you can see what is happening with faster systems. This version @@ -1611,10 +1615,10 @@ also checks for two args. See the README.md files for details. ## [1993/rince](1993/rince/rince.c) ([README.md](1993/rince/README.md])) -Yusuke supplied a patch to get this to work in modern systems. This fix also +[Yusuke](#yusuke) supplied a patch to get this to work in modern systems. This fix also applies the compatibility issue of `select(2)` described in the README.md file. -Cody added a call to `endwin()` to help with terminal sanity after the program +[Cody](#cody) added a call to `endwin()` to help with terminal sanity after the program ends. Cody provided two alternate versions to simplify slowing the game down and, for @@ -1626,12 +1630,12 @@ compile time. See the README.md for details. ## [1993/schnitzi](1993/schnitzi/schnitzi.c) ([README.md](1993/schnitzi/README.md])) -Cody made this use `fgets(3)` not `gets(3)`. +[Cody](#cody) made this use `fgets(3)` not `gets(3)`. ## [1993/vanb](1993/vanb/vanb.c) ([README.md](1993/vanb/README.md])) -Cody fixed this to work with clang. The problem was that the third arg to main() +[Cody](#cody) fixed this to work with clang. The problem was that the third arg to main() was not a `char **`. Instead `O5()` (which was `main()` via `-DO5=main`) is now its own function which main() calls with the right parameters. @@ -1663,7 +1667,7 @@ this code. Other code is also described there. ## [1994/dodsond2](1994/dodsond2/dodsond2.c) ([README.md](1994/dodsond2/README.md)) -Cody fixed an infinite loop that could happen when you shoot an arrow and end up +[Cody](#cody) fixed an infinite loop that could happen when you shoot an arrow and end up having no arrows, thus making one force quit the game. The problem was in a condition in the outer loop it would repeatedly get input (if `getchar()` returned `'\n'`), only if one has more than one arrow, returning after that. @@ -1694,7 +1698,7 @@ that already existed, how many you had and how many were stolen. ## [1994/horton](1994/horton/horton.c) ([README.md](1994/horton/README.md)) -Cody fixed this to check that four args were specified. With the use of the C +[Cody](#cody) fixed this to check that four args were specified. With the use of the C pre-processor macro and inclusion of stdlib.h in the Makefile the layout of the source is exactly the same column width and no additional lines were added. This was done during one of the times where this was changed to bug status, for @@ -1706,11 +1710,11 @@ shouldn't be. ## [1994/ldb](1994/ldb/ldb.c) ([README.md](1994/ldb/README.md])) -Cody fixed this so it would compile and work with modern compilers. The problem +[Cody](#cody) fixed this so it would compile and work with modern compilers. The problem was that `srand()` returns void but it was used in a `||` expression. Thus the comma operator was needed. -Cody also fixed it for clang under linux which objected to incompatible pointer +Cody also fixed it for clang under Linux which objected to incompatible pointer type (because `time(2)` takes a `time_t *` which in some systems is a `long *` but what was being passed to it is an `int`). @@ -1729,7 +1733,7 @@ print (up to) the next 231 characters and so on. ## [1994/schnitzi](1994/schnitzi/schnitzi.c) ([README.md](1994/schnitzi/README.md])) -Cody added two alt versions, [one which uses +[Cody](#cody) added two alt versions, [one which uses `fgets()`](1994/schnitzi/schnitzi.alt.c) but when fed its own source code cannot generate code that compile and another [one with a bigger buffer size](1994/schnitzi/schnitzi.alt2.c) which, when fed its own source code, will @@ -1747,7 +1751,7 @@ now there is more important work to do so that the next contest can run. ## [1994/shapiro](1994/shapiro/shapiro.c) ([README.md](1994/shapiro/README.md])) -Cody fixed a bug on systems where `EOF != -1`. The problem is that `getc()` and +[Cody](#cody) fixed a bug on systems where `EOF != -1`. The problem is that `getc()` and the related functions do not return `-1` on EOF or error but rather `EOF`. However `EOF` is not required to be `-1` but merely an int < 0 and this program assumed that `getc()` will return `-1` on EOF or error, not `EOF`. On systems @@ -1759,7 +1763,7 @@ check the [bugs.md](bugs.md) file. ## [1994/tvr](1994/tvr/tvr.c) ([README.md](1994/tvr/README.md])) -Cody made this use `fgets(3)` instead of `gets(3)`. In this case the newline had +[Cody](#cody) made this use `fgets(3)` instead of `gets(3)`. In this case the newline had to be terminated but it was a pretty straightforward fix. `gets()` was defined to use `fgets()` and the inclusion of `stdio.h` had to be added but to make it more like the original entry this was done in the Makefile. @@ -1769,14 +1773,14 @@ Note that the alt code does not use `fgets(3)` but rather `gets(3)`. ## [1994/weisberg](1994/weisberg/weisberg.c) ([README.md](1994/weisberg/README.md])) -Cody changed the Makefile to make this program more user friendly and easier to +[Cody](#cody) changed the Makefile to make this program more user friendly and easier to use with other tools as well by making the program output not a space after each number but rather a newline. ## [1994/westley](1994/westley/westley.c) ([README.md](1994/westley/README.md])) -Cody converted the spoiler compiler options (provided by the author) to be +[Cody](#cody) converted the spoiler compiler options (provided by the author) to be compiler commands and added a script [spoiler.sh](1994/westley/spoiler.sh) to automate the spoiler commands to make it easier to see the game in action from start to finish. @@ -1787,7 +1791,7 @@ start to finish. ## [1995/cdua](1995/cdua/cdua.c) ([README.md](1995/cdua/README.md])) -Cody fixed this so that it would work with macOS. Once it could compile it +[Cody](#cody) fixed this so that it would work with macOS. Once it could compile it additionally segfaulted under macOS which he also fixed. Cody also provided the [Alternate code](1995/cdua/cdua.alt.c) for fun :-) ) (in @@ -1805,18 +1809,18 @@ function as the error message claims. ## [1995/dodsond1](1995/dodsond1/dodsond1.c) ([README.md](1995/dodsond1/README.md])) -Cody added the [try.sh](1995/dodsond1/try.sh) script that uses the text file he +[Cody](#cody) added the [try.sh](1995/dodsond1/try.sh) script that uses the text file he provided which is input we suggested one try with the entry. ## [1995/esde](1995/esde/esde.c) ([README.md](1995/esde/README.md])) -Cody added the [try.sh](1995/esde/try.sh) script. +[Cody](#cody) added the [try.sh](1995/esde/try.sh) script. ## [1995/garry](1995/garry/garry.c) ([README.md](1995/garry/README.md])) -Cody fixed the alt code so that it will compile with modern compilers. The +[Cody](#cody) fixed the alt code so that it will compile with modern compilers. The problem was a missing `int` for the `f` variable. He felt it was even more important that it works because the layout does indeed look to him like a rat is dropping core :-), something that the judges suggested. @@ -1834,13 +1838,13 @@ running `./try.alt.sh`. ## [1995/leo](1995/leo/leo.c) ([README.md](1995/leo/README.md])) -At our change in how to deal with spoilers, Cody uudecoded the spoiler provided +At our change in how to deal with spoilers, [Cody](#cody) uudecoded the spoiler provided by the author, putting it in [spoiler1.md](1995/leo/spoiler1.md). ## [1995/makarios](1995/makarios/makarios.c) ([README.md](1995/makarios/README.md)) -Cody fixed this so that it will compile with versions of clang that has a defect +[Cody](#cody) fixed this so that it will compile with versions of clang that has a defect which only allows `main()` to have 0, 2 or 3 args. This is done by a new function (`pain()` as it's annoying that clang is this way :-) ) that `main()` calls which has the four args. @@ -1848,7 +1852,7 @@ calls which has the four args. ## [1995/vanschnitz](1995/vanschnitz/vanschnitz.c) ([README.md](1995/vanschnitz/README.md)) -Cody added the authors' [spoiler as a C file](1995/vanschnitz/spoiler.c) as in +[Cody](#cody) added the authors' [spoiler as a C file](1995/vanschnitz/spoiler.c) as in 2023 we have decided that in most cases all the code should be available for the wider audience, without having to extract it. The exception is when the files are created by the entry or the entry decrypts the text or whatever else. @@ -1859,7 +1863,7 @@ are created by the entry or the entry decrypts the text or whatever else. ## [1996/august](1996/august/august.c) ([README.md](1996/august/README.md])) -Cody fixed a segfault in this program that prevented it from working right and +[Cody](#cody) fixed a segfault in this program that prevented it from working right and also fixed an infinite loop in the try commands. The problem with the infinite loop is that the file `august.oc` had to have lines starting with `#` removed and it was not being done. After this is done with say `sed(1)` (like `sed -i'' @@ -1873,10 +1877,10 @@ commands. ## [1996/dalbec](1996/dalbec/dalbec.c) ([README.md](1996/dalbec/README.md])) -Cody proposed a fix for this to compile with clang and Landon implemented it +[Cody](#cody) proposed a fix for this to compile with clang and Landon implemented it after some discussion (though Cody changed the function name). The reason Cody did not do it is because he thought it was the wrong output but as it happens -the try section below was worded a bit confusingly. He looked at Yusuke's +the try section below was worded a bit confusingly. He looked at [Yusuke](#yusuke)'s analysis found [here](https://mame-github-io.translate.goog/ioccc-ja-spoilers/1996/dalbec.html?_x_tr_sl=auto&_x_tr_tl=en&_x_tr_hl=en-US&_x_tr_pto=wapp) but he missed that Yusuke added a '...' after the result which made him think @@ -1890,7 +1894,7 @@ it should be. ## [1996/eldby](1996/eldby/eldby.c) ([README.md](1996/eldby/README.md])) -Cody provided an [alternate version](1996/eldby/eldby.alt.c) which uses +[Cody](#cody) provided an [alternate version](1996/eldby/eldby.alt.c) which uses `usleep()` in between writing the output to make it easier to see what is going on with faster systems and importantly also for those who are sensitive to text flashing by rapidly (it affects him too but he also thinks it moves too fast @@ -1900,7 +1904,7 @@ these reasons. ## [1996/gandalf](1996/gandalf/gandalf.c) ([README.md](1996/gandalf/README.md])) -Cody fixed this to compile and work with modern systems. As he loved the +[Cody](#cody) fixed this to compile and work with modern systems. As he loved the references in the code that could not compile he just commented out as little as possible to get this to compile. @@ -1914,12 +1918,12 @@ BTW: it is perilous to try the patience of ## [1996/huffman](1996/huffman/huffman.c) ([README.md](1996/huffman/README.md])) -Cody added the [try.sh](1996/huffman/try.sh) script. +[Cody](#cody) added the [try.sh](1996/huffman/try.sh) script. ## [1996/jonth](1996/jonth/jonth.c) ([README.md](1996/jonth/README.md])) -Cody fixed this to not segfault under macOS. The problem was that the function +[Cody](#cody) fixed this to not segfault under macOS. The problem was that the function pointer `w`, which points to `XCreateWindow()`, did not specify the parameters of the function in the pointer assignment. @@ -1940,7 +1944,7 @@ the Makefile despite the fact that very few probably use Solaris nowadays. ## [1996/schweikh2](1996/schweikh2/schweikh2.c) ([README.md](1996/schweikh2/README.md])) -Cody added the [try.sh](1996/schweikh2/try.sh) script with a few commands to try +[Cody](#cody) added the [try.sh](1996/schweikh2/try.sh) script with a few commands to try along with a shorter version of something the author suggested one try (it is suggested that one try the longer version too but it will run in an infinite loop so having it in a script is less desired). @@ -1948,7 +1952,7 @@ loop so having it in a script is less desired). ## [1996/westley](1996/westley/westley.c) ([README.md](1996/westley/README.md])) -Cody fixed a segfault in this entry as well as it displaying environmental +[Cody](#cody) fixed a segfault in this entry as well as it displaying environmental variables. Although the scripts showed correct output, it somewhat lessened the usability because they segfaulted and showed (an) environmental variable, interspersed with the output of the program. With the fix they no longer have @@ -1975,7 +1979,7 @@ Later Cody made the entry look more like the original, removing the `argc` in ## [1998/banks](1998/banks/banks.c) ([README.md](1998/banks/README.md])) -Cody set up the Makefile to have an alt build (using the same code) for those +[Cody](#cody) set up the Makefile to have an alt build (using the same code) for those who do not have a page up or page down key and added the [keysym.h](1998/banks/keysym.h) header file as a reference for other keys one can use if they wish to modify the controls. One can certainly do this even if @@ -1985,7 +1989,7 @@ have them like with Macs. ## [1998/bas1](1998/bas1/bas1.c) ([README.md](1998/bas1/README.md])) -Cody, out of an abundance of caution, added a second arg to `main()` as some +[Cody](#cody), out of an abundance of caution, added a second arg to `main()` as some versions of clang whine about the number of args on top of what type they are In particular some versions claim that they only allow 0, 2 or 3 args. It appears that they do allow 1 but for instance 4 is not allowed. However as it's @@ -1995,19 +1999,19 @@ be a problem at such a time. ## [1998/bas2](1998/bas2/bas2.c) ([README.md](1998/bas2/README.md])) -Cody added the [try.sh](1998/bas2/try.sh) script which runs some default actions +[Cody](#cody) added the [try.sh](1998/bas2/try.sh) script which runs some default actions as well as allowing one to pass in different file names or strings. ## [1998/chaos](1998/chaos/chaos.c) ([README.md](1998/chaos/README.md])) -Cody added a call to `endwin()` to restore terminal sanity (echo etc.) when +[Cody](#cody) added a call to `endwin()` to restore terminal sanity (echo etc.) when exiting the program (in both versions). ## [1998/df](1998/df/df.c) ([README.md](1998/df/README.md])) -Cody changed a `int *` used for `fopen(3)` to be a `FILE *` to be more correct +[Cody](#cody) changed a `int *` used for `fopen(3)` to be a `FILE *` to be more correct and prevent any possible problems in some systems (which has happened). Cody also made the fixed version look more like the original version by using @@ -2018,7 +2022,7 @@ be done in modern systems) to be `_int`. ## [1998/dlowe](1998/dlowe/dlowe.c) ([README.md](1998/dlowe/README.md])) -Cody made the program more portable by changing the void return type of `main()` +[Cody](#cody) made the program more portable by changing the void return type of `main()` to be `int` (in both versions). Cody added the scripts [try.sh](1998/dlowe/try.sh), @@ -2032,19 +2036,19 @@ pootify scripts. ## [1998/dloweneil](1998/dloweneil/dloweneil.c) ([README.md](1998/dloweneil/README.md])) -Cody added [alt code](1998/dloweneil/dloweneil.alt.c) which has vi(m) movement +[Cody](#cody) added [alt code](1998/dloweneil/dloweneil.alt.c) which has vi(m) movement (in addition to the other keys except for dropping it's not `d` but `j` or space) keys as well as allowing one to quit the game. ## [1998/dorssel](1998/dorssel/dorssel.c) ([README.md](1998/dorssel/README.md])) -Cody added the [try.sh](1998/dorssel/try.sh) script. +[Cody](#cody) added the [try.sh](1998/dorssel/try.sh) script. ## [1998/fanf](1998/fanf/fanf.c) ([README.md](1998/fanf/README.md)) -Cody fixed this to compile. The problem was the intermediate steps to get to the +[Cody](#cody) fixed this to compile. The problem was the intermediate steps to get to the final code that is compiled. The code is now what it essentially becomes when processed completely. The intermediate steps can now be performed to see how it expands but it can still compile and be used. @@ -2054,7 +2058,7 @@ versions of clang whine about the number of args to `main()`. These versions claim that only 0, 2 or 3 are allowed but it does allow 1 anyway. It is quite possible though that this will change so it is fixed in case this happens. As it is mostly just through the C pre-processor Cody added a new macro to do -translate to the rest of `main()`'s args. +translate to the rest of `main()`'s args. Cody also added the [try.sh](1998/fanf/try.sh) script to show the output of some of the expressions that we selected. @@ -2062,9 +2066,9 @@ of the expressions that we selected. ## [1998/schnitzi](1998/schnitzi/schnitzi.c) ([README.md](1998/schnitzi/README.md])) -Cody fixed invalid data types which prevented this entry from working, causing a +[Cody](#cody) fixed invalid data types which prevented this entry from working, causing a segfault. This showed itself in two parts which required two fixes, one for -linux and further changes for macOS. He also fixed a segfault (after printing +Linux and further changes for macOS. He also fixed a segfault (after printing garbage) when the arg specified evaluated to 0. It was decided by us, the judges, that these segfault fixes should be made because the program is so beautiful. @@ -2087,7 +2091,7 @@ commands that we recommended as well as some added by him. ## [1998/schweikh1](1998/schweikh1/schweikh1.c) ([README.md](1998/schweikh1/README.md])) -Cody fixed this for modern systems (it did not work at all) and added an +[Cody](#cody) fixed this for modern systems (it did not work at all) and added an alternate version that works with macOS. Cody also made it ever so slightly more portable by removing the hard-coding of `gcc`, instead hard-coding it `cc`. Doing this not only lets it work with systems without `gcc` (though in macOS it does @@ -2135,7 +2139,7 @@ might be. As noted, a limitation of `gcc` existing was removed by Cody to make it so that `gcc` is not required as `cc` should exist in every system with a C compiler and as the author stated: as long as the options `-E -dM` of the compiler prints out -the macros in the form of `gcc -dM` i.e. the lines are in the form `#define +the macros in the form of `gcc -dM` i.e., the lines are in the form `#define MACRO value` it will work, assuming that compiler can run, of course. Cody also added the perl script that the author provided that they used to @@ -2145,7 +2149,7 @@ in the file [charcount.pl](1998/schweikh1/charcount.pl). ## [1998/schweikh2](1998/schweikh2/schweikh2.c) ([README.md](1998/schweikh2/README.md])) -Cody fixed the code to not trigger an internal compiler error in gcc: +[Cody](#cody) fixed the code to not trigger an internal compiler error in gcc: ``` :10:16: warning: type defaults to 'int' in declaration of 'zero' [-Wimplicit-int] @@ -2166,7 +2170,7 @@ question. ## [1998/schweikh3](1998/schweikh3/schweikh3.c) ([README.md](1998/schweikh3/README.md])) -Cody added the [alternate code](1998/schweikh3/README.md#alternate-code) which allows one +[Cody](#cody) added the [alternate code](1998/schweikh3/README.md#alternate-code) which allows one to reconfigure the size constant in the rare case that the author wrote about occurs. @@ -2201,7 +2205,7 @@ information for the entry. It has not been added to any JSON file. ## [1998/tomtorfs](1998/tomtorfs/tomtorfs.c) ([README.md](1998/tomtorfs/README.md])) -Cody fixed the assumption that `EOF` is `-1` (the author noted that it assumes +[Cody](#cody) fixed the assumption that `EOF` is `-1` (the author noted that it assumes it is `-1` and it's indeed a valid concern as the standard only guarantees that it's a value `< 0`) and that `1` is a valid code to return failure (it seems unlikely that it wouldn't be but since the author suggested it it was changed to @@ -2219,7 +2223,7 @@ commands that we recommended. ## [2000/anderson](2000/anderson/anderson.c) ([README.md](2000/anderson/README.md])) -Cody changed this entry to use `fgets(3)` instead of `gets(3)`. This involved +[Cody](#cody) changed this entry to use `fgets(3)` instead of `gets(3)`. This involved changing the `K` arg to `gets(3)` to `&K` in `fgets(3)`. Cody also added the [try.sh](2000/anderson/try.sh) script. @@ -2227,40 +2231,40 @@ Cody also added the [try.sh](2000/anderson/try.sh) script. ## [2000/bmeyer](2000/bmeyer/bmeyer.c) ([README.md](2000/bmeyer/README.md])) -Cody added the [try.sh](2000/bmeyer/try.sh) script with some improvements to the +[Cody](#cody) added the [try.sh](2000/bmeyer/try.sh) script with some improvements to the commands we recommended like not assuming the number of columns one has in their terminal. ## [2000/briddlebane](2000/briddlebane/briddlebane.c) ([README.md](2000/briddlebane/README.md])) -Cody fixed this to compile in systems that require one to explicitly link in +[Cody](#cody) fixed this to compile in systems that require one to explicitly link in `libm`. ## [2000/dhyang](2000/dhyang/dhyang.c) ([README.md](2000/dhyang/README.md])) -Cody made this more portable by changing the `void main` to `int main`. +[Cody](#cody) made this more portable by changing the `void main` to `int main`. He also added the [try.sh](2000/dhyang/try.sh) script. ## [2000/dlowe](2000/dlowe/dlowe.c) ([README.md](2000/dlowe/README.md])) -Cody fixed this to compile with more recent perl versions; the symbol that's now +[Cody](#cody) fixed this to compile with more recent perl versions; the symbol that's now `PL_na` was once `na`. He notes that this entry crashes under macOS but it works -under linux after this change. +under Linux after this change. ## [2000/jarijyrki](2000/jarijyrki/jarijyrki.c) ([README.md](2000/jarijyrki/README.md])) -Cody made it easier to compile this in some cases by adding `X11/` to the +[Cody](#cody) made it easier to compile this in some cases by adding `X11/` to the includes of `Xlib.h` and `keysym.h`. ## [2000/natori](2000/natori/natori.c) ([README.md](2000/natori/README.md])) -Cody fixed this for modern compilers. Depending on the compiler it would either +[Cody](#cody) fixed this for modern compilers. Depending on the compiler it would either segfault when run or not compile at all (gcc and clang respectively). Cody also provided alternate code that supports the southern hemisphere. @@ -2277,19 +2281,19 @@ like the original entry but with the two fixes. ## [2000/primenum](2000/primenum/primenum.c) ([README.md](2000/primenum/README.md])) -Cody made this more portable by changing the `void main` to `int main`. +[Cody](#cody) made this more portable by changing the `void main` to `int main`. Cody also added the [try.sh](2000/primenum/try.sh) script. ## [2000/rince](2000/rince/rince.c) ([README.md](2000/rince/README.md])) -Cody added the [try.sh](2000/rince/try.sh) script. +[Cody](#cody) added the [try.sh](2000/rince/try.sh) script. ## [2000/robison](2000/robison/robison.c) ([README.md](2000/robison/README.md])) -Cody fixed an infinite loop that occurred if invalid input was entered, flooding +[Cody](#cody) fixed an infinite loop that occurred if invalid input was entered, flooding the screen with: ``` @@ -2303,8 +2307,9 @@ on it to assign to the `int`s, much like with `1987/lievaart`. The strings are ## [2000/thadgavin](2000/thadgavin/thadgavin.c) ([README.md](2000/thadgavin/README.md])) -Cody fixed the code and added an appropriate make rule so that the SDL version -works independent from the curses version (using the same code). +[Cody](#cody) fixed the code and added an appropriate make rule so that the +[SDL](https://www.libsdl.org) version works independent from the curses version +(using the same code). Cody also added alt code to allow one to slow down the code. This code also, at least for the curses mode, allows one to quit at any time by pressing 'q'. See @@ -2345,7 +2350,7 @@ other version in. ## [2000/tomx](2000/tomx/tomx.c) ([README.md](2000/tomx/README.md])) -Cody added the [alt code](2000/tomx/README.md#alternate-code) based on the +[Cody](#cody) added the [alt code](2000/tomx/README.md#alternate-code) based on the author's remarks with a fix for modern systems and he also added the two scripts, [try.sh](2000/tomx/try.sh) and [try.alt.sh](2000/tomx/try.alt.sh) for the main code and the alt code respectively. @@ -2359,10 +2364,10 @@ details) the source code is now executable by default. ## [2001/anonymous](2001/anonymous/anonymous.c) ([README.md](2001/anonymous/README.md])) -Cody fixed both the supplementary program and the program itself (both of which +[Cody](#cody) fixed both the supplementary program and the program itself (both of which segfaulted and once that was fixed only the binary was modified; it was not run but according to the author's remarks it should be executed). He managed to do -this with linux but it will not work with any system that does not allow one to +this with Linux but it will not work with any system that does not allow one to compile 32-bit ELF binaries. See [bugs.md](/bugs.md#2001anonymous-readmemd) for why this is; _this is **not** a bug, it's a feature_ inherent in what it does! @@ -2408,7 +2413,7 @@ follow it: Change `3` in the call to `mmap()` to be `PROT_READ|PROT_WRITE`: just in case `PROT_READ|PROT_WRITE` does not equal 3 (though it seems to be equal in both -macOS and linux). +macOS and Linux). NOTE: there might be educational value to see the progress of this fix; if you wish to see, try the following commands from the `2001/anonymous` directory: @@ -2445,17 +2450,17 @@ it will at least run the supplementary program as a 64-bit program directly. ## [2001/bellard](2001/bellard/bellard.c) ([README.md](2001/bellard/README.md])) -Cody fixed this to compile with clang but according to the author this will not -work without i386 linux. It generates i386 32-bit code (not bytecode) but -unfortunately it will not work without i386 linux. See [bugs.md](/bugs.md). +[Cody](#cody) fixed this to compile with clang but according to the author this will not +work without i386 Linux. It generates i386 32-bit code (not bytecode) but +unfortunately it will not work without i386 Linux. See [bugs.md](/bugs.md). Cody fixed an earlier segfault so that it can at least now open the file should -you have an i386 linux machine (it can open it in other platforms too, of +you have an i386 Linux machine (it can open it in other platforms too, of course, but it won't work). This involved pointer updates and also changing an `int` to a `FILE *`. Where possible he left the macros as the same but in the case of `main()` this was not possible. -Yusuke added another change (see below) to make it even more portable across +[Yusuke](#yusuke) added another change (see below) to make it even more portable across compilers besides what Cody did. Cody entirely fixed the [supplementary @@ -2469,7 +2474,7 @@ will compile by default. Also the Fibonacci sequence (`fib()`) will overflow at `n > 48` so this is checked prior to running the function just like the author did for the factorial (overflowing at `>12`). Either way unfortunately this entry seems to not work in -64-bit linux or macOS. See below portability notes as well as another fix in +64-bit Linux or macOS. See below portability notes as well as another fix in this entry by Yusuke. @@ -2477,7 +2482,7 @@ this entry by Yusuke. With a tip from Yusuke we rediscovered the author's [web page for this program](https://bellard.org/otcc/) where it is stated that this will only work -in i386 linux. The author also stated in the remarks in this document that they +in i386 Linux. The author also stated in the remarks in this document that they used [gcc 2.95.2](https://ftp.gnu.org/gnu/gcc/gcc-2.95.2/gcc-everything-2.95.2.tar.gz) but we don't know if that's relevant or not. @@ -2491,11 +2496,11 @@ by Yusuke. ## [2001/cheong](2001/cheong/cheong.c) ([README.md](2001/cheong/README.md])) -Cody fixed this to work with clang by adding another function that is allowed to +[Cody](#cody) fixed this to work with clang by adding another function that is allowed to have a third arg as an int, not a `char **`. He chose `pain()` because it's a four letter word that would match the format and because it's pain that clang forces this. :-) This fix makes a point of the author's notes on portability no longer -valid, btw. +valid, BTW. Cody also added the [try.sh](2001/cheong/try.sh) script. @@ -2504,9 +2509,9 @@ He also fixed it to check the number of args. ## [2001/coupard](2001/coupard/coupard.c) ([README.md](2001/coupard/README.md])) -Cody added a value to `return` in `main()` to make it more portable. +[Cody](#cody) added a value to `return` in `main()` to make it more portable. -Cody fixed this to compile with clang in linux. The problem was C99 does not +Cody fixed this to compile with clang in Linux. The problem was C99 does not support implicit int: ```c @@ -2530,10 +2535,10 @@ sound devices in macOS). ## [2001/ctk](2001/ctk/ctk.c) ([README.md](2001/ctk/README.md])) -The ANSI escape codes were no longer valid but Yusuke provided a patch to fix -the ANSI escape codes. This works with both linux and macOS. +The ANSI escape codes were no longer valid but [Yusuke](#yusuke) provided a patch to fix +the ANSI escape codes. This works with both Linux and macOS. -Cody fixed this so that it should always restore terminal sanity (echo enabled +[Cody](#cody) fixed this so that it should always restore terminal sanity (echo enabled etc.) after exiting even if you don't press 'q', if you crash or if you kill the program prematurely. This was done by adding an explicit call to `e()` at the end of `main()`. @@ -2545,7 +2550,7 @@ vi(m) movement keys. ## [2001/dgbeards](2001/dgbeards/dgbeards.c) ([README.md](2001/dgbeards/README.md])) The author provided two changes: one to speed it up and one to make it not crash -on losing. Cody provided an alternate version which does the former but he felt +on losing. [Cody](#cody) provided an alternate version which does the former but he felt that the idea of crashing on losing (see the README.md for details on why that might be) too good to get rid of so he kept that in. @@ -2555,7 +2560,7 @@ very quickly. Do you know what it is? ## [2001/herrmann1](2001/herrmann1/herrmann1.c) ([README.md](2001/herrmann1/README.md])) -Cody fixed this so that the when compiling the code the program is not executed +[Cody](#cody) fixed this so that the when compiling the code the program is not executed itself by itself which just showed the usage string and exited. The [script herrmann1.sh](2001/herrmann1/herrmann1.sh) is used to compile the program but it's also how you invoke the program. @@ -2577,7 +2582,7 @@ errors/warnings. ## [2001/herrmann2](2001/herrmann2/herrmann2.c) ([README.md](2001/herrmann2/README.md])) -Cody fixed this to work with both 64-bit and 32-bit compilers by changing most +[Cody](#cody) fixed this to work with both 64-bit and 32-bit compilers by changing most of the `int`s (all but that in `main(int ...)`) to `long`s. He also fixed it to compile with clang by changing the args of main to be `int` and `char **`, respectively, and changing specific references to the `argv` arg, casting to @@ -2592,7 +2597,7 @@ added to `.gitignore` by accident) but Cody restored it from the archive. ## [2001/kev](2001/kev/kev.c) ([README.md](2001/kev/README.md])) -Cody slowed down the ball just a tad (it was already a `-D` macro that was used +[Cody](#cody) slowed down the ball just a tad (it was already a `-D` macro that was used in the code) as it went too fast for the speed at which the paddles move even when holding down the movement keys (but see below). @@ -2608,12 +2613,12 @@ without having to sacrifice playability by running `make`. ## [2001/ollinger](2001/ollinger/ollinger.c) ([README.md](2001/ollinger/README.md)) -Cody fixed to not crash if not enough args, exiting 1 instead. +[Cody](#cody) fixed to not crash if not enough args, exiting 1 instead. ## [2001/schweikh](2001/schweikh/schweikh.c) ([README.md](2001/schweikh/README.md])) -Cody fixed this to not crash if not enough args as this was not documented by +[Cody](#cody) fixed this to not crash if not enough args as this was not documented by the author. The other problems are documented so were not fixed. See README.md for details. @@ -2622,7 +2627,7 @@ Cody also added the [try.sh](2001/schweikh/try.sh) script. ## [2001/westley](2001/westley/westley.c) ([README.md](2001/westley/README.md])) -Cody added the script [try.sh](try.sh) to automate a heap of commands +[Cody](#cody) added the script [try.sh](try.sh) to automate a heap of commands that we, the IOCCC judges, suggested, as well as some additional ones that he thought would be fun. He also provided the sort and punch card versions, described in the README.md, based on the author's remarks. @@ -2633,7 +2638,7 @@ described in the README.md, based on the author's remarks. ## [2004/arachnid](2004/arachnid/arachnid.c) ([README.md](2004/arachnid/README.md])) -Cody added an [alternate version](2004/arachnid/README.md#alternate-code) which +[Cody](#cody) added an [alternate version](2004/arachnid/README.md#alternate-code) which allows those like himself used to `h`, `j`, `k` and `l` movement keys to not get lost. Non rogue players, vi users and Dvorak typists are invited to get lost (or use the original version)! :-) @@ -2641,7 +2646,7 @@ use the original version)! :-) ## [2004/burley](2004/burley/burley.c) ([README.md](2004/burley/README.md])) -Cody fixed this to compile with clang and also fixed it to work. +[Cody](#cody) fixed this to compile with clang and also fixed it to work. For clang the problem was that `main()` had one arg, a `char *` and this is not allowed in any version of clang. In some versions it is allowed if the arg is an @@ -2670,7 +2675,7 @@ this. ## [2004/gavare](2004/gavare/gavare.c) ([README.md](2004/gavare/README.md])) -Cody added three different [alternate +[Cody](#cody) added three different [alternate versions](2004/gavare/README.md#alternate-code): - [gavare.alt.c](2004/gavare/gavare.alt.c) allows you to change the image size @@ -2685,7 +2690,7 @@ entry](https://gavare.se/ioccc/ioccc_gavare.c.html). ## [2004/gavin](2004/gavin/gavin.c) ([README.md](2004/gavin/README.md])) -Yusuke provided the `kernel` and `fs.tar` files which can be used if you cannot +[Yusuke](#yusuke) provided the `kernel` and `fs.tar` files which can be used if you cannot normally use this entry. Instead of generating the files just use the files provided, found under the [img/](2004/gavin/img/) directory. Note that the `img/fs.tar` extracts into `fs/` so you will have to fix the tarball; this is @@ -2699,7 +2704,7 @@ defined as `1`, not `0`. ## [2004/jdalbec](2004/jdalbec/jdalbec.c) ([README.md](2004/jdalbec/README.md)) -Cody fixed this to compile with gcc (it worked with clang). The problem was the +[Cody](#cody) fixed this to compile with gcc (it worked with clang). The problem was the cpp being unable to parse the generated code (see the README.md for details) and this ended up with a number of errors like: @@ -2734,7 +2739,7 @@ Finally Cody added [try.sh](2004/jdalbec/try.sh) and ## [2004/kopczynski](2004/kopczynski/kopczynski.c) ([README.md](2004/kopczynski/README.md])) -Cody reported that this entry cannot be optimised by the compiler as otherwise +[Cody](#cody) reported that this entry cannot be optimised by the compiler as otherwise it will not work. Cody, out of an abundance of caution for clang, added a second arg to `main()` @@ -2750,12 +2755,12 @@ get it to work, that being `kopczynski-10-rev`. ## [2004/newbern](2004/newbern/newbern.c) ([README.md](2004/newbern/README.md])) -Cody and Landon individually fixed this to work with clang. +[Cody](#cody) and Landon individually fixed this to work with clang. ## [2004/schnitzi](2004/schnitzi/schnitzi.c) ([README.md](2004/schnitzi/README.md])) -Cody made this use `fgets(3)`. +[Cody](#cody) made this use `fgets(3)`. He also changed the time factor in the data files as the animations went too fast in modern systems, especially the scrolling text of @@ -2764,12 +2769,12 @@ fast in modern systems, especially the scrolling text of ## [2004/sds](2004/sds/sds.c) ([README.md](2004/sds/README.md)) -Cody added the [try.sh](2004/sds/try.sh) script. +[Cody](#cody) added the [try.sh](2004/sds/try.sh) script. ## [2004/vik2](2004/vik2/vik2.c) ([README.md](2004/vik2/README.md)) -Cody fixed this to compile in Linux. Although it compiled cleanly in macOS (and +[Cody](#cody) fixed this to compile in Linux. Although it compiled cleanly in macOS (and BSD?) the code failed to compile at all in Linux due to: ```c @@ -2833,7 +2838,7 @@ just to make it a bit easier to compile. ## [2005/aidan](2005/aidan/aidan.c) ([README.md](2005/aidan/README.md])) -Cody fixed the test script, described by the author in their remarks, to refer +[Cody](#cody) fixed the test script, described by the author in their remarks, to refer to the proper compiled program (it's hardcoded). This had never been done and it broke the script. @@ -2851,7 +2856,7 @@ suite. ## [2005/anon](2005/anon/anon.c) ([README.md](2005/anon/README.md])) -Cody fixed a problem where in some systems (like macOS) the `stty sane` would +[Cody](#cody) fixed a problem where in some systems (like macOS) the `stty sane` would not work and end up causing a bus error. Instead of `stty sane` it uses `stty echo` which is what it was trying to accomplish. @@ -2865,7 +2870,7 @@ movements. ## [2005/boutines](2005/boutines/boutines.c) ([README.md](2005/boutines/README.md])) -Cody added the [input.txt](2005/boutines/input.txt) data file based on suggested +[Cody](#cody) added the [input.txt](2005/boutines/input.txt) data file based on suggested input from the author, adapting it to a command to try out. @@ -2880,7 +2885,7 @@ but 32-bit (as in `-m32`) was used it would not work (at least in 64-bit systems?). The optimising cannot be used still but it now works with both 32-bit and 64-bit. The solution has to do with the size difference between `int` and `long` so that the `long*E` is now `int*E`. This solves a specific problem for -linux (32-bit, 64-bit) and macOS (arm64). +Linux (32-bit, 64-bit) and macOS (arm64). To get the self-test feature to work it was required to remove from the code: @@ -2939,19 +2944,19 @@ error; otherwise it is success. It uses [test.sh](2005/giljade/test.sh). ## [2005/jetro](2005/jetro/jetro.c) ([README.md](2005/jetro/README.md)) -Cody added explicit linking of libm (`-lm`) for systems like linux that seem to +[Cody](#cody) added explicit linking of libm (`-lm`) for systems like Linux that seem to not do it implicitly (like macOS does). ## [2005/klausler](2005/klausler/klausler.c) ([README.md](2005/klausler/README.md)) -Cody added the [try.sh](2005/klausler/try.sh) script. +[Cody](#cody) added the [try.sh](2005/klausler/try.sh) script. ## [2005/mikeash](2005/mikeash/mikeash.c) ([README.md](2005/mikeash/README.md)) -Cody fixed this to work in linux. The problem was an unknown escape sequence, +[Cody](#cody) fixed this to work in Linux. The problem was an unknown escape sequence, `\N`, which caused a funny compiler error: ```c @@ -2983,7 +2988,7 @@ Cody also added the [try.sh](2005/mikeash/try.sh) script. ## [2005/mynx](2005/mynx/mynx.c) ([README.md](2005/mynx/README.md])) -Cody fixed this so that the [configure](source/configure) script (which is not +[Cody](#cody) fixed this so that the [configure](source/configure) script (which is not needed but part of the entry) would work with compilers that have by default `-Werror` like clang in macOS. @@ -2995,7 +3000,7 @@ wants to add the necessary code. ## [2005/persano](2005/persano/persano.c) ([README.md](2005/persano/README.md])) -Cody added the (untested) [alternate +[Cody](#cody) added the (untested) [alternate code](2005/persano/README.md#alternate-code) which should work for Windows as it sets binary mode on `stdout`. It is untested as Cody has no Windows system to test it on. @@ -3003,7 +3008,7 @@ test it on. ## [2005/sykes](2005/sykes/sykes.c) ([README.md](2005/sykes/README.md])) -Cody added the saved (with the `SAVE` command) BASIC program `PET` which was: +[Cody](#cody) added the saved (with the `SAVE` command) BASIC program `PET` which was: ```basic 10 PRINT "2005'S IOCCC BEST EMULATOR" @@ -3042,14 +3047,14 @@ interrupt is set to in order to exit the program. ## [2005/timwi](2005/timwi/timwi.c) ([README.md](2005/timwi/README.md])) -Cody added [try.sh](2005/timwi/try.sh). It only has one command as he doesn't +[Cody](#cody) added [try.sh](2005/timwi/try.sh). It only has one command as he doesn't want to knacker his brain any more than it might or might not already be :-) and he doesn't want to damage anyone else's brain either. :-) ## [2005/toledo](2005/toledo/toledo.c) ([README.md](2005/toledo/README.md)) -Cody fixed this to compile with some versions of clang which have an additional +[Cody](#cody) fixed this to compile with some versions of clang which have an additional defect where `main()` can only have 0, 2 or 3 args (it was 4). It now calls another function that takes 4 args and which is what used to be `main()`. @@ -3058,7 +3063,7 @@ The alternate versions were also fixed. ## [2005/vince](2005/vince/vince.c) ([README.md](2005/vince/README.md)) -Cody fixed this in the case that the program is compiled or linked/copies to +[Cody](#cody) fixed this in the case that the program is compiled or linked/copies to another file name: the code constructed the source code file name in a clever and more obscure way by copying to the buffer `*argv` and then using `strcat(3)` to concatenate to it `.c`. But this assumes that the executable is the same name @@ -3066,8 +3071,7 @@ as the source file which isn't always be true. The author even stated: 'as long as the source is in the same directory as the executable it should be able to find it' but the source code file name is not always the same as the executable with the appropriate extension so this might be called a bug fix as well though -if one runs it from another directory, specifying the directory, it'll not catch -it. +if one runs it from another directory, specifying the directory, it'll not catch it. # 2006 @@ -3075,7 +3079,7 @@ it. ## [2006/birken](2006/birken/birken.c) ([README.md](2006/birken/README.md])) -Cody fixed a segfault in macOS with this entry. The problem was a missing `+1` +[Cody](#cody) fixed a segfault in macOS with this entry. The problem was a missing `+1` for strlen() with malloc(). This prevented it from working. Cody also added the [try.sh](2006/birken/try.sh) script. @@ -3083,13 +3087,13 @@ Cody also added the [try.sh](2006/birken/try.sh) script. ## [2006/borsanyi](2006/borsanyi/borsanyi.c) ([README.md](2006/borsanyi/README.md])) -Cody fixed the Makefile under some systems where the `lpthread` was not +[Cody](#cody) fixed the Makefile under some systems where the `lpthread` was not implicitly linked in. ## [2006/hamre](2006/hamre/hamre.c) ([README.md](2006/hamre/README.md)) -Cody fixed this so that it will not crash without an arg after it was suggested +[Cody](#cody) fixed this so that it will not crash without an arg after it was suggested this should be fixed. Cody also added the [try.sh](2006/hamre/try.sh) script. @@ -3097,15 +3101,15 @@ Cody also added the [try.sh](2006/hamre/try.sh) script. ## [2006/monge](2006/monge/monge.c) ([README.md](2006/monge/README.md])) -Cody added the [alternate code](2006/monge/README.md#alternate-code) that lets +[Cody](#cody) added the [alternate code](2006/monge/README.md#alternate-code) that lets one resize the image and redefine the number of iterations. Cody also fixed the Makefile to use `sdl-config` (which is what the author stated too though that was noticed later), not `sdl2-config` as two functions -that are used were removed from SDL2, thus making it not link. Since SDL2 is -still available and since changing the code to use SDL2 is much more complicated -and also makes the entry less like the original it was simply made to link in -SDL1. +that are used were removed from [SDL2](https://www.libsdl.org), +thus making it not link. Since SDL2 is still available and since changing the +code to use SDL2 is much more complicated and also makes the entry less like +the original it was simply made to link in SDL1. Nevertheless this entry does require x86/x86_64 CPUS. This is a documented feature but one which we will accept fixes to. See [2006/monge in @@ -3114,13 +3118,13 @@ bugs.md](/bugs.md#2006-monge). ## [2006/night](2006/night/night.c) ([README.md](2006/night/README.md])) -As Cody is a lost :-) `vim` user he took the author's remarks to add support +As [Cody](#cody) is a lost :-) `vim` user he took the author's remarks to add support back for arrow keys in the [alternate version](2006/night/night.alt.c). ## [2006/sloane](2006/sloane/sloane.c) ([README.md](2006/sloane/README.md])) -Cody fixed this entry to work with clang which has a defect with the args to +[Cody](#cody) fixed this entry to work with clang which has a defect with the args to `main()`: it requires specific types: `int` and `char **` for the first and latter args. @@ -3148,13 +3152,13 @@ program in some systems he also added `-include ...` to the Makefile as well. ## [2006/stewart](2006/stewart/stewart.c) ([README.md](2006/stewart/README.md])) -Cody fixed it so that if the file cannot be opened it exits rather than trying +[Cody](#cody) fixed it so that if the file cannot be opened it exits rather than trying to read from the file. ## [2006/sykes1](2006/sykes1/sykes1.c) ([README.md](2006/sykes1/README.md])) -Cody provided the [alt code](2006/sykes1/README.md#alternate-code) based on the +[Cody](#cody) provided the [alt code](2006/sykes1/README.md#alternate-code) based on the author's remarks and the [try.sh](2006/sykes1/try.sh) script. Cody also provided the [bedlam-cubes.pdf](2006/sykes1/bedlam-cubes.pdf) file, @@ -3165,7 +3169,7 @@ it to the repo as well. ## [2006/sykes2](2006/sykes2/sykes2.c) ([README.md](2006/sykes2/README.md])) -Cody, out of an abundance of caution for `clang`'s defects, made `main()` have +[Cody](#cody), out of an abundance of caution for `clang`'s defects, made `main()` have to args instead of 1 as some versions report that `main()` must have 0, 2 or 3 args, even though at least one of those versions allows 1 arg only. @@ -3175,15 +3179,15 @@ entry to show the clock update in real time. ## [2006/toledo1](2006/toledo1/toledo1.c) ([README.md](2006/toledo1/README.md])) -Cody added the [try.sh](2006/toledo1/try.sh) script. +[Cody](#cody) added the [try.sh](2006/toledo1/try.sh) script. ## [2006/toledo2](2006/toledo2/toledo2.c) ([README.md](2006/toledo2/README.md])) -Cody fixed a segfault in this program which was making it fail to work under -macOS - it did not seem to be a problem under linux, at least not fedora. The +[Cody](#cody) fixed a segfault in this program which was making it fail to work under +macOS - it did not seem to be a problem under Linux, at least not fedora. The problem was wrong variable types - implicit `int`s instead of `FILE *`s. It now -works with both macOS and linux. +works with both macOS and Linux. Cody also added the (untested) alt code that is based on the author's remarks to port this to systems that have the non-standard `kbhit()` and `getch()` (not the @@ -3192,11 +3196,11 @@ one from curses) which is typically (always?) in `conio.h`. ## [2006/toledo3](2006/toledo3/toledo3.c) ([README.md](2006/toledo3/README.md])) -Cody fixed a crash and a display problem in this entry so that it now works in +[Cody](#cody) fixed a crash and a display problem in this entry so that it now works in modern (64-bit) systems. The crash appears to only occur in macOS but the fix -lets it work in both linux and macOS. The problem was that it relied on 32-bits +lets it work in both Linux and macOS. The problem was that it relied on 32-bits so some `int`s were changed to `long`s. The display problem might or might not -have been a problem in linux with the old `int`s but this is no longer known. +have been a problem in Linux with the old `int`s but this is no longer known. Cody also added the code that _should_ work for Windows, [toledo3.alt.c](2006/toledo3/toledo3.alt.c), based on the author's remarks. @@ -3208,17 +3212,17 @@ We're not able to test this. ## [2011/akari](2011/akari/akari.c) ([README.md](2011/akari/README.md])) -Cody added the [try.sh](2011/akari/try.sh) script. +[Cody](#cody) added the [try.sh](2011/akari/try.sh) script. ## [2011/blakely](2011/blakely/blakely.c) ([README.md](2011/blakely/README.md])) -Cody added the [try.sh](2011/blakely/try.sh) script. +[Cody](#cody) added the [try.sh](2011/blakely/try.sh) script. ## [2011/borsanyi](2011/borsanyi/borsanyi.c) ([README.md](2011/borsanyi/README.md])) -Cody, out of an abundance of caution, added a second arg to `main()` as some +[Cody](#cody), out of an abundance of caution, added a second arg to `main()` as some versions of clang complain about not only the type of each arg to `main()` but the number of args as well. @@ -3227,26 +3231,26 @@ Cody also added the [try.sh](2011/borsanyi/try.sh) script. ## [2011/dlowe](2011/dlowe/dlowe.c) ([README.md](2011/dlowe/README.md])) -Cody added the [try.sh](2011/dlowe/try.sh) script. +[Cody](#cody) added the [try.sh](2011/dlowe/try.sh) script. ## [2011/eastman](2011/eastman/eastman.c) ([README.md](2011/eastman/README.md])) -Cody added the video file [boing-ball.mp4](2011/eastman) which is the demo the +[Cody](#cody) added the video file [boing-ball.mp4](2011/eastman) which is the demo the author referred to. ## [2011/fredriksson](2011/fredriksson/fredriksson.c) ([README.md](2011/fredriksson/README.md])) -Cody added the [try.sh](2011/fredriksson/try.sh) script. +[Cody](#cody) added the [try.sh](2011/fredriksson/try.sh) script. ## [2011/goren](2011/goren/goren.c) ([README.md](2011/goren/README.md])) -Cody fixed this for macOS. Before the fix it segfaulted. It worked fine under -linux. After fixing it it was noticed that the author stated it does not work -for 64-bit so it was then tested as a 32-bit binary (linux) and 64-bit binary -(linux, macOS) and both work. It was fixed by changing some `int`s to `long`s +[Cody](#cody) fixed this for macOS. Before the fix it segfaulted. It worked fine under +Linux. After fixing it it was noticed that the author stated it does not work +for 64-bit so it was then tested as a 32-bit binary (Linux) and 64-bit binary +(Linux, macOS) and both work. It was fixed by changing some `int`s to `long`s and now it does work with 64-bit systems as well as 32-bit systems. Cody also added the [try.sh](2011/goren/try.sh) script. @@ -3256,7 +3260,7 @@ Cody added the following words of wisdom: '"this" is not a pipe but "!" is'. ## [2011/hamaji](2011/hamaji/hamaji.c) ([README.md](2011/hamaji/README.md])) -Cody added the [try.sh](2011/hamaji/try.sh) script and the `.nono` files +[Cody](#cody) added the [try.sh](2011/hamaji/try.sh) script and the `.nono` files [conway-game-of-life.nono](2011/hamaji/conway-game-of-life.nono), [multi-solutions.nono](2011/hamaji/multi-solutions.nono), [no-solution.nono](2011/hamaji/no-solution.nono), @@ -3268,12 +3272,12 @@ and the others were from the authors' remarks. ## [2011/hou](2011/hou/hou.c) ([README.md](2011/hou/README.md])) -Cody added the [try.sh](2011/hou/try.sh) script. +[Cody](#cody) added the [try.sh](2011/hou/try.sh) script. ## [2011/konno](2011/konno/konno.c) ([README.md](2011/konno/README.md])) -Cody fixed the program to not crash if no arg was specified as this was not a +[Cody](#cody) fixed the program to not crash if no arg was specified as this was not a documented feature. Cody also added the [try.sh](2011/konno/try.sh) script. @@ -3281,7 +3285,7 @@ Cody also added the [try.sh](2011/konno/try.sh) script. ## [2011/richards](2011/richards/richards.c) ([README.md](2011/richards/README.md])) -Cody fixed a minor problem that showed up in both linux and macOS. He notes +[Cody](#cody) fixed a minor problem that showed up in both Linux and macOS. He notes however that as of this time this entry does not work properly with macOS at least with the silicon chip (Intel has not been tested) and it is quite possibly an inherent problem in macOS to do with executing code in in memory/JIT and in @@ -3294,7 +3298,7 @@ not be worth. ## [2011/toledo](2011/toledo/toledo.c) ([README.md](2011/toledo/README.md])) -Cody added two [alternate versions](2011/toledo/README.md#alternate-code): one that +[Cody](#cody) added two [alternate versions](2011/toledo/README.md#alternate-code): one that lets one reconfigure the controls and also the size of the game and another version that should work in Windows, based on the author's remarks and support file, `layer.c`. @@ -3302,14 +3306,14 @@ file, `layer.c`. ## [2011/vik](2011/vik/vik.c) ([README.md](2011/vik/README.md])) -Cody added an [alternate version](2011/vik/README.md#alternate-code) for Windows +[Cody](#cody) added an [alternate version](2011/vik/README.md#alternate-code) for Windows based on the author's comments (along with looking up the function for the right header files). To build try the alt rule of the Makefile. ## [2011/zucker](2011/zucker/zucker.c) ([README.md](2011/zucker/README.md])) -Cody added [alt code](2011/zucker/README.md#alternate-code) that should work on +[Cody](#cody) added [alt code](2011/zucker/README.md#alternate-code) that should work on Windows, based on the author's remarks that if the system distinguishes binary and text then `stdout` needs to be set to binary mode. @@ -3323,40 +3327,40 @@ dies. ## [2012/blakely](2012/blakely/blakely.c) ([README.md](2012/blakely/README.md)) -Cody added explicit linking of libm (`-lm`) as not all systems do this -implicitly (linux doesn't seem to but macOS does). +[Cody](#cody) added explicit linking of libm (`-lm`) as not all systems do this +implicitly (Linux doesn't seem to but macOS does). ## [2012/deckmyn](2012/deckmyn/deckmyn.c) ([README.md](2012/deckmyn/README.md])) -Cody added the [try.sh](2012/deckmyn/try.sh) script. +[Cody](#cody) added the [try.sh](2012/deckmyn/try.sh) script. ## [2012/endoh1](2012/endoh1/endoh1.c) ([README.md](2012/endoh1/README.md)) -Cody added explicit linking of libm (`-lm`) as not all systems do this -implicitly (linux doesn't seem to but macOS does). +[Cody](#cody) added explicit linking of libm (`-lm`) as not all systems do this +implicitly (Linux doesn't seem to but macOS does). ## [2012/endoh2](2012/endoh2/endoh2.c) ([README.md](2012/endoh2/README.md)) -Cody fixed a typo in the ruby script +[Cody](#cody) fixed a typo in the ruby script [find-font-table.rb](2012/endoh2/find-font-table.rb). ## [2012/grothe](2012/grothe/grothe.c) ([README.md](2012/grothe/README.md)) -Cody restored the original code from the archive. +[Cody](#cody) restored the original code from the archive. ## [2012/hamano](2012/hamano/hamano.c) ([README.md](2012/hamano/README.md])) -Cody added the [try.sh](2012/hamano/try.sh) script. +[Cody](#cody) added the [try.sh](2012/hamano/try.sh) script. ## [2012/hou](2012/hou/hou.c) ([README.md](2012/hou/README.md])) -Cody added the [try.sh](2012/hou/try.sh) script and restored the original [hint +[Cody](#cody) added the [try.sh](2012/hou/try.sh) script and restored the original [hint markdown file](2012/hou/hint.md) as the changes made when converting to a GitHub README.md made the generated html not look correct; it did not have a title, a stylesheet etc. due to the fact that there is no `#` header (which specified @@ -3365,7 +3369,7 @@ title and stylesheet) and other formatting changes. ## [2012/kang](2012/kang/kang.c) ([README.md](2012/kang/README.md])) -Cody added alt code that fixes a problem where in German 'v' sounds like 'f' +[Cody](#cody) added alt code that fixes a problem where in German 'v' sounds like 'f' which the program has as 'f': with the original version it would translate 'fier' to '4' when the word is 'vier'. But see below. @@ -3393,12 +3397,12 @@ show different languages and numbers. ## [2012/konno](2012/konno/konno.c) ([README.md](2012/konno/README.md])) -Cody added the [try.sh](2012/konno/try.sh) script. +[Cody](#cody) added the [try.sh](2012/konno/try.sh) script. ## [2012/tromp](2012/tromp/tromp.c) ([README.md](2012/tromp/README.md)) -Cody added the [try.sh](2012/tromp/try.sh) script. +[Cody](#cody) added the [try.sh](2012/tromp/try.sh) script. ## [2012/vik](2012/vik/vik.c) ([README.md](2012/vik/README.md])) @@ -3415,7 +3419,7 @@ Cody also added the [try.sh](2012/vik/try.sh) script. ## [2012/zeitak](2012/zeitak/zeitak.c) ([README.md](2012/zeitak/README.md])) -Cody added the `make test` rule and the [test.sh](2012/zeitak/test.sh) along +[Cody](#cody) added the `make test` rule and the [test.sh](2012/zeitak/test.sh) along with a number of files that will be correctly be flagged as incorrect (including a text file to show that it's not that it parses C but rather just matching pairs though that should be obvious) and also some that are correct including @@ -3427,7 +3431,7 @@ pairs though that should be obvious) and also some that are correct including ## [2013/birken](2013/birken/birken.c) ([README.md](2013/birken/README.md])) -Cody changed the `return 0;` at the end of the program to be `return +[Cody](#cody) changed the `return 0;` at the end of the program to be `return system("reset");` (via redefining `exit(3)` so that the column ending would be the same) so that as long as it runs to completion the terminal will be sane and the cursor will be visible. Using `atexit(3)` will not work if the program is @@ -3444,11 +3448,11 @@ code`. ## [2013/cable3](2013/cable3/cable3.c) ([README.md](2013/cable3/README.md])) -Cody fixed this to compile with modern systems. The problems were that -`localtime()` is used differently and `time.h` being included (with SDL2 in -macOS - but see below) there was a conflicting function type. This appeared to -be a problem with macOS and only when SDL2 was included (but which as noted next -it cannot be). +[Cody](#cody) fixed this to compile with modern systems. The problems were that +`localtime()` is used differently and `time.h` being included (with +[SDL2](https://www.libsdl.org) in macOS - but see below) there was a conflicting +function type. This appeared to be a problem with macOS and only when SDL2 was +included (but which as noted next it cannot be). The other problem is that this entry uses SDL functions that were removed from SDL2 so the Makefile has to use `sdl-config` and not `sdl2-config`. @@ -3477,7 +3481,7 @@ entry](https://github.com/adriancable/8086tiny/tree/master). ## [2013/dlowe](2013/dlowe/dlowe.c) ([README.md](2013/dlowe/README.md)) -Cody added the source code that we suggested one should compile and run with +[Cody](#cody) added the source code that we suggested one should compile and run with different compilers as [fun.c](2013/dlowe/fun.c). He modified the Makefile so that running `make all` will compile it, saving you the effort. @@ -3498,7 +3502,7 @@ program. ## [2013/endoh2](2013/endoh2/endoh2.c) ([README.md](2013/endoh2/README.md)) -Cody fixed the Makefile `check` rule so that it `checks` :-) that both +[Cody](#cody) fixed the Makefile `check` rule so that it `checks` :-) that both [Ruby](https://www.ruby-lang.org) and [ImageMagick](https://imagemagick.org) are installed before trying to run the ruby script. To be more technically correct: it checks that the `convert` tool of ImageMagick is available (via `type -P`) @@ -3520,7 +3524,7 @@ The entry can still be enjoyed if you do not have these tools, however. ## [2013/endoh4](2013/endoh4/endoh4.c) ([README.md](2013/endoh4/README.md)) -Cody added the [run.sh](2013/endoh4/run.sh) script which temporarily turns off +[Cody](#cody) added the [run.sh](2013/endoh4/run.sh) script which temporarily turns off the cursor as suggested by the author, with the addition that if no file is specified it will feed the source code [endoh4.c](2013/endoh4/endoh4.c) to the program rather than the file specified. It does not try and detect if the file @@ -3529,7 +3533,7 @@ exists or can be read as that will be handled by the shell/program. ## [2013/endoh4](2013/endoh4/endoh4.c) ([README.md](2013/endoh4/README.md)) -Cody added the [run.sh](2013/endoh4/run.sh) script which temporarily turns off +[Cody](#cody) added the [run.sh](2013/endoh4/run.sh) script which temporarily turns off the cursor as suggested by the author, with the addition that if no file is specified it will feed the source code [endoh4.c](2013/endoh4/endoh4.c) to the program rather than the file specified. It does not try and detect if the file @@ -3538,7 +3542,7 @@ exists or can be read as that will be handled by the shell/program. ## [2013/hou](2013/hou/hou.c) ([README.md](2013/hou/README.md)) -Cody fixed the Makefile so that this would work properly. Before this the use of +[Cody](#cody) fixed the Makefile so that this would work properly. Before this the use of the program just did what the judges' remarks said as far as how it might violate rule 2: the program is really just a decompressor to generate the real source of the program. So the source of the entry has to be compiled and @@ -3561,7 +3565,7 @@ cc -std=gnu11 -Wall -Wextra -pedantic -Wno-sign-compare -Wno-strict-prototypes ``` The `LDFLAGS` were updated to have `-lm` as the author suggested it uses the -`math.h` library which not all systems link in by default (linux for instance +`math.h` library which not all systems link in by default (Linux for instance does not). Further, after the file 2013/hou/doc/example.markdown was moved to @@ -3571,15 +3575,15 @@ this broke `make` which Cody also fixed. ## [2013/misaka](2013/misaka/misaka.c) ([README.md)[2013/misaka/README.md)) -As there are a lot of commands to try, Cody added the +As there are a lot of commands to try, [Cody](#cody) added the [try.sh](2013/misaka/try.sh) script to do this, sleeping for approximately 1 second between commands. ## [2013/morgan1](2013/morgan1/morgan1.c) ([README.md](2013/morgan1/README.md)) -Cody added explicit linking of libm (`-lm`) as not all systems do this -implicitly (linux doesn't seem to but macOS does). +[Cody](#cody) added explicit linking of libm (`-lm`) as not all systems do this +implicitly (Linux doesn't seem to but macOS does). # 2014 @@ -3587,7 +3591,7 @@ implicitly (linux doesn't seem to but macOS does). ## [2014/deak](2014/deak/prog.c) ([README.md](2014/deak/README.md)) -Cody fixed the code that the author provided which would be what the program +[Cody](#cody) fixed the code that the author provided which would be what the program would look like if, as the author put it: > The usage of recognizable elements from the C programming language in the @@ -3602,7 +3606,7 @@ the difference to really appreciate the obfuscation. ## [2014/endoh1](2014/endoh1/prog.c) ([README.md](2014/endoh1/README.md])) -Cody added the [rake.sh](2014/endoh1/rake.sh) script and `make rake` rule that +[Cody](#cody) added the [rake.sh](2014/endoh1/rake.sh) script and `make rake` rule that runs the script. This script will check that `rake` is installed and if it is not it will report this and then check that `gem` is installed. It checks that `gem` is installed in this case because `gem` is how you install `rake`. If @@ -3618,20 +3622,20 @@ it is a file with spoilers. ## [2014/maffiodo1](2014/maffiodo1/prog.c) ([README.md](2014/maffiodo1/README.md])) -Cody fixed the build for this entry: it does not require SDL2 but SDL1 so there -were linking errors. +[Cody](#cody) fixed the build for this entry: it does not require +[SDL2[(https://www.libsdl.org) but SDL1 so there were linking errors. ## [2014/skeggs](2014/skeggs/prog.c) ([README.md](2014/skeggs/README.md)) -Cody fixed the Makefile to compile this entry in modern systems. The problem was +[Cody](#cody) fixed the Makefile to compile this entry in modern systems. The problem was that the `CDEFINE` variable in the Makefile was missing `'`s: the `#define CC` is an actual string that is, in the Makefile, is `"${CC} -fPIC"`, which translates to whatever the compiler is followed by a space followed by `-fPIC` but without the `'`s it was incomplete and so would not compile. Cody didn't have a chance to really look at the compiler error. -Yusuke suggested that one should use `-ldl` in the Makefile. This was not +[Yusuke](#yusuke) suggested that one should use `-ldl` in the Makefile. This was not originally done because it seemed to work but since it uses `dlsym()` it was added later to make it more portable. @@ -3642,7 +3646,7 @@ clean`) removes those files and so that they are ignored by `.gitignore`. ## [2014/vik](2014/vik/prog.c) ([README.md](2014/vik/README.md)) -Cody added an alternate version that is based on the author's remarks that will +[Cody](#cody) added an alternate version that is based on the author's remarks that will theoretically work for Microsoft Windows compilers (if anything works in Windows :-) ). We have no way of testing this and if anything has changed since 2014 that would break it we do not know. @@ -3653,7 +3657,7 @@ that would break it we do not know. ## [2015/endoh3](2015/endoh3/prog.c) ([README.md](2015/endoh3/README.md])) -Cody fixed this to compile with linux which was having a problem with duplicate +[Cody](#cody) fixed this to compile with Linux which was having a problem with duplicate symbols of `main()`. The fix is through the compiler option `-fcommon` which will let it compile like it does with macOS. @@ -3664,17 +3668,17 @@ simply typing `make back_to` or `make mullender`. ## [2015/hou](2015/hou/prog.c) ([README.md](2015/hou/README.md)) -Cody added explicit linking of libm (`-lm`) for systems that do not do this -(linux doesn't seem to but macOS does). +[Cody](#cody) added explicit linking of libm (`-lm`) for systems that do not do this +(Linux doesn't seem to but macOS does). ## [2015/yang](2015/yang/prog.c) ([README.md](2015/yang/README.md])) -Cody fixed an unfortunate typo in the Makefile that was preventing some of the +[Cody](#cody) fixed an unfortunate typo in the Makefile that was preventing some of the files from compiling properly, trying instead to compile already compiled code. He also added explicit linking of libm (`-lm`) for systems that do not do this -(linux seems to not but macOS does). +(Linux seems to not but macOS does). # 2018 @@ -3682,13 +3686,13 @@ He also added explicit linking of libm (`-lm`) for systems that do not do this ## [2018/bellard](2018/bellard/prog.c) ([README.md](2018/bellard/README.md)) -Cody added explicit linking of libm (`-lm`) for systems that do not do this -(linux doesn't seem to but macOS does). +[Cody](#cody) added explicit linking of libm (`-lm`) for systems that do not do this +(Linux doesn't seem to but macOS does). ## [2018/ferguson](2018/ferguson/prog.c) ([README.md](2018/ferguson/README.md)) -Cody, with irony well intended :-), fixed the [test.sh +[Cody](#cody), with irony well intended :-), fixed the [test.sh script](2018/ferguson/test.sh) for portability, shellcheck, making it executable and other things, fixed dead links in the man page, updated the test-strings.txt file and other things as well. @@ -3700,8 +3704,8 @@ that's probably true: let's just say that for the IOCCC I'm (Cody) a weasel! :-) ## [2018/hou](2018/hou/prog.c) ([README.md](2018/hou/README.md)) -Cody added explicit linking of libm (`-lm`) for systems that do not do this -(linux doesn't seem to but macOS does). +[Cody](#cody) added explicit linking of libm (`-lm`) for systems that do not do this +(Linux doesn't seem to but macOS does). # 2019 @@ -3709,21 +3713,21 @@ Cody added explicit linking of libm (`-lm`) for systems that do not do this ## [2019/burton](2019/burton/prog.c) ([README.md](2019/burton/README.md])) -Cody fixed the Makefile which had a bad character, a '%' instead of a '$' which +[Cody](#cody) fixed the Makefile which had a bad character, a '%' instead of a '$' which caused a rule to fail. ## [2019/ciura](2019/ciura/prog.c) ([README.md](2019/ciura/README.md])) -Cody fixed invalid bytes error in `tr` in the scripts. He notes that at least on -his systems (macOS and fedora linux) the alternative languages do not work. +[Cody](#cody) fixed invalid bytes error in `tr` in the scripts. He notes that at least on +his systems (macOS and fedora Linux) the alternative languages do not work. Perhaps that is the wrong locale or it's unable to come up with perfect pangrams but one will not get errors now (it did not work before the fixes either). ## [2019/diels-grabsch1](2019/diels-grabsch1/prog.c) ([README.md](2019/diels-grabsch1/README.md])) -Cody made the author's statement that the entry compiles cleanly true by fixing +[Cody](#cody) made the author's statement that the entry compiles cleanly true by fixing `warning: a function declaration without a prototype is deprecated in all versions of C ` (in main()). Not strictly necessary but if he's making fixes he might as well. @@ -3731,7 +3735,7 @@ might as well. ## [2019/diels-grabsch2](2019/diels-grabsch2/prog.c) ([README.md](2019/diels-grabsch2/README.md])) -Cody made the author's statement that the entry compiles cleanly true by fixing +[Cody](#cody) made the author's statement that the entry compiles cleanly true by fixing `warning: a function declaration without a prototype is deprecated in all versions of C` (in main()). Not strictly necessary but if he's making fixes he might as well. @@ -3739,30 +3743,30 @@ might as well. ## [2019/dogon](2019/dogon/prog.c) ([README.md](2019/dogon/README.md)) -Cody added explicit linking of libm (`-lm`) for systems that do not do this -(linux does not seem to but macOS does). +[Cody](#cody) added explicit linking of libm (`-lm`) for systems that do not do this +(Linux does not seem to but macOS does). -He also fixed the Makefile so that it compiles with clang in linux. +He also fixed the Makefile so that it compiles with clang in Linux. ## [2019/endoh](2019/endoh/prog.c) ([README.md](2019/endoh/README.md])) As this is a backtrace quine having the optimiser enabled is not a good idea so -Cody disabled it. For this same reason he also added the `-g` flag to the +[Cody](#cody) disabled it. For this same reason he also added the `-g` flag to the compilation as debugging symbols might just be useful for an entry that's supposed to segfault :-) ## [2019/poikola](2019/poikola/prog.c) ([README.md[(2019/poikola/README.md)) -Cody added a missing rule to the Makefile. +[Cody](#cody) added a missing rule to the Makefile. ## [2019/karns](2019/karns/prog.c) ([README.md](2019/karns/README.md])) -Cody reported that with `-O` level > 0 this program segfaults (sometimes?). He's +[Cody](#cody) reported that with `-O` level > 0 this program segfaults (sometimes?). He's not sure why as it worked fine before on the same systems tested but `-O0` -appears to fix the problem in both macOS and linux. Perhaps this is the problem +appears to fix the problem in both macOS and Linux. Perhaps this is the problem that the author reported where it sometimes segfaults but Cody did not try debugging it since it works with `-O0`. @@ -3775,13 +3779,13 @@ bit more easily. ## [2020/endoh2](2020/endoh2/prog.c) ([README.md](2020/endoh2/README.md)) -Cody copied the files from the spoiler.zip file that was password protected with +[Cody](#cody) copied the files from the spoiler.zip file that was password protected with a password that was no longer known from his preview of 2020. ## [2020/endoh3](2020/endoh3/prog.c) ([README.md](2020/endoh3/README.md)) -Cody fixed the script [run_clock.sh](2020/endoh3/run_clock.sh) which gave a +[Cody](#cody) fixed the script [run_clock.sh](2020/endoh3/run_clock.sh) which gave a funny error when running it: ```sh @@ -3803,7 +3807,7 @@ quick. Cody also reported (during the preview period of 2020) for some systems (at some point?) like macOS the use of `make clock` would not work due possibly to a -timing issue so Yusuke changed it to compile the [clock.c](2020/endoh3/clock.c) +timing issue so [Yusuke](#yusuke) changed it to compile the [clock.c](2020/endoh3/clock.c) file directly (this might have been fixed in the Makefile later on but it doesn't hurt to keep it in and this way it isn't a problem in any system). How Cody remembers this minor detail more than three years ago is something that @@ -3814,7 +3818,7 @@ called unusual (and he argues, with pride, eccentric :-) ) :-) ## [2020/ferguson2](2020/ferguson1/prog.c) ([README.md](2020/ferguson1/README.md)) -Cody, with intentional irony here :-), fixed formatting, links and typos in +[Cody](#cody), with intentional irony here :-), fixed formatting, links and typos in various files. He improved the [termcaps.c test utility](2020/ferguson1/termcaps.c), bug fixed @@ -3833,7 +3837,7 @@ recommend you give it a go! :-) ## [2020/ferguson2](2020/ferguson2/prog.c) ([README.md](2020/ferguson2/README.md)) -Cody, with intentional irony here :-), fixed formatting, links and typos in +[Cody](#cody), with intentional irony here :-), fixed formatting, links and typos in various files. He also fixed some issues that occurred when files were renamed to `.md` from @@ -3846,7 +3850,7 @@ enciphered though it is :-) ## [2020/kurdyukov2](2020/kurdyukov2/prog.c) ([README.md](2020/kurdyukov2/README.md)) -Cody added `-L`/`-I` paths to the Makefile to let this compile more easily if +[Cody](#cody) added `-L`/`-I` paths to the Makefile to let this compile more easily if the user has installed the appropriate library with [MacPorts](https://www.macports.org) (with the default MacPorts prefix `/opt/local`). @@ -3854,7 +3858,7 @@ the user has installed the appropriate library with ## [2020/tsoj](2020/tsoj/prog.c) ([README.md](2020/tsoj/README.md)) -Cody added [alternate code](2020/tsoj/README.md#alternate-code) that will feel +[Cody](#cody) added [alternate code](2020/tsoj/README.md#alternate-code) that will feel more at home for vi users. One might still end up cursing (see the README.md file) but probably a lot less :-) @@ -3865,7 +3869,7 @@ file) but probably a lot less :-) ## Makefile improvements -Cody made a variety of changes in all Makefiles, sometimes to get an entry to +[Cody](#cody) made a variety of changes in all Makefiles, sometimes to get an entry to work, all noted below, but he also **improved them all** in at least one or two ways. @@ -3908,7 +3912,7 @@ tool](https://github.com/xexyl/sgit). ## Consistency improvements -Cody, being the IOCCC's resident corrections officer :-) (and a fine one at +[Cody](#cody), being the IOCCC's resident corrections officer :-) (and a fine one at that, we think :-) ), made many, many typ0 (... :-) ) fixes throughout the README.md files, scripts, other data files, Makefiles (see above) etc. @@ -3930,6 +3934,19 @@ There are a number of people who have contributed to several thousand changes, fixes and important improvements and one who has literally (or numerically :-) ) contributed thousands, that we wish to thank. + +### Authors + +A good number of the [past winners of the +IOCCC](https://www.ioccc.org/winners.html) tested, identified and helped correct +and/or improve the write-ups of fellow IOCCC winners for the year that they won. +The list of those past winners is too long to mention: nevertheless the [IOCCC +judges](https://www.ioccc.org/judges.html) **VERY MUCH APPRECIATE** those who +helped improve the presentation of their fellow IOCCC winners. + + +### Cody + We call out the extensive contributions of [Cody Boone Ferguson](https://www.ioccc.org/winners.html#Cody_Boone_Ferguson) who is responsible for most of the improvements and fixes including many **EXTREMELY @@ -3957,6 +3974,9 @@ typo/consistency fixes, improving **ALL _Makefiles_** and writing for your extensive efforts in helping improve the IOCCC presentation of past IOCCC winners and fixing almost all past entries for modern systems! + +### Yusuke + [Yusuke Endoh](https://www.ioccc.org/winners.html#Yusuke_Endoh) supplied a number of important bug fixes to a number of past IOCCC winners. Some of those fixes were **EXTREMELY TECHNICALLY CHALLENGING** such as @@ -3966,9 +3986,13 @@ fixes were **EXTREMELY TECHNICALLY CHALLENGING** such as [2001/ctk](/thanks-for-fixes.md#2001ctk-readmemd). **THANK YOU VERY MUCH** for your help! -A good number of the [past winners of the -IOCCC](https://www.ioccc.org/winners.html) tested, identified and helped correct -and/or improve the write-ups of fellow IOCCC winners for the year that they won. -The list of those past winners is too long to mention: nevertheless the [IOCCC -judges](https://www.ioccc.org/judges.html) **VERY MUCH APPRECIATE** those who -helped improve the presentation of their fellow IOCCC winners. + +## Did we neglect to credit you? + +If you submitted a fix to an entry for which you are not the author, +and your fix is accepted (in part or as a whole), we would be happy +to add you to this [honor roll list](#thank_you_honor_roll). + +If you believe we incorporated one of your fixes to an IOCCC winner (that you +are not the author of) for which we neglected to mention in this file, please +[contact the IOCCC](contact.html) so that we may correct the record.