The bugs.md has more details on the bug I discovered when working on
2020/ferguson2. Even the usage in the try section (now in try.sh)
resulted in files that cannot be translated to English right.
The make clobber rule now removes *.raw instead of specific raw files.
This is important for clean up prior to updating the manifest.
Updated .gitignore.
The Makefile was modified in such a way that allows one to easily
redefine the size (in the code the S macro). For instance:
make clobber SIZE=50,50 all
The try.sh was renamed to endoh4.sh as it's more of a wrapper to the
program rather than things to try. Also it now lets one specify more
than one file to feed to the program (in sequence).
The bugs.md was updated - added INABIAF. If the file format is invalid
it will very likely crash.
The additional commands I added cannot come first because the program
(as the bugs.md states and now more clearly) will likely crash (and does
in all the systems I tested) if the file does not exist. This did not
show itself the first time because the files already existed but running
make clobber before the script would remove the image files and thus a
crash (or actually two) would occur the first time the script was run
(second time it would be fine as the files it uses then exist).
The bugs.md refers to the alt try script for testing any fix with the
Apple silicon chip. If someone gets it to work the entry could be
removed from the bugs.md file and the README.md file updated to refer to
the alternate code. As the alternate code does not work (though it has a
different type of crash) the alt build/try is not mentioned in the
README.md file. It is not clear if it's helpful or not to have it in the
README.md at this point as the important part is in bugs.md.
The try.sh script demonstrates both positive numbers and input that is
not a number at all (comparing two different strings).
The bugs.md has a new INABIAF - negative numbers will hang the program.
It is not clear if another version should be added to gracefully handle
this but that can be decided another time. It is not a documented
feature so it might be called a bug to fix.
The script now lets one specify which compiler to use so that one can
(in the case that their cc is clang, for instance like it is with macOS)
specify a path to a real gcc compiler.
A feature is that as the number specified gets bigger so too does the
runtime, the amount of resources and the number of lines of output.
The script has another example command (that isn't too long but is a
number of pages of less(1) output).
Also updated bugs.md with another case where the program might 'break
into tiny bits' but as a feature not a bug. Checking the source code
will give all you need to know about the 'problem' quite well.
There actually is a file missing. It is not in the archive: IMPORT.COM.
Thus it has been added back to bugs.md until such a time as we can find
it or be provided it.
The .COM files should not be links. This has been discussed and it was
agreed to not link to them as they'll just be downloaded and they
already are in the repo.
Removed the zip file as the files have already been extracted. This is
how it was done with other entries too and this is what was desired as
well.
Rather than it not being a bug only the links were wrong (likely due to
a yank paste error on my part). Thus the bug noted in
1992/adrian/README.md was added back to bugs.md because it is considered
a bug and it is the correct entry as well.
Should be in thanks file as it updates what I originally fixed (maybe my
changing the implicit ints to 'FILE *'s only worked for arm64 for some
reason but I don't know): not in bugs.md file.
These files in particular were previously to be downloaded prior to use
of the program (or try section). These files have now been downloaded
and added to the repo.
Format/typo check README.md file.
Updated bugs.md with features/limitations.
The try.sh script does a number of things. First it checks if either
play(1) or aplay(1) are installed. If neither are installed it warns the
user and tells them they will have to play the WAV files manually (it'll
also refer them to the FAQ about SoX which is where play(1) comes from).
If either are installed it'll use that program (in order given above).
After setting that up it converts pi.wav to the digits and then plays
pi.wav (if possible). Then it does the same with jenny (see README.md
for details). Finally it does it for 10666-28 (the closest that
resembles IOCCC-28). It also plays one (if possible, obviously) from
stdin (written from the program).
Updated bugs.md with a limitation the author noted.
Format/typo checked README.md file.
Updated .gitignore.
Updated chocolate-cake.md file with some added notes.
Added PDF file ioccc-and-chocolate.pdf which was downloaded from a
website I originally linked to in chocolate-cake.md.
Removed html files based on the markdown files as the markdown files are
the source of them and this is being done differently now. In other
words index.html and inventory.html have not been removed, just those
that were created by me (or from what I wrote).
This does not format fix anything as I can always do that later. It is
after all my entry.
Minor fix in play.sh.
Minor update in bugs.md.
I believe this completes the review of 2020/ferguson1 but it's entirely
possible (almost certain) that things could be cleaned up more. However
in order to get through the rest of 2020 I am only doing quick passes
over my entries.
Why a try.sh for this? It shows that you can also automate the play (it
happens to come from the author's remarks, however, so there's that
too). Then it tells you to be serious by playing with a friend, either
real or imagined, rather than doing something so silly.
Update bugs.md with a INABIAF section.
The README.md file has been format/typo checked.
The alt code is so one can more easily filter the long output: it prints
a newline after each number is printed. The try.alt.sh script uses this.
Force -O0: the author stated that with clang they got correct output for
[0123s] but with GCC 6 they only got that with level 0. Since 0 works
with clang and since the author stated that the compilers used were
picky I changed it to level 0. Similarly and for the same reason I
changed the C standard to gnu11 from gnu17.
Format/typo check README.md file.
Updated bugs.md: noted that the max file size is 1GB.
I would like to give two quotes from the person this entry was dedicated
to:
'When you are about to jump, you are all alone and have to make your own
decisions. Up there, it's all "up yours".'
and
'I will move to Copenhagen and apply for Swedish citizenship.'
simply because they're funny and ironic (and one is quoted by the
author). These might be found somewhere in this commit.
Add 2018/vokes/example-1.txt and 2018/vokes/example-2.txt as the author
refers to the files (and the try.sh uses them in the same way). This is
important so that the entry can be by itself (which is being
considered).
The README.md file has been format/typo checked.
The bugs.md has been updated but it refers to two sections in the
README.md file as there is a lot to include.
The try.sh script now prompts for input rather than just sleep for 2
seconds.
The README.md file has been format/typo checked.
Added issues reported by the author to bugs.md.
Force disable optimiser as the program doesn't work in some cases with
it enabled. If I recall correctly it crashed in some cases, something
the author noted happens sometimes (it is unknown if it is because they
had it enabled or if it was something else but I have not experienced a
crash since then).
The bugs.md was updated to remind people when debugging crashes that it
would be wise to have -O0 and -g (or if they can -ggdb3). That should be
noted in general for debugging but it's especially useful for crashes
and I'm trying to get this part done so I can resume 2019.
The optimiser must be disabled due to it otherwise crashing in macOS in
some invocations. This has been added to the Makefile, the use of -O0 is
forced and a note has been added to the README.md file.
The bugs.md file has been updated on details of how it uses gets() and
that text has been removed from the thanks file.
Minor format fixes in README.md.
The script added makes use of the author's script (that I added as
mkdict.sh for easier use) after first trying to find a dictionary file.
But one can override the dictionary file with the DICT environmental
variable.
This entry should now truly be done.
The optimiser was left disabled by accident.
The try.sh now adds another file in the archive.
Add entry to bugs.md. There are two issues, or at least one. One issue
might not be an issue but it appears to be. The one that appears to be
was supposed to be added to the bugs.md file ages ago but was missed by
accident.
The Makefile now uses the script fullscreen.sh which should also be
slightly more portable in that it doesn't rely on both stty(1) and
sed(1). Instead it relies on tput(1). Like the Makefile did for stty(1),
the script checks for tput(1). But rather than suggesting that the user
manually update the Makefile (without instructions) it now gives a
command that one can use to do the equivalent. This is assuming that the
environmental variables LINES and COLUMNS exist. Unfortunately these
variables are not available to scripts so it can't be done
automatically. This script also (if tput(1) cannot be found) shows a
more general way of how to change the size of the editor (the README.md
also does this). One can do something like
make clobber LINES=20 COLUMNS=20 all
to get a 20 x 20 editor.
The fullscreen.sh script was added to simplify the above procedure.
The README.md file was format/typo checked.
I updated the bugs.md as well: I noticed another condition where the
program can become locked, forcing one to have to kill it. At the same
time I improved the way to find sockets that are left by the program
(the way before had the problem that other dot files with all cap
letters could be found) and also an improved way to delete them (which
there is no Makefile rule to do). Now bugs.md discusses both the locking
and the sockets being left in the directory.
The try.sh script checks that the terminal size is large enough for two
files, the prog.c (last check) and sample_input.txt (provided by the
author). If it's too small for either it exits as it can't work. The
added ioccc.txt is very short in column and rows so that should not be a
problem (except in very extreme cases?).
The sample_input.txt file had trailing newlines removed because it
showed differences in output otherwise (and shouldn't).
The bugs.md was updated - add INABIAF for this entry.
Format/typo check README.md file.
The save state option is based on the author's remarks that one can
change the W macro to MAP_SHARED. This is defined in the Makefile so a
variable called 'SAVE' was added which if not 1 will result in
MAP_PRIVATE. This way one can run
make clobber SAVE=1 all
and it'll save state, assuming that (if you add a file) you run 'sync'
before exiting. If you don't run sync(1) it's likely the file won't
exist or it'll be corrupt (like a.out from mullender.c). README.md file
updated for this update. Note that the setting the W macro to ${MAP} is
only done for the make targets that had it set to MAP_PRIVATE. This is
because I guess that if it's already set to MAP_SHARED in the Makefile
there is a good reason for this. This is noted in the Makefile.
The bug I discovered happens whether or not state is saved (this had to
be verified before I did the above change that I added when I was
working on this entry some days back but never committed it for this
reason). If you run ./prog and then exit (ctrl-e) if you then run ./prog
again it'll show a strange message as if the image was corrupt. You have
to hit enter at this point (that's important) and then hit ctrl-e again.
When you run it a third time it'll be okay. I did not look at this in
detail but it probably should be fixed.
The Makefile also tries to make the note about preserving images to be
the state of the file (downloaded) at the time the entry won and how any
updates are unofficial stand out more.
Updated Makefile so one can easily change the 'Z' macro by doing:
make clobber MEMORY=... all
This is not usually useful but there are occasions where it is. As the
README.md points out this value must be a power of two!
The try.sh script runs the program on a number of the mc files, first
showing the input keys as a reminder (it also reminds one to keep in
mind the focus of windows).
The bugs.md is updated to note that it uses gets(3).
Format/typo check README.md file.
I changed the number of years ago that microorganisms appeared on Earth
as the number was off: there are those wondrous hydrothermal vents that
spewed mineral rich waters. Fun fact on the history of the Earth: did
you know that as of 2013 the number of years since the dinosaurs were
wiped out is not 65m years but actually 66m? That means that if you were
born before 2013 and you didn't die right before the revision that
you're in a rare group of people who have had a major historical update
as far as the dinosaurs go. But don't let it get to your head too much!
It also means you're ancient, possibly even a dinosaur, and you're
headed their way. :-) That's the price we must pay for being in that
group.
I'm almost positive that my earlier fixes to the scripts for the other
languages was all that is needed and the reason they don't work is due
to the dictionary and the fact that in some languages it is hard if not
impossible to form perfect pangrams especially with the entire alphabet.
This appears to be the case with German. A point of interest that I put
in the German scripts is:
# Are the umlauts ä, ö, ü and Eszett (ß) letters in the German alphabet? There
# is more than one opinion on the subject but a lot of words do have an umlaut
# (or Umlaut in German). In some (probably all) systems this script outputs
# nothing probably because it's very hard to form a perfect pangram in German,
# if it's not impossible. Nevertheless, we do include the other characters
# whether or not they are in your view considered part of the alphabet for the
# reason that so many words have them.
I put it 'if it's not impossible' because this also depends on what
letters are provided. These scripts give the entry every letter,
however, including those with diacritics so in the case of German it's
not going to work. It is possible to make it work if you remove some
letters or you give a word that has all the letters (but that kind of
defeats the purpose). As for the other languages I don't know if it's
possible or not (and I'm not fluent in German either - I just know
some). A search suggested it's possible in some other languages but the
author noted it's not in Spanish at least according to their estimates.
Nevertheless I believe that the fixes I made are all that's needed so
this entry now has INABIAF in the bugs.md file.
Fixed the Makefile so the alt version would actually build. Added
scripts to use the alt version instead.
Format/typo check README.md file.
Added try.sh and try.alt.sh.
Downloaded and converted the PS file linked to by the author to PDF and
added to repo.
The try.sh runs prog and wc side by side but in a way that is formatted
(including alignment) so it's easier to see what line is from which
program and it also runs make test.
The script cow was renamed cow.sh to help browsers with whether or not
to display or download.
The script check was renamed check.sh to help browsers with whether or
not to display or download.
The script check.sh was fixed in case the 'x' (passed in to the script
as an environmental variable) is not executable (it resets it back to
./prog) and also made to satisfy ShellCheck.
The script cow.sh was fixed for ShellCheck moo (or was it too? :-) ).
The crash.unl is what the judges put in their remarks (and at the end of
the file they say more). It was added so one can see what is meant.
Updated bugs.md for this - INABIAF.
The try.sh script is as usual.
The README.md file has been format/typo checked.
The bugs.md file has also been updated with a INABIAF section. One in
particular might be up to discussion and is easily fixed but it's not
clear yet if it should change so it's not done (for now?).
The issue above notwithstanding this entry should be complete.
Moved thanks-for-fixes.md -> thanks-for-help.md
References to thanks-for-help.md are referred to
as just the _thanks file_.
Updated links to reflect the above file change.
Links to winner files in bugs.md now start with /.
Updated the `/inc/sidenav.default.html` file
to use an improved sidenav menu that includes
a link to "How to enter the IOCCC".
Fixed reference to FAQ entry regarding 'gets()' in `bugs.md`.
Removed some trailing whitespace in `bugs.md`.
Removed some trailing whitespace in `faq.md`.
Fixed links into specific thanks file entries.
Added more info to FAQ 0.0 "How may I submit to the IOCCC?".
The temporary top level HTML files (contact.html, index.html,
judges.html, news.html, winners.html, years.html) have
a consistent set of links (w/o any bold links) that
match the revised `/inc/sidenav.default.html` sidenav menu.
These temporary top level HTML files are not yet being built
and so they do not yet use the `inc/*.html` system.
TODO: Turn contact.html, index.html, judges.html, news.html, winners.html,
and years.html into markdown files that markdown to HTML tools will generate.
The try.sh script also has some fixes in the author's remarks (as in
they were fixed in the author's remarks) - it had "s in the command line
rather than single quotes but some of these command lines had * which
would expand to the files in the directory, causing errors.
The bugs.md has been updated with the issue of not printing 'poot' when
it should. I did some debugging and removed some (obviously nonsense)
ideas I had put in before (without thinking, being too tired, whatever
other reason or reasons). The real issue is a very strange one to be
sure.
I am pretty sure the reason it does not work with macOS (this was
already noted but worth repeating) is the version of perl as the author
noted this as an issue. We still have it as a known bug (some platforms)
but I don't think it's possible to fix without a higher perl version and
neither MacPorts nor Homebrew seem to have this.
The alt code is from the author.
The try.sh script has the example command provided by the judges as well
as some by the author. One was removed because of a syntax error
(removed from the author's examples).
Format/typo check README.md file.
The only thing that has to be done is to update the references to
twitter to note how the IOCCC no longer endorses twitter or whatever the
rocket destroyer wishes to call it (though certainly it won't be worded
like that :-) ).
The mario.sh script runs Super Mario Brothers and the giana.sh script
runs the Great Giana Sisters but each allows the user to specify the
width and height of the game.
Format/typo check README.md.
The bugs.md was updated with features, not bugs to fix.
The bugs.md file has limitations of the entry added to it.
The README.md file was format/typo checked.
The try.sh script is as usual. I also added a command to try in the
'try' section that is not in the try.sh script due to it being long
output but still fun to try.
The demo.sh was renamed try.sh to be like the other entries.
The new script diff.sh runs some commands that I had previously added
(to demonstrate the entry) but which would be better in a script.
Renamed sflen.sh (for sparkline file length) to be slflen.sh (for
sparkline file length also).
Updated bugs.md - added more features that the author noted.
Format/typo check README.md file.
This should complete the review of 2013/dlowe.
As the bug status was a missing file and it was actually hd.img and as
that was added to the repo the entry can be removed from the bugs.md
file.
I also added some important points for the entry about quitting
(elaborating) and also how to input certain keys like alt/ctrl
combinations (amongst others) that the author had later on in the
README.md file. The former might especially be important if someone did
it at the console and was not aware of how to open another console but
even so it can be annoying having to close a tab just to stop a program.
Now I can say that 2013/cable3 is almost certainly complete (review
wise?).