The 64-bit code binaries have been renamed to .alt: anonymous.ten.alt
and anonymous.bed.alt. This is because it's theoretically possible that
they are not compiled as 64-bit binaries (though how this might be I
cannot think of at this time) and in any case they are alt builds
(though they use the same source).
In the case the -m32 fails (whether due to compiler[0] or no access to
32-bit binary compilation) make alt will be used with warnings that the
entry cannot work with them. The reason these are built as .alt and not
the original is to be clearer whereas in other cases (like
1985/sicherman) the point was just a backup plan in case a compiler
objects to it. Here they must be compiled as 32-bit ELF binaries (though
we cannot check if they are ELF - at least not easily and in an entirely
portable way - we can at least determine if they compiled as 32-bit) so
the alt builds are set to be .alt in filenames.
The try.sh script has been updated for this and in the case. However
this file needs to be looked at again and will be later. The purpose of
this commit was to resolve another issue that is in the todo file (this
is not yet done and might or might not be done later today).
The script had "s surrounding the git ls-files command which turned it
to a single file which of course is wrong.
Ran script again fixing many README.md files that had incorrect number
of blank lines for critical headers.
This will have to be done a final but a good number of files have been
corrected.
For the top level and year level README.md, where email are found,
a note was added to the effect that email addresses found above are
for historical purposes only, and should not be used today.
Old references to asking for fixes, comments, when content was used,
and next contest links were replaced with a general reference to the FAQ.
Harmonized the Copyright and License and copyright dates.
Now using Creative Commons "CC BY-SA 4.0 DEED Attribution-ShareAlike 4.0
International".
The above Creative Commons will become the standard for the IOCCC.
Replaced old `png/by-sa-3.0-88x31.png` with a new ` png/by-sa.88x31.png` icon.
Updated the top level HTML files to use the license.
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.
That is the comments have a general form and if they're for the alt code
they're defined in the alt code section. If they're for the entry and
the alt code they're above the CDEFINE variable.
The thanks file has been updated where it was needed.
Now only entries that have not been done need this improvement.
fix experimental web site links in experimental index.html
sync CNAME with https://github.com/ioccc-src/winner/blob/master/CNAME
improve .gitignore files
Added to each .gitignore file, comments on how to sort.
Put into winner .gitignore files, ignore *.dSYM files.
Put into winner .gitignore files, ignore indent.c,
indent.o and indent files. This is done so that the
winner directory can more self contained.
We did not put into winner .gitignore files, however,
excludes of .-files as found in the top level .gitignore file.
As .-files are not allowed by mkiocccentry, the top level
.gitignore file remains sufficient.
Added to year level .gitignore files, excludes of
mkentry or iocccsize files as needed.
Sorted (via sort -d -u) all .gitignore file.
Add .path files to each winner directory: a file containing
the path to the winner directory from the top directory.
Changed YYYY/.year files to contain the paths, from the top
directory, if the winning directories for the given year.
Changed `/.top` to contain the IOCCC years.
Added `make genpath` rule to the top Makefile and the
year Makefiles to generate the above.
Added FAQ 6.8 to `faq.md` to explain the above.
Updated manifest to reflect recent changes to the list of files.
Now one can do
make clobber PORT=37337 SPEED=50 everything
The l_ macro can also be redefined with the 'L' variable but this is not
recommended especially if you don't know what you're doing so it's
barely mentioned in the README.md file.
Rather than check if $(CC) IS gcc or IS clang check for $(CC) containing
gcc or clang. This is because in some systems or conditions the compiler
might not be called JUST gcc or JUST clang. For instance gcc in MacPorts
is called gcc-mp-13 (for example) but without this change one would have
to symlink gcc to gcc-mp-13 or copy it to gcc.
The FAQ has been updated to address this.
This completes year 2001.
BTW, fun fact: the author states that a prefix of '0' in a number is in
the compiler an octal number but did you know that in C 0 by itself is
actually octal? Section 6.4.4.1 Integer constants states:
An octal constant consists of the prefix 0 optionally followed by a
sequence of the digits 0 through 7 only.
The code and alt code now have '#ifndef..#endif' blocks so that one need
not specify all the -D options if they wish to change just one. In the
case of SPEED if it's undefined it is set to 50 which is what the
Makefile originally had it as but I changed it to 100 as it seemed to be
a problem. The author does note how different speeds make for different
kinds of play and so this change is even more useful.
Format/typo check README.md file.
This should complete the review of 2001/kev and I believe only one entry
remains now.
The try.sh script has quite a lot of complicated commands and steps
which makes it much more useful than some others. The .gitignore was
updated for this script.
The README.md file has been format and typo checked.
Update plus1.turing file I added a while back (based on author's
remarks).
One of the missing files was not actually missing; it was a misreading
of the author's remarks. It was suggesting that if one wanted to make
their own file by that name, not that the file was there. There still is
a missing file, however.
Format/typo check README.md.
There are two bugs that are known. First is that at the end of the game
(when you lose) it appears to in (an infinite?) while loop call
usleep(3). However you can still shoot your missiles at this point. The
other bug is that it will eventually crash. It's easy to make it crash
if you wait until everything is destroyed (that is when it starts
printing the lines in a loop, sleeping over and over again) and only
then start shooting your missiles, over and over again until it crashes.
It appears that it's the 'Window *d' getting corrupted but I'm not sure
why. These details have been added to bugs.md.
The README.md file has been format fixed.
There was a minor change to williams.c as well though this was only
rolling back a change that should not have been committed yesterday.
main() now returns a value rather than just 'return' to be more
portable.
Format/typo check README.md file.
I believe this completes the review of this entry.
The Makefile now always regenerates the .sort.c and the .punch.c
versions if westley.c has been modified.
The try.sh script had a typo (not in a command that ends up being run
but rather showing what would be run).
Add bugs and (mis)features section with two statuses.
Format/typo check README.md file.
It is not clear to me just yet if this completes the review of the entry
but it might.
There was some inconsistency as far as whether or not the problem was a
bug or feature, where not enough args would result in a crash. At one
point it seems it was changed to a bug, not a feature, and it is then
that I must have fixed it. However the bugs.md file incorrectly labelled
another entry as ollinger and the README.md for ollinger referred to
something that did not exist or rather it existed but it was for another
entry.
A minor fix in bugs.md has been done as well: change the status name of
using fgets() to not refer to getline(3); rather the description does
that. This is because no other place has that function in the status
line. Doing this is how I found the problem this commit fixes as another
entry should have that status.
The flaw I suggested that there was in the alt code that the author did
not note is actually from a typo in the code on my part.
Format/typo check README.md file.
Fixed bug where if one does not hit 'q' it would mess up the terminal on
exit. I think (but I'm also distracted) this happened if you crashed as
well. Now if you kill the game (ctrl-c for instance), you crash or you
quit with 'q' it should still be a sane terminal.
The alt code adds (it does not replace) vi(m) movement keys: h for left,
l for right and k for straight.
Format/typo check README.md file.
The rest of the entry has not been reviewed except that the 'to use'
section has been corrected (and the try section obviously has been
updated too). I have some improvements to try.sh in mind but that'll
have to happen another time.
It previously would abort if anonymous couldn't be built but this was an
error because it will at least run the supplementary program even if the
entry or supplementary program cannot be compiled in 32-bit.
Get CC, defaulting to cc.
Due to GitHub not serving nor rendering HTML files whose filename
starts with "." (dot), we renamed `.inventory.html` to `inventory.html`.
Renamed: `tmp/gen_dot_winner.sh` -> `tmp/gen_winner_json.sh`
Fixed URL generation for GitHub links in `inventory.html`.
The manifest was updated accordingly.
The `tmp/README.md` file was updated accordingly.
Fixed an incorrect author win for "1989_jar.2" in `author_wins.numbers`
and `author_wins.csv`.
Changed winner_JSON_format_version to "0.5 2023-11-04".
Added `gen_dot_winner.sh` tool to generate .winner.json and .inventory.html
for a winner. This tool uses [pandoc](https://pandoc.org) to convert
markdown to HTML.
Used this command to generate `.winner.json` and `.inventory.html` for
all winners:
```sh
./run_all.sh -v 1 -D 1 ./gen_dot_winner.sh
```
Updated `tmp/README.md` to reflect the above.
Retired "fake.gen_inventory.sh" to `tmp/OLD_manifest/fake.gen_inventory.sh`.
Added `-D level` flag to `run_all.sh` to specify the `-v level` for
the tool that is being run.
As requested on GitHub: a tool that will be written, readme2index, will,
as explained:
'... will take the converted HTML from the README.md markdown and
inject it into an HTML template. Things such title, award one and
author information will be injected into the HTML page ahead of the
HTML that was converted from the README.md markdown. Without going
into details of HOW at this time, the result will be a coherent HTML
index.html page with the winner title / award, winning author
information, and important file links come from other sources and
NOT from the README.md file.
The text from the 1st award line, thru the authorship information,
and up to but not including the "## To build:" line in the README.md
file will just get in the way. Moreover authors might be tempted to
try and maintain that top of README.md text instead of working with
the author/_author_handle_.json and winner .winner.json files.
This was done with my[0] sgit(1) (https://github.com/xexyl/sgit) tool like:
sgit -o -n -e '/^## To build:/,$p' '[12][0-9][0-9][0-9]/*/README.md'
[0] Is that shameless self-promotion? I don't know but I don't care: it
is generally a very useful tool and has been used in other repos too.
Besides, I've done it many times before and it's a great example that I
will be adding to the README.md file of the tool, one I hadn't thought
of doing.
Fixed cases where there was a bad trailing backslash.
Improved a few cases where a code block was needed
to highlight some text.
Changed a few cases where a code block needed to
declared as, say, a sh code block.
Fixed a few cases where the winner information was not properly formatted.
Plus a few nits and clarifying text was added.
We introduce a bit of fun, while specifying that something
is "supposed to happen".
NOTE: There is no need to change the INABIAF STATUS. The use
there is perfectly fine.
By some chance it was in .gitignore and was entirely missing so I
restored it from the archive.
I also updated the README.md file about the alt (which is the original
in fact) not compiling with clang (something I fixed in the entry
itself) in addition to it might not working in some systems (like 64-bit
systems).
The `.id` files are no longer needed and so they were removed.
The `winner_id` (the contents of the `.id` files) are simply
a concatenation of "year" and "_" and "dir".
Adjusted `.inventory.html`, `tmp/README.md`,
`tmp/fake.gen_inventory.sh`, and the manifest according
to the above.
The new tool, tmp/fake.gen_inventory.sh, now adds
a fake .inventory.html file to each winner entry.
Once the winner2nventory tool is written, the .inventory.html
will contain links to all winner files listed in the inventory.
For now, the tmp/fake.gen_inventory.sh tool just creates
a placeholder file.