Fixes in FAQ and todo files

The FAQ has been updated to add something that was missing to the entry
about the general Makefile rules (make clobber, make all, make alt etc.)
that was in the todo. This has been removed from the todo.md as well.

Fix link in FAQ: not how-to-bugfix.md but how-to-help.md as I changed
this a while back as it isn't a matter of fixing a bug (which could be
any number of problems) but rather how to help with the website etc.

Make sure before a line starting with '#' that there are two blank lines
above it. Some already had this but many did not.

Change other things in todo.md file based on some things that have been
done (with corrections needed in some cases and otherwise the need to
verify no corrections are needed).

Typo fix in todo.md (swap a letter with a space).

I am aware that the todo.md is kind of a mess because of how it has been
updated. It would be helpful to have sections but this was meant to be a
quick update as it is more important to work on the things rather than
to organise the things that have to be done.
This commit is contained in:
Cody Boone Ferguson committed 2023-11-02 05:47:34 -07:00
1 parent dc34871805
commit 723df90fa3
2 files changed
+83 -38

No files matched your search

+59 -6
View File
@@ -1,8 +1,8 @@
<HTML>
<BODY TEXT="#000000">
<center><img alt="IOCCC" SRC="png/ioccc.png"></center><br>
<center><font size="6"><I>The International Obfuscated C Code Contest </I></font></center><br>
<center><img alt="IOCCC" SRC="png/ioccc.png"></center>\
<center><font size="6"><I>The International Obfuscated C Code Contest </I></font></center>\
<P>
<CENTER>
@@ -17,23 +17,27 @@
<A HREF="years.html">Winning entries</A>
<BR><BR>
<A HREF="bugs.md">Known Bugs &amp; (Mis)features</A> |
<A HREF="how-to-bugfix.md">How to fix an IOCCC winner</A> |
<A HREF="how-to-help.md">How to help</A> |
<A HREF="thanks-for-fixes.md">Thanks for the fixes</A> |
<A HREF="www-history.md">A bit of web site history</A>
</CENTER>
<HR>
# The IOCCC FAQ
## Q: How many entries do you receive each year?
By tradition, we do not say.
## Q: How many judging rounds do you have?
Are you trying to trick us? We will not say that either.
## Q: What are the general Makefile rules used in order to clean and build entries for use?
In general the best way to compile everything in an entry directory is to run:
@@ -80,6 +84,13 @@ clobber` depends on `clean` so running `make clobber` will invoke `make clean`.
Are there any other rules? You tell us!
NOTE about the above rules: the Makefile default assumes `cc` which might be a
gcc-based compiler, or a clang-based compiler, or some other compiler. Only by
forcing `CC=clang` or `CC=gcc` will one invoke a specific compiler to, say,
enable or disable additional warnings or flags. Even so different versions or
compilers might do different things, have different defects or other issues.
## Q: How come some entries have code that is incongruent with what the author(s) wrote about the entry?
It is very likely in this case that the code was fixed to work for modern
@@ -88,6 +99,7 @@ some entries you should look at the original code as in `winner.orig.c` or
`prog.orig.c`. Sometimes the original is in an alt version like `winner.alt.c`
or `prog.alt.c`.
## Q: Why have some entries that originally used `gets()` been modified to use `fgets()`? Doesn't this tamper with the entry too much?
A fine line indeed has to be drawn here but it was decided that it is worth it
@@ -125,6 +137,7 @@ does not. We're not sure how this is compatibility but either way it can cause a
problem and it is this that has complicated most of the fixes though again some
can look almost identical.
## Q: How can I easily see what was changed in order to get an entry to work in modern systems?
Although the [thanks-for-fixes.md](/thanks-for-fixes.md) file sometimes gives
@@ -210,6 +223,7 @@ make diff_alt_prog
and you'll see a single line changed and very simply.
### Tip: if you have `colordiff` installed it's a lot easier to see the differences
To use these rules but provide a different `diff`, for instance `colordiff`,
@@ -223,6 +237,7 @@ make DIFF=colordiff diff_alt_prog # for alt to prog diff
Obviously if you want to view the alt code or the orig code you can just open
the files as described above.
## Q: Sometimes the author's or authors' remarks do not match the source! Why and what can I do about it?
This is very likely to happen when an entry was fixed for modern systems. When
@@ -276,6 +291,7 @@ that works for modern systems but one can view the original code in the
Some entries should not have modern system versions replaced. See below.
## Q: I can't get some entries to work in 64-bit systems that don't support 32-bit!
Unfortunately some older entries are non-portable and require 32-bit support of
@@ -290,6 +306,7 @@ for 64-bit systems. Many were fixed to work with modern systems but some are
supposed to only work with 32-bit systems so any updated version of these
entries should be an alternate version.
## Q: Under macOS I can't compile some entries and/or they don't work right. Why?
If the entry requires gcc and you did not explicitly install gcc in macOS you
@@ -318,6 +335,7 @@ At the same time some entries are not designed to work with clang. There might
be alternate code added at some point but as above this depends on free time and
other things that have to be done plus remembering to do it.
## Q: What is `cb` that is mentioned in some of the older entries?
This was a C beautifier for Unix, both AT&T and Berkeley, but it seems to no
@@ -340,12 +358,14 @@ In macOS Mountain Lion and beyond to run X11 applications one needs to install
[XQuartz](https://www.xquartz.org). This will let you compile, link and run X11
applications.
## Q: How do I compile and run entries that use SDL1/SDL2 ?
This depends on your operating system but below are instructions for linux and
macOS with alternative methods for macOS and different package managers with
linux.
### Red Hat based linux
Execute one of the following as root or via sudo:
@@ -370,6 +390,7 @@ export SDL2_INCLUDE_ROOT=/usr
but this might not be necessary in more modern days especially as we use
`sdl-config` and `sdl2-config` which should find the proper paths.
### Debian based linux
Execute the following as root or via sudo:
@@ -403,12 +424,14 @@ feature of the package manager to determine which packages you need to install.
Note that you might have to install both the library and the developmental
packages: one for compiling and one for linking / running.
### macOS
If you're using macOS there are at least three ways to obtain it. You can
download it from the SDL website and install the package. That will not
work well for the IOCCC but these will:
#### MacPorts
If you haven't already, install
@@ -419,6 +442,7 @@ If you haven't already, install
sudo port install libsdl libsdl2
```
#### Homebrew
If you have not already done so, install [Homebrew](https://brew.sh).
@@ -430,13 +454,14 @@ brew install sdl2 sdl12-compat
eval "$(/opt/homebrew/bin/brew shellenv)"
```
##### NOTE: there might be extra SDL packages required
### NOTE: there might be extra SDL packages required
In the case that some entries do not work even with SDL1/SDL2 installed it might
be that you need additional SDL libraries. See the entry's README.md for
details. If something is not noted you're welcome to report it as an issue or
fix it and make a new pull request.
## Q: How do I compile and run entries that use sound in macOS?
This might depend on the entry but in some cases like
@@ -448,6 +473,7 @@ you can use either MacPorts or Homebrew. See below for instructions for each.
Usually the README.md file will explain how to use it in linux so we do not
include this here, at least for now.
### MacPorts
If you haven't already, install
@@ -458,6 +484,7 @@ If you haven't already, install
sudo port install sox
```
### Homebrew
If you have not already done so, install [Homebrew](https://brew.sh).
@@ -469,6 +496,7 @@ brew install sox
eval "$(/opt/homebrew/bin/brew shellenv)"
```
## Q: How did entry XYZZY win? It breaks rule 2!
As entries have been fixed it is entirely possible that some of the entries no
@@ -479,6 +507,7 @@ For the original version see the [/archive](/archive) directory where you can
find all the original winning entries. In some cases the `winner.alt.c` is the
original source code.
## Q: I found a bug in a previous winner, what should I do?
We do not 'maintain' the contest winners as such. The code is made available on an 'AS
@@ -498,6 +527,7 @@ More generally please see the file [how-to-bugfix.md](/how-to-bugfix.md). Note
that this file is not a tutorial on how to fix X, Y and Z problems but rather
what to do to get the fix in.
## Q: Do you have a list of entries with known problems and/or features that might appear to be bugs but are not?
Yes! Please see [bugs.md](/bugs.md) for a list of known bugs and/or issues of a
@@ -507,6 +537,7 @@ Note that just because an entry is not in the bugs file does not mean there is
not an issue and note that some issues are simply missing files, dead URL(s) or
something like that.
## Q: Are there types of entries that are submitted so frequently that the judges get tired of them?
Yes, there are types of entries that show up over and over again.
@@ -518,6 +549,7 @@ The [guidelines](guidelines.html) say:
We like variety. However too often we see (please look at the winning examples
given to be aware of the level of the competition):
### maze generator
- [1985/shapiro](years.html#1985_shapiro)
@@ -529,7 +561,8 @@ given to be aware of the level of the competition):
- [1998/bas1](years.html#1998_bas1)
### tic-tac-toe game
### tic-tac-toe/noughts and crosses/Xs and Os game
- [1991/westley](years.html#1991_westley)
@@ -537,6 +570,7 @@ given to be aware of the level of the competition):
- [2020/carlini](years.html#2020_carlini)
### solitaire/Othello game
- [1987/lievaart](years.html#1987_lievaart)
@@ -561,6 +595,7 @@ given to be aware of the level of the competition):
_As you can see, just a list of primes (let alone small primes) does not cut it
anymore._
### self reproducing program
- [1990/scjones](years.html#1990_scjones)
@@ -569,6 +604,7 @@ anymore._
- [2000/dhyang](years.html#2000_dhyang) - _unless you beat this one, your chances are slim_
### entries that just print "Hello, world!"
- [1984/anonymous](years.html#1984_anonymous)
@@ -587,6 +623,7 @@ anymore._
_**...it's so 20th century...**_
### entries that use some complex state machine/table to print something
- [1988/isaak](years.html#1988_isaak)
@@ -597,6 +634,7 @@ _**...it's so 20th century...**_
- [2018/giles](years.html#2018_giles)
### rot13
- [1985/sicherman](years.html#1985_sicherman)
@@ -607,6 +645,7 @@ _**...it's so 20th century...**_
- [1991/fine](years.html#1991_fine)
### **pi** or **e** computation
- [1986/august](years.html#1986_august)
@@ -617,6 +656,7 @@ _**...it's so 20th century...**_
- [1989/roemer](years.html#1989_roemer)
#### Hints on overused themes
HINT: It is not fatal to send in those types of entries, it is just MUCH
@@ -631,10 +671,12 @@ explain near the beginning of your remarks why you are submitting a entry based
on an 'overused theme' and why the judges should not simply toss it out as being
boring.
## Q: What should I write in the 'remarks' (remarks.md) section of my entry, if anything at all?
As much or as little as you wish.
### What helps:
- explaining what your entry does
@@ -647,6 +689,7 @@ As much or as little as you wish.
- how it works (if you are really condescending)
### What does not help:
- admitting that your entry is not very obfuscated (you see, the contest is
@@ -695,18 +738,21 @@ which you should update and submit, using the instructions above if necessary.
There are none. There was no IOCCC in those years.
## Q: What are the .orig.c files in the directories in winning entries ?
Due to the fact that the original code has sometimes had to change these files
are the original winning entry or as close to as possible to the original that
we can find.
## Q: Why don't you publish non-winners?
Because the publication on the IOCCC site **_IS_**
the award! Anyone is free to put their IOCCC hopefuls, lookalikes and/or
non-winners on their web page for everyone to see.
## Q: How much time does it take to judge the contest?
It takes a fair amount of time to setup, run, answer email, process entries,
@@ -734,15 +780,18 @@ If it can compile and run on Windows and/or Mac (see
even better. Being able to compile with other compilers like clang is also a
good thing.
## Q: I would like to mirror the IOCCC web site. May I do so?
We are not accepting mirror requests at this time, sorry.
## Q: I want to publish some parts of the IOCCC in an article, or book, or newsletter, or use then in class/instructional notes, or quote from the IOCCC. May I do so?
Please ask the [IOCCC judges](/judges.html) first. Please send your request using the
instructions on the [contacting the IOCCC Judges](/contact.html) page.
## Q: What are the grand prize / Best of Show winners?
In 1984-1987, the grand prize winners are:
@@ -790,6 +839,7 @@ from the judges, they used the following awards:
These could be considered the 'best entry' for those years with 1 or
more other entries that came in close behind.
## Q: I managed to get entry XYZZY from year 19xx to compile; now it fails to run!
switch(19xx/XYZZY) {
@@ -834,6 +884,7 @@ compilers.
}
## Q: How did the IOCCC get started?
One day (23 March 1984 to be exact), Larry Bassel and I (Landon Curt
@@ -922,11 +973,12 @@ for more details.
<TD><a rel="license" href="https://creativecommons.org/licenses/by-sa/3.0/"><img alt="Creative Commons License" style="border-width:0" src="/png/by-sa-3.0-88x31.png" /></a></TD>
<TD><P>&copy; Copyright 1984-2020,
[Leo Broukhis, Landon Curt Noll](/judges.html)
- All rights reserved<br>
- All rights reserved\
This work is licensed under a <a rel="license" href="https://creativecommons.org/licenses/by-sa/3.0/">Creative Commons Attribution-ShareAlike 3.0 Unported License</a>.</P></TD>
<TD>&nbsp;<!--<a href="https://validator.w3.org/check?uri=referer"><img src="https://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01 Transitional" height="31" width="88"></a>--></TD>
</TR></TABLE>
## Q: Why do you sometimes use the first person plural?
As a precedent for [first person
@@ -963,6 +1015,7 @@ p.s. Here is an image of F. D. C. Willard:
[F D C Willard](png/F.D.C.Willard.png)
## Q: Why do Makefiles use `-Weverything` with `clang`? Don't you know that its use is not recommended by clang developers?
The use of `-Weverything` is limited to when one forces `CC=clang`. Users with