This is a HUGE commit:
417 files changed, 874 insertions(+), 874 deletions(-)
As the IOCCC website now is https enabled I have updated the
'http://www.ioccc' to 'https://www.ioccc'.
There was also a typo in Makefiles where it said 'for VERY WELCOME' when
it should be 'are VERY WELCOME'.
Finally slashdot.org is also https enabled so references to
'http://slashdot' were changed to 'https://slashdot'.
This was done by my sgit tool (see https://github.com/xexyl/sgit)
like:
sgit -e 's,http://www.ioccc,https://www.ioccc,g' -e 's/for VERY WELCOME/are VERY WELCOME/g' -e .
but because I didn't have a list of files that should be modified I had
to be careful which files to commit as I had files that were changed but
not ready to be committed. Since I did it in steps, finding typos as I
went along, I actually ran sgit three times but to simplify the above
(and to show that it's possible to do more than one sed command) I made
it all as one. Since I did not have a list of files ahead of time I had
to determine what files to commit, first going through them like:
for j in $(for i in $(git status|grep modified|cut -d: -f2); do \
git grep 'https://www.ioccc' "$i"; done|cut -d: -f1|sort|uniq); \
do git diff "$j"; done|less -r
(I had to pipe through less because of a strange problem with the git
diff which appears to be because of a terminal problem maybe due to the
command above but it was all I could come up with in a very tired head.)
The above and
git status | grep modified:
showed that some C files had been modified which obviously should not be
done so I had to do:
git co '*c'
to undo those changes.
Finally to commit the correct files I did:
for i in $(git status|grep modified|cut -d: -f2); do \
git grep -E 'https://www.ioccc|https://slashdot|are VERY WELCOME' "$i"; \
done |cut -d: -f1|sort|uniq|xargs git commit -v
or so (with any formatting issues or typos here due to typos in the log
due to the terminal (in)sanity issue described).
Format fix and typo check 2015/endoh3.
Added rules to Makefile back_to and mullender to more easily enjoy the
theme of the entry. This undoes a previous change I made which made the
default rule compile mullender.c into prog which takes away another
thing of the entry when nothing is there.
Another pass of this entry will have to be done for typos/formatting but
I noticed the above problem with the Makefile and I wanted to fix it.
Fixed a typo in thanks-for-fixes.md as well.
After emailing Yusuke he provided me with the missing files which I have
added to the repo. I removed this part from the thanks (I had noted that
there were some files missing) and removed the entry from the bugs.md
file.
Yusuke offered a hint and through this I noticed the main[] in the
README.md (I haven't yet looked at year 2015 in detail). It is what
generates the fun.tar.gz file (which is now in the .gitignore file as
the files within - except for the README.markdown there - are now in the
repo). I put this code in fun.c and added a rule to the Makefile to
build it (and it is built by default with make all). I also added to the
Makefile the rule to build (also by default) bf2pdp11.c. The README.md
notes how to use fun.c but it does not show how to use bf2pdp11 as I'm
not sure of the main use yet (I guess brainfuck to pdp11 which might be
useful with the brainfuck files added but that's all I can guess at this
time).
This is to make it more standard which further allows one to run make on
some other source code, say because they want to try and fix an entry
but forget to update the Makefile. Or if they're the author they can not
worry about it in some cases. But since LDFLAGS is the standard way it
seems better to have the LIBS variable in the Makefile be LDFLAGS.
Maybe there is a reason to not have this and I'm happy to close this in
that case but it does seem better this way so I'm doing this commit.
As besides the entries that are not supposed to compile/cannot compile
due to architectural limitations all the entries can compile in macOS
(though some do not work - yet(? I have plans to work on more later)) it
was not necessary to not silence the warnings after all as the entries
that don't work will be easy to identify ('they don't work' :-) ) so I
can just do make CSILENCE= all in the directory of those entries which
solves the problem I had originally thought of.
Some of the Makefiles have retained other changes I had to make
yesterday to get the entries to work with clang in linux but most of
them were either not changed or were made better with the rollback of
the commit that originally silenced warnings.
Now work on silencing warnings for linux can be done.
Due to the fact we now have .orig.c files and thus the possibility of
winner.orig or prog.orig being built I have updated all the .gitignore
files so that these files ignored. This was done with the following
shell commands, for reference:
for i in $(find 19* 200* 201[0123] -mindepth 2 -maxdepth 2 -name .gitignore) ; do echo $(dirname "$i"|sed -e 's,[0-9]\{4\}/,,g').orig >> "$i"; done
for i in $(find 201[4-9] 2020 -mindepth 2 -maxdepth 2 -name .gitignore) ; do echo prog.orig >> "$i"; done
and the two commands is because it was only in 2014 that the winning
entries were renamed to prog so prog.orig is the correct glob.
Used the following script to check for warnings
not silenced via ${CSILENCE}:
```sh
find ???? -mindepth 1 -maxdepth 1 -type d | while read dir; do
(cd "$dir"; echo =-=-= "$dir" =-=-= ; csilence -v 1 clobber all ; echo ; csilence -v 1 clobber alt)
done 2>&1 | less
```
There was a problem with duplicate symbols of main but using the option
-fcommon in the compiler flags solves this problem. It was not an issue
with macOS as the default behaviour (I guess default anyway).
With this commit I believe that all entries (except for two that are not
supposed to compile) compile in linux. They haven't all been tested but
all but two should compile in linux if one has the appropriate libraries
for those that use other libraries.
The fix thank you's have been moved from `README.md` to
`thanks-for-fixes.md`.
**WARNING**: Some mistakes may have been made in doing this.
We presume later changes by others will correct any issues.
The `CONTRIBUTING.md` was renamed `how-to-enter.md`.
A 3rd line of links was added to top level html such as
`contact.html`, `index.html`, `judges.html`, `winners.html`,
and `years.html`.
Improved blank line use in a number (but not all) `README.md` files.
The is a file excluded from this commit that has had the change because
there are other changes but the file is incomplete. That file will be
committed when the fixes are complete which will happen at a later date.
I had put in the README.md by accident that the typo in the Makefile was
making make compile the code properly rather than improperly. Obviously
it was the opposite problem!
A rather unfortunate typo in the Makefile made make try and compile
already compiled C++ object code as source code.
Whilst I was at it I format fixed (and fixed other things I saw) the
README.md file.
There is more to be done here but that's for another time (I thought I
could do it relatively quickly but looking at it further I see that's
not the case and I have limited time so I'm doing it in multiple commits
- I want the changes out of the way).
We further deprecate the use of twitter.
In cases such as historic guidelines and rules, we add
a note about using Mastodon.
In cases where a tweet URL was used, we replace with
an Internet Archive link because twitter has announced
that accounts that are not used for a period of time
will be deleted.
We add a few missing deprecated_twitter information
to the author.numbers and author.cvs files.
We remove references to twitter handles (after making
sure that both author.numbers and author.cvs has the
deprecated_twitter information). When the "_README.md_"
files have their header information generated by
a tool, such deprecated_twitter data will not be present.
At the request of Landon all Makefiles have had trailing spaces removed.
The request also included README.md files but this is more complicated
as some lines have to end in spaces in order to force line breaks. For
Makefiles it's fine though. Tested the Makefiles by doing 'make clobber
all everything' from the root directory and all appears to be fine. This
testing is important because depending on how this process (removal of
trailing spaces) was done it could break the Makefiles; for instance
trying something like:
sgit -e 's/\s.*$//g' '*Makefile'
would rather break the Makefiles. This makes sense to anyone who knows
my script (and obviously sed :-) ) as long as they're not also tired but
I AM tired and so it was the first thing I tried (without thinking of
course ... though I had first thought of the correct way :-) ).
But what happens to the universes (yes I at least want to believe in the
multiverse theory and I hope it's true :-) ) when trailing spaces are
removed? :-)
As it turns out the only Makefiles touched were:
modified: 1987/wall/Makefile
modified: 1992/adrian/Makefile
modified: 1994/ldb/Makefile
modified: 2000/anderson/Makefile
modified: 2001/anonymous/Makefile
modified: 2001/bellard/Makefile
modified: 2004/kopczynski/Makefile
modified: 2015/howe/spoiler/Makefile
modified: 2019/karns/Makefile
and most of them were my fault.
There were many many README.md files with the wrong heading level for
different sections. These have been changed.
To help go through the changes it should be noted I used sgit and also
here is what is changed:
The 'Try', 'To build' and 'To run' lines have two '#'s. Some had one and
others had three.
An exception is that in 1984/anonymous/README.md for the alternative
code that had three '#'s. This is not consistent yet and it might be
that only two are desired. But for now that one at least has three.
Just some formatting fixes and in some cases add links to XQuartz for
macOS Mountain Lion and beyond. More entries (probably many more) have
to have that link added but those will be found and fixed in time.
On Dave Burton's web page he provided a patch with a bug fix in his
entry. This patch has been applied to prog.c (not the alt code).
Added the missing file spoilers.markdown (but changed the extension to
.md).
Format fixes in README.md. Didn't check the full file yet. That'll
almost certainly come another time in another pull request.
Fixed Makefile so that make ; ./prog will work.
He provided additional source files that do different things. See the
README.md for details and how to run (try section). He said that there
should be a tarball with other source files but I don't see it and he
doesn't have a download. I'll ask him for it later.
Updated .gitignore.
For Makefiles that have alt related rules, moved
the related rules under the alt rule section.
In some cases where there is no alt code,
removed alt rules and/or targets.
The make test rule ends up creating quite a few temporary files so I
have added them to the .gitignore. Perhaps I should add just *.tmp but I
added the globs individually instead.