Merge pull request #1165 from xexyl/1990-baruch-original

Make 1990/baruch look slightly more like original
This commit is contained in:
Landon Curt Noll authored and GitHub committed 2023-10-24 18:48:28 -07:00
commit 7a6b9acc96
5 files changed
+213 -166

No files matched your search

+1 -1
View File
@@ -39,7 +39,7 @@ include ../../var.mk
# Common C compiler warnings to silence
#
CSILENCE= -Wno-error -Wno-implicit-function-declaration -Wno-logical-op-parentheses \
-Wno-string-plus-int -Wno-strict-prototypes
-Wno-string-plus-int -Wno-strict-prototypes -Wno-implicit-int
# Common C compiler warning flags
#
+1 -1
View File
@@ -1,4 +1,4 @@
int v,i,j,k,l,s,a[99];
v,i,j,k,l,s,a[99];
main()
{
for(scanf("%d",&s);*a-s;v=a[j*=v]-a[i],k=i<s,j+=(v=j<s&&(!k&&!!printf(2+"\n\n%c"-(!l<<!j)," #Q"[l^v?(l^j)&1:2])&&++l||a[i]<s&&v&&v-i+j&&v+i-j))&&!(l%=s),v||(i==j?a[i+=k]=0:++a[i])>=s*k&&++a[--i])
+82 -82
View File
@@ -428,7 +428,7 @@ Cody!
# 1984
## [1984/decot](1984/decot/decot.c) ([README.md](1984/decot/README.md)
## STATUS: INABIAF - please **DO NOT** fix
### STATUS: INABIAF - please **DO NOT** fix
The purpose of this program is to print out a string of rubbish. In particular
you should see something like:
@@ -444,7 +444,7 @@ without a newline after the `\`. This is not a bug.
## [1984/laman](1984/laman/laman.c) ([README.md](1984/laman/README.md))
## STATUS: INABIAF - please **DO NOT** fix
### STATUS: INABIAF - please **DO NOT** fix
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.
@@ -456,14 +456,14 @@ arg. It likely won't do anything at all if the arg is not a positive number.
## [1986/august](1986/august/august.c) ([README.md](1986/august/README.md))
## STATUS: INABIAF - please **DO NOT** fix
### STATUS: INABIAF - please **DO NOT** fix
This entry is known to segfault after printing its output. It was documented by
the judges and shouldn't be fixed.
## [1986/hague](1986/hague/hague.c) ([README.md](1986/hague/README.md))
## STATUS: uses gets() - change to fgets() if possible
### STATUS: uses gets() - change to fgets() if possible
This entry uses `gets()` which is unsafe. In particular the buffer size is a
mere 81 and it does not read a single string at command invocation but instead
@@ -492,7 +492,7 @@ this alt version is to be determined later but it's might very well not be.
## [1986/holloway](1986/holloway/holloway.c) ([README.md](1986/holloway/README.md))
## STATUS: INABIAF - please **DO NOT** fix
### STATUS: INABIAF - please **DO NOT** fix
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed this for modern
systems but he points out a warning that should NOT be fixed; he experimented
@@ -539,7 +539,7 @@ or any others.
# 1988
## [1988/dale](1988/dale/dale.c) ([README.md](1988/dale/README.md))
## STATUS: INABIAF - please **DO NOT** fix
### STATUS: INABIAF - please **DO NOT** fix
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
@@ -549,7 +549,7 @@ and does not crash.
## [1989/fubar](1989/fubar/fubar.c) ([README.md](1989/fubar/README.md))
## STATUS: INABIAF - please **DO NOT** fix
### STATUS: INABIAF - please **DO NOT** fix
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
@@ -559,14 +559,14 @@ errors.
## [1989/robison](1989/robison/robison.c) ([README.md](1989/robison/README.md))
## STATUS: INABIAF - please **DO NOT** fix
### STATUS: INABIAF - please **DO NOT** fix
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))
## STATUS: main() function args not allowed - please help us fix
### STATUS: main() function args not allowed - please help us fix
Although [Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed this for
some of the versions that are generated (see below tip) it will not work for all
@@ -602,7 +602,7 @@ files not generated at all. `ver1`, `ver2` and `ver3` are the problematic ones.
The segfault happens when running the main program. Cody fixed that but as noted
as for the generated files only `ver0` will compile with clang.
## STATUS: known bug - please help us fix
### STATUS: known bug - please help us fix
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
@@ -625,7 +625,7 @@ reverse of other code (also wrt names). See the source file and the README.md
## [1990/jaw](1990/jaw/jaw.c) ([README.md](1990/jaw/README.md))
## STATUS: INABIAF - please **DO NOT** fix
### STATUS: INABIAF - please **DO NOT** fix
[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,
@@ -668,7 +668,7 @@ so it should stay with this note.
## [1990/theorem](1990/theorem/theorem.c) ([README.md](1990/theorem/README.md))
## STATUS: INABIAF - please **DO NOT** fix
### STATUS: INABIAF - please **DO NOT** fix
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed many bugs that
prevented this from working properly (including segfaults) but one thing to note
@@ -677,7 +677,7 @@ 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))
## STATUS: INABIAF - please **DO NOT** fix
### STATUS: INABIAF - please **DO NOT** fix
This entry will very likely crash or do something strange without an arg.
@@ -686,15 +686,15 @@ 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))
## STATUS: INABIAF - please **DO NOT** fix
## [1991/dds](1991/dds/dds.c) ([README.md](1991/dds/README.md))
### STATUS: INABIAF - please **DO NOT** fix
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.
This is not a bug but a feature. Please do not fix this except for the
challenge to yourself.
## STATUS: uses gets() - change to fgets() if possible
### STATUS: uses gets() - change to fgets() if possible
That being said the compiled code uses `gets()` not `fgets()`. Can you fix this?
It's quite complicated to do: the `s` array is certainly relevant and you can
@@ -704,7 +704,7 @@ 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))
## STATUS: INABIAF - please **DO NOT** fix
### STATUS: INABIAF - please **DO NOT** fix
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
@@ -718,13 +718,13 @@ possibility. Can you find out how?
# 1992
## [1992/buzzard.1](1992/buzzard.1/buzzard.1.c) ([README.md](1992/buzzard.1/README.md))
## STATUS: INABIAF - please **DO NOT** fix
### STATUS: INABIAF - please **DO NOT** fix
This entry will crash without enough args (2).
## [1992/kivinen](1992/kivinen/kivinen.c) ([README.md](1992/kivinen/README.md))
## STATUS: INABIAF - please **DO NOT** fix
### STATUS: INABIAF - please **DO NOT** fix
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
@@ -733,7 +733,7 @@ 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))
## STATUS: doesn't work with some compilers - please provide alternative code
### STATUS: doesn't work with some compilers - please provide alternative code
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()`.
@@ -805,7 +805,7 @@ 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))
## STATUS: INABIAF - please **DO NOT** fix
### STATUS: INABIAF - please **DO NOT** fix
This program and the alternate version will very likely crash or
[nuke](https://en.wikipedia.org/wiki/Nuclear_weapon) the [entire
@@ -817,13 +817,13 @@ encourage you to test it. This should not be fixed.
# 1993
## [1993/plummber](1993/plummer/plummer.c) ([README.md](1993/plummer/README.md))
## STATUS: INABIAF - please **DO NOT** fix
### STATUS: INABIAF - please **DO NOT** fix
If not enough args are specified this program will likely crash or do something
else. This should NOT be fixed.
## [1993/lmfjyh](1993/lmfjyh/lmfjyh.c) ([README.md](1993/lmfjyh/README.md))
## STATUS: INABIAF - please **DO NOT** fix
### STATUS: INABIAF - please **DO NOT** fix
This entry relied on a bug in gcc that was fixed with gcc version 2.3.3. This
cannot be fixed for modern systems as the bug is long gone.
@@ -834,13 +834,13 @@ 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))
## STATUS: INABIAF - please **DO NOT** fix
### STATUS: INABIAF - please **DO NOT** fix
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))
## STATUS: INABIAF - please **DO NOT** fix
### STATUS: INABIAF - please **DO NOT** fix
[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
@@ -857,7 +857,7 @@ one liner it's already quite long.
## [1994/schnitzi](1994/schnitzi/schnitzi.c) ([README.md])(1994/schnitzi/README.md))
## STATUS: uses gets() - change to fgets() if possible
### STATUS: uses gets() - change to fgets() if possible
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
@@ -939,7 +939,7 @@ 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))
## STATUS: missing file - please provide it
### STATUS: missing file - please provide it
[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
@@ -976,7 +976,7 @@ Since it works there is no need to fix this except for a challenge to yourself.
## [1995/cdua](1995/cdua/cdua.c) ([README.md](1995/cdua/README.md))
## STATUS: INABIAF - please **DO NOT** fix
### STATUS: INABIAF - please **DO NOT** fix
This did not originally compile under macOS and after it did compile under
macOS, it crashed. [Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson)
@@ -990,7 +990,7 @@ 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))
## STATUS: missing file - please provide it
### STATUS: missing file - please provide it
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?
@@ -1001,7 +1001,7 @@ 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))
## STATUS: INABIAF - please **DO NOT** fix
### STATUS: INABIAF - please **DO NOT** fix
[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
@@ -1010,7 +1010,7 @@ 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))
## STATUS: missing or dead link - please provide them
### STATUS: missing or dead link - please provide them
The link was http://www.tc3.co.uk/~gandalf/G.HTML but this no longer exists as
it was instead requiring a login / password.
@@ -1018,7 +1018,7 @@ 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))
## STATUS: missing or dead link - please provide them
### STATUS: missing or dead link - please provide them
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?
@@ -1032,7 +1032,7 @@ There was no IOCCC in 1997.
# 1998
## [1998/dlowe](1998/dlowe/dlowe.c) ([README.md](1998/dlowe/README.md))
## STATUS: missing or dead link - please provide them
### 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
@@ -1041,13 +1041,13 @@ 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
### 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
### 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.
@@ -1089,7 +1089,7 @@ 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
### STATUS: INABIAF - please **DO NOT** fix
This program does not do what you might think it does! Running it like:
@@ -1106,7 +1106,7 @@ 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
### 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
@@ -1116,7 +1116,7 @@ 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
### 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).
@@ -1136,15 +1136,15 @@ can run ELF binaries but cannot compile 32-bit binaries.
Other BSD Unices were not tested.
## STATUS: INABIAF - please **DO NOT** fix
### 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
### 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
@@ -1204,28 +1204,28 @@ before the fixes there.
## [2001/cheong](2001/cheong/cheong.c) ([README.md](2001/cheong/README.md))
## STATUS: INABIAF - please **DO NOT** fix
### 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
### 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
### 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
### 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
### 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
@@ -1234,7 +1234,7 @@ appreciate your help!
## [2001/kev](2001/kev/kev.c) ([README.md](2001/kev/README.md)
## STATUS: INABIAF - please **DO NOT** fix
### STATUS: INABIAF - please **DO NOT** fix
Sometimes when one player presses `q` it will result in broken pipe on the other
end.
@@ -1255,14 +1255,14 @@ 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
### 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
### STATUS: INABIAF - please **DO NOT** fix
This program will very likely crash or do something else if you do not give it
two args.
@@ -1285,7 +1285,7 @@ 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
### 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.
@@ -1327,7 +1327,7 @@ 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
### STATUS: INABIAF - please **DO NOT** fix
This program does not do what you might think it does! Running it like:
@@ -1346,7 +1346,7 @@ fix this (in fact it was originally done but rolled back).
## [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
### 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
@@ -1362,12 +1362,12 @@ 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
### 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)
### 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
@@ -1390,8 +1390,8 @@ There was no IOCCC in 2003.
## [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
### STATUS: compiled executable crashes - please help us fix
### STATUS: doesn't work with some platforms - please help us fix
Segmentation fault will occur in some systems. For instance on macOS with the
arm64 chip:
@@ -1492,7 +1492,7 @@ 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))
## STATUS: INABIAF - please **DO NOT** fix
### STATUS: INABIAF - please **DO NOT** fix
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.
@@ -1501,7 +1501,7 @@ 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))
## STATUS: INABIAF - please **DO NOT** fix
### STATUS: INABIAF - please **DO NOT** fix
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
@@ -1514,7 +1514,7 @@ 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))
## STATUS: INABIAF - please **DO NOT** fix
### STATUS: INABIAF - please **DO NOT** fix
This entry will very likely segfault or do something strange if the source code
does not exist.
@@ -1522,7 +1522,7 @@ 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))
## STATUS: INABIAF - please **DO NOT** fix
### STATUS: INABIAF - please **DO NOT** fix
[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
@@ -1536,7 +1536,7 @@ to including the [IOCCC website](https://www.ioccc.org) itself.
# 2006
## [2006/hamre](2006/hamre/hamre.c) ([README.md](2006/hamre/README.md))
## STATUS: INABIAF - please **DO NOT** fix
### STATUS: INABIAF - please **DO NOT** fix
This program will very likely crash or do something completely irrational :-) if
you don't supply it with an argument.
@@ -1547,18 +1547,18 @@ operators supported.
Don't try dividing by 0 (zero).
## [2006/monge](2006/monge/monge.c) ([README.md](2006/monge/README.md))
## STATUS: INABIAF - please **DO NOT** fix
### STATUS: INABIAF - please **DO NOT** fix
Incorrect formulas will ungracefully crash the program.
## [2006/stewart](2006/stewart/stewart.c) ([README.md](2006/stewart/README.md))
## STATUS: INABIAF - please **DO NOT** fix
### STATUS: INABIAF - please **DO NOT** fix
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))
## STATUS: INABIAF - please **DO NOT** fix
### STATUS: INABIAF - please **DO NOT** fix
[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`
@@ -1572,7 +1572,7 @@ By design this program is supposed to crash on termination.
You must type in caps (except in strings) and this program is indeed
case-sensitive.
## STATUS: possible bug (possibly depending on system) - please help test and if necessary fix
### STATUS: possible bug (possibly depending on system) - please help test and if necessary fix
The author showed something like this in their remarks:
@@ -1601,14 +1601,14 @@ These years did not have an IOCCC.
# 2011
## [2011/dlowe](2011/dlowe/dlowe.c) ([README.md](2011/dlowe/README.md))
## STATUS: missing or dead link - please provide them
### STATUS: missing or dead link - please provide them
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
archived it, did not load scripts. Do you know if the domain was moved? Do you
have an archive or mirror? Please provide us it! Thank you.
## STATUS: INABIAF - please **DO NOT** fix
### STATUS: INABIAF - please **DO NOT** fix
The author states the following:
@@ -1623,7 +1623,7 @@ tends to result in empty output.
## [2011/richards](2011/richards/richards.c) ([README.md](2011/richards/README.md))
## STATUS: doesn't work with some platforms - please help us fix
### STATUS: doesn't work with some platforms - please help us fix
This does not appear to work with macOS, resulting in a segfault (and sometimes
a bus error).
@@ -1834,7 +1834,7 @@ Do you have a fix? We welcome it!
## [2011/vik](2011/vik/vik.c) ([README.md](2011/vik/README.md))
## STATUS: INABIAF - please **DO NOT** fix
### STATUS: INABIAF - please **DO NOT** fix
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
@@ -1844,7 +1844,7 @@ fire](https://en.wikipedia.org/wiki/Halt_and_Catch_Fire_(computing)) :-)
# 2012
## [2012/vik](2012/vik/vik.c) ([README.md](2012/vik/README.md))
## STATUS: INABIAF - please **DO NOT** fix
### STATUS: INABIAF - please **DO NOT** fix
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
@@ -1856,7 +1856,7 @@ fire](https://en.wikipedia.org/wiki/Halt_and_Catch_Fire_(computing)) :-)
# 2013
## [2013/cable3](2013/cable3/cable3.c) ([README.md](2013/cable3/README.md))
## STATUS: missing files - please provide them
### STATUS: missing files - please provide them
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
@@ -1867,7 +1867,7 @@ The file is `hd.img`.
Do you have it? Please provide it!
## [2013/dlowe](2013/dlowe/dlowe.c) ([README.md](2013/dlowe/README.md))
## STATUS: INABIAF - please **DO NOT** fix
### STATUS: INABIAF - please **DO NOT** fix
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
@@ -1879,7 +1879,7 @@ 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))
## STATUS: INABIAF - please **DO NOT** fix
### STATUS: INABIAF - please **DO NOT** fix
This program will not terminate on its own; you must kill `hou` (but not Qiming
Hou :-) ) yourself. This should not be fixed.
@@ -1889,7 +1889,7 @@ Hou :-) ) yourself. This should not be fixed.
## [2014/vik](2014/vik/prog.c) ([README.md](2014/vik/README.md))
## STATUS: known bug - please help us fix
### STATUS: known bug - please help us fix
[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
@@ -1907,14 +1907,14 @@ is not. Again see his README.md for details!
# 2018
## [2018/algmyr](2018/algmyr/algmyr.c) ([README.md)(2018/algmyr/README.md]))
## STATUS: INABIAF - please **DO NOT** fix
### STATUS: INABIAF - please **DO NOT** fix
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))
## STATUS: INABIAF - please **DO NOT** fix
### STATUS: INABIAF - please **DO NOT** fix
When you run it you will see something like:
@@ -1930,7 +1930,7 @@ 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)
## STATUS: INABIAF - please **DO NOT** fix
### STATUS: INABIAF - please **DO NOT** fix
This program will very likely leave sockets lying about in the current working
directory. For instance [Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson)
@@ -1964,7 +1964,7 @@ 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))
## STATUS: known bug - please help us fix
### STATUS: known bug - please help us fix
[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
@@ -1978,13 +1978,13 @@ help!
## [2019/endoh](2019/endoh/prog.c) ([README.md](2019/endoh/README.md))
## STATUS: INABIAF - please **DO NOT** fix
### STATUS: INABIAF - please **DO NOT** fix
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))
## STATUS: INABIAF - please **DO NOT** fix
### STATUS: INABIAF - please **DO NOT** fix
This program will not validate input so it might fail or get stuck if invoked
erroneously.
@@ -1993,7 +1993,7 @@ erroneously.
# 2020
## [2020/burton](2020/burton/prog.c) ([README.md](2020/burton/README.md))
## STATUS: INABIAF - please **DO NOT** fix
### STATUS: INABIAF - please **DO NOT** fix
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
@@ -2003,7 +2003,7 @@ 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))
## STATUS: INABIAF - please **DO NOT** fix
### STATUS: INABIAF - please **DO NOT** fix
There are some things that might appear to be bugs but are actually features or
things that are misinterpreted as bugs. See his
+63 -44
View File
@@ -130,42 +130,51 @@ can look almost identical.
Although the [thanks-for-fixes.md](/thanks-for-fixes.md) file sometimes gives
commands to tell you how to do this, we have set up make rules to easily do
this. For these you should be in the directory of the entry you wish to see the
diff output.
diff output of.
If you want to see the difference from the _original_ source try:
When we say `entry` below, in a file name, we mean either the winner name or
`prog`. For instance one of Landon's all time favourite entries is
[1984/mullender](1984/mullender/README.md) so the file names would be:
`mullender.orig.c`, `mullender.alt.c` and `mullender.c`. For later years, it
would be instead `prog.orig.c`, `prog.alt.c` and `prog.c`.
```sh
make diff_orig_prog
```
The following `make` rules exist:
* `make diff_orig_prog`:
- This rule will show the diff of the _original_ source to the
current source (that is `entry.orig.c` to `entry.c`).
* `make make diff_alt_orig`:
- This rule will show the diff of the alt code to the original
code (that is `entry.alt.c` to `entry.orig.c`). If no alt code exists
nothing will be shown.
* `make diff_alt_prog`:
- This rule will show the diff of the alt code to the entry as it
stands (that is `entry.alt.c` to `entry.c`).
* `make diff_orig_alt`:
- This rule will show the diff of the original code to the alt code
(that is `entry.orig.c` to `entry.alt.c`).
* `make diff_prog_alt`:
- This rule will show the diff of the entry to the alt code (that is
`entry.c` to `entry.alt.c`).
* `make diff_prog_orig`:
- This rule will show the diff of the entry to the original code (that is
`entry.c` to `entry.orig.c`).
Note that you might see something like:
```
make: [Makefile:158: diff_orig_prog] Error 1 (ignored)
make: [Makefile:170: diff_orig_prog] Error 1 (ignored)
```
but this is perfectly fine and expected.
at the end of the output but this is completely normal if there are differences.
If the alt code is the same as the original, say with
[1984/anonymous](1984/anonymous/README.md), then naturally there is no point in
running the rule and the same applies for all the other rules but this system
allows for easily seeing the diffs.
If however you wish to see the difference between the alt code and the entry
itself, try:
```sh
make diff_alt_prog
```
NOTE: this might show at the end something like:
```
make: [Makefile:163: diff_alt_prog] Error 1 (ignored)
```
The `diff_alt_prog` rule will do nothing if no alt file exists.
If the alt code is the same as the original, say
[1984/anonymous](1984/anonymous/README.md), there is no point in using this
rule.
As some examples we'll first look at one, that has really long lines which
As some examples we'll first look at one that has really long lines which
will make it harder to see what is different,
[2001/anonymous](2001/anonymous/README.md). What you would do is `cd
2001/anonymous` and then do:
@@ -207,10 +216,14 @@ To use these rules but provide a different `diff`, for instance `colordiff`,
just do:
```sh
make DIFF=colordiff diff_orig_prog # for original diff
make DIFF=colordiff diff_alt_prog # for alt diff
make DIFF=colordiff diff_orig_prog # for orig to prog diff
make DIFF=colordiff diff_alt_prog # for alt to prog diff
```
Obviously if you want to view the alt code or the orig code you can just open
the files as described above.
## Q: I cannot get entry XYZZY from year 19xx to compile!
Some winners, particularly winners from long ago, no longer compile on more
@@ -246,9 +259,11 @@ alternative code and/or fixed them. Most entries do now work and the others we
are working on (slowly as other things are also being done and this is on free
time).
In some cases we replaced the original code with code that works for modern
systems but one can view the original code in the `.orig.c` files (sometimes the
original code is also in the directory as a `winner.alt.c` or `prog.alt.c`).
In some cases we replaced the original code (not the `.orig.c` file!) with code
that works for modern systems but one can view the original code in the
`.orig.c` files (sometimes the original code is also in the directory as a
`winner.alt.c` or `prog.alt.c`).
Some entries should not have modern system versions replaced. See below.
## Q: I can't get some entries to work in 64-bit systems that don't support 32-bit!
@@ -274,12 +289,7 @@ actually clang, even `/usr/bin/gcc`.
That being said many (if not most) of these entries have been fixed and some
others will be looked at, when found.
## Q: What is `cb` that is mentioned in some of the older entries?
This was a C beautifier for Unix, both AT&T and Berkeley, but it seems to no
longer be available, code wise, except for Plan 9, but Plan 9 was never used for
judging the IOCCC. A Unix man page for `cb`
[still exists](https://www.ibm.com/docs/en/aix/7.3?topic=c-cb-command).
See also below.
## Q: I can't get XYZZY entry to compile with clang. What can I do?
@@ -298,6 +308,14 @@ At the same time some entries are not designed to work with clang. There might
be alternate code added at some point but as above this depends on free time and
other things that have to be done plus remembering to do it.
## Q: What is `cb` that is mentioned in some of the older entries?
This was a C beautifier for Unix, both AT&T and Berkeley, but it seems to no
longer be available, code wise, except for Plan 9, but Plan 9 was never used for
judging the IOCCC. A Unix man page for `cb`
[still exists](https://www.ibm.com/docs/en/aix/7.3?topic=c-cb-command).
## Q: After running a program my terminal is all messed up! How do I restore my terminal?
The simplest way to do this is to type `reset`. If echo was disabled you can get
@@ -402,6 +420,13 @@ brew install sdl2 sdl12-compat
eval "$(/opt/homebrew/bin/brew shellenv)"
```
##### NOTE: there might be extra SDL packages required
In the case that some entries do not work even with SDL1/SDL2 installed it might
be that you need additional SDL libraries. See the entry's README.md for
details. If something is not noted you're welcome to report it as an issue or
fix it and make a new pull request.
## Q: How do I compile and run entries that use sound in macOS?
This might depend on the entry but in some cases like
@@ -444,12 +469,6 @@ For the original version see the [/archive](/archive) directory where you can
find all the original winning entries. In some cases the `winner.alt.c` is the
original source code.
## Q: Since some entries have been modified over time, how can I view the original entry?
See either the `winner.orig.c` or `prog.orig.c`, depending on the year (earlier
years we did not rename the code to `prog.c` but had it as the winner handle),
in the winning directories.
## Q: I found a bug in a previous winner, what should I do?
We do not 'maintain' the contest winners as such. The code is made available on an 'AS
+66 -38
View File
@@ -11,30 +11,33 @@ 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 many of the improvements including many **very complicated bug
fixes** like [1988/phillipps](1988/phillipps/README.md),
[2001/anonymous](2001/anonymous/README.md) and
[2004/burley](2004/burley/README.md), making entries like
[1986/wall](1986/wall/README.md) not need `-traditional-cpp` (all **very
complicated fixes**), fixing entries to work with clang (some being **very
complicated** like [1991/dds](1991/dds/README.md)), porting entries to
macOS (some being **very complicated** like
[1998/schweikh1](1998/schweikh1/README.md)), fixing code like
[2001/herrmann2](2001/herrmann2/README.md) to work in both 32-bit/64-bit which
*can be* **very complicated**, providing alternate code where useful/necessary,
fixing where possible dead links or removing them, 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!
responsible for most of the improvements and fixes including many **very
complicated bug fixes** like
[1988/phillipps](/thanks-for-fixes.md#1988phillipps-readmemd),
[2001/anonymous](/thanks-for-fixes.md#2001anonymous-readmemd) and
[2004/burley](/thanks-for-fixes.md#2004burley-readmemd), making entries like
[1986/wall](/thanks-for-fixes.md#1986wall-readmemd) not need `-traditional-cpp`
(all **very complicated fixes**), fixing entries to work with clang (some being
**very complicated** like [1991/dds](/thanks-for-fixes.md#1991dds-readmemd)),
porting entries to macOS (some being **very complicated** 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* **very complicated**, providing alternate code
where useful/necessary, fixing where possible dead links or removing them,
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 **very technically challenging** such as
[1989/robison](1989/robison/README.md), [1990/cmills](1990/cmills/README.md),
[1992/lush](1992/lush/README.md) and [2001/ctk](2001/ctk/README.md). **Thank you very
much** for your help!
[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
@@ -76,6 +79,26 @@ know of certain problems or features that matter.
There were some other fixes as well including typos in the Makefiles.
A lot of these fixes were done with his [sgit
tool](https://github.com/xexyl/sgit).
## Typo fixes and consistency improvements
Cody 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) but many were done manually as well.
## [1984/anonymous](1984/anonymous/anonymous.c) ([README.md](1984/anonymous/README.md))
Cody fixed this to work for macOS.
@@ -138,7 +161,7 @@ but not clang - or at least some versions.
To see the difference from start to fixed:
```sh
diff 1984/decot/decot.orig.c 1984/decot/decot.c
cd 1984/decot ; make diff_orig_prog
```
## [1984/mullender](1984/mullender/mullender.c) ([README.md](1984/mullender/README.md]))
@@ -276,7 +299,7 @@ If you'd like to see the difference between the version that requires
`-traditional-cpp` and the fixed version, try:
```sh
diff 1986/wall/wall.alt.c 1986/wall/wall.c
cd 1986/wall ; make diff_alt_prog
```
## [1987/heckbert](1987/heckbert/heckbert.c) ([README.md](1987/heckbert/README.md))
@@ -361,12 +384,14 @@ unlikely(?) but nevertheless suggested case that `putchar()` is not available.
## [1988/dale](1988/dale/dale.c) ([README.md](1988/dale/README.md]))
Cody fixed this twisted entry (as we called it :-) ) for modern compilers,
including making it no longer require `-traditional-cpp`. There were two
problems here to fix, which Cody did.
including making it no longer require `-traditional-cpp`. Fixing
`-traditional-cpp` is, as noted earlier, very complicated, but we encourage you
to compare the fix from the original entry. There was another problem to resolve
as well, however.
One, as noted above, was that the entry required `-traditional-cpp`
(which <strike>not all compilers support</strike> `clang` does not support)
It needed that option in modern systems because of two things it did:
First of all, as noted above, the entry required `-traditional-cpp` (which
<strike>not all compilers support</strike> `clang` does not support) It needed
that option in modern systems because of two things it did:
```c
#define a(x)get/***/x/***/id())
@@ -440,7 +465,7 @@ version in case you have an older compiler or wish to try `-traditional-cpp`.
## [1988/isaak](1988/isaak/isaak.c) ([README.md](1988/isaak/README.md]))
Cody fixed this to work for modern systems. The problem was that the important
function, a redefinition of `exit()`, was not being called in main(). The
function, a redefinition of `exit()`, was not being called in `main()`. The
original version is in [1988/isaak/isaak.alt.c](1988/isaak/isaak.alt.c). See the
README.md file for more details.
@@ -453,11 +478,12 @@ publication, in the remarks, to help understand the entry, and for fun.
Cody fixed this for modern systems. It did not compile with clang because it
requires the second and third args of `main()` to be `char **` but even before
that with gcc it printed random characters.
that with gcc it printed garbage and then crashed.
After fixing it for clang by changing `main()` to call the new function `pain()`
(chosen because it's a pain that clang requires these args to be `char **` :-) )
with the correct args it now works with gcc and clang.
After fixing it for clang by changing the very `main()` (in fact it called
itself up to 12 times!) to call the new function `pain()` (chosen because it's a
pain that clang requires these args to be `char **` :-), which is just as
recursive, with the correct args it now works with both gcc and clang.
Later Cody improved the fix to make it look a bit more like the original, using
K&R style functions, and trying to match the format as best as possible of what
@@ -641,7 +667,9 @@ Although this is appreciated we agree with him that <strike>no one</strike>
[users](https://en.wikipedia.org/wiki/Microsoft_Windows)
[here](https://www.ioccc.org) will need it! :-)
Cody also made the code look more like the original, removing the `int` from
the variables, adding instead `-Wno-implicit-int`. The newline added by the
judges was retained.
## [1990/cmills](1990/cmills/cmills.c) ([README.md](1990/cmills/README.md]))
@@ -1370,7 +1398,7 @@ These also had to be done:
closed prior to executing the program. This is the `f` variable which is of type
`l`, a `#define` for `int *`.
- `munmap()` also had to be called prior to executing the program. This involved
a new `off_t N` so which was added in the `mmap()` call which was then used in
a new `off_t N` which was added in the `mmap()` call which was then used in
the `munmap()` call.
Without those changes the program was not executed after modification which it
@@ -1473,7 +1501,7 @@ by Yusuke.
## [2001/cheong](2001/cheong/cheong.c) ([README.md](2001/cheong/README.md]))
Cody fixed this to work with clang by adding another function that is allowed to
have a third arg as an int, not a `char **`. He chose pain() because it's a four
have a third arg as an int, not a `char **`. He chose `pain()` because it's a four
letter word that would match the format and because it's pain that clang forces
this. :-) This fix makes a point of the author's notes on portability no longer
valid, btw.
@@ -1525,7 +1553,7 @@ version that the author did not note. Do you know what these are?
Cody fixed this so that the when compiling the code the program is not executed
itself by itself which just showed the usage string and exited. The [script
herrmann1.sh](2001/herrmann1/herrmann1.sh) is used to compile the program but
it's also how you invoke the program.
it's also how you invoke the program.
He also fixed the [script herrmann1.sh](2001/herrmann1/herrmann1.sh) for
shellcheck. In particular there were quite a few:
@@ -1542,7 +1570,7 @@ errors/warnings.
Cody fixed this to work with both 64-bit and 32-bit compilers by changing most of
the `int`s (all but that in `main`) to `long`s. He also fixed it to compile with
clang by changing the args of main to be `int` and `char **` respectively and
clang by changing the args of main to be `int` and `char **`, respectively, and
changing specific references to the `argv` arg, casting to `long` (was `int` but
the 64-bit fix requires `long`) which was its old type. The original file, used
for demonstration purposes, as well as if you want to see if your system works
@@ -1857,7 +1885,7 @@ back for arrow keys in the [alternate version](2006/night/night.alt.c).
Cody fixed this entry to work with clang which has a defect with the args to
`main()`: it requires specific types: `int` and `char **` for the first and
latter args.
latter args.
The [alternate version](2006/sloane/sloane.alt.c), which allows one to see what
is going on in modern systems, and which we recommend one use _first_, was