diff --git a/1984/laman/README.md b/1984/laman/README.md index 8c2f01162..e524cbbb3 100644 --- a/1984/laman/README.md +++ b/1984/laman/README.md @@ -8,15 +8,16 @@ Mike Laman make all ``` + ### Bugs and (Mis)features -This entry a listed in [bugs.md](/bugs.md) as: +The current status of this entry is: ``` STATUS: INABIAF - please **DO NOT** fix ``` -For more detailed information see [bugs.md](/bugs.md#1984laman-readmemd). +For more detailed information see [bugs.md#1984/laman](/bugs.md#1984-laman). ## To use: diff --git a/bugs-1998-2003-parta.md b/bugs-1998-2003-parta.md new file mode 100644 index 000000000..a717c46f5 --- /dev/null +++ b/bugs-1998-2003-parta.md @@ -0,0 +1,250 @@ +# 1998 + +## [1998/dlowe](1998/dlowe/dlowe.c) ([README.md](1998/dlowe/README.md)) +### STATUS: missing or dead link - please provide them + +The domain http://pootpoot.com no longer exists as it once did. The judges have +given a script that can be used to make a similar page (**warning: not checked +for security in modern days!**). Do you have a server with enough bandwidth and +would like to set it up? We'll gladly thank you in the README.md file and link +to the page as well! You'll have IOCCC fame for reviving a pootifier! :-) + +## [1998/dloweneil](1998/dloweneil/dloweneil.c) ([README.md](1998/dloweneil/README.md)) +### STATUS: missing or dead link - please provide them + +See above entry [1998/dlowe](1998/dlowe/dlowe.c). + + +## [1998/schnitzi](1998/schnitzi/schnitzi.c) ([README.md](1998/schnitzi/README.md)) +### STATUS: INABIAF - please **DO NOT** fix + +[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed this to work for +modern systems but he notes a couple compile warnings to ignore. + +First if you get the warning: + + warning: incompatible implicit declaration of built-in function 'printf' [-Wbuiltin-declaration-mismatch] + 11 | void g(){ O=j; printf(_); } + | ^~~~~~ + + +please do NOT change it! Doing so will break the generated output. + +Another warning that was introduced but should be ignored (it's required) is: + + + warning: assignment to 'char *' from incompatible pointer type 'char **' [-Wincompatible-pointer-types] + 55 | main(int v,char **c){ O=r_; _d=c; + | ^ + +Please DO NOT change this either. + +If there are any other warnings triggered by your compiler please DO NOT fix +those either! + +Another important note is that as the number passed into the program gets bigger +the number of lines of output gets substantially larger. For instance: + +```sh +$ ./schnitzi 9|wc -l + 771999 +``` + + +# 1999 + +There was no IOCCC in 1999. + +# 2000 + +[2000/primenum](2000/primenum/primenum.c) ([README.md](2000/primenum/README.md)) +### STATUS: INABIAF - please **DO NOT** fix + +This program does not do what you might think it does! Running it like: + +```sh +./primenum 13 +``` + +will seemingly wait for input exactly because it is waiting for input. See the +README.md file or look at the source. + +It also has main() return void even though this is non-standard. Please do not +fix this (in fact it was originally done but rolled back). + +As well there is a known crash that's also a feature. + +## [2000/rince](2000/rince/rince.c) ([README.md](2000/rince/README.md)) +### STATUS: INABIAF - please **DO NOT** fix + +If `DISPLAY` is not set the program will very likely crash, do something strange +(or if you're very unlucky your computer might [halt and catch +fire](https://en.wikipedia.org/wiki/Halt_and_Catch_Fire_(computing))! :-) ). + + +# 2001 + +## [2001/anonymous](2001/anonymous/anonymous.c) ([README.md](2001/anonymous/README.md)) +### STATUS: INABIAF - please **DO NOT** fix + +[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed this so that it +doesn't segfault and then also fixed the functionality of it (but see below). + +Cody also fixed the [anonymous.ten.c](2001/anonymous/anonymous.ten.c) program +(it also segfaulted) but notes that it **MUST** be compiled as a **32-bit ELF +binary** so it will NOT work in macOS (for example); if you cannot use `-m32` or +even if you can but it cannot compile as an ELF binary (not elf binary :-) ) +(but see below) then the `anonymous` program itself will very likely crash if +you run it on the compiled [anonymous.ten.c](2001/anonymous/anonymous.ten.c) but +if nothing else it will not modify the target executable (this part of the fix +at least should be correct). + +The file `2001/anonymous/anonymous.ten.32` is a pre-compiled +[2001/anonymous.ten.c](2001/anonymous.ten.c) as a 32-bit ELF binary in case you +can run ELF binaries but cannot compile 32-bit binaries. + +Other BSD Unices were not tested. + +### STATUS: INABIAF - please **DO NOT** fix + +Note also that if you don't specify a file or you specify a non-32-bit ELF file +this program will very likely crash or do something strange like slaughter the +elves of Imladris :-( + +## [2001/bellard](2001/bellard/bellard.c) ([README.md](2001/bellard/README.md)) +### STATUS: INABIAF - please **DO NOT** fix +### STATUS: doesn't work with some platforms - please help us fix + +The two statuses might seem contradictory but that is a complicated question. +The author stated that it only works with i386 linux so on the one hand the fact +it doesn't work in modern systems is considered a feature and not a bug. But on +the other hand it would be nice if there was an alternate version which worked +for modern systems. This does seem quite unlikely but some fixes, described +next, were made. + +[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed an initial +segfault (trying to open the file) and he also fixed the [supplementary program +bellard.otccex.c](2001/bellard/bellard.otccex.c) but this still crashes in +systems not i386 linux which is what the author stated. + +On the other hand if you do have a fix for 64-bit systems you're welcome to +provide it as an alternate version. If by chance you have a fix so that it works +for both 32-bit and 64-bit systems that is also okay. + +The author said that they compiled it with [gcc version +2.95.2](https://ftp.gnu.org/gnu/gcc/gcc-2.95.2/gcc-everything-2.95.2.tar.gz). We +don't know if a certain gcc version is necessary but it might be helpful to +download and compile that version to test it - or it might not. + +I (Cody) have no i386 system to test this but perhaps this is why I can't get it +to work. Yusuke was able to get this to work with `-m32` but only in an +emulator. + +On the author's [web page for this program](https://bellard.org/otcc/) it is +explicitly stated that it requires i386 linux. + +There I found what should be a more portable version which is included as +[otccelf.c](2001/bellard/otccelf.c) (after adding some `#include`s and the +modification by Yusuke noted in the README.md file) but it appears this *also* +requires i386 linux; indeed looking at the code it hard codes paths that are +i386 specific to linux. + +Another point of interest is that the author provided de-obfuscated versions +which might be of value to look at. I might do that as well but this entry is +very likely never going to work for 64-bit linux so that's not that likely since +there are other things that are more important. + +If you have a fix for 64-bit systems this is welcome as an alternate version, as +stated above. You might like to look at the otccelf version but note that it (at +least in 64-bit linux and macOS) has compilation errors. + +### Aside: why were there changes if INABIAF ? + +This is a good question. The reason is we believe it better to fix some obvious +problems: there were some bugs that would very possibly prevent it from working +even if it was in i386 linux though Yusuke seemed to get it to work in an +emulator so perhaps not. Still it's better to have the type of the file pointer +correct and so that the file can at least be opened in modern systems even if +the compiler won't work there. + +Also the supplementary program, which did not work at all, was fixed (by Cody) +and it can be run by itself for fun in modern systems, which was not possible +before the fixes there. + + +## [2001/cheong](2001/cheong/cheong.c) ([README.md](2001/cheong/README.md)) +### STATUS: INABIAF - please **DO NOT** fix + +This program will very likely crash or do something different without an arg. + +## [2001/dgbeards](2001/dgbeards/dgbeards.c) ([README.md](2001/dgbeards/README.md)) +### STATUS: INABIAF - please **DO NOT** fix + +This program deliberately crashes if it loses (which is what it aims to do). + +## [2001/herrmann1](2001/herrmann1/herrmann1.c) ([README.md](2001/herrmann1/README.md) +### STATUS: missing files - please provide them + +The author referred to the file `herrmann1.turing` but it does not exist not even +in the archive. Do you have a copy? Please provide it! + +### STATUS: missing files - please provide them + +The author also referred to the file `times2.turing` but this is also missing in +the archive. Do you have a copy? Please provide it! + + +### STATUS: known bug - please help us fix + +There is also a bug in part. During compilation you're supposed to see some +animation but this does not seem to work with modern gcc versions. It appears +that version 2.95 works but maybe others do as well. Do you have a fix? We would +appreciate your help! + + +## [2001/kev](2001/kev/kev.c) ([README.md](2001/kev/README.md) +### STATUS: INABIAF - please **DO NOT** fix + +Sometimes when one player presses `q` it will result in broken pipe on the other +end. + +The author also noted that some versions of `curses` have problems with +`getch()` having a delay. + +The program is very likely to segfault if the specified port can't be bound or +connected to. + +If the terminal is too wide (the author suggests over 500 characters) the +program can segfault. + +It's also possible to crash the program if a player scores over a billion +points. + +Although it is independent of endianness both systems need the same character +set. In other words both have to be ASCII or EBCDIC - not one of each. + +## [2001/ollinger](2001/ollinger/ollinger.c) ([README.md)(2001/ollinger/README.md)) +### STATUS: INABIAF - please **DO NOT** fix + +This program will very likely crash or do something else without an arg. + + + +## [2001/schweikh](2001/schweikh/schweikh.c) ([README.md](2001/schweikh/README.md)) +### STATUS: INABIAF - please **DO NOT** fix + +This program will very likely crash or do something else if you do not give it +two args. + +Note also that the glob pattern must match the whole string. See the author's +comments for details and a workaround. + +There's also no way to escape meta characters. + +# 2002 + +There was no IOCCC in 2002. + +# 2003 + +There was no IOCCC in 2003. diff --git a/bugs-1998-2003-partb.md b/bugs-1998-2003-partb.md new file mode 100644 index 000000000..43b9e013f --- /dev/null +++ b/bugs-1998-2003-partb.md @@ -0,0 +1,102 @@ +# 1998 + +## [1998/schnitzi](1998/schnitzi/schnitzi.c) ([README.md](1998/schnitzi/README.md)) +### STATUS: INABIAF - please **DO NOT** fix + +[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed this to work for +modern systems but he notes a couple compile warnings to ignore. + +First if you get the warning: + + warning: incompatible implicit declaration of built-in function 'printf' [-Wbuiltin-declaration-mismatch] + 11 | void g(){ O=j; printf(_); } + | ^~~~~~ + + +please do NOT change it! Doing so will break the generated output. + +Another warning that was introduced but should be ignored (it's required) is: + + + warning: assignment to 'char *' from incompatible pointer type 'char **' [-Wincompatible-pointer-types] + 55 | main(int v,char **c){ O=r_; _d=c; + | ^ + +Please DO NOT change this either. + +If there are any other warnings triggered by your compiler please DO NOT fix +those either! + +Another important note is that as the number passed into the program gets bigger +the number of lines of output gets substantially larger. For instance: + +```sh +$ ./schnitzi 9|wc -l + 771999 +``` + + +# 1999 + +There was no IOCCC in 1999. + +# 2000 + +[2000/primenum](2000/primenum/primenum.c) ([README.md](2000/primenum/README.md)) +### STATUS: INABIAF - please **DO NOT** fix + +This program does not do what you might think it does! Running it like: + +```sh +./primenum 13 +``` + +will seemingly wait for input exactly because it is waiting for input. See the +README.md file or look at the source. + +It also has main() return void even though this is non-standard. Please do not +fix this (in fact it was originally done but rolled back). + + +# 2001 + + +## [2001/bellard](2001/bellard/bellard.c) ([README.md](2001/bellard/README.md)) +### STATUS: probable bug (possibly depending on system) - please help test and if necessary fix + +[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed an initial +segfault and he also fixed the [supplementary +program bellard.otccex.c](2001/bellard/bellard.otccex.c) to test the entry on to not segfault and +seemingly work but he has no 32-bit system to test any further fixes; we +would greatly appreciate anyone's help! It appears that this entry will require +major debugging and to make it work one might need to have a deep understanding +of the ELF format. + +The author said that they compiled it with [gcc version +2.95.2](https://ftp.gnu.org/gnu/gcc/gcc-2.95.2/gcc-everything-2.95.2.tar.gz). We don't know if +a certain gcc version is necessary but it might be helpful to download and +compile that version to test it. + +## [2001/westley](2001/westley/westley.c) ([README.md](2001/westley/README.md)) +### STATUS: missing files - please provide them + +The author referred to the file `card.gif` but this appears to be missing. Do +you have it? If you do please provide it and thank you! + +### STATUS: uses gets() - change to fgets() if possible (in some cases getline() works) + +The code also uses `gets()` which, without redirecting stderr to `/dev/null`, +can show an obnoxious warning every time it's run. In the script +[2001/westley/westley.sh](2001/westley/westley.sh) that [Cody Boone +Ferguson](/winners.html#Cody_Boone_Ferguson) added stderr is in fact redirected +to `/dev/null` to prevent this warning but it would probably be better if it was +changed to use `fgets()` (which he might end up doing). + + +# 2002 + +There was no IOCCC in 2002. + +# 2003 + +There was no IOCCC in 2003. diff --git a/bugs.md b/bugs.md index 1eb03192e..14f19f208 100644 --- a/bugs.md +++ b/bugs.md @@ -31,6 +31,7 @@ format is consistent and clean. THANK YOU! + ## To the winning authors: If you're the author of an entry that has been fixed and you find it against @@ -76,6 +77,7 @@ one that's more than fine (and it has been done numerous times). Again, THANK YOU! + # LIST OF STATUSES - PLEASE READ BEFORE FIXING (you may skip if you're only interested in knowing about entries with known issues) NOTE: when going through the entries you can skip to the next entry (some are @@ -98,8 +100,10 @@ okay making people very sad you may have a go at the entries :-) [Yusuke Endoh](/winners.html#Yusuke_Endoh) has also fixed a number of entries though at this point he does not know it. :-) Cody will remove this part later on. + ## General notes about the statuses and making fixes + ### Compiler warnings are very rarely a problem In general warnings should NOT be addressed. The only time they should be @@ -140,6 +144,7 @@ problem but in general they should be ignored even if they're annoying. Hopefully with the example entries listed above you get the idea. + ### General request on original code: If you're fixing an entry please make as _FEW CHANGES AS POSSIBLE_! This is to @@ -147,6 +152,7 @@ make it as close to the original but allowing it to work. This might be less of a problem when providing alternate versions but it might still be nice to have it as close as possible to the original. See also below two points. + ### Request for one-liners: For one-liners _PLEASE KEEP THE FILE ONE LINE IF AT ALL POSSIBLE_! If it needs an @@ -171,7 +177,6 @@ when formatting code. In vim you should be able to do that with: ``` - ## STATUS: known bug - please help us fix NOTE: we're still locating entries and working on fixes with this status so we're not yet @@ -185,6 +190,7 @@ where it might sometimes border on tampering with the program. And after all, these are not meant to be maintainable or even good programming style! Use careful judgement when fixing bugs please! + ## STATUS: possible bug (possibly depending on system) - please help test and if necessary fix NOTE: we're still locating entries and working on fixes with this status so we're not yet @@ -195,6 +201,7 @@ system. In these entries it's unknown if there is a bug and sometimes it's because we do not remember and sometimes we don't have the appropriate system or environment to test and fix any possible problems. + ## STATUS: might not be completely functional - can you confirm? NOTE: we're still locating entries and working on fixes with this status so we're not yet @@ -204,6 +211,7 @@ Although these entries _appear_ to work for one or more reasons we're unsure if they are completely functional. Can you confirm this? Please let us know so we can fix it! + ## STATUS: probable bug (possibly depending on system) - please help test and if necessary fix NOTE: we're still locating entries and working on fixes with this status so we're not yet @@ -222,6 +230,7 @@ ready for help. We will remove this when we are. Entries with this status do not work under some OSes and/or architectures (and/or something else?). Please help us to fix it! + ## STATUS: doesn't work with some compilers - please provide alternative code NOTE: we're still locating entries and working on fixes with this status so we're not yet @@ -233,6 +242,7 @@ generate its output. Please help us by writing alternative code! + ## STATUS: main() function args not allowed - please help us fix NOTE: it appears that all of these have been fixed except perhaps for @@ -267,6 +277,7 @@ like an int. He used other various techniques to get them to compile. In some cases this introduced a problem but typically if not always that problem exists with compilers that are less strict. + ## STATUS: compiled executable crashes - please help us fix NOTE: we're still locating entries and working on fixes with this status so we're not yet @@ -278,6 +289,7 @@ crashes. NOTE: this does NOT apply to entries under the INABIAF status (though they're not mutually exclusive in some cases). + ## STATUS: uses gets() - change to fgets() if possible (in some cases getline() works) NOTE: we're still locating entries and working on fixes with this status so we're not yet @@ -332,12 +344,14 @@ cases these files can be found on the [IOCCC website](https://www.ioccc.org) but in other cases they are entirely absent. In this case you'll probably have to contact the author (unless you are the author! :-) ). + ## STATUS: missing make rules - please provide them In these entries one or more make rules noted by the author and/or judges is/are missing. You might consider looking at the [archive](/archive) as a good place to find them. + ## STATUS: missing or dead link - please provide them This is as they sound: a link is either missing or it's no longer valid. In many @@ -346,6 +360,7 @@ useful but there happens to be numerous links that this is not helpful. In other cases the URL has changed. Some of these have been discovered by the Internet Wayback Machine with the orange status. + ### Statuses of Internet Wayback Machine archive: - Green (3xx): redirect (this has been used to find changes in URL). @@ -354,6 +369,7 @@ Wayback Machine with the orange status. The archive website will tell you if the link was never captured. + ## STATUS: INABIAF - please **DO NOT** fix ### INABIAF: It's not a bug it's a feature :-) @@ -397,6 +413,7 @@ compiler, linker or even during runtime, depending on the system. In [some cases like 1990/tbr](1990/tbr/tbr.c) the fix actually prevents confusing output (though that was not the only fix made in that entry). + ### Exception: your own entries Of course if you're the author you're welcome to fix your own entry, prefer your @@ -404,6 +421,7 @@ own fix or suggest that they're fixed! ## STATUS: requires a compiler supporting `-traditional-cpp` - alternate code requested + ### NOTE: all of these appear to be fixed Entries with this status need a compiler that support `-traditional-cpp`. `gcc` @@ -426,10 +444,15 @@ Cody! # List of entries by year, sorted in alphabetical order per year + # 1984 -## [1984/decot](1984/decot/decot.c) ([README.md](1984/decot/README.md) + +## 1984/decot + ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [1984/decot/dedot.c](1984/decot/decot.c) +### Information: [1984/decot/README.md](1984/decot/README.md) The purpose of this program is to print out a string of rubbish. In particular you should see something like: @@ -443,15 +466,21 @@ $ ./decot without a newline after the `\`. This is not a bug. +## 1984/laman -## [1984/laman](1984/laman/laman.c) ([README.md](1984/laman/README.md)) ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [1984/laman/laman.c](1984/laman/laman.c) +### Information: [1984/laman/README.md](1984/laman/README.md) This entry will very likely crash or do something else if you run it without an arg. It likely won't do anything at all if the arg is not a positive number. -## [1984/mullender](1984/mullender/mullender.c) ([README.md](1984/mullender/README.md) + +## 1984/mullender + ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [1984/mullender/mullender.c](1984/mullender/mullender.c) +### Information: [1984/mullender/README.md](1984/mullender/README.md) Although there are two alt versions added by Cody that will work in modern systems, if you do not have a [VAX-11](https://en.wikipedia.org/wiki/VAX-11) or @@ -467,12 +496,17 @@ emulator to test it) but running the code on the binary itself produces a # 1985 +There was no known bugs and (Mis)features for 1985. + # 1986 -## [1986/august](1986/august/august.c) ([README.md](1986/august/README.md)) +## 1986/august + ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [1986/august/august.c](1986/august/august.c) +### Information: [1986/august/README.md](1986/august/README.md) This entry is known to segfault after printing its output. It was documented by @@ -481,21 +515,31 @@ the judges and shouldn't be fixed. # 1987 +There was no known bugs and (Mis)features for 1987. + # 1988 -## [1988/dale](1988/dale/dale.c) ([README.md](1988/dale/README.md)) + +## 1988/dale + ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [1988/dale/dale.c](1988/dale/dale.c) +### Information: [1988/dale/README.md](1988/dale/README.md) In linux it might happen that despite no error message or message about doing so, the program drops a core file into the directory even though the entry works and does not crash. + # 1989 -## [1989/fubar](1989/fubar/fubar.c) ([README.md](1989/fubar/README.md)) +## 1989/fubar + ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [1989/fubar/fubar.c](1989/fubar/fubar.c) +### Information: [1989/fubar/README.md](1989/fubar/README.md) If you use either `fubar` or `ouroboros.c` (it's executable, see README.md for details) with a number < 0 or larger than, say 20, it's very likely that the @@ -503,16 +547,21 @@ program will turn into an infinite loop trying to compile code with syntax errors. +## 1989/robison -## [1989/robison](1989/robison/robison.c) ([README.md](1989/robison/README.md)) ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [1989/robison/robison.c](1989/robison/robison.c) +### Information: [1989/robison/README.md](1989/robison/README.md) This program will very likely crash or break into tiny bits :-) if you feed it numbers with non-binary digits. -## [1989/westley](1989/westley/westley.c) ([README.md](1989/westley/README.md)) +## 1989/westley + ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [1989/westley/westley.c](1989/westley/westley.c) +### Information: [1989/westley/README.md](1989/westley/README.md) With version 2 it sometimes segfaults even with the same input where other times it does not. We don't believe this is because of the fix that lets some versions @@ -534,8 +583,11 @@ reverse of other code (also wrt names). See the source file and the README.md # 1990 -## [1990/jaw](1990/jaw/jaw.c) ([README.md](1990/jaw/README.md)) +## 1990/jaw + ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [1990/jaw/jaw.c](1990/jaw/jaw.c) +### Information: [1990/jaw/README.md](1990/jaw/README.md) [Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed the scripts to work in modern systems. He notes however that the command in the try section, @@ -577,8 +629,11 @@ Should the entry use `perror()`? Perhaps not but we're not sure of its purpose so it should stay with this note. -## [1990/theorem](1990/theorem/theorem.c) ([README.md](1990/theorem/README.md)) +## 1990/theorem + ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [1990/theorem/theorem.c](1990/theorem/theorem.c) +### Information: [1990/theorem/README.md](1990/theorem/README.md) [Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed many bugs that prevented this from working properly (including segfaults) but one thing to note @@ -586,8 +641,12 @@ is that if you pass two zeroes to `theorem_bkp` or `fibonacci` the program will enter an infinite loop, printing 0 over and over again; another condition where this occurred was fixed but this one should not be fixed. Thank you. -## [1990/westley](1990/westley/westley.c) ([README.md](1990/westley/README.md)) + +## 1990/westley + ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [1990/westley/westley.c](1990/westley/westley.c) +### Information: [1990/westley/README.md](1990/westley/README.md) This entry will very likely crash or do something strange without an arg. @@ -596,8 +655,12 @@ This entry will also enter an infinite loop if input is not a number > 0. # 1991 -## [1991/dds](1991/dds/dds.c) ([README.md](1991/dds/README.md)) + +## 1991/dds + ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [1991/dds/dds.c](1991/dds/dds.c) +### Information: [1991/dds/README.md](1991/dds/README.md) If the BASIC file cannot be opened for reading or the output file cannot be opened for writing the program will very likely crash or do something funny. @@ -613,8 +676,12 @@ file for how it works. It's easy enough to get the code to refer to `fgets()` and call it correctly but it might take more work to get the generated code sorted. This will be looked at later. -## [1991/westley](1991/westley/westley.c) ([README.md](1991/westley/README.md)) + +## 1991/westley + ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [1991/westley/westley.c](1991/westley/westley.c) +### Information: [1991/westley/README.md](1991/westley/README.md) There is a very simple way to always win. The program doesn't catch you and as someone called Cody's late grandmother said to him: 'it's not cheating unless @@ -627,14 +694,20 @@ possibility. Can you find out how? # 1992 -## [1992/buzzard.1](1992/buzzard.1/buzzard.1.c) ([README.md](1992/buzzard.1/README.md)) +## 1992/buzzard.1 + ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [1992/buzzard.1/buzzard.1.c](1992/buzzard.1/buzzard.1.c) +### Information: [1992/buzzard.1/README.md](1992/buzzard.1/README.md) This entry will crash without enough args (2). -## [1992/kivinen](1992/kivinen/kivinen.c) ([README.md](1992/kivinen/README.md)) +## 1992/kivinen + ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [1992/kivinen/kivinen.c](1992/kivinen/kivinen.c) +### Information: [1992/kivinen/README.md])1992/kivinen/README.md_ When you start the program everything starts to move over to the right side and then ends. [Yusuke Endoh](/winners.html#Yusuke_Endoh) pointed out that if you @@ -642,8 +715,11 @@ click the mouse it takes it back towards the centre. If you have a fix it's welcome but it's not currently considered enough of a problem to fix. -## [1992/lush](1992/lush/lush.c) ([README.md](1992/lush/README.md)) +## 1992/lush + ### STATUS: doesn't work with some compilers - please provide alternative code +### Source code: [1992/lush/lush.c](1992/lush/lush.c) +### Information: [1992/lush/README.md](1992/lush/README.md) We used a patch from [Yusuke Endoh](/winners.html#Yusuke_Endoh) to get this to work but it only works with gcc. Cody removed the warnings of `gets()`. @@ -714,8 +790,12 @@ As you might see the part under the `warning:` line is different. Can you help us? -## [1992/westley](1992/westley/westley.c) ([README.md](1992/westley/README.md)) + +## 1992/westley + ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [1992/westley/westley.c](1992/westley/westley.c) +### Information: [1992/westley/README.md](1992/westley/README.md) This program and the alternate version will very likely crash or [nuke](https://en.wikipedia.org/wiki/Nuclear_weapon) the [entire @@ -724,10 +804,15 @@ world](https://en.wikipedia.org/wiki/Earth) or just the args. And not that we need any help with this or anything :-) but we do encourage you to test it. This should not be fixed. + # 1993 -## [1993/plummber](1993/plummer/plummer.c) ([README.md](1993/plummer/README.md)) + +## 1993/plummber + ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [1993/plummer/plummer.c](1993/plummer/plummer.c) +### Information: [1993/plummer/README.md](1993/plummer/README.md) If not enough args are specified this program will likely crash or do something else. This should NOT be fixed. @@ -743,14 +828,22 @@ An alternate version, however, does exist. See the README.md file for details. # 1994 -## [1994/horton[(1994/horton/horton.c) ([README.md](1994/horton/README.md)) + +## 1994/horton + ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [1994/horton/horton.c](1994/horton/horton.c) +### Information: [1994/horton/README.md](1994/horton/README.md) If not enough args are specified this program will likely crash or do something else. This should NOT be fixed. -## [1994/ldb](1994/ldb/ldb.c) ([README.md](1994/ldb/README.md)) + +## 1994/ldb + ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [1994/ldb/ldb.c](1994/ldb/ldb.c) +### Information: [1994/ldb/README.md](1994/ldb/README.md) [Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed this to compile with modern systems (see the [thanks-for-fixes.md](thanks-for-fixes.md) file for @@ -766,8 +859,11 @@ might be tampering too much with the entry as it's not a real problem and as a one liner it's already quite long. -## [1994/schnitzi](1994/schnitzi/schnitzi.c) ([README.md])(1994/schnitzi/README.md)) +## 1994/schnitzi + ### STATUS: uses gets() - change to fgets() if possible +### Source code: [1994/schnitzi/schnitzi.c](1994/schnitzi/schnitzi.c) +### Information: [1994/schnitzi/README.md](1994/schnitzi/README.md) The buffer size of this entry is 100 which is very easily overflowed with `gets()` which it uses. Changing it to use `fgets()` is difficult. Even @@ -799,7 +895,7 @@ l u d e - + < s t @@ -848,8 +944,12 @@ can cause a compilation error! Make sure that the output of: can be compiled and the output of that new program when fed itself can also be compiled! -## [1994/shapiro](1994/shapiro/shapiro.c) ([README.md](1994/shapiro/README.md)) + +## 1994/shapiro + ### STATUS: missing file - please provide it +### Source code: [1994/shapiro/shapiro.c](1994/shapiro/shapiro.c) +### Information: [1994/shapiro/README.md](1994/shapiro/README.md) [Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) noted that the README.md file refers to an alternative version of the code that is not @@ -885,8 +985,11 @@ Since it works there is no need to fix this except for a challenge to yourself. # 1995 -## [1995/cdua](1995/cdua/cdua.c) ([README.md](1995/cdua/README.md)) +## 1995/cdua + ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [1995/cdua/cdua.c](1995/cdua/cdua.c) +### Information: [1995/cdua/README.md](1995/cdua/README.md) This did not originally compile under macOS and after it did compile under macOS, it crashed. [Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) @@ -899,8 +1002,11 @@ supposed to be printed again and one is supposed to press a key as at that point it calls `getchar()` via the pointer `m`. So this is a feature not a bug. -## [1995/vanschnitz](1995/vanschnitz/vanschnitz.c) ([README.md](1995/vanschnitz/README.md)) +## 1995/vanschnitz + ### STATUS: missing file - please provide it +### Source code: [1995/vanschnitz/vanschnitz.c](1995/vanschnitz/vanschnitz.c) +### Information: [1995/vanschnitz/README.md](1995/vanschnitz/README.md) The authors stated that they included a version that allows people with just K&R compilers to use the program but this file is missing. Can you provide it? @@ -910,8 +1016,12 @@ We would appreciate anyone who has it or even just knows the name! Thank you. # 1996 -## [1996/august](1996/august/august.c) ([README.md](1996/august/README.md)) + +## 1996/august + ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [1996/august/august.c](1996/august/august.c) +### Information: [1996/august/README.md](1996/august/README.md) [Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed a segfault in this program that prevented it from working in gcc. It is known, however, that @@ -919,16 +1029,23 @@ some compilers (like clang) will compile the code so that it enters an infinite loop. See the README.md file for an example command that this can happen with. -## [1996/gandalf](1996/gandalf/gandalf.c) ([README.md](1996/gandalf/README.md)) +## 1996/gandalf + ### STATUS: missing or dead link - please provide them +### Source code: [1996/gandalf/gandalf.c](1996/gandalf/gandalf.c) +### Information: [1996/gandalf/README.md](1996/gandalf/README.md) The link was http://www.tc3.co.uk/~gandalf/G.HTML but this no longer exists as it was instead requiring a login / password. Do you have an updated link? We welcome your help! -## [1996/jonth](1996/jonth/jonth.c) ([README.md](1996/jonth/README.md)) + +## 1996/jonth + ### STATUS: missing or dead link - please provide them +### Source code: [1996/jonth/jonth.c](1996/jonth/jonth.c) +### Information: [1996/jonth/README.md](1996/jonth/README.md) As well the link which was http://www.uio.no/~jonth is no longer valid and there's no archive on the Internet Wayback Machine. Do you know of a proper URL? @@ -939,10 +1056,15 @@ We greatly appreciate your help here! There was no IOCCC in 1997. + # 1998 -## [1998/dlowe](1998/dlowe/dlowe.c) ([README.md](1998/dlowe/README.md)) + +## 1998/dlowe + ### STATUS: missing or dead link - please provide them +### Source code: [1998/dlowe/dlowe.c](1998/dlowe/dlowe.c) +### Information: [1998/dlowe/README.md](1998/dlowe/README.md) The domain http://pootpoot.com no longer exists as it once did. The judges have given a script that can be used to make a similar page (**warning: not checked @@ -950,14 +1072,21 @@ for security in modern days!**). Do you have a server with enough bandwidth and would like to set it up? We'll gladly thank you in the README.md file and link to the page as well! You'll have IOCCC fame for reviving a pootifier! :-) -## [1998/dloweneil](1998/dloweneil/dloweneil.c) ([README.md](1998/dloweneil/README.md)) + +## 1998/dloweneil + ### STATUS: missing or dead link - please provide them +### Source code: [1998/dloweneil/dloweneil.c](1998/dloweneil/dloweneil.c) +### Information: [1998/dloweneil/README.md](1998/dloweneil/README.md) See above entry [1998/dlowe](1998/dlowe/dlowe.c). -## [1998/schnitzi](1998/schnitzi/schnitzi.c) ([README.md](1998/schnitzi/README.md)) +## 1998/schnitzi + ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [1998/schnitzi/schnitzi.c](1998/schnitzi/schnitzi.c) +### Information: [1998/schnitzi/README.md](1998/schnitzi/README.md) [Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed this to work for modern systems but he notes a couple compile warnings to ignore. @@ -996,10 +1125,15 @@ $ ./schnitzi 9|wc -l There was no IOCCC in 1999. + # 2000 -[2000/primenum](2000/primenum/primenum.c) ([README.md](2000/primenum/README.md)) + +## 2000/primenum + ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [2000/primenum/primenum.c](2000/primenum/primenum.c) +### Information: [2000/primenum/README.md](2000/primenum/README.md) This program does not do what you might think it does! Running it like: @@ -1015,8 +1149,12 @@ fix this (in fact it was originally done but rolled back). As well there is a known crash that's also a feature. -## [2000/rince](2000/rince/rince.c) ([README.md](2000/rince/README.md)) + +## 2000/rince + ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [2000/rince/rince.c](2000/rince/rince.c) +### Information: [2000/rince/README.md](2000/rince/README.md) If `DISPLAY` is not set the program will very likely crash, do something strange (or if you're very unlucky your computer might [halt and catch @@ -1025,8 +1163,12 @@ fire](https://en.wikipedia.org/wiki/Halt_and_Catch_Fire_(computing))! :-) ). # 2001 -## [2001/anonymous](2001/anonymous/anonymous.c) ([README.md](2001/anonymous/README.md)) + +## 2001/anonymous + ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [2001/anonymous/anonymous.c](2001/anonymous/anonymous.c) +### Information: [2001/anonymous/README.md](2001/anonymous/README.md) [Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed this so that it doesn't segfault and then also fixed the functionality of it (but see below). @@ -1046,15 +1188,17 @@ can run ELF binaries but cannot compile 32-bit binaries. Other BSD Unices were not tested. -### STATUS: INABIAF - please **DO NOT** fix - Note also that if you don't specify a file or you specify a non-32-bit ELF file this program will very likely crash or do something strange like slaughter the elves of Imladris :-( -## [2001/bellard](2001/bellard/bellard.c) ([README.md](2001/bellard/README.md)) + +## 2001/bellard + ### STATUS: INABIAF - please **DO NOT** fix ### STATUS: doesn't work with some platforms - please help us fix +### Source code: [2001/bellard/bellard.c](2001/bellard/bellard.c) +### Information: [2001/bellard/README.md](2001/bellard/README.md) The two statuses might seem contradictory but that is a complicated question. The author stated that it only works with i386 linux so on the one hand the fact @@ -1113,18 +1257,29 @@ and it can be run by itself for fun in modern systems, which was not possible before the fixes there. -## [2001/cheong](2001/cheong/cheong.c) ([README.md](2001/cheong/README.md)) +## 2001/cheong + ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [2001/cheong/cheong.c](2001/cheong/cheong.c) +### Information: [2001/cheong/README.md](2001/cheong/README.md) This program will very likely crash or do something different without an arg. -## [2001/dgbeards](2001/dgbeards/dgbeards.c) ([README.md](2001/dgbeards/README.md)) + +## 2001/dgbeards + ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [2001/dgbeards/dgbeards.c](2001/dgbeards/dgbeards.c) +### Information: [2001/dgbeards/README.md](2001/dgbeards/README.md) This program deliberately crashes if it loses (which is what it aims to do). -## [2001/herrmann1](2001/herrmann1/herrmann1.c) ([README.md](2001/herrmann1/README.md) + +## 2001/herrmann1 + ### STATUS: missing files - please provide them +### Source code: [2001/herrmann1/herrmann1.c](2001/herrmann1/herrmann1.c) +### Information: [2001/herrmann1/README.md](2001/herrmann1/README.md) The author referred to the file `herrmann1.turing` but it does not exist not even in the archive. Do you have a copy? Please provide it! @@ -1134,7 +1289,6 @@ in the archive. Do you have a copy? Please provide it! The author also referred to the file `times2.turing` but this is also missing in the archive. Do you have a copy? Please provide it! - ### STATUS: known bug - please help us fix There is also a bug in part. During compilation you're supposed to see some @@ -1143,8 +1297,11 @@ that version 2.95 works but maybe others do as well. Do you have a fix? We would appreciate your help! -## [2001/kev](2001/kev/kev.c) ([README.md](2001/kev/README.md) +## 2001/kev + ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [2001/kev/kev.c](2001/kev/kev.c) +### Information: [2001/kev/README.md](2001/kev/README.md) Sometimes when one player presses `q` it will result in broken pipe on the other end. @@ -1164,15 +1321,21 @@ points. Although it is independent of endianness both systems need the same character set. In other words both have to be ASCII or EBCDIC - not one of each. -## [2001/ollinger](2001/ollinger/ollinger.c) ([README.md)(2001/ollinger/README.md)) + +## 2001/ollinger + ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [2001/ollinger/ollinger.c](2001/ollinger/ollinger.c) +### Information: [2001/ollinger/README.md](2001/ollinger/README.md0 This program will very likely crash or do something else without an arg. +## 2001/schweikh -## [2001/schweikh](2001/schweikh/schweikh.c) ([README.md](2001/schweikh/README.md)) ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [2001/schweikh/schweikh.c](2001/schweikh/schweikh.c) +### Information: [2001/schweikh/README.md](2001/schweikh/README.md) This program will very likely crash or do something else if you do not give it two args. @@ -1182,126 +1345,26 @@ comments for details and a workaround. There's also no way to escape meta characters. -# 2002 - -There was no IOCCC in 2002. - -# 2003 - -There was no IOCCC in 2003. - - - -# 1998 - -## [1998/schnitzi](1998/schnitzi/schnitzi.c) ([README.md](1998/schnitzi/README.md)) -### STATUS: INABIAF - please **DO NOT** fix - -[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed this to work for -modern systems but he notes a couple compile warnings to ignore. - -First if you get the warning: - - warning: incompatible implicit declaration of built-in function 'printf' [-Wbuiltin-declaration-mismatch] - 11 | void g(){ O=j; printf(_); } - | ^~~~~~ - - -please do NOT change it! Doing so will break the generated output. - -Another warning that was introduced but should be ignored (it's required) is: - - - warning: assignment to 'char *' from incompatible pointer type 'char **' [-Wincompatible-pointer-types] - 55 | main(int v,char **c){ O=r_; _d=c; - | ^ - -Please DO NOT change this either. - -If there are any other warnings triggered by your compiler please DO NOT fix -those either! - -Another important note is that as the number passed into the program gets bigger -the number of lines of output gets substantially larger. For instance: - -```sh -$ ./schnitzi 9|wc -l - 771999 -``` - - -# 1999 - -There was no IOCCC in 1999. - -# 2000 - -[2000/primenum](2000/primenum/primenum.c) ([README.md](2000/primenum/README.md)) -### STATUS: INABIAF - please **DO NOT** fix - -This program does not do what you might think it does! Running it like: - -```sh -./primenum 13 -``` - -will seemingly wait for input exactly because it is waiting for input. See the -README.md file or look at the source. - -It also has main() return void even though this is non-standard. Please do not -fix this (in fact it was originally done but rolled back). - - -# 2001 - - -## [2001/bellard](2001/bellard/bellard.c) ([README.md](2001/bellard/README.md)) -### STATUS: probable bug (possibly depending on system) - please help test and if necessary fix - -[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed an initial -segfault and he also fixed the [supplementary -program bellard.otccex.c](2001/bellard/bellard.otccex.c) to test the entry on to not segfault and -seemingly work but he has no 32-bit system to test any further fixes; we -would greatly appreciate anyone's help! It appears that this entry will require -major debugging and to make it work one might need to have a deep understanding -of the ELF format. - -The author said that they compiled it with [gcc version -2.95.2](https://ftp.gnu.org/gnu/gcc/gcc-2.95.2/gcc-everything-2.95.2.tar.gz). We don't know if -a certain gcc version is necessary but it might be helpful to download and -compile that version to test it. - -## [2001/westley](2001/westley/westley.c) ([README.md](2001/westley/README.md)) -### STATUS: missing files - please provide them - -The author referred to the file `card.gif` but this appears to be missing. Do -you have it? If you do please provide it and thank you! - -### STATUS: uses gets() - change to fgets() if possible (in some cases getline() works) - -The code also uses `gets()` which, without redirecting stderr to `/dev/null`, -can show an obnoxious warning every time it's run. In the script -[2001/westley/westley.sh](2001/westley/westley.sh) that [Cody Boone -Ferguson](/winners.html#Cody_Boone_Ferguson) added stderr is in fact redirected -to `/dev/null` to prevent this warning but it would probably be better if it was -changed to use `fgets()` (which he might end up doing). - # 2002 There was no IOCCC in 2002. + # 2003 There was no IOCCC in 2003. + # 2004 +## 2004/gavin -## [2004/gavin](2004/gavin/gavin.c) ([README.md](2004/gavin//README.md)) ### STATUS: compiled executable crashes - please help us fix ### STATUS: doesn't work with some platforms - please help us fix +### Source code: [2004/gavin/gavin.c](2004/gavin/gavin.c) +### Information: [2004/gavin//README.md](2004/gavin//README.md) Segmentation fault will occur in some systems. For instance on macOS with the arm64 chip: @@ -1401,8 +1464,12 @@ gavin_files: boot.b lilo.conf prim gavin_install.txt The current ([Makefile](2004/gavin/Makefile) was modified to try and fit into the current IOCCC build environment. -## [2004/sds](2004/sds/sds.c) ([README.md](2004/sds/README.md)) + +## 2004/sds + ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [2004/sds/sds.c](2004/sds/sds.c) +### Information: [2004/sds/README.md](2004/sds/README.md) The generated code will very likely segfault or do something not intended if not given the right args. See the README.md file for the correct syntax. @@ -1410,8 +1477,12 @@ given the right args. See the README.md file for the correct syntax. # 2005 -## [2005/anon](2005/anon/anon.c) ([README.md](2005/anon/README.md)) + +## 2005/anon + ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [2005/anon/anon.c](2005/anon/anon.c) +### Information: [2005/anon/README.md](2005/anon/README.md) This program sometimes will create unsolvable puzzles :-) just to hook you. As a protection against this - and to prevent you from spending too much time on @@ -1423,16 +1494,24 @@ If you specify more than three args the program might also crash or do something strange. This might also happen if you specify excessively large board dimensions. Try `100 100 100` for instance and see what happens! -## [2005/giljade](2005/giljade/giljade.c) ([README.md](2005/giljade/README.md)) + +## 2005/giljade + ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [2005/giljade/giljade.c](2005/giljade/giljade.c) +### Information: [2005/giljade/README.md](2005/giljade/README.md) This entry will very likely segfault or do something strange if the source code does not exist. This entry requires that `sed` and `make` are in the path. -## [2005/mynx](2005/mynx/mynx.c) ([README.md](2005/mynx/README.md)) + +## 2005/mynx + ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [2005/mynx/mynx.c](2005/mynx/mynx.c) +### Information: [2005/mynx/README.md](2005/mynx/README.md) [Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) notes that, though probably obvious, this entry will not work with https. He added an alt version @@ -1445,8 +1524,12 @@ to including the [IOCCC website](https://www.ioccc.org) itself. # 2006 -## [2006/hamre](2006/hamre/hamre.c) ([README.md](2006/hamre/README.md)) + +## 2006/hamre + ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [2006/hamre/hamre.c](2006/hamre/hamre.c) +### Information: [2006/hamre/README.md](2006/hamre/README.md) This program will very likely crash or do something completely irrational :-) if you don't supply it with an argument. @@ -1456,19 +1539,31 @@ operators supported. Don't try dividing by 0 (zero). -## [2006/monge](2006/monge/monge.c) ([README.md](2006/monge/README.md)) + +## 2006/monge + ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [2006/monge/monge.c](2006/monge/monge.c) +### Information: [2006/monge/README.md](2006/monge/README.md) Incorrect formulas will ungracefully crash the program. -## [2006/stewart](2006/stewart/stewart.c) ([README.md](2006/stewart/README.md)) + +## 2006/stewart + ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [2006/stewart/stewart.c](2006/stewart/stewart.c) +### Information: [2006/stewart/README.md](2006/stewart/README.md) This program will very likely crash or do something funny if the file does not exist or cannot be opened. -## [2006/toledo2](2006/toledo2/toledo2.c) ([README.md](2006/toledo2/README.md)) + +## 2006/toledo2 + ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [2006/toledo2/toledo2.c](2006/toledo2/toledo2.c) +### Information: [2006/toledo2/README.md](2006/toledo2/README.md) [Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed this program to not crash in macOS (it appeared to work fine in fedora linux on an `x86_64` @@ -1499,19 +1594,34 @@ start the same process with another file'. This does not seem to work but it might be not enough information or a misunderstanding. - # 2007 + +There was no IOCCC in 2007. + + # 2008 + +There was no IOCCC in 2008. + + # 2009 + +There was no IOCCC in 2009. + + # 2010 -These years did not have an IOCCC. +There was no IOCCC in 2010. # 2011 -## [2011/dlowe](2011/dlowe/dlowe.c) ([README.md](2011/dlowe/README.md)) + +## 2011/dlowe + ### STATUS: missing or dead link - please provide them +### Source code: [2011/dlowe/dlowe.c](2011/dlowe/dlowe.c) +### Information: [2011/dlowe/README.md](2011/dlowe/README.md) The author's website, http://www.pootpoot.net, no longer exists as it once did, instead being something else entirely. The Internet Wayback Machine, although it @@ -1532,8 +1642,11 @@ tends to result in empty output. * Will crash and die horribly if it runs out of memory. -## [2011/richards](2011/richards/richards.c) ([README.md](2011/richards/README.md)) +## 2011/richards + ### STATUS: doesn't work with some platforms - please help us fix +### Source code: [2011/richards/richards.c](2011/richards/richards.c) +### Information: [2011/richards/README.md](2011/richards/README.md) This does not appear to work with macOS, resulting in a segfault (and sometimes a bus error). @@ -1557,8 +1670,6 @@ pointers were changed a bit but this has not helped solve the problem with macOS. A few things that were noticed depending on `asan` sanitisers specified. With `address` in linux: - - ``` richards.c:101:9: runtime error: null pointer passed as argument 2, which is declared to never be null ``` @@ -1578,7 +1689,7 @@ Okay but what about argument 2? Well `W` is defined as: #define W(c) e=memmove(e,x[(u)c], y[(u)c])+y[(u)c]; ``` -so it would appear that +so it would appear that ```c x[(u)c] @@ -1653,7 +1764,7 @@ Shadow bytes around the buggy address: 0x00702df3ac10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Shadow byte legend (one shadow byte represents 8 application bytes): Addressable: 00 - Partially addressable: 01 02 03 04 05 06 07 + Partially addressable: 01 02 03 04 05 06 07 Heap left redzone: fa Freed heap region: fd Stack left redzone: f1 @@ -1743,8 +1854,11 @@ defined. Do you have a fix? We welcome it! -## [2011/vik](2011/vik/vik.c) ([README.md](2011/vik/README.md)) +## 2011/vik + ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [2011/vik/vik.c](2011/vik/vik.c) +### Information: [2011/vik/README.md](2011/vik/README.md) The author stated that the program will crash if no argument is passed to the program though we note that your computer might also [halt and catch @@ -1753,8 +1867,12 @@ fire](https://en.wikipedia.org/wiki/Halt_and_Catch_Fire_(computing)) :-) # 2012 -## [2012/vik](2012/vik/vik.c) ([README.md](2012/vik/README.md)) + +## 2012/vik + ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [2012/vik/vik.c](2012/vik/vik.c) +### Information: [2012/vik/README.md](2012/vik/README.md) The author stated that the program will crash if no argument is passed to the program or if invalid arguments or images of mismatching sizes or unsupported @@ -1765,8 +1883,12 @@ fire](https://en.wikipedia.org/wiki/Halt_and_Catch_Fire_(computing)) :-) # 2013 -## [2013/cable3](2013/cable3/cable3.c) ([README.md](2013/cable3/README.md)) + +## 2013/cable3 + ### STATUS: missing files - please provide them +### Source code: [2013/cable3/cable3.c](2013/cable3/cable3.c) +### Information: [2013/cable3/README.md](2013/cable3/README.md) Many fixes and improvements were made by Cody but he observed that the author referred to a file that is nowhere to be found: not in the directory or the @@ -1776,8 +1898,12 @@ The file is `hd.img`. Do you have it? Please provide it! -## [2013/dlowe](2013/dlowe/dlowe.c) ([README.md](2013/dlowe/README.md)) + +## 2013/dlowe + ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [2013/dlowe/dlowe.c](2013/dlowe/dlowe.c) +### Information: [2013/dlowe/README.md](2013/dlowe/README.md) This program will possibly crash or draw something strange with 0 args. Then again it might not. :-) This is easy to fix but would add bytes and since the @@ -1788,8 +1914,12 @@ exercise to see if you understand the code. You can try and answer the questions, too: when will it crash? When will it draw something funny (or will it? :-) ) and when will it just do nothing? -## [2013/hou](2013/hou/hou.c) ([README.md](2013/hou/README.md)) + +## 2013/hou + ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [2013/hou/hou.c](2013/hou/hou.c) +### Information: [2013/hou/README.md](2013/hou/README.md) This program will not terminate on its own; you must kill `hou` (but not Qiming Hou :-) ) yourself. This should not be fixed. @@ -1798,8 +1928,11 @@ Hou :-) ) yourself. This should not be fixed. # 2014 -## [2014/vik](2014/vik/prog.c) ([README.md](2014/vik/README.md)) +## 2014/vik + ### STATUS: known bug - please help us fix +### Source code: [2014/vik/prog.c](2014/vik/prog.c) +### Information: [2014/vik/README.md](2014/vik/README.md) [Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) discovered a bug that shows itself in some cases (it works in others) when working on his winning @@ -1811,20 +1944,40 @@ He provides a tip in testing the problem: it might help to use his Enigma machine to find problems as it will allow you to verify what is correct and what is not. Again see his README.md for details! + # 2015 +There was no known bugs and (Mis)features for 2015. + + +# 2016 + +There was no IOCCC in 2016. + + +# 2017 + +There was no IOCCC in 2017. + # 2018 -## [2018/algmyr](2018/algmyr/algmyr.c) ([README.md)(2018/algmyr/README.md])) + +## 2018/algmyr + ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [2018/algmyr/algmyr.c](2018/algmyr/algmyr.c) +### Information: [2018/algmyr/README.md](2018/algmyr/README.md) This entry is known to crash if a file cannot be opened. This is noted by the author and is easy enough to fix but need not be. -## [2018/hou](2018/hou/prog.c) ([README.md](2018/hou/README.md)) +## 2018/hou + ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [2018/hou/prog.c](2018/hou/prog.c) +### Information: [2018/hou/README.md](2018/hou/README.md) When you run it you will see something like: @@ -1839,8 +1992,12 @@ but this is expected and the file `ioccc.html` will be generated properly. # 2019 -## [2019/duble](2019/duble/prog.c) ([README.md](2019/duble/README.md) + +## 2019/duble + ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [2019/duble/prog.c](2019/duble/prog.c) +### Information: [2019/duble/README.md](2019/duble/README.md) This program will very likely leave sockets lying about in the current working directory. For instance [Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) @@ -1873,8 +2030,12 @@ find . -name '.[A-Z]*' -delete though one might want to check that the program is not currently running. :-) -## [2019/ciura](2019/ciura/prog.c) ([README.md](2019/ciura/README.md)) + +## 2019/ciura + ### STATUS: known bug - please help us fix +### Source code: [2019/ciura/prog.c](2019/ciura/prog.c) +### Information: [2019/ciura/README.md](2019/ciura/README.md) [Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed the scripts so that the locale is correct (or at least correct for the commands to be run @@ -1887,14 +2048,21 @@ they did work for some. If you can identify the problem we would appreciate the help! -## [2019/endoh](2019/endoh/prog.c) ([README.md](2019/endoh/README.md)) +## 2019/endoh + ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [2019/endoh/prog.c](2019/endoh/prog.c) +### Information: [2019/endoh/README.md](2019/endoh/README.md) As a backtrace quine this entry is **SUPPOSED to segfault** so this should not be touched either. -## [2019/poikola](2019/poikola/prog.c) ([README.md](2019/poikola/README.md)) + +## 2019/poikola + ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [2019/poikola/prog.c](2019/poikola/prog.c) +### Information: [2019/poikola/README.md](2019/poikola/README.md) This program will not validate input so it might fail or get stuck if invoked erroneously. @@ -1902,8 +2070,12 @@ erroneously. # 2020 -## [2020/burton](2020/burton/prog.c) ([README.md](2020/burton/README.md)) + +## 2020/burton + ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [2020/burton/prog.c](2020/burton/prog.c) +### Information: [2020/burton/README.md](2020/burton/README.md) This entry is known to crash if no arg is specified. Although easy to fix it is documented and should not be fixed (of course you may fix it to see if you can @@ -1912,8 +2084,12 @@ but it shouldn't be made into a pull request). It will also show funny output with more than one arg. This should not be fixed either. But can you figure out why this happens? -## [2020/ferguson1](2020/ferguson1/prog.c) ([README.md](2020/ferguson1/README.md)) + +## 2020/ferguson1 + ### STATUS: INABIAF - please **DO NOT** fix +### Source code: [2020/ferguson1/prog.c](2020/ferguson1/prog.c) +### Information: [2020/ferguson1/README.md](2020/ferguson1/README.md) There are some things that might appear to be bugs but are actually features or things that are misinterpreted as bugs. See his @@ -1922,8 +2098,29 @@ things that are misinterpreted as bugs. See his # 2021 + +There was no IOCCC in 2021. + + # 2022 +There was no IOCCC in 2022. + + +# 2023 + +There was no IOCCC in 2023. + + +# Final words + +We hope this document was of use to you in determining which entries are known +to have a problem, what entries are known to have features that are not bugs and +so on. We also thank you for going through this document and, if you propose any +[fixes](/thanks-for-fixes.md) via a [GitHub pull +request](https://github.com/ioccc-src/temp-test-ioccc/pulls) or otherwise, we +thank you as well for the help! We will happily add you to the + There was no IOCCC in these years. # 2023