diff --git a/thanks-for-fixes.md b/thanks-for-fixes.md index 3b203d426..def0f35cf 100644 --- a/thanks-for-fixes.md +++ b/thanks-for-fixes.md @@ -3,240 +3,7 @@ .. and thanks for all the fish. :-) -## Thank you honor roll - -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. - -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 -HARD bug fixes** like -[1988/phillipps](/thanks-for-fixes.md#1988phillipps-readmemd), -[1992/vern](/thanks-for-fixes.md#1992vern-readmemd), -[2001/anonymous](/thanks-for-fixes.md#2001anonymous-readmemd), -[2004/burley](/thanks-for-fixes.md#2004burley-readmemd) and -[2005/giljade](/thanks-for-fixes.md#2005giljade-readmemd), making entries like -[1985/sicherman](/thanks-for-fixes.md#1985sicherman-readmemd) and -[1986/wall](/thanks-for-fixes.md#1986wall-readmemd) not need `-traditional-cpp` -(all **EXTREMELY HARD**), fixing entries to work with clang (some being -**EXTREMELY HARD** like -[1991/dds](/thanks-for-fixes.md#1991dds-readmemd)) or as much as possible (like -[1989/westley](/thanks-for-fixes.md#1989westley-readmemd), a true masterpiece -that is **INCREDIBLY HARD, _MUCH, MUCH MORE SO_ than any other fix!**), porting -entries to macOS (some being **EXTREMELY HARD** like -[1998/schweikh1](/thanks-for-fixes.md#1998schweikh1-readmemd)), fixing code like -[2001/herrmann2](/thanks-for-fixes.md#2001herrmann2-readmemd) to work in both -32-bit/64-bit which *can be* **EXTREMELY HARD**, providing alternate code -where useful/necessary, fixing possible/removing dead links, -typo/consistency fixes, improving **ALL _Makefiles_** and writing -[sgit](https://github.com/xexyl/sgit) that we installed locally to easily run -`sed` on files in the repo to help build the website. **THANK YOU VERY MUCH** -for your extensive efforts in helping improve the IOCCC presentation of past -IOCCC winners and fixing almost all past entries for modern systems! - -[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 -[1989/robison](/thanks-for-fixes.md#1989robison-readmemd), -[1990/cmills](https://github.com/ioccc-src/temp-test-ioccc/blob/master/thanks-for-fixes.md#1990cmills-readmemd), -[1992/lush](/thanks-for-fixes.md#1992lush-readmemd) and -[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. - - -## Thank you list since 2021 Jan 01 - -To avoid having to change numerous "_README.md_" files to add thank you notes, -we centralize them below. - -The [IOCCC judges](https://www.ioccc.org/judges.html) wish to recognize the many -important contributions to the IOCCC presentation of past IOCCC winners. -We are pleased to note the many contributions, **made since 2021 Jan 01**, -on a winner by winner basis. - - -## Note about fixes and inconsistencies with the original code and remarks - -Invariably when an entry is fixed and it is not made an alt version (sometimes -it is worth an alt version and other times not - it all depends on what was -done) some inconsistencies will be introduced of the original code, the remarks -of the author(s) and the size restrictions of the contest for that year (and in -some cases it might end up being against other rules). - -See [FAQ 4.3 - Why do author remarks sometimes not match the source / why are -there other inconsistencies with the original entry?](/faq.md#faq4_3) for this -specifically and also [FAQ 4.2: What was changed in an IOCCC winner source -code?](/faq.mdfaq4_2). - - -## Notes about changing `gets()` to `fgets()` in some entries: - -Although the 'why' is discussed in the [FAQ 4.1: Why were some calls to the libc -function `gets(3)` changed to use `fgets(3)`?](/faq.md#faq4_1) we want to give -more details here as it pertains to the fixes and updates made in numerous -entries below (note that some of the information in that FAQ entry are below). - -The problem with `gets()` is that in some systems a warning can be interspersed -with the output which can be confusing, to say nothing of the annoyance of it -(which can be fixed via `2>/dev/null` - and this is done with some entries in -the to use/try sections - but which makes it more burdensome to run as there are -a lot of entries that use it still). - -A good example was [1990/tbr](/thanks-for-fixes.md#1990tbr-readmemd) where one -would see: - -``` -$ warning: this program uses gets(), which is unsafe. -# cursor here, what to do? -``` - -whereas without the warning it's much easier to see that it's a prompt: - -``` -$ -``` - -Another great example is: - -```sh -$ cd 1990/cmills -$ ./cmills -Shuffle... -warning: this program uses gets(), which is unsafe. -Total $1000. Wager? -``` - -In some entries this change is not possible, in one-liners it might make them -too long (though it's also been possible to do it in some cases) and in some -entries it's more complicated than others because of the annoying fact that for -'"compatibility" reasons' `fgets()` retains the newline and `gets()` does not. -As the v7 man page used to say: - -``` -BUGS - -The fgets(3) function retains the newline while gets(3) does not, all in the -name of backward compatibility. -``` - -Some entries like [1992/adrian](1992/adrian/README.md) were more complicated in -other ways due to the code generating other output and because of how it works -it would generate code that could not be compiled, simply because of spaces -being added; nevertheless Cody did make this fix along with a number of other -fixes in that entry. - -In any case some of the entries have been updated this way for the reasons -described above and in the [FAQ](/faq.md). - -Where possible `gets(3)` has been redefined to be `fgets(3)` with the -appropriate arg. This is not always possible but if often it is. - -See also [bugs.md](/bugs.md) for a further discussion on the matter. - - -## A note about bugs versus (mis)features: - -Over time, when working on making fixes for compilers, different platforms -and other such things, the definition of a feature versus a bug has changed, -sometimes even for just specific entries, and this has happened a number of -times as well, back and forth. - -The main definition of a feature that is most common is that if the judges or -the author (or authors) note that it crashes without the right number of args, -then this is, although technically a bug, considered a feature for the contest. -In general if something is documented then it is a feature and not a bug. - -A counterexample is [1990/theorem](#1990theorem-readmemd) which is considered -such a beautiful program that along with a change to `fgets(3)` it had arg -checks added. There are some other examples for reasons like this, a good one -being [1998/schnitzi](#1993schnitzi-readmemd), also because it's such a -beautiful program (other fixes were made as well which is shown below also). -Both of these entries were fixed by Cody. - -But there are some others that are more questionable and border on tampering -with the entry especially as some of them were documented by the author. These -happened over time where sometimes we, the judges, changed the status to -bug/(mis)-feature and when verifying the consistency, Cody fixed them as they -only took a few seconds to fix; others he changed back to feature status and -they were not fixed as the problems were documented by the author or us. - -Of course it can be argued that by fixing these things it makes it more user -friendly for modern enjoyment but even so it's very often the wrong way to go -about it. If the author does not mention it then it can be considered a bug -that can be fixed. - -See the [bugs.md](/bugs.md) for more information regarding this situation and -for many entries with a variety types of bugs that you can look at fixing too, -if you wish to help! You will be thanked in this file should you do so. Fixing -does not have to be just code: it can be a Makefile fix or something else -entirely, even typos (in data files: usually not good idea in code even in -comments though it happened once). An example that has happened several times is -that if the optimiser is enabled the program might crash, sometimes in one -platform and not others but other times in multiple platforms. This counts as a -fix too, which you will see below should you look at the very long list of -fixes, including the next section! - - -## Makefile fixes and improvements - -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. - -For instance he changed the `LIBS` variable to `LDFLAGS` as that is the standard -variable. This simplifies compiling without having to modify the Makefile which -can be useful if something changes or if someone is trying to fix an entry but -forgets to change the Makefile or even if they don't want to make a change due -to a temporary test. These would of course depend on the compiler invocation but -since `LDFLAGS` is standard it is more likely to be used by default so no need -to check the Makefiles. - -Sometimes there were bad characters or rules that caused the entry to fail to -compile or not work in some way. - -Where useful he added some notes to the Makefiles during compilation to let one -know of certain problems or features that matter. - -There were some other fixes as well including mass typo fixes in the Makefiles -(though that usually does not mean it is worth a thank you note it might be -worth noting in this case). Other times it was enabling or disabling the -optimiser to fix an entry, sometimes causing other problems that also had to be -fixed, a good example being [1986/marshall](#1986marshall-readmemd) (see the -[compilers.md](1986/marshall/compilers.md) for the amusing details and all that -had to be done to fix it). - -There was a 'problem' where `${MAKE}` was `$(MAKE)`: this doesn't break anything -but it is inconsistent with the rest of the `${foo}` tools. - -A lot of the fixes with the Makefiles that Cody made were done with his [sgit -tool](https://github.com/xexyl/sgit). - - -## Typo fixes and consistency improvements - -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. - -He also updated the formatting of the README.md files (after renaming the old -files to README.md) to proper markdown. - -Where possible he made the presentation of the entries much more consistent -across the entries of all the years as well as other files. This is not possible -for everything (the remarks of authors, for instance, cannot be and should not -be made consistent but adding markdown where necessary in the remarks is). - -A lot of these fixes were done with his [sgit -tool](https://github.com/xexyl/sgit) as well but many were done manually too. +# 1984 ## [1984/anonymous](1984/anonymous/anonymous.c) ([README.md](1984/anonymous/README.md)) @@ -341,6 +108,9 @@ History Repo](https://github.com/dspinellis/unix-history-repo/tree/Research-Release). +# 1985 + + ## [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 @@ -483,6 +253,9 @@ were actually not what they appear: the only arg that existed in `main()` was if you remove it from `subr()` or don't even bother calling `subr()`? +# 1986 + + ## [1986/hague](1986/hague/hague.c) ([README.md](1986/hague/README.md])) Cody made this use `fgets()`. @@ -616,6 +389,9 @@ Some of the changes required: +# 1987 + + ## [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 @@ -692,6 +468,9 @@ Cody also added to the Makefile `-include stdio.h` in the nowadays very unlikely(?) but nevertheless suggested case that `putchar()` is not available. +# 1988 + + ## [1988/dale](1988/dale/dale.c) ([README.md](1988/dale/README.md])) Cody fixed this twisted entry (as we called it :-) ) for modern compilers, @@ -838,6 +617,10 @@ Cody added the [try.sh](1988/westley/try.sh) script to show the magic of the entry as seeing the code with the result at once is far more beautiful. + +# 1989 + + ## [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 @@ -1021,6 +804,9 @@ The `compile.sh` script allows one to specify the compiler with the `CC` environmental variable; see the README.md for details. +# 1990 + + ## [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 @@ -1194,6 +980,9 @@ The alt code did NOT have arg checks added as it is actually a copy of the original code. +# 1991 + + ## [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 @@ -1435,6 +1224,9 @@ Cody also fixed the make clobber rule where a file was left lying about when it should have been removed. +# 1992 + + ## [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 @@ -1684,6 +1476,9 @@ args (2). And not that we need the help or anything for this :-) but we encourage you to try the original without two args :-) +# 1993 + + ## [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 @@ -1784,6 +1579,9 @@ NOTE: the `N1` and `N2` are provided as notes in the README.md file describing this code. Other code is also described there. +# 1994 + + ## [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 @@ -1898,6 +1696,9 @@ automate the spoiler commands to make it easier to see the game in action from start to finish. +# 1995 + + ## [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 @@ -1960,6 +1761,9 @@ 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. +# 1996 + + ## [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 @@ -2070,6 +1874,9 @@ Also, to fix any potential problem with displaying in GitHub the scripts provided by the author, Cody added '.sh'. +# 1998 + + ## [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 @@ -2285,6 +2092,9 @@ Cody also added the [try.sh](1998/tomtorfs/try.sh) script to try out a few commands that we recommended. +# 2000 + + ## [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 @@ -2422,6 +2232,9 @@ And although the scripts do `chmod +x` on the source code (see the README.md for details) the source code is now executable by default. +# 2001 + + ## [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 @@ -2693,6 +2506,9 @@ thought would be fun. He also provided the sort and punch card versions, described in the README.md, based on the author's remarks. +# 2004 + + ## [2004/arachnid](2004/arachnid/arachnid.c) ([README.md](2004/arachnid/README.md])) Cody added an [alternate version](2004/arachnid/README.md#alternate-code) which @@ -2886,6 +2702,9 @@ Cody also made it so that the `FNAME` is (for the entry file itself and just to make it a bit easier to compile. +# 2005 + + ## [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 @@ -3125,6 +2944,9 @@ if one runs it from another directory, specifying the directory, it'll not catch it. +# 2006 + + ## [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` @@ -3225,6 +3047,9 @@ 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. +# 2011 + + ## [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 @@ -3254,6 +3079,9 @@ the author's comments (along with looking up the function for the right header file). To build try the alt rule of the Makefile. +# 2012 + + ## [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 @@ -3315,6 +3143,9 @@ We're not sure whether we want to thank Cody or not for this :-) and he's not sure if he wants to be thanked either :-) but we appreciate it nonetheless. +# 2013 + + ## [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 @@ -3472,6 +3303,9 @@ Cody added explicit linking of libm (`-lm`) as not all systems do this implicitly (linux doesn't seem to but macOS does). +# 2014 + + ## [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 @@ -3535,6 +3369,9 @@ theoretically work for Microsoft Windows compilers (if anything works in Windows that would break it we do not know. +# 2015 + + ## [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 @@ -3561,6 +3398,9 @@ He also added explicit linking of libm (`-lm`) for systems that do not do this (linux seems to not but macOS does). +# 2018 + + ## [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 @@ -3585,6 +3425,9 @@ Cody added explicit linking of libm (`-lm`) for systems that do not do this (linux doesn't seem to but macOS does). +# 2019 + + ## [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 @@ -3648,6 +3491,9 @@ He also added the script [try.sh](2019/karns/try.sh) to showcase the entry a bit more easily. +# 2020 + + ## [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 @@ -3732,3 +3578,121 @@ the user has installed the appropriate library with 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 :-) + + + +# Miscellaneous thanks + + +## Thank you list since 2021 Jan 01 + +To avoid having to change numerous "_README.md_" files to add thank you notes, +we centralize them below. + +The [IOCCC judges](https://www.ioccc.org/judges.html) wish to recognize the many +important contributions to the IOCCC presentation of past IOCCC winners. +We are pleased to note the many contributions, **made since 2021 Jan 01**, +on a winner by winner basis. + + +## Makefile fixes and improvements + +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. + +For instance he changed the `LIBS` variable to `LDFLAGS` as that is the standard +variable. This simplifies compiling without having to modify the Makefile which +can be useful if something changes or if someone is trying to fix an entry but +forgets to change the Makefile or even if they don't want to make a change due +to a temporary test. These would of course depend on the compiler invocation but +since `LDFLAGS` is standard it is more likely to be used by default so no need +to check the Makefiles. + +Sometimes there were bad characters or rules that caused the entry to fail to +compile or not work in some way. + +Where useful he added some notes to the Makefiles during compilation to let one +know of certain problems or features that matter. + +There were some other fixes as well including mass typo fixes in the Makefiles +(though that usually does not mean it is worth a thank you note it might be +worth noting in this case). Other times it was enabling or disabling the +optimiser to fix an entry, sometimes causing other problems that also had to be +fixed, a good example being [1986/marshall](#1986marshall-readmemd) (see the +[compilers.md](1986/marshall/compilers.md) for the amusing details and all that +had to be done to fix it). + +There was a 'problem' where `${MAKE}` was `$(MAKE)`: this doesn't break anything +but it is inconsistent with the rest of the `${foo}` tools. + +A lot of the fixes with the Makefiles that Cody made were done with his [sgit +tool](https://github.com/xexyl/sgit). + + +## Typo fixes and consistency improvements + +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. + +He also updated the formatting of the README.md files (after renaming the old +files to README.md) to proper markdown. + +Where possible he made the presentation of the entries much more consistent +across the entries of all the years as well as other files. This is not possible +for everything (the remarks of authors, for instance, cannot be and should not +be made consistent but adding markdown where necessary in the remarks is). + +A lot of these fixes were done with his [sgit +tool](https://github.com/xexyl/sgit) as well but many were done manually too. + + +## Thank you honor roll + +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. + +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 +HARD bug fixes** like +[1988/phillipps](/thanks-for-fixes.md#1988phillipps-readmemd), +[1992/vern](/thanks-for-fixes.md#1992vern-readmemd), +[2001/anonymous](/thanks-for-fixes.md#2001anonymous-readmemd), +[2004/burley](/thanks-for-fixes.md#2004burley-readmemd) and +[2005/giljade](/thanks-for-fixes.md#2005giljade-readmemd), making entries like +[1985/sicherman](/thanks-for-fixes.md#1985sicherman-readmemd) and +[1986/wall](/thanks-for-fixes.md#1986wall-readmemd) not need `-traditional-cpp` +(all **EXTREMELY HARD**), fixing entries to work with clang (some being +**EXTREMELY HARD** like +[1991/dds](/thanks-for-fixes.md#1991dds-readmemd)) or as much as possible (like +[1989/westley](/thanks-for-fixes.md#1989westley-readmemd), a true masterpiece +that is **INCREDIBLY HARD, _MUCH, MUCH MORE SO_ than any other fix!**), porting +entries to macOS (some being **EXTREMELY HARD** like +[1998/schweikh1](/thanks-for-fixes.md#1998schweikh1-readmemd)), fixing code like +[2001/herrmann2](/thanks-for-fixes.md#2001herrmann2-readmemd) to work in both +32-bit/64-bit which *can be* **EXTREMELY HARD**, providing alternate code +where useful/necessary, fixing possible/removing dead links, +typo/consistency fixes, improving **ALL _Makefiles_** and writing +[sgit](https://github.com/xexyl/sgit) that we installed locally to easily run +`sed` on files in the repo to help build the website. **THANK YOU VERY MUCH** +for your extensive efforts in helping improve the IOCCC presentation of past +IOCCC winners and fixing almost all past entries for modern systems! + +[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 +[1989/robison](/thanks-for-fixes.md#1989robison-readmemd), +[1990/cmills](https://github.com/ioccc-src/temp-test-ioccc/blob/master/thanks-for-fixes.md#1990cmills-readmemd), +[1992/lush](/thanks-for-fixes.md#1992lush-readmemd) and +[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.