From 775e159959945eeff0b96b8867f9eb4277e0cb03 Mon Sep 17 00:00:00 2001 From: Cody Boone Ferguson <53008573+xexyl@users.noreply.github.com> Date: Fri, 6 Oct 2023 03:30:35 -0700 Subject: [PATCH 1/7] Fix links in thanks-for-fixes.md wrt winners.html Since linking to html files on GitHub does not render the html I have changed the winners.html to be https://www.ioccc.org/winners.html instead. In the process I have discovered that several README.md files still include '/winners.html' and these include some that have both Yusuke and me. Some of the names are supposed to stay there as they're mentioned by the author but some are not. These will be fixed in time: I have other modifications including to some README.md files and I don't want to accidentally commit the wrong files as some have changes that are not necessarily finished. Since it's the same kind of change it feels like a single pull request would be fitting (and easier) but since all the README.md files will have to be checked again (some once, some twice and that should be it) I will make these fixes (for those that need to be fixed .. for instance I can think of at least three where I was mentioned by another author so those should NOT be removed but the link should be changed!) then. I have updated the todo.md file as well to note the above as before I can say everything is done with the current issues related to consistency and typos the file must be checked and everything ticked off (or deleted) as the tasks are done. --- thanks-for-fixes.md | 78 +++++++++++++++++++++++++-------------------- todo.md | 30 ++++++++++------- 2 files changed, 62 insertions(+), 46 deletions(-) diff --git a/thanks-for-fixes.md b/thanks-for-fixes.md index 0df4ac00d..9af2a4509 100644 --- a/thanks-for-fixes.md +++ b/thanks-for-fixes.md @@ -9,32 +9,33 @@ There are several people who have contributed to the above mentioned several thousand changes and important improvements. We call out the extensive contributions of [Cody Boone -Ferguson](/winners.html#Cody_Boone_Ferguson) who is responsible for many of the -improvements including many, many **very complicated bug fixes** such as -[2001/anonymous](2001/anonymous/anonymous.c) and +Ferguson](https://www.ioccc.org/winners.html#Cody_Boone_Ferguson) who is +responsible for many of the improvements including many, many **very complicated +bug fixes** such as [2001/anonymous](2001/anonymous/anonymous.c) and [2004/burley](2004/burley/burley.c), making entries not require `-traditional-cpp` (which are **very complicated fixes**), fixing entries to compile with clang, fixing entries to work with macOS (some of which are **very complicated** such as [1998/schweikh1](1998/schweikh1/schweikh1.c)), providing alternate code where useful or necessary, fixing where possible dead links and -otherwise removing them, typo and consistency fixes and writing the [sgit -tool](https://github.com/xexyl/sgit) that we installed locally and have used to -easily run `sed` on files in the repository to help build the website. Thank -you **very much** for your extensive efforts in helping improve the IOCCC -presentation of past IOCCC winners and making many many past entries work with -modern systems! +otherwise removing them, typo and consistency fixes, improving **ALL +_Makefiles_** and writing the [sgit tool](https://github.com/xexyl/sgit) that we +installed locally and have used to easily run `sed` on files in the repository +to help build the website. Thank you **very much** for your extensive efforts +in helping improve the IOCCC presentation of past IOCCC winners and making many +many past entries work with modern systems! -[Yusuke Endoh](/winners.html#Yusuke_Endoh) supplied a number of important bug -fixes to a number of past IOCCC winners. Some of those fixes were **very -technically challenging** such as [1989/robison](1989/robison/robison.c), -[1990/cmills](1990/cmills/cmills.c), [1992/lush](1992/lush/lush.c) and -[2001/ctk](2001/ctk/ctk.c). Thank you **very much** for your help! +[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 **very technically challenging** such as +[1989/robison](1989/robison/robison.c), [1990/cmills](1990/cmills/cmills.c), +[1992/lush](1992/lush/lush.c) and [2001/ctk](2001/ctk/ctk.c). Thank you **very +much** for your help! -A good number of the [past winners of the IOCCC](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](judges.html) **very much appreciate** those who +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. @@ -48,6 +49,17 @@ 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. ## [1984/anonymous](1984/anonymous/anonymous.c) ([README.md](1984/anonymous/README.md)) @@ -447,8 +459,7 @@ not having `.` in it). He notes that with an invocation in the try section will with macOS show what appears to be an error message but is actually okay. He gives more information in the [bugs.md](/bugs.md) file. -NOTE: as `btoa` is not common we used a ruby script from [Yusuke -Endoh](/winners.html#Yusuke_Endoh). +NOTE: as `btoa` is not common we used a ruby script from Yusuke. ## [1990/tbr](1990/tbr/tbr.c) ([README.md](1990/tbr/README.md])) @@ -593,10 +604,10 @@ loop). ## [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 -Endoh](/winners.html#Yusuke_Endoh) created a patch that calls `usleep()` but -Cody thought the value was too slow so he made it a macro in the Makefile `Z`, -defaulting at 15000. You can reconfigure it like: +It was observed that on modern systems this goes much too quick. Yusuke created +a patch that calls `usleep()` but Cody thought the value was too slow so he made +it a macro in the Makefile `Z`, defaulting at 15000. You can reconfigure it +like: ```sh make clobber Z=1000 all @@ -648,10 +659,9 @@ encourage you to test this :-) This should NOT be fixed. ## [1993/jonth](1993/jonth/jonth.c) ([README.md](1993/jonth/README.md])) -Both Cody and [Yusuke Endoh](/winners.html#Yusuke_Endoh) 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: +Both Cody and 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: ```c G int i,j @@ -789,8 +799,7 @@ using gcc but macOS, having only clang by default (even the gcc binary Cody proposed a fix for this to compile with clang and Landon implemented it after some discussion. 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 Endoh's](/winners.html#Yusuke_Endoh) analysis -found +confusingly. He looked at 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 the fix was wrong. Cody also made the recommended change of the author to make @@ -1036,7 +1045,7 @@ checked prior to running the function just like the author did for the factorial 64-bit linux or macOS. See below portability notes as well as another fix in this entry by Yusuke. -### Portability notes: +## Portability notes: 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 @@ -1087,9 +1096,8 @@ also refers to 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 -Endoh](/winners.html#Yusuke_Endoh) provided a patch to fix the ANSI escape -codes. This works with macOS as well. +The ANSI escape codes were no longer valid but Yusuke provided a patch to fix +the ANSI escape codes. This works with macOS as well. ## [2001/dgbeards](2001/dgbeards/dgbeards.c) ([README.md](2001/dgbeards/README.md])) diff --git a/todo.md b/todo.md index eb27de5fd..1d3e685f0 100644 --- a/todo.md +++ b/todo.md @@ -1,5 +1,5 @@ # A todo list of known things to check and/or do -*Last updated: Wed 12 Jul 2023 11:54:12 UTC* +*Last updated: Fri 06 Oct 2023 10:45:23 UTC* This document is primarily for [Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) as he (that is I :-) ) wanted a way @@ -17,7 +17,7 @@ this file the case is mostly _NOT_ been done). - Find entries with bugs as well INABIAF and add to [bugs.md](/bugs.md). As far as I am aware the ones that have not been checked are > 2011 (and two entries in 2011, vik and zucker) and possibly some of the earlier years. I - ([Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson)) have spent too + ([Cody Boone Ferguson](https://www.ioccc.org/winners.html#Cody_Boone_Ferguson)) have spent too much time when working on formatting the README.md files on finding problems out (and in some cases fixing or trying but not yet succeeding to fix an entry); if I did not do that I would be done with fixing the README.md files @@ -29,8 +29,8 @@ this file the case is mostly _NOT_ been done). - Resolve as many of the issues in [bugs.md](/bugs.md) with the exception of the INABIAF ones. This is likely not possible for all (one in particular comes to mind that abuses a bug in a now very old gcc version - this obviously cannot be -fixed but I added an alt version that does what it used to do) but many -certainly can be (and most have been) fixed. +fixed but I added an alt version that does what it used to do so it's fine) but +many certainly can be - and actually most have been - fixed. - Check for typos in README.md files. Although I did up through I believe 2011 I have to do another pass through all except that as of 12 July 2023 I went @@ -56,13 +56,14 @@ fix any issues. on one line only. Note that earlier spaces were being added to the end of the line but after discussion on GitHub it was decided it is preferable to have `
` instead. - * [Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) has done many and - has some kind of record of what he's done but these can be added later by - having a list of years to check. However, as noted on 06 July 2023, all - years will have to be checked again so this might not be as important except - that the years not checked / fixed should only need one pass (but probably - will have a second pass anyway just to make sure things are good as seeing - things a second time is a good way to find additional errors). + * [Cody Boone + Ferguson](https://www.ioccc.org/winners.html#Cody_Boone_Ferguson) has done + many and has some kind of record of what he's done but these can be added + later by having a list of years to check. However, as noted on 06 July 2023, + all years will have to be checked again so this might not be as important + except that the years not checked / fixed should only need one pass (but + probably will have a second pass anyway just to make sure things are good as + seeing things a second time is a good way to find additional errors). - Remove addresses from older winning entries but (if known) keep country code + add country code and name to the respective JSON file in the [author](/author) @@ -124,3 +125,10 @@ there. link to point to the right location. * Do we need to update the links that point to GitHub raw content? I'm not sure. + + +- Remove WHERE CORRECT the references to those who fixed or provided alt code in +entries in the respective README.md files. This cannot be done without examining +each because some names are mentioned by the author. For instance I (Cody) can +think of at least three where I have been mentioned explicitly by the author: +one in 2018, one in 2019 and one in 2020. From a307f4729edade39472e88805d3602970f296d94 Mon Sep 17 00:00:00 2001 From: Cody Boone Ferguson <53008573+xexyl@users.noreply.github.com> Date: Fri, 6 Oct 2023 03:47:29 -0700 Subject: [PATCH 2/7] Remove finished task from todo.md Some days back I made the 1985/sicherman fix of mine to look much more like the original. This was done in commit 4836ed462265105cf380715f674c122ac9b6d99f. --- todo.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/todo.md b/todo.md index 1d3e685f0..60d49622e 100644 --- a/todo.md +++ b/todo.md @@ -83,10 +83,6 @@ and then typing the below from the entry's main directory diff -r . img/fs|grep -v 'Only in' -- Try and see if I (Cody) can make [1985/sicherman](1985/sicherman/sicherman.c) -even more like its original form. I have some ideas here but it might involve -some discussion too. See 22 May 2023 commits for the improvements already made. - - Check all Makefiles for notes / warnings on compilation and see if they can be copied to _after_ the compilation as they're more likely to be seen this way. In some cases this will have to be done in the Makefile via `|| :` (that might be From a6503f7f58cf88c9810f577fc6925bbcec0ea0a8 Mon Sep 17 00:00:00 2001 From: Cody Boone Ferguson <53008573+xexyl@users.noreply.github.com> Date: Fri, 6 Oct 2023 03:54:46 -0700 Subject: [PATCH 3/7] Update thanks-for-fixes.md wrt 2013/birken Reworded the thanks to be a bit clearer and added a bit more information that feels useful to note (not so much for the thanks but for the way the alternate code is configurable at compile time). --- thanks-for-fixes.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/thanks-for-fixes.md b/thanks-for-fixes.md index 9af2a4509..d4aee2de6 100644 --- a/thanks-for-fixes.md +++ b/thanks-for-fixes.md @@ -1530,9 +1530,11 @@ sure if he wants to be thanked either :-) but we appreciate it nonetheless. ## [2013/birken](2013/birken/birken.c) ([README.md](2013/birken/README.md])) -Along with the [demo.sh](2013/birken/demo.sh), based on the author's -recommendations, Cody added an alternate version for this entry which allows one -to control how fast the painting is done. +Along with the [demo.sh](2013/birken/demo.sh) that he added, Cody also added an +alternate version which allows one to control how fast the painting is done, +based on the author's recommendations, except that Cody made it configurable at +compile time just like he did with other entries (in all but one it was +alternate code) that use `usleep()`. ## [2013/cable3](2013/cable3/cable3.c) ([README.md](2013/cable3/README.md])) From 5e7ab77359db66fa7b754563fa743f4fadfa3e9b Mon Sep 17 00:00:00 2001 From: Cody Boone Ferguson <53008573+xexyl@users.noreply.github.com> Date: Fri, 6 Oct 2023 07:50:40 -0700 Subject: [PATCH 4/7] Fix thanks for 2019/karns --- thanks-for-fixes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/thanks-for-fixes.md b/thanks-for-fixes.md index d4aee2de6..4cf39ebe3 100644 --- a/thanks-for-fixes.md +++ b/thanks-for-fixes.md @@ -1639,7 +1639,7 @@ 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 that the author reported where it sometimes segfaults but Cody did not try -debugging it yet. +debugging it since it works with `-O0`. ## [2020/kurdyukov2](2020/kurdyukov2/prog.c) ([README.md](2020/kurdyukov2/README.md)) From 1cc41d7636b42c3d183147052f330f95ef84d135 Mon Sep 17 00:00:00 2001 From: Cody Boone Ferguson <53008573+xexyl@users.noreply.github.com> Date: Fri, 6 Oct 2023 07:56:08 -0700 Subject: [PATCH 5/7] Add reference to 2019/karns/demo.sh in thanks file --- thanks-for-fixes.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/thanks-for-fixes.md b/thanks-for-fixes.md index 4cf39ebe3..dcf4c64ff 100644 --- a/thanks-for-fixes.md +++ b/thanks-for-fixes.md @@ -1641,6 +1641,9 @@ 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`. +He also added the script [demo.sh](2019/karns/demo.sh) to showcase the entry a +bit more easily. + ## [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 From 0e519d063b380b844e4056fdd6fcbb2617a9c6fe Mon Sep 17 00:00:00 2001 From: Cody Boone Ferguson <53008573+xexyl@users.noreply.github.com> Date: Fri, 6 Oct 2023 08:09:45 -0700 Subject: [PATCH 6/7] Added some entries to thanks file (for 2019) Some fixes were missing from the file. --- thanks-for-fixes.md | 40 +++++++++++++++++++++++++++++++++------- 1 file changed, 33 insertions(+), 7 deletions(-) diff --git a/thanks-for-fixes.md b/thanks-for-fixes.md index dcf4c64ff..11514ba32 100644 --- a/thanks-for-fixes.md +++ b/thanks-for-fixes.md @@ -53,13 +53,23 @@ on a winner by winner basis. 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. +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 typos in the Makefiles. ## [1984/anonymous](1984/anonymous/anonymous.c) ([README.md](1984/anonymous/README.md)) @@ -1602,6 +1612,11 @@ Cody added explicit linking of libm (`-lm`) for systems that do not do this (linux doesn't seem to but macOS does). +## [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 +caused a rule to fail. + ## [2019/ciura](2019/ciura/prog.c) ([README.md](2019/ciura/README.md])) @@ -1633,6 +1648,17 @@ Cody added explicit linking of libm (`-lm`) for systems that do not do this 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 +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. + ## [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 From 3383cad34cc5424369528d32339672661e6b0502 Mon Sep 17 00:00:00 2001 From: Cody Boone Ferguson <53008573+xexyl@users.noreply.github.com> Date: Fri, 6 Oct 2023 08:38:40 -0700 Subject: [PATCH 7/7] Updated thanks file for my entries :-) Yes this is partly a joke littered with irony but to be fair I did make some fixes that had to be done some of which were not my fault. :-) There was another entry that was added here as it had a relation to 2020/ferguson2: I referred to it in my original remarks. --- thanks-for-fixes.md | 52 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/thanks-for-fixes.md b/thanks-for-fixes.md index 11514ba32..e7728e1a0 100644 --- a/thanks-for-fixes.md +++ b/thanks-for-fixes.md @@ -648,6 +648,16 @@ now uses a redefined `gets()`. This did require modifying the line number with `#line 1` under the macro `gets()`. Still this cannot work with clang due to different compiler messages. See [bugs.md](/bugs.md) for details. +## [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 +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. + +Cody cynically noted that if he goes quiet, for instance if he no longer +participates in the IOCCC, that it must be our fault! :-) + ## [1992/westley](1992/westley/westley.c) ([README.md](1992/westley/README.md])) @@ -1606,6 +1616,17 @@ He also added explicit linking of libm (`-lm`) for systems that do not do this 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 +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. + +Landon notes that Cody will probably never finish changes in his entries and +that's probably true: let's just say that for the IOCCC I'm (Cody) a weasel! :-) +(but isn't that kind of the point ? :-) ) + ## [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 @@ -1670,6 +1691,37 @@ debugging it since it works with `-O0`. He also added the script [demo.sh](2019/karns/demo.sh) to showcase the entry a bit more easily. +## [2020/ferguson2](2020/ferguson1/prog.c) ([README.md](2020/ferguson1/README.md)) + +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 +[play.sh](2020/ferguson1/play.sh), fixed other scripts and the Makefile, changed +some files to be markdown (and fixed problems that he caused in doing so :-) ), +fixed typos and formatting and he also fixed some issues that occurred when +files were renamed to `.md` from `.markdown`. + +Most importantly he also added some corrections to the vital [Double +layered chocolate fudge cake recipe](2020/ferguson1/chocolate-cake.md) :-) + +Yes the irony here is as rich as the chocolate cake: the question is do you know +how rich it is? If not and you like chocolate I (that is Cody :-) ) highly +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 +various files. + +He also fixed some issues that occurred when files were renamed to `.md` from +`.markdown`. + +Most importantly he also added some corrections to the vital [Double +layered chocolate fudge cake recipe](2020/ferguson2/chocolate-cake.md), +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