Update rules, guidelines and FAQ for file perms

Rule 17 mandates specific file permissions for files/directories in
submission tarballs but the documentation did not state this. More work
might need to be done here but it should be better now.
This commit is contained in:
Cody Boone Ferguson committed 2025-02-03 07:43:52 -08:00
1 parent b0f512b865
commit a2e216ec82
6 files changed
+299 -213

No files matched your search

+39 -19
View File
@@ -425,7 +425,7 @@
<!-- BEFORE: 1st line of markdown file: faq.md -->
<h1 id="ioccc-faq-table-of-contents">IOCCC FAQ Table of Contents</h1>
<p>This is FAQ version <strong>28.2.3 2025-02-02</strong>.</p>
<p>This is FAQ version <strong>28.2.4 2025-02-03</strong>.</p>
<h2 id="entering-the-ioccc-the-bare-minimum-you-need-to-know">0. <a href="#enter_questions">Entering the IOCCC: the bare minimum you need to know</a></h2>
<ul>
<li><strong>Q 0.0</strong>: <a class="normal" href="#enter">How can I enter the IOCCC?</a></li>
@@ -440,6 +440,7 @@
<li><strong>Q 0.3</strong>: <a class="normal" href="#makefile">What should I put in my submission Makefile?</a></li>
<li><strong>Q 0.4</strong>: <a class="normal" href="#remarks">What should I put in the remarks.md file of my submission?</a></li>
<li><strong>Q 0.5</strong>: <a class="normal" href="#try_scripts">What should I do with the <code>try.sh</code> and <code>try.alt.sh</code> scripts?</a></li>
<li><strong>Q 0.6</strong>: <a class="normal" href="#file_perms">What permissions may my files be and what if I need different permissions?</a></li>
</ul>
<h2 id="entering-the-ioccc-more-help-and-details">1. <a href="#submitting_help">Entering the IOCCC: more help and details</a></h2>
<ul>
@@ -799,35 +800,36 @@ the one linked to above.</p>
</div>
</div>
</div>
<p><strong>PLEASE</strong> look at the example remarks.md to give you a better idea of how
it should be formed:</p>
<p><strong>PLEASE</strong> look at the template remarks.md to give you a better idea of how
it should be formed, as it has some instructions you should follow:</p>
<ul>
<li><a href="https://github.com/ioccc-src/winner/blob/master/next/remarks.example.md">view example remarks.md</a></li>
<li><a href="next/remarks.example.md">remarks.md example</a></li>
<li><a href="https://github.com/ioccc-src/winner/blob/master/next/remarks.example.md">view template remarks.md</a></li>
<li><a href="next/remarks.example.md">remarks.md template</a></li>
</ul>
<p>Read the instructions in the file and <strong>PLEASE</strong> pay especial attention to the
instructions, including the <a href="markdown.html">IOCCC markdown guidelines</a>. You will
observe that it links back to this FAQ as to what you should or should not say.</p>
<p><strong>PLEASE</strong> pay especial attention to the instructions, including the <a href="markdown.html">IOCCC
markdown guidelines</a>. You will observe that it links back to this
FAQ as to what you should or should not say.</p>
<p>Next, while you may put in as much or as little as you wish into your entry’s
<code>remarks.md</code> file, we do have few important suggestions:</p>
<p>We recommend that you explain how to use your entry. Explain the
<p>We recommend that you explain how to use your submission. Explain the
command line (if any command line options and arguments are used)
and any input or actions if applicable.</p>
<p>We highly recommend that you explain why you think your entry is
<p>We highly recommend that you explain why you think your submission is
well obfuscated.</p>
<p>For those submissions that win the IOCCC, we often use much of text from the
<code>remarks.md</code> file in the <em>Author’s remarks</em> section of the <code>index.html</code> file.
For this reason, a well written <code>remarks.md</code> file is considered a plus.</p>
<p>While not required, consider adding bit of humor to your <code>remarks.md</code>
as most people who are not humor impaired, as well as the IOCCC judges
appreciate the opportunity for a fun read as well as a chuckle or two.</p>
as most people who are not humor impaired, as well as the IOCCC judges (who
might or might not be humour impaired :-) ), appreciate the opportunity for a
fun read as well as a chuckle or two.</p>
<h4 id="what-helps">What helps:</h4>
<ul>
<li>explaining what your entry does</li>
<li>how to entice it to do what it is supposed to do</li>
<li>what obfuscations are used</li>
<li>what are the limitations of your entry in respect of portability and/or input data</li>
<li>how it works (if you are really condescending)</li>
<li>explaining what your entry does.</li>
<li>how to entice it to do what it is supposed to do.</li>
<li>what obfuscations are used.</li>
<li>what are the limitations of your entry in respect of portability and/or input data.</li>
<li>how it works (if you are really condescending).</li>
</ul>
<h4 id="what-does-not-help">What does not help:</h4>
<ul>
@@ -839,11 +841,13 @@ it, not very obfuscated entries have a minuscule chance to win (although
in the C code for that matter) - we like to be unbiased during the judging
rounds; we look at the author name only if an entry wins. See the
<a href="next/guidelines.html">guidelines</a> <strong>AND</strong> <a href="next/rules.html">rules</a> if this is not clear!</li>
<li>leaving the remark section empty.</li>
<li>leaving the remark section empty (which would also indicate that you did not
use <code>mkiocccentry(1)</code>, as it requires it to not be of size 0, though if you only
include whitespace you would still be violating <a href="next/rules.html#rule17">Rule 17</a>).</li>
</ul>
<p>Jump to: <a href="#">top</a></p>
<div id="try_scripts">
<h3 id="q-0.5-what-should-i-do-with-the-try.sh-and-try.alt.sh-scripts">Q 0.5 What should I do with the <code>try.sh</code> and <code>try.alt.sh</code> scripts?</h3>
<h3 id="q-0.5-what-should-i-do-with-the-try.sh-and-try.alt.sh-scripts">Q 0.5: What should I do with the <code>try.sh</code> and <code>try.alt.sh</code> scripts?</h3>
</div>
<p>If your submission has more than one use, or if you have interesting ways to
invoke your program, perhaps using other commonly installed tools (or tools
@@ -868,6 +872,22 @@ but we do enjoy interesting and creative uses of submissions.</p>
example Makefile that you modify for your submission. See the
FAQ on “<a href="#makefile">submission Makefiles</a>.</p>
<p>Jump to: <a href="#">top</a></p>
<div id="file_perms">
<h3 id="q-0.6-what-permissions-may-my-files-be-and-what-if-i-need-different-permissions">Q 0.6: What permissions may my files be and what if I need different permissions?</h3>
</div>
<p>As <a href="#rule17">Rule 17</a> states, files in your submission tarball <strong>MUST</strong> be
specific permissions. In particular: directories <strong>MUST</strong> be <code>drwxr-xr-x</code> (i.e.
<code>0755</code>), the optional files, <code>try.sh</code> or <code>try.alt.sh</code>, if provided, <strong>MUST</strong> be
<code>-r-xr-xr-x</code> (i.e. <code>0555</code>) and all other files <strong>MUST</strong> be <code>-r--r--r--</code> (i.e.
<code>0444</code>).</p>
<p>If you need a file to be executable, say a script, then make sure you do so in
the appropriate place in your Makefile. See the
FAQ on “<a href="#makefile">submission Makefile</a>”
for more details.</p>
<p>Do remember that if your submission requires different filenames, then you
<strong>MUST</strong> make a <strong>COPY</strong> of them in your <code>Makefile</code>. See also <a href="next/rules.html#rule11">Rule
11</a>.</p>
Jump to: <a href="#">top</a>
<hr style="width:50%;text-align:left;margin-left:0">
<hr style="width:50%;text-align:left;margin-left:0">
<div id="submitting_help">
+47 -19
View File
@@ -1,6 +1,6 @@
# IOCCC FAQ Table of Contents
This is FAQ version **28.2.3 2025-02-02**.
This is FAQ version **28.2.4 2025-02-03**.
## 0. [Entering the IOCCC: the bare minimum you need to know](#enter_questions)
@@ -14,6 +14,7 @@ This is FAQ version **28.2.3 2025-02-02**.
- **Q 0.3**: <a class="normal" href="#makefile">What should I put in my submission Makefile?</a>
- **Q 0.4**: <a class="normal" href="#remarks">What should I put in the remarks.md file of my submission?</a>
- **Q 0.5**: <a class="normal" href="#try_scripts">What should I do with the `try.sh` and `try.alt.sh` scripts?</a>
- **Q 0.6**: <a class="normal" href="#file_perms">What permissions may my files be and what if I need different permissions?</a>
## 1. [Entering the IOCCC: more help and details](#submitting_help)
@@ -435,24 +436,24 @@ Jump to: [top](#)
</div>
</div>
**PLEASE** look at the example remarks.md to give you a better idea of how
it should be formed:
**PLEASE** look at the template remarks.md to give you a better idea of how
it should be formed, as it has some instructions you should follow:
- [view example remarks.md](%%REPO_URL%%/next/remarks.example.md)
- [remarks.md example](next/remarks.example.md)
- [view template remarks.md](%%REPO_URL%%/next/remarks.example.md)
- [remarks.md template](next/remarks.example.md)
Read the instructions in the file and **PLEASE** pay especial attention to the
instructions, including the [IOCCC markdown guidelines](markdown.html). You will
observe that it links back to this FAQ as to what you should or should not say.
**PLEASE** pay especial attention to the instructions, including the [IOCCC
markdown guidelines](markdown.html). You will observe that it links back to this
FAQ as to what you should or should not say.
Next, while you may put in as much or as little as you wish into your entry's
`remarks.md` file, we do have few important suggestions:
We recommend that you explain how to use your entry. Explain the
We recommend that you explain how to use your submission. Explain the
command line (if any command line options and arguments are used)
and any input or actions if applicable.
We highly recommend that you explain why you think your entry is
We highly recommend that you explain why you think your submission is
well obfuscated.
For those submissions that win the IOCCC, we often use much of text from the
@@ -460,17 +461,18 @@ For those submissions that win the IOCCC, we often use much of text from the
For this reason, a well written `remarks.md` file is considered a plus.
While not required, consider adding bit of humor to your `remarks.md`
as most people who are not humor impaired, as well as the IOCCC judges
appreciate the opportunity for a fun read as well as a chuckle or two.
as most people who are not humor impaired, as well as the IOCCC judges (who
might or might not be humour impaired :-) ), appreciate the opportunity for a
fun read as well as a chuckle or two.
#### What helps:
- explaining what your entry does
- how to entice it to do what it is supposed to do
- what obfuscations are used
- what are the limitations of your entry in respect of portability and/or input data
- how it works (if you are really condescending)
- explaining what your entry does.
- how to entice it to do what it is supposed to do.
- what obfuscations are used.
- what are the limitations of your entry in respect of portability and/or input data.
- how it works (if you are really condescending).
#### What does not help:
@@ -483,13 +485,15 @@ it, not very obfuscated entries have a minuscule chance to win (although
in the C code for that matter) - we like to be unbiased during the judging
rounds; we look at the author name only if an entry wins. See the
[guidelines](next/guidelines.html) **AND** [rules](next/rules.html) if this is not clear!
- leaving the remark section empty.
- leaving the remark section empty (which would also indicate that you did not
use `mkiocccentry(1)`, as it requires it to not be of size 0, though if you only
include whitespace you would still be violating [Rule 17](next/rules.html#rule17)).
Jump to: [top](#)
<div id="try_scripts">
### Q 0.5 What should I do with the `try.sh` and `try.alt.sh` scripts?
### Q 0.5: What should I do with the `try.sh` and `try.alt.sh` scripts?
</div>
If your submission has more than one use, or if you have interesting ways to
@@ -522,6 +526,30 @@ FAQ on "[submission Makefiles](#makefile).
Jump to: [top](#)
<div id="file_perms">
### Q 0.6: What permissions may my files be and what if I need different permissions?
</div>
As [Rule 17](#rule17) states, files in your submission tarball **MUST** be
specific permissions. In particular: directories **MUST** be `drwxr-xr-x` (i.e.
`0755`), the optional files, `try.sh` or `try.alt.sh`, if provided, **MUST** be
`-r-xr-xr-x` (i.e. `0555`) and all other files **MUST** be `-r--r--r--` (i.e.
`0444`).
If you need a file to be executable, say a script, then make sure you do so in
the appropriate place in your Makefile. See the
FAQ on "[submission Makefile](#makefile)"
for more details.
Do remember that if your submission requires different filenames, then you
**MUST** make a **COPY** of them in your `Makefile`. See also [Rule
11](next/rules.html#rule11).
Jump to: [top](#)
<hr style="width:50%;text-align:left;margin-left:0">
<hr style="width:50%;text-align:left;margin-left:0">
+67 -63
View File
@@ -461,7 +461,7 @@ writing by <a href="../contact.html">contacting the judges</a>.</p>
</div>
</div>
<p class="leftbar">
These <a href="guidelines.html">IOCCC guidelines</a> are version <strong>28.35 2025-01-30</strong>.
These <a href="guidelines.html">IOCCC guidelines</a> are version <strong>28.36 2025-02-03</strong>.
</p>
<p class="leftbar">
The <a href="guidelines.md" download="guidelines.md">markdown form of these guidelines</a>
@@ -613,8 +613,12 @@ before this option will work a second time, just like in normal mode.
to account for the new <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry repo</a> tools.
Thus, you are <strong>STRONGLY</strong> advised to use the <code>mkiocccentry(1)</code> tool
as found in the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry repo</a>
to form the file to upload to the <a href="https://submit.ioccc.org">submit server</a>. Not
doing so puts you at a very big risk of violating <a href="rules.html#rule17">Rule 17</a>.
using <code>mkiocccentry(1)</code> the <a href="https://submit.ioccc.org">submit server</a>. Uploading
a tarball not formed by <code>mkiocccentry(1)</code> puts you at a very big risk of
violating <a href="rules.html#rule17">Rule 17</a>, especially as <code>mkiocccentry(1)</code> does a
great number of things that are required, and it also runs many checks, and if
any of those checks fail, you are at a very great risk of having your submission
rejected for violating <a href="rules.html#rule17">Rule 17</a>.
</p>
<p class="leftbar">
See the
@@ -816,66 +820,6 @@ specific terminal brand. Programs that work in a standard xterm
are considered more portable.
</p>
<p>Jump to: <a href="#">top</a></p>
<div id="extra-files">
<h1 id="including-optional-and-extra-files">Including optional and extra files</h1>
</div>
<p class="leftbar">
The maximum total number of files that may be submitted has changed to 39 files.
However, of those files, 5 are mandatory (<code>prog.c</code>, <code>Makefile</code>, <code>remarks.md</code> and
the two JSON files generated by <code>mkiocccentry(1)</code>, <code>.info.json</code> and
<code>.auth.json</code>).
</p>
<p class="leftbar">
Additionally, three of the files, if included, <strong>MUST</strong> be
specific file(name)s and in the top level directory, or they will be counted as
an extra file, not an optional file.
</p>
<p class="leftbar">
In particular, any file that is not <code>prog.c</code>, <code>Makefile</code>, <code>remarks.md</code>,
<code>try.sh</code>, <code>prog.alt.c</code> or <code>try.alt.sh</code> will be counted as an extra file, and if
<code>try.sh</code>, <code>prog.alt.c</code> or <code>try.alt.sh</code> are not in the top level directory they
will also be counted as an extra file. The <code>.info.json</code> and <code>.auth.json</code> files
are not counted as extra files but are required.
</p>
<p class="leftbar">
In other words, the actual amount of <strong>EXTRA</strong> files is 31.
</p>
<p class="leftbar">
Of course, if you use the optional filenames without
the files being our intended use, in order to get past the file limit, that
would be an abuse of rules. For more details on the optional files, see the
FAQ on the “<a href="../faq.html#try_script">try.sh script system</a>”
and the
FAQ on “<a href="../faq.html#alt_code">alt code</a>”.
</p>
<p class="leftbar">
If you do need to include more files, you may do so by including as an extra
file, a tarball. This does <strong>NOT</strong> have to pass <code>txzchk(1)</code> tests; only the
submission tarball must pass the <code>txzchk(1)</code> tests. See the <a href="#txzchk">txzchk
section</a> for more details on this important tool.
</p>
<p class="leftbar">
If you <strong>DO</strong> include a tarball, and the build process or the program extracts
said tarball(s), the make <code>clobber</code> rule <strong>MUST</strong> remove them.
</p>
<p class="leftbar">
<strong>IMPORTANT REMINDER</strong>: make <strong>SURE</strong> your tarball does <strong>NOT</strong> reveal who you are!
The <code>mkiocccentry(1)</code> tool creates a v7 format tarball to prevent this. You can
do the same like:
</p>
<pre><code> tar --format=v7 -cJf foo.txz directory</code></pre>
<p class="leftbar">
See <a href="rules.html#rule17">Rule 17</a> and in particular the part about the <a href="rules.html#max-files">maximum
number of files</a>. If you do not follow these points, you
are at a great risk of violating <a href="rules.html#rule17">Rule 17</a>!
</p>
<p class="leftbar">
<strong>NOTE</strong>: if you want to include a test-suite that requires a lot of files,
please suggest this in your <code>remarks.md</code> and if your submission wins it can
be done. In other words you should not use a tarball for a test-suite unless you
have a very good reason for this (and if you do, make <strong>SURE</strong> you specify why
in your <code>remarks.md</code>).
</p>
<h1 id="mkiocccentry"><code>mkiocccentry</code></h1>
<p class="leftbar">
<a href="rules.html#rule17">Rule 17</a> (the <code>mkiocccentry(1)</code> rule) states that
@@ -1082,6 +1026,66 @@ Of course, as <code>txzchk</code> does not extract the tarball, it is possible t
manually package your submission tarball, you could still be violating <a href="rules.html#rule17">Rule
17</a>.
</p>
<div id="extra-files">
<h2 id="including-optional-and-extra-files">Including optional and extra files</h2>
</div>
<p class="leftbar">
The maximum total number of files that may be submitted has changed to 39 files.
However, of those files, 5 are mandatory (<code>prog.c</code>, <code>Makefile</code>, <code>remarks.md</code> and
the two JSON files generated by <code>mkiocccentry(1)</code>, <code>.info.json</code> and
<code>.auth.json</code>).
</p>
<p class="leftbar">
Additionally, three of the files, if included, <strong>MUST</strong> be
specific file(name)s and in the top level directory, or they will be counted as
an extra file, not an optional file.
</p>
<p class="leftbar">
In particular, any file that is not <code>prog.c</code>, <code>Makefile</code>, <code>remarks.md</code>,
<code>try.sh</code>, <code>prog.alt.c</code> or <code>try.alt.sh</code> will be counted as an extra file, and if
<code>try.sh</code>, <code>prog.alt.c</code> or <code>try.alt.sh</code> are not in the top level directory they
will also be counted as an extra file. The <code>.info.json</code> and <code>.auth.json</code> files
are not counted as extra files but are required.
</p>
<p class="leftbar">
In other words, the actual amount of <strong>EXTRA</strong> files is 31.
</p>
<p class="leftbar">
Of course, if you use the optional filenames without
the files being our intended use, in order to get past the file limit, that
would be an abuse of rules. For more details on the optional files, see the
FAQ on the “<a href="../faq.html#try_script">try.sh script system</a>”
and the
FAQ on “<a href="../faq.html#alt_code">alt code</a>”.
</p>
<p class="leftbar">
If you do need to include more files, you may do so by including as an extra
file, a tarball. This does <strong>NOT</strong> have to pass <code>txzchk(1)</code> tests; only the
submission tarball must pass the <code>txzchk(1)</code> tests. See the <a href="#txzchk">txzchk
section</a> for more details on this important tool.
</p>
<p class="leftbar">
If you <strong>DO</strong> include a tarball, and the build process or the program extracts
said tarball(s), the make <code>clobber</code> rule <strong>MUST</strong> remove them.
</p>
<p class="leftbar">
<strong>IMPORTANT REMINDER</strong>: make <strong>SURE</strong> your tarball does <strong>NOT</strong> reveal who you are!
The <code>mkiocccentry(1)</code> tool creates a v7 format tarball to prevent this. You can
do the same like:
</p>
<pre><code> tar --format=v7 -cJf foo.txz directory</code></pre>
<p class="leftbar">
See <a href="rules.html#rule17">Rule 17</a> and in particular the part about the <a href="rules.html#max-files">maximum
number of files</a>. If you do not follow these points, you
are at a great risk of violating <a href="rules.html#rule17">Rule 17</a>!
</p>
<p class="leftbar">
<strong>NOTE</strong>: if you want to include a test-suite that requires a lot of files,
please suggest this in your <code>remarks.md</code> and if your submission wins it can
be done. In other words you should not use a tarball for a test-suite unless you
have a very good reason for this (and if you do, make <strong>SURE</strong> you specify why
in your <code>remarks.md</code>).
</p>
<p class="leftbar">
See also the
FAQ on “<a href="../faq.html#txzchk">txzchk</a>”.
+84 -78
View File
@@ -49,7 +49,7 @@ Jump to: [top](#)
</div>
<p class="leftbar">
These [IOCCC guidelines](guidelines.html) are version **28.35 2025-01-30**.
These [IOCCC guidelines](guidelines.html) are version **28.36 2025-02-03**.
</p>
<p class="leftbar">
@@ -238,8 +238,12 @@ before this option will work a second time, just like in normal mode.
to account for the new [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry) tools.
Thus, you are **STRONGLY** advised to use the `mkiocccentry(1)` tool
as found in the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry)
to form the file to upload to the [submit server](https://submit.ioccc.org). Not
doing so puts you at a very big risk of violating [Rule 17](rules.html#rule17).
using `mkiocccentry(1)` the [submit server](https://submit.ioccc.org). Uploading
a tarball not formed by `mkiocccentry(1)` puts you at a very big risk of
violating [Rule 17](rules.html#rule17), especially as `mkiocccentry(1)` does a
great number of things that are required, and it also runs many checks, and if
any of those checks fail, you are at a very great risk of having your submission
rejected for violating [Rule 17](rules.html#rule17).
</p>
@@ -485,81 +489,6 @@ are considered more portable.
Jump to: [top](#)
<div id="extra-files">
# Including optional and extra files
</div>
<p class="leftbar">
The maximum total number of files that may be submitted has changed to 39 files.
However, of those files, 5 are mandatory (`prog.c`, `Makefile`, `remarks.md` and
the two JSON files generated by `mkiocccentry(1)`, `.info.json` and
`.auth.json`).
</p>
<p class="leftbar">
Additionally, three of the files, if included, **MUST** be
specific file(name)s and in the top level directory, or they will be counted as
an extra file, not an optional file.
</p>
<p class="leftbar">
In particular, any file that is not `prog.c`, `Makefile`, `remarks.md`,
`try.sh`, `prog.alt.c` or `try.alt.sh` will be counted as an extra file, and if
`try.sh`, `prog.alt.c` or `try.alt.sh` are not in the top level directory they
will also be counted as an extra file. The `.info.json` and `.auth.json` files
are not counted as extra files but are required.
</p>
<p class="leftbar">
In other words, the actual amount of **EXTRA** files is 31.
</p>
<p class="leftbar">
Of course, if you use the optional filenames without
the files being our intended use, in order to get past the file limit, that
would be an abuse of rules. For more details on the optional files, see the
FAQ on the "[try.sh script system](../faq.html#try_script)"
and the
FAQ on "[alt code](../faq.html#alt_code)".
</p>
<p class="leftbar">
If you do need to include more files, you may do so by including as an extra
file, a tarball. This does **NOT** have to pass `txzchk(1)` tests; only the
submission tarball must pass the `txzchk(1)` tests. See the [txzchk
section](#txzchk) for more details on this important tool.
</p>
<p class="leftbar">
If you **DO** include a tarball, and the build process or the program extracts
said tarball(s), the make `clobber` rule **MUST** remove them.
</p>
<p class="leftbar">
**IMPORTANT REMINDER**: make **SURE** your tarball does **NOT** reveal who you are!
The `mkiocccentry(1)` tool creates a v7 format tarball to prevent this. You can
do the same like:
</p>
``` <!---sh-->
tar --format=v7 -cJf foo.txz directory
```
<p class="leftbar">
See [Rule 17](rules.html#rule17) and in particular the part about the [maximum
number of files](rules.html#max-files). If you do not follow these points, you
are at a great risk of violating [Rule 17](rules.html#rule17)!
</p>
<p class="leftbar">
**NOTE**: if you want to include a test-suite that requires a lot of files,
please suggest this in your `remarks.md` and if your submission wins it can
be done. In other words you should not use a tarball for a test-suite unless you
have a very good reason for this (and if you do, make **SURE** you specify why
in your `remarks.md`).
</p>
<div id="mkiocccentry">
# `mkiocccentry`
</div>
@@ -818,6 +747,83 @@ manually package your submission tarball, you could still be violating [Rule
17](rules.html#rule17).
</p>
<div id="extra-files">
## Including optional and extra files
</div>
<p class="leftbar">
The maximum total number of files that may be submitted has changed to 39 files.
However, of those files, 5 are mandatory (`prog.c`, `Makefile`, `remarks.md` and
the two JSON files generated by `mkiocccentry(1)`, `.info.json` and
`.auth.json`).
</p>
<p class="leftbar">
Additionally, three of the files, if included, **MUST** be
specific file(name)s and in the top level directory, or they will be counted as
an extra file, not an optional file.
</p>
<p class="leftbar">
In particular, any file that is not `prog.c`, `Makefile`, `remarks.md`,
`try.sh`, `prog.alt.c` or `try.alt.sh` will be counted as an extra file, and if
`try.sh`, `prog.alt.c` or `try.alt.sh` are not in the top level directory they
will also be counted as an extra file. The `.info.json` and `.auth.json` files
are not counted as extra files but are required.
</p>
<p class="leftbar">
In other words, the actual amount of **EXTRA** files is 31.
</p>
<p class="leftbar">
Of course, if you use the optional filenames without
the files being our intended use, in order to get past the file limit, that
would be an abuse of rules. For more details on the optional files, see the
FAQ on the "[try.sh script system](../faq.html#try_script)"
and the
FAQ on "[alt code](../faq.html#alt_code)".
</p>
<p class="leftbar">
If you do need to include more files, you may do so by including as an extra
file, a tarball. This does **NOT** have to pass `txzchk(1)` tests; only the
submission tarball must pass the `txzchk(1)` tests. See the [txzchk
section](#txzchk) for more details on this important tool.
</p>
<p class="leftbar">
If you **DO** include a tarball, and the build process or the program extracts
said tarball(s), the make `clobber` rule **MUST** remove them.
</p>
<p class="leftbar">
**IMPORTANT REMINDER**: make **SURE** your tarball does **NOT** reveal who you are!
The `mkiocccentry(1)` tool creates a v7 format tarball to prevent this. You can
do the same like:
</p>
``` <!---sh-->
tar --format=v7 -cJf foo.txz directory
```
<p class="leftbar">
See [Rule 17](rules.html#rule17) and in particular the part about the [maximum
number of files](rules.html#max-files). If you do not follow these points, you
are at a great risk of violating [Rule 17](rules.html#rule17)!
</p>
<p class="leftbar">
**NOTE**: if you want to include a test-suite that requires a lot of files,
please suggest this in your `remarks.md` and if your submission wins it can
be done. In other words you should not use a tarball for a test-suite unless you
have a very good reason for this (and if you do, make **SURE** you specify why
in your `remarks.md`).
</p>
<p class="leftbar">
See also the
FAQ on "[txzchk](../faq.html#txzchk)".
+30 -15
View File
@@ -460,9 +460,8 @@ writing by <a href="../contact.html">contacting the judges</a>.</p>
<h2 id="ioccc-rules-version">IOCCC Rules version</h2>
</div>
</div>
<p>Jump to: <a href="#">top</a></p>
<p class="leftbar">
These <a href="rules.html">IOCCC rules</a> are version <strong>28.19 2025-01-30</strong>.
These <a href="rules.html">IOCCC rules</a> are version <strong>28.21 2025-02-03</strong>.
</p>
<p class="leftbar">
The <a href="rules.md" download="rules.md">markdown form of these rules</a>
@@ -973,8 +972,8 @@ if you need to include more files than this maximum.
<p class="leftbar">
Extra files are defined as files that are not the required files (<code>prog.c</code>,
<code>Makefile</code>, <code>remarks.md</code> and the two generated by <code>mkiocccentry(1)</code> <code>.info.json</code>
and <code>.auth.json</code>) and the optional files (<code>try.sh</code>, <code>prog.alt.c</code> and
<code>try.alt.sh</code>).
and <code>.auth.json</code>) and files that are also not the optional files (<code>try.sh</code>,
<code>prog.alt.c</code> and <code>try.alt.sh</code>).
</p>
<p>Jump to: <a href="#">top</a></p>
<h3 id="rule-17---the-complex-details">Rule 17 - The COMPLEX details</h3>
@@ -1056,7 +1055,7 @@ See also the <a href="https://www.markdownguide.org/basic-syntax">markdown synta
and the <a href="https://spec.commonmark.org/current/">CommonMark Spec</a>.
</p>
<p class="leftbar">
The xz compressed tarball file <strong>MUST</strong> be less than or equal <strong>3999971</strong> octets in size.
The xz compressed tarball file <strong>MUST</strong> be less than or equal to <strong>3999971</strong> octets in size.
</p>
<p class="leftbar">
When your submission’s xz compressed tarball is uncompressed,
@@ -1092,11 +1091,10 @@ Filenames in your entry (that is, not including the files generated by the
</p>
<ul>
<li><p class="leftbar">
Be &lt;= <strong>38</strong> characters in length
Be &lt;= <strong>38</strong> characters in length.
</p></li>
<li><p class="leftbar">
<strong>NOT</strong> have a <strong><code>/</code></strong> (excluding the entry directory that
the <code>mkiocccentry(1)</code> tool generates).
<strong>NOT</strong> have a leading <strong><code>/</code></strong>.
</p></li>
<li><p class="leftbar">
<strong>NOT</strong> contain a path component of: <strong><code>.</code></strong> (that is, with
@@ -1116,12 +1114,12 @@ Match the regular expression
<strong>NOT</strong> be a directory depth &gt; 4.
</p></li>
<li><p class="leftbar">
<strong>NOT</strong> have a total path length &gt; 99 characters.
<strong>NOT</strong> have a total <strong>path</strong> length &gt; 99 characters.
</p></li>
</ul>
<p class="leftbar">
Additionally, the submission tarball created by <code>mkiocccentry(1)</code> <strong>MUST</strong> have
the following files (generated by the <code>mkiocccentry(1)</code> tool):
The submission tarball created by <code>mkiocccentry(1)</code> <strong>MUST</strong> have
the additional files that are generated by the <code>mkiocccentry(1)</code> tool:
</p>
<ul>
<li><p class="leftbar">
@@ -1134,11 +1132,27 @@ entry.
</p></li>
</ul>
<p class="leftbar">
The <code>chkentry(1)</code> tool will validate these two JSON files <em>prior to</em> the tarball
being formed.
</p>
<p class="leftbar">
Files and directories in your submission tarball <strong>MUST</strong> be specific
permissions and <code>mkiocccentry(1)</code> does this for you. In particular: directories
<strong>MUST</strong> be <code>drwxr-xr-x</code> (i.e. <code>0755</code>), the optional files, <code>try.sh</code> or
<code>try.alt.sh</code>, if provided, <strong>MUST</strong> be <code>-r-xr-xr-x</code> (i.e. <code>0555</code>) and all other
files <strong>MUST</strong> be <code>-r--r--r--</code> (i.e. <code>0444</code>). If the files do not have these
permissions, your submission <strong>WILL</strong> be rejected for violating <a href="#rule17">Rule
17</a>! If you do need different permissions, then see the
FAQ on “<a href="../faq.html#file_perms">file permissions</a>”. Also keep in mind
<a href="#rule4">Rule 4</a>, <a href="#rule5">Rule 5</a> and <a href="#rule21">Rule 21</a>.
</p>
<p class="leftbar">
The <code>txzchk(1)</code> tool will verify these (and other things) for you and
the <code>chkentry(1)</code> tool will do additional checks on the contents of the
<code>.auth.json</code> and <code>.info.json</code> files (including JSON validity). If these checks
fail it is an error and <code>mkiocccentry(1)</code> will fail. In this case it is very
<strong>possibly</strong> a bug; please <a href="https://github.com/ioccc-src/mkiocccentry/issues/new?assignees=&amp;labels=bug&amp;projects=&amp;template=bug_report.yml&amp;title=%5BBug%5D+%3Ctitle%3E">report it as a bug at the mkiocccentry issues
fail it is an error and <code>mkiocccentry(1)</code> will fail. In this case (it fails and
you used <code>mkiocccentry(1)</code>) it is very <strong>possibly</strong> a bug; please <a href="https://github.com/ioccc-src/mkiocccentry/issues/new?assignees=&amp;labels=bug&amp;projects=&amp;template=bug_report.yml&amp;title=%5BBug%5D+%3Ctitle%3E">report it as
a bug at the mkiocccentry issues
page</a>.
</p>
<p class="leftbar">
@@ -1162,7 +1176,8 @@ having your submission rejected for violating <a href="#rule17">Rule 17</a>!
<p class="leftbar">
The maximum number of files your submission tarball may contain, not counting
the optional files (<code>prog.alt.c</code>, <code>try.sh</code>, <code>try.alt.sh</code>) and the mandatory
files (<code>prog.c</code>, <code>Makefile</code>, <code>remarks.md</code>) is 31. This is defined in the macro
files (<code>prog.c</code>, <code>Makefile</code>, <code>remarks.md</code> plus the <code>mkiocccentry(1)</code> generated
files <code>.auth.json</code> and <code>.info.json</code>) is 31. This is defined in the macro
<code>MAX_EXTRA_FILE_COUNT</code> in
<a href="https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h">soup/limit_ioccc.h</a>
in the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry repo</a>. See the
@@ -1251,7 +1266,7 @@ do this <strong>AFTER</strong> the <a href="../status.html">contest status</a> h
<p class="leftbar">
<strong><a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0 DEED Attribution-ShareAlike 4.0 International</a></strong>
</p>
<p>You (the author(s)) <strong>MUST</strong> own the contents of your submission <strong>OR</strong>
<p>You (the author(s)) <strong>MUST</strong> own the content of your submission <strong>OR</strong>
you <strong>MUST HAVE PERMISSION</strong> from the owner(s) to submit their content.</p>
<p>You <strong>MUST NOT</strong> submit anything that cannot be submitted under that license.</p>
<p>Jump to: <a href="#">top</a></p>
+32 -19
View File
@@ -51,11 +51,9 @@ Jump to: [top](#)
</div>
Jump to: [top](#)
<p class="leftbar">
These [IOCCC rules](rules.html) are version **28.19 2025-01-30**.
These [IOCCC rules](rules.html) are version **28.21 2025-02-03**.
</p>
<p class="leftbar">
@@ -747,8 +745,8 @@ if you need to include more files than this maximum.
<p class="leftbar">
Extra files are defined as files that are not the required files (`prog.c`,
`Makefile`, `remarks.md` and the two generated by `mkiocccentry(1)` `.info.json`
and `.auth.json`) and the optional files (`try.sh`, `prog.alt.c` and
`try.alt.sh`).
and `.auth.json`) and files that are also not the optional files (`try.sh`,
`prog.alt.c` and `try.alt.sh`).
</p>
Jump to: [top](#)
@@ -835,7 +833,7 @@ and the [CommonMark Spec](https://spec.commonmark.org/current/).
</p>
<p class="leftbar">
The xz compressed tarball file **MUST** be less than or equal **3999971** octets in size.
The xz compressed tarball file **MUST** be less than or equal to **3999971** octets in size.
</p>
<p class="leftbar">
@@ -850,8 +848,6 @@ Your submission's xz compressed tarball **MUST** pass the `txzchk(1)` test. See
the [guidelines](guidelines.html) for more details on this tool.
</p>
<p class="leftbar">
**IMPORTANT**: Make **SURE** you have the most recent version of the
`mkiocccentry` toolkit! Not doing so will put you at a great risk of violating
@@ -861,7 +857,6 @@ for more details.
</p>
<p class="leftbar">
You are **HIGHLY ENCOURAGED** to use the `mkiocccentry(1)` tool to form your
submission's xz compressed tarball. See the [guidelines](guidelines.html) for
@@ -880,9 +875,8 @@ Filenames in your entry (that is, not including the files generated by the
`mkiocccentry(1)` tool or the tools it or any other tool invokes) **MUST**:
</p>
* <p class="leftbar">Be <= **38** characters in length</p>
* <p class="leftbar">**NOT** have a **`/`** (excluding the entry directory that
the `mkiocccentry(1)` tool generates).</p>
* <p class="leftbar">Be <= **38** characters in length.</p>
* <p class="leftbar">**NOT** have a leading **`/`**.</p>
* <p class="leftbar">**NOT** contain a path component of: **`.`** (that is, with
the exception of files generated by `mkiocccentry(1)` itself, it must have
**NO** **`.`**).</p>
@@ -892,11 +886,11 @@ the exception of files generated by `mkiocccentry(1)` itself, it must have
`^[0-9A-Za-z]+[0-9A-Za-z_+.-]*$` (again, excluding files generated by
`mkiocccentry(1)`).</p>
* <p class="leftbar">**NOT** be a directory depth > 4.</p>
* <p class="leftbar">**NOT** have a total path length > 99 characters.</p>
* <p class="leftbar">**NOT** have a total **path** length > 99 characters.</p>
<p class="leftbar">
Additionally, the submission tarball created by `mkiocccentry(1)` **MUST** have
the following files (generated by the `mkiocccentry(1)` tool):
The submission tarball created by `mkiocccentry(1)` **MUST** have
the additional files that are generated by the `mkiocccentry(1)` tool:
</p>
* <p class="leftbar">`.auth.json` which contains information about the author or
@@ -904,12 +898,30 @@ authors (that will only be looked at if the submission wins).</p>
* <p class="leftbar">`.info.json` which contains information about the
entry.</p>
<p class="leftbar">
The `chkentry(1)` tool will validate these two JSON files _prior to_ the tarball
being formed.
</p>
<p class="leftbar">
Files and directories in your submission tarball **MUST** be specific
permissions and `mkiocccentry(1)` does this for you. In particular: directories
**MUST** be `drwxr-xr-x` (i.e. `0755`), the optional files, `try.sh` or
`try.alt.sh`, if provided, **MUST** be `-r-xr-xr-x` (i.e. `0555`) and all other
files **MUST** be `-r--r--r--` (i.e. `0444`). If the files do not have these
permissions, your submission **WILL** be rejected for violating [Rule
17](#rule17)! If you do need different permissions, then see the
FAQ on "[file permissions](../faq.html#file_perms)". Also keep in mind
[Rule 4](#rule4), [Rule 5](#rule5) and [Rule 21](#rule21).
</p>
<p class="leftbar">
The `txzchk(1)` tool will verify these (and other things) for you and
the `chkentry(1)` tool will do additional checks on the contents of the
`.auth.json` and `.info.json` files (including JSON validity). If these checks
fail it is an error and `mkiocccentry(1)` will fail. In this case it is very
**possibly** a bug; please [report it as a bug at the mkiocccentry issues
fail it is an error and `mkiocccentry(1)` will fail. In this case (it fails and
you used `mkiocccentry(1)`) it is very **possibly** a bug; please [report it as
a bug at the mkiocccentry issues
page](https://github.com/ioccc-src/mkiocccentry/issues/new?assignees=&labels=bug&projects=&template=bug_report.yml&title=%5BBug%5D+%3Ctitle%3E).
</p>
@@ -938,7 +950,8 @@ having your submission rejected for violating [Rule 17](#rule17)!
<p class="leftbar">
The maximum number of files your submission tarball may contain, not counting
the optional files (`prog.alt.c`, `try.sh`, `try.alt.sh`) and the mandatory
files (`prog.c`, `Makefile`, `remarks.md`) is 31. This is defined in the macro
files (`prog.c`, `Makefile`, `remarks.md` plus the `mkiocccentry(1)` generated
files `.auth.json` and `.info.json`) is 31. This is defined in the macro
`MAX_EXTRA_FILE_COUNT` in
[soup/limit_ioccc.h](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h)
in the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry). See the
@@ -1049,7 +1062,7 @@ The entirety of your submission must be submitted under the following license:
**[CC BY-SA 4.0 DEED Attribution-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/)**
</p>
You (the author(s)) **MUST** own the contents of your submission **OR**
You (the author(s)) **MUST** own the content of your submission **OR**
you **MUST HAVE PERMISSION** from the owner(s) to submit their content.
You **MUST NOT** submit anything that cannot be submitted under that license.