This was done quite easily with a bit of thought. I generated a script
that could be modified in vim if necessary (as it turned out to be
though some of it could have been generated too but I did not think of
everything at once and it is a hack).
This is how I generated it:
echo '#!/bin/bash' > bin/check_awards.sh ; ( while read -r g ; do echo grep "$g"; done < <(sed -e 's,_,/,g' -e 's/"/\\"/g' tmp/year-auth-prize.csv | awk -F, '{print grep "\x22" $2 "\x22" " " $1 "/" "README.md"}' ); ) >> bin/check_awards.sh
Then I I modified the file (again this was a hack to make it easier and
quicker and better for being tired too) in vim to make the grep use -Hc
so I could pipe it to 'grep :0'. This found the files without the right
award. So the final command was:
sh bin/check_awards.sh |grep :0
though I did have to edit some files several times.
For reference the script has been added to the repo too but with +x
permissions.
This change also required updating the CSV file in tmp/.
With a tip from Yusuke Endoh I noticed that if you slow down the call to
write() you see some fun output. Now to make it as close to possible as
the original (there already is alt code! - mostly for fun display) I
don't call usleep() unless the macro Z is not 0. This way someone can
do:
make CDEFINE+="-DZ=1000" clobber all
for example but if they just do make clobber all it won't be slow at all
or it'll be as slow as it takes the CPU to run it.
Add alt target to Makefile. Won't work for most systems but the alt code
is there (particularly so people can see how it looked when run on
itself back then) so it might as well be possible to run make alt for
those who have an old compiler.
Format fixes in README.md.
Changed the position of the everything Makefile rule
in select Makefiles to be consistent with other makefiles.
Fixed Makefile for 1986/stein where everything was not
everything (did not depend on alt).
Simply the Makefile header.
Refer to the //www.ioccc.org/bugs.md URL (that will eventually exist).
Now using CC BY-SA 4.0 License to how you may share and adapt the
Makefile.
The years 1984, 1985 and 1986 have had all winning entry README.md files
updated. This includes formatting, adding author's comments (which in
these years means nothing but still have the section there to indicate
that there were no comments) and possibly other things.
I have updated some - not all - of the 1987 winning entry README.md
files. I have to do other things now but I want these committed. I will
work on the other README.md files another time.
Updated the README.md files.
Renamed shapiro/shapiro.orig.c -> shapiro/shapiro.alt.c. This is one of
the exceptions where we have the alt version as this alt version is not
actually in the archive tarball (there are other exceptions for various
reasons).
Updated README.md to refer to the alt version instead. Note that it's
there because it provides fun output and also shows how it originally
looked (which is quite different from the fixed [for modern compilers]
version that I believe I made in an earlier commit but if so I'm not
sure which one).
Unfortunately some entries will either not compile under macOS or not
run correctly. We used a patch from Yusuke Endoh for
1985/applin/applin.c. Thank you Yusuke! This is actually the entry that
does not work right under macOS but it does under linux.
Update main README.md with links.
Update a number of other README.md files with typos and other fixes and
improvements (including fixing invocations and adding a 'Try:' section
to match later year README files).
Update various Makefiles to add notes and to make some entries compile
(in some cases, those that require -traditional-cpp, they will not
compile under clang and we note this).
Update archive/archive-1985.tar.bz2. Why? Because the purpose of the
archive/ files are for the original files and some of the files in there
were not original. See the files 1985/lycklama/lycklama.orig.c and
1985/shapiro/shapiro.orig.c which in the tarball do not have the .orig
added to the name.
To get it to compile we have to pass to the compiler -include unistd.h.
To get it to compile without warnings we had to add -Wno-parentheses to
the compiler invocation.
Updated the README to include an example invocation (using the program
source itself) as the old way no longer works (typing in long lines
directly).
Removed some comments that turn out to not be true (it does not need a
K&R compiler for instance).
In particular the following fixes were made:
-MKFIFo= mkfifo
+MKFIFO= mkfifo
-ZIPGREp= zipgrep
-ZIPINFo= zipinfo
+ZIPGREP= zipgrep
+ZIPINFO= zipinfo
If it's not immediately clear what the problem is the last letter of the
variable names were in lower case.
As per discussions on GitHub the index.html and hint.html files should
be deleted in favour of README.md files (from any
.text/.txt/.markdown/.md files which will be turned into README.md in an
upcoming commit).
The 2020 winners are hinted it, but the source code is not there,
nor are the hints. Someone could look into the HTML and
see what was commented out, but that is not a problem because
WHO won is known and the name of their AWARD is known already.
Moreover a number of the winners have talked about what their
entirs do, so the commented out spoiler text is not a bit problem.
One will find HTML commented out with:
<!-- XXX remove when 2020 is ready
2020 links here
XXX remove when 2020 is ready -->
The "XXX remove when 2020 is ready" string is found at the
start and end comment blocks. Again, soneone could read
what was commented out, but that is OK since most of that
information is known or can be known. The following files
have such HTML comment blocks in them.
./winners.html
./years-spoiler.html
./years.html
In addition, ./all/summary.txt was modified to not
include the 2020 entries for the momemt.
The 2020 winner code AND write-ups are NOT part of this set.
p.s. The all/all.tar.bz2 does not contain the 2020 source code (yet?).