IOCCC image by Matt Zucker

The International Obfuscated C Code Contest

How to upload your submission to the IOCCC submit server

Use mkiocccentry to rebuild# How to upload your submission to the IOCCC

IMPORTANT NOTE: The IOCCC submit server is only ready for submissions ONLY WHEN THE CONTEST IS open.

See current status of the IOCCC for details on the contest status. IMPORTANT NOTE: When the contest is closed, the IOCCC submit server might be offline and unreachable as a website.

To login, open https://submit.ioccc.org in your browser. Fill in your login credentials and click “Login”.

NOTE: if the contest is NOT open you will see something like this instead:

The contest is NOT yet open for submissions.
Sorry (tm Canada 🇨🇦), the IOCCC is not yet open.
The IOCCC is scheduled to open at 2025-03-05 23:19:17.131107 UTC.

Message(s):
The IOCCC is not yet open for submissions.

Assuming it is open, and if you’ve not logged in before, you’ll have to change your password first. See the file pw-change.html for more details. After that you will have to log back in.

Once you’ve logged in, you will see submit slots. Each slot is for one submission so if you update a submission, make sure you choose the right one so you do not replace the wrong one!

It will show text and radio buttons for each row (up to 10 numbered 0 through 9). Here is a text version of the table showing what the first few lines would look like:

    | Select | Slot Information   |
    | -------| --------------------
    | 0: [●] | Status: slot empty |
    | 1: [ ] | Status: slot empty |
    | 1: [ ] | Status: slot empty |

The is a ticked radio button whereas the [ ] is an unticked. Tick that to select that slot.

Then further down the page you’ll see the text along the lines of:

IMPORTANT: Upload only XZ compressed tarballs whose filename is:

submit.00000000-0000-4000-0000-000000000000-SLOT.TIMESTAMP.txz

where SLOT is a slot number, and TIMESTAMP is the build time as a Unix timestamp.

We highly recommend that you use mkiocccentry(1) to create your submit file as it must pass the txzchk(1) sanity checks, and when the uncompressed tarball is untarred, the resulting directory must pass chkentry(1).

NOTE: the 00000000-0000-4000-0000-000000000000 is your UUID. MAKE SURE YOU CHANGE IT TO YOUR UUID!

NOTE: the SLOT and TIMESTAMP in the filename are generated based on your input in mkiocccentry(1).

Now select the slot you need and then scroll down and click the link that says: Choose File. A file select option in your browser should open up. Browse for your XZ compressed tarball that was generated by mkiocccentry(1) and then click whatever button your browser has to upload the file.

You can see the filename of your **XZ compressed tarballthat was **generated bymkiocccentry(1)** you're about to upload if you mouseover it and wait a moment; if you have made a mistake in your file selection, you may click the link that saysChoose File` again. Fix your mistake by choosing the correct file in the file selection pop-up in your browser.

Once you’re certain you have selected the correct file, click “Submit”, below the file selection step.

When it’s uploaded it should say something like:

• Uploaded file: submit.00000000-0000-4000-0000-000000000000-5.1740838915.txz

And in the slot it will give you important details like:

Again the 00000000-0000-4000-0000-000000000000 is your UUID, the SLOT is the slot number and TIMESTAMP is the build time as a Unix timestamp.

Now if you’re done, log out.

If, on the other hand, you upload a file that is too big you will see something like:

The file size of N exceeds the maximum size of 3999971.

And if you try uploading an empty file you’ll instead see:

The must not be empty.

And if you see something like:

Filename for slot: 5 must match this regular expression: ^submit\.00000000-0000-4000-0000-000000000000-5\.[1-9][0-9]{9,}\.txz

You uploaded the wrong filename into a slot.

For example, for the user 00000000-0000-4000-0000-000000000000, slot 5, a valid filename to upload would be:

submit.00000000-0000-4000-0000-000000000000-5.1740838915.txz

where 1740838915 is a timestamp created by the mkiocccentry(1) tool.

You MUST upload a properly named XZ compressed tarball, MAKING SURE you package it with mkiocccentry!

If, however, the slot status shows:

Status: file successfully uploaded into slot.

Then you are successfully uploaded a file into the slot.

At this point you may upload another submission file into a different slot, or you’re done, log out.

Please note: The status page will NOT auto-refresh. After you are uploaded a file into a slot, DO NOT RELOAD the page as this may cause your browser to needlessly reload the same file to the same slot.

After you fir finished uploading submissions into slots, please logout. To see any status updates, you should logout and log back in later.

Checking on the status of your submission

You may check on the status of your submission later on, after you logout by logging back in an looking at the slot status.

Please note: The status page will NOT auto-refresh.

When the system begins to process your file (which could be an hour or two later), you might see:

Status: file fetched. The format test is pending.

After the format test is complete, if you see an error such as:

Status: submit file failed the txzchk test! Use mkiocccentry to rebuild and resubmit to this slot.

Or:

Status: submit file failed the chkentry test! Use mkiocccentry to rebuild and resubmit to this slot.

… or ANY other error then you MUST FIX your submission, repackage your tarball with mkiocccentry and upload to the same slot again! If you do not fix this your submission WILL BE REJECTED for violating Rule 17!

If the format test went well, then you will see:

Status: submit file received by the IOCCC judges. Passed both txzchk and chkentry tests.

IMPORTANT: this does NOT mean that your submission does not violate the rules or that everything is OK once the tarball is extracted; it simply means the tests performed by the tools passed. If you find a flaw in a tool and abuse it and the tests pass then you stand a significant chance of having your submission rejected for violating Rule 17, even if the tests passed.

For details on txzchk, see the FAQ on “txzchk”.

For details on chkentry, see the FAQ on “chkentry”.

If you need more information on the two JSON files, see FAQ on the “.info.json file” and the FAQ on the “.auth.json file”.