I am aware of some entries that do not compile that I haven't even
thought about fixing yet.
I also need to use my linux box to test the X11 entries (this goes for
other years as well) but that'll come at another time as I rarely am at
sitting at that computer. But the README.md files should be in a better
state.
With clang it did not compile at all; with gcc it segfaulted. Now it
works properly. It's a crescent moon today and that's exactly what is
being shown. This required another function but since it wasn't a
one-liner this doesn't cause any problems with the award either.
Update the README.md files - at least with those not in a previous
commit. The updates mostly include formatting (make them markdown) but
probably also typos here and there. More probably has to be done with
these files.
The 1996/august/.gitignore was updated as well with a file that is
generated by one of the suggested commands.
The author noted in the Makefile that for Solaris the compiler flag
-I/usr/include should be included so I have added that.
As well I updated the README.md - formatting fixes (possibly typos as
well but no longer sure).
The main link was dead but looking at the Internet Wayback Machine I
found that he changed domains and it's still valid. One entry had a
different URL but with a quick check I could not determine that it had
anything to do with him so I changed it to his own domain (which I
verified is his).
The 2001/westley/.gitignore was also updated as it has other source
files that are generated by the commands in the try section.
It always segfaulted (though with the correct input it still showed the
right results) and when argc == 1 it showed an environmental variable.
The body of the for loop can now be empty (or so it appears). I put the
original in westley.alt.c because it has some interesting techniques in
which he wrote about (which I preserved in the README.md file). I also
put in the original code because I'm not entirely sure if the for loop
really can be empty in all cases. Certainly it can be in the scripts
provided but I don't know if there is a valid invocation that would need
it (but in any case it would always segfault with that loop body).
Updated 1996/westley/.gitignore (added westley.alt) and the Makefile so
that make alt will build westley.alt.
Formatting fixes in README.md.
I made the recommended change by the author so that each number is on a
line by itself rather than one long line. I changed the try section to
stop at the output that was the output noted by the judges. This was
possible with the change of making it a newline rather than a space
after each number.
I had originally proposed the change in commit
9b6b5a0376 but I did not implement it
because the output of the command versus what the try section included
was misleading (maybe that was correct :-) ) and when looking at Yusuke
Endoh's output I missed that it continued after the number (he had '...'
but I missed it in the long line of output). I linked to his analysis as
well. Thank you Yusuke for confirming it is correct output!
This was done by changing the types of the args in main() to be int and
char ** respectively and (where necessary) casting the argv (V) to int
which was the previous type.
I also noted that prior to and after the fix certain invocations
segfaulted though Yusuke Endoh did not have this problem (I linked to
his analysis of the entry).
It became obvious when I actually looked at the code (though I suspected
from output that it was using ANSI) that it was just no longer valid
ANSI escape sequences. Yusuke Endoh made a patch which I used (I have
used ANSI before but it's been a long while). Yusuke guessed it was a
linux thing (reasonable guess) but this also works for macOS. Thank you
Yusuke for your assistance!
It unfortunately does not work well with the macOS default terminal
emulator (didn't test others). I also noted how one should use 'q' to
quit or else the terminal will be insane after you exit (which often
goes - I did say how to restore the terminal sanity too).
I had to make a new function (also four letter word to match the
formatting) that is allowed to have an int as the third arg to it. I
chose the word pain :-) as it's a pain that clang is this way without
providing any option to disable it.
Note that the arg must be an even number of digits. This threw me off
until I read the README.md because on different systems I got different
results for odd number of digits args despite the fact there should be
no difference here as the diff shows.
I noted in bugs.md that there is a bug that remains and I noted the bug
in the README.md too (under the to run section) as it seems like it
should be noted (sometimes the program needs you to press return to
continue solving the maze).
Some entries were added to the bugs.md file.
As well some README.md files were updated wrt the bugs some of which
might have been better in an earlier commit.
Fixing these would actually cause problems. This includes one I fixed
where an incompatible pointer type was introduced. This was necessary to
make it work. I experimented with the other options and it did not work
at all.
Added another section: entries that require -traditional-cpp support.
Also finished an unfinished sentence that was put in (another one was
ironically fixed in the previous commit).
I wasn't sure about this: no other html files are in .gitignore but this
will eventually be generated to a html file so it seems like it might be
good to not have it included in the repo.
I have added sections as not all problems are the same. Some are not
supposed to be touched for instance and others have partial fixes. Some
will work with some compilers but not others. There is one entry (for
now) where things might appear to be bugs but are not (2020/ferguson1).
I added links to each entry along with the README.md file.
I have given tips to the problems in some cases.
Yes some of the entries refer to me and one entry even has a tip related
to the entry I worked on (2020/ferguson2) that helped me discover the
bug as using the Enigma machine can help identify problems (I gave
an example in the README.md file which I also linked to).
The rationale is that it'll become a html file on the main site and
having www.ioccc.org/BUGS.html seems less ideal than
www.ioccc.org/bugs.html though I suppose this is only subjectively
better esp as many distributions of software have a BUGS file (and in
fact I had such a file in 2020/ferguson1 but now it's lower case). Still
this can be debated later I suppose.
In the judges' comments add some humour.
Add a try section.
Note that a file is needed for the program to do anything (that is a
file that exists) - not specifying an arg will exit without doing
anything at all.
Explain how to enter form-feed as this is important.
Fix formatting.
These are mostly just formatting fixes but there might be some typos
here and there.
These years have not been checked thoroughly but I made fixes and want
them in for when I do work on them.
As far as the Makefiles go: notes were added that correspond to the
notes in the README.md files which is why I have put them in the same
commit.
It took two things: get it to compile and then remove bad function
prototypes which were causing a segfault. It worked under linux and of
course it still does.
With a mis-feature (I guess) of the C pre-processor that no longer works
the entry no longer compiled. It needs #define to define (imagine that! :-)
macros.
In some files changed the formatting was fixed to be a proper markdown
file.
There were some typos including that some README.md files that linked to
/winners.html#Cody_Boone_Ferguson actually linked to the non-existent
file /years which obviously would not work.
I also added links to the rest of the places I have fixed entries (but
see below) and I did the same for Yusuke Endoh's fixes.
As well apparently one entry I thought he fixed to compile under modern
systems does not seem to so that entry will have to be revisited another
time. That entry was 1993/jonth.
Those are the main changes here if not all of them.