Merge pull request #248 from xexyl/rules

Fixes in rules
This commit is contained in:
Landon Curt Noll authored and GitHub committed 2025-12-02 10:46:41 -08:00
commit 50aba04769
2 files changed
+131 -105

No files matched your search

+72 -53
View File
@@ -594,52 +594,69 @@ At a <strong>minimum</strong> the following requirements apply. Additional
requirements may be imposed by <code>mkiocccentry(1)</code> updates that have yet
to be listed below:
</p>
<p><span style="font-size:28px;"><b>|</b></span>  
* <code>.info.json</code> and <code>.auth.json</code> <strong>MUST</strong> be generated by
<code>mkiocccenty(1)</code> when packing a submission. When <code>chksubmit(1)</code> is run
on the submission directory <strong>ALL</strong> tests must pass and if there is
<strong>ANY</strong> problem with these JSON files or if either is missing it will
fail. See <a href="#rule17-mkiocccentry">Rule 17 - use mkiocccentry</a>.</p>
<p><span style="font-size:28px;"><b>|</b></span>  
* The <code>Makefile</code>, <code>remarks.md</code>,<code>.info.json</code>, and <code>.auth.json</code> <strong>MUST</strong>
have a file size <strong>greater than 0</strong> and <strong>MUST</strong> have content. Note
that <code>mkiocccentry(1)</code> will check for file <strong>size</strong> but will <strong>NOT</strong>
check for content.</p>
<p><span style="font-size:28px;"><b>|</b></span>  
* Your submitted source code <strong>MUST</strong> be called <code>prog.c</code>. When the
<ul>
<li><p class="leftbar">
<code>.info.json</code> and <code>.auth.json</code> <strong>MUST</strong> be generated by
<code>mkiocccenty(1)</code> when packing a submission.
</p></li>
<li><p class="leftbar">
Before forming the tarball, <code>mkiocccentry(1)</code> will run <code>chksubmit(1)</code> on your
submission directory and if <strong>ANY</strong> problems are found (with <code>.auth.json</code>,
<code>.info.json</code> or <strong>ANYTHING</strong> else), your tarball will <strong>NOT</strong> be formed.
</p></li>
<li><p class="leftbar">
The <code>Makefile</code>, <code>remarks.md</code>,<code>.info.json</code>, and <code>.auth.json</code>
<strong>MUST</strong> have a file size <strong>greater than 0</strong> and <strong>MUST</strong> have content. Note
that <code>mkiocccentry(1)</code> will check for file <strong>size</strong> but will <strong>NOT</strong> check for
content. On the other hand <code>chksubmit(1)</code> will check that the <code>.auth.json</code> and
<code>.info.json</code> are both valid JSON and are valid according to the IOCCC
requirements.
</p></li>
<li><p class="leftbar">
Your submitted source code <strong>MUST</strong> be called <code>prog.c</code>. When the
<code>Makefile</code> compiles your code, the executable (if applicable) <strong>MUST</strong>
be called <code>prog</code>. The <code>Makefile</code> may compile your source code into
other filenames as well, if you want.</p>
<p><span style="font-size:28px;"><b>|</b></span>  
* As <code>prog</code>, <code>prog.alt</code>, <code>prog.alt.o</code>, <code>prog.o</code> may be created by your
other filenames as well, if you want.
</p></li>
<li><p class="leftbar">
As <code>prog</code>, <code>prog.alt</code>, <code>prog.alt.o</code>, <code>prog.o</code> may be created by your
<code>Makefile</code>, your submission <strong>MUST NOT</strong> include those files in your
<strong>top</strong> directory.</p>
<p><span style="font-size:28px;"><b>|</b></span>  
* Your submission may <strong>NOT</strong> have any file that starts with <code>COPYING</code>,
<code>COPYRIGHT</code>, or <code>LICENSE</code> as those files are reserved by IOCCC.</p>
<p><span style="font-size:28px;"><b>|</b></span>  
* Your submission may <strong>NOT</strong> have in the <strong>top</strong> directory:
<strong>top</strong> directory.
</p></li>
<li><p class="leftbar">
Your submission may <strong>NOT</strong> have any file that starts with <code>COPYING</code>,
<code>COPYRIGHT</code>, or <code>LICENSE</code> as those files are reserved by IOCCC.
</p></li>
<li><p class="leftbar">
Your submission may <strong>NOT</strong> have in the <strong>top</strong> directory:
<code>prog.orig.c</code>, <code>README.md</code> or <code>index.html</code> as those files are reserved
by the IOCCC.</p>
<p><span style="font-size:28px;"><b>|</b></span>  
* Your submission may <strong>NOT</strong> have in the <strong>top</strong> directory any file
that matches a file glob pattern form <code>[0-9][0-9][0-9][0-9]_*.tar.bz2</code>
as those files are reserved by IOCCC.</p>
<p><span style="font-size:28px;"><b>|</b></span>  
* Your submission may <strong>ONLY</strong> contain files and directories. Other
file types such as symlinks, sockets etc. are <strong>NOT</strong> allowed.</p>
<p><span style="font-size:28px;"><b>|</b></span>  
* <strong>All</strong> directories <strong>MUST</strong> have permission mode of <strong>0755</strong>. All
files <strong>MUST</strong> have the file mode of <strong>0444</strong>, EXCEPT for files that
end in <code>.sh</code> which must have a mode of <strong>0555</strong>.</p>
<p><span style="font-size:28px;"><b>|</b></span>  
* All files that end in <code>.md</code> <strong>MUST</strong> be in markdown format.</p>
<p><span style="font-size:28px;"><b>|</b></span>  
* All filenames are treated as case insensitive. For example,
by the IOCCC.
</p></li>
<li><p class="leftbar">
Your submission may <strong>NOT</strong> have in the <strong>top</strong> directory any file that matches
a file glob pattern form <code>[0-9][0-9][0-9][0-9]_*.tar.bz2</code> as those files are
reserved by IOCCC.
</p></li>
<li><p class="leftbar">
Your submission may <strong>ONLY</strong> contain <strong>regular</strong> files and directories. Other
file types such as symlinks, sockets etc. are <strong>NOT</strong> allowed.
</p></li>
<li><p class="leftbar">
<strong>All</strong> directories <strong>MUST</strong> have permission mode of <code>0755</code>. All
files <strong>MUST</strong> have the file mode of <code>0444</code>, <strong>EXCEPT</strong> for files that
end in <code>.sh</code> which must have a mode of <code>0555</code>.
</p></li>
<li><p class="leftbar">
All files that end in <code>.md</code> <strong>MUST</strong> be in markdown format.
</p></li>
<li><p class="leftbar">
All filenames are treated as case insensitive. For example,
<code>REMARKS.MD</code>, and <code>Remarks.md</code>, and <code>remarks.md</code> are considered by
<code>mkiocccenty(1)</code> to be the <strong>SAME</strong> file. When preparing a submission
on a case sensitive filesystem, ensure that the submission will work on
a case insensitive filesystem.</p>
a case insensitive filesystem.
</p></li>
</ul>
<p class="leftbar">
<strong>NOTE</strong>: by ‘top directory’ we mean the directory with <code>prog.c</code>,
<code>Makefile</code>, <code>remarks.md</code> and the <code>mkiocccentry(1)</code> generated files
@@ -676,7 +693,7 @@ restore the directory to its original state.</p>
<p>With the exception of the <code>/tmp</code> and the <code>/var/tmp</code> directories,
assuming the directory name or filename does <strong>NOT</strong> start with a <code>.</code>
(dot), your submission <strong>MUST NOT</strong> create or modify directories and
files ABOVE the current directory.</p>
files <strong>ABOVE</strong> the current directory.</p>
<p>The <code>Makefile</code> <code>clobber</code> target <strong>MUST</strong> restore your submission to its
original form, including the removal of any created files and
directories.</p>
@@ -700,12 +717,11 @@ environment</a>.
</div>
</div>
<p class="leftbar">
You, the author(s), <strong>MUST</strong> own the contents of your submission,
<strong>OR</strong>, IF you do <strong>NOT</strong> own the work, then you <strong>MUST</strong> have
permission from the original owner(s) to its use. If you submit
<strong>ANY</strong> content that is owned by others, you <strong>MUST</strong> detail that
ownership, i.e., who owns what, and document the permission you
obtained from them in your <code>remarks.md</code> file.
You, the author(s), <strong>MUST</strong> own the contents of your submission, <strong>OR</strong>, IF you
do <strong>NOT</strong> own the work, then you <strong>MUST</strong> have permission from the original
owner(s) to its use. If you submit <strong>ANY</strong> content that is owned by others, you
<strong>MUST</strong> detail that ownership, i.e., who owns what, and document in your
<code>remarks.md</code> the permission you obtained from them.
</p>
<p class="leftbar">
You are permitted to use tools to write your code.
@@ -818,7 +834,7 @@ abuse</a>.</p>
<h2 id="rule-12---utf-8">Rule 12 - UTF-8</h2>
</div>
</div>
<p>Use of UTF-8 is supported by <code>C89</code> standard and its updates and so too
<p>Use of UTF-8 is supported by <code>C11</code> standard and its updates and so too
by the IOCCC.</p>
<p>See <a href="guidelines.html#guideline12-utf8">Guidelines for Rule 12 - UTF-8</a>.</p>
<div id="rule13">
@@ -914,22 +930,25 @@ comply may result in the submission being disqualified</em></strong>.</p>
<h2 id="rule-17---use-mkiocccentry">Rule 17 - Use <code>mkiocccentry</code></h2>
</div>
</div>
<p>TL;DR: use <code>mkiocccentry(1)</code> to package your submission.</p>
<p><strong>TL;DR</strong>: use <code>mkiocccentry(1)</code> to package your submission.</p>
<p>The files, directories, and paths <strong>MUST</strong> conform to the limits
imposed by <code>mkiocccentry(1)</code>, including but <strong>NOT</strong> limited, to their
imposed by <code>mkiocccentry(1)</code>, including but <strong>NOT</strong> limited to, their
names, count, path length, directory tree depth, and permissions.</p>
<p class="leftbar">
The submission tree may have at most <strong>13</strong> directories and maximum
directory depths of <strong>4</strong>. The maximum number of files, excluding
<code>prog.c</code>, <code>remarks.md</code>, <code>Makefile</code>, <code>prog.alt.c</code>, <code>try.sh</code>,
<code>try.alt.sh</code>, <code>.info.json</code> and <code>.auth.json</code> is <strong>31</strong>. And the maximum
file-path component is <strong>38</strong> and maximum path length is <strong>60</strong>.
<code>try.alt.sh</code>, <code>.info.json</code> and <code>.auth.json</code> is <strong>31</strong>.
</p>
<p class="leftbar">
The maximum file-path component is <strong>38</strong> and the maximum
path length is <strong>60</strong>.
</p>
<p>The submission <strong>MUST</strong> be a <code>.txz</code> compressed tarball (i.e., tarball
compressed by <code>xz(1)</code>) as constructed by <code>mkiocccentry(1)</code>, which
compressed by <code>xz(1)</code>) <strong>as constructed by</strong> <code>mkiocccentry(1)</code>, which
<strong>MUST</strong> be within <strong>[1..3999971]</strong> bytes in size.</p>
<p>The tarball <strong>MUST</strong> be a <strong>v7 format</strong> tarball, and any supplementary
tarballs you provide <strong>MUST</strong> also be <strong>v7 format</strong>.</p>
tarballs you provide <strong>MUST ALSO</strong> be <strong>v7 format</strong>.</p>
<p>The sum of all file lengths, after unpacking from the tarball, <strong>MUST</strong>
be less than <code>27651*1024</code> (<strong>28314624</strong>) bytes.</p>
<p class="leftbar">
+59 -52
View File
@@ -199,62 +199,67 @@ requirements may be imposed by `mkiocccentry(1)` updates that have yet
to be listed below:
</p>
<span style='font-size:28px;'><b>&verbar;</b></span>&nbsp;&nbsp;
* `.info.json` and `.auth.json` **MUST** be generated by
`mkiocccenty(1)` when packing a submission. When `chksubmit(1)` is run
on the submission directory **ALL** tests must pass and if there is
**ANY** problem with these JSON files or if either is missing it will
fail. See [Rule 17 - use mkiocccentry](#rule17-mkiocccentry).
* <p class="leftbar">`.info.json` and `.auth.json` **MUST** be generated by
`mkiocccenty(1)` when packing a submission.</p>
<span style='font-size:28px;'><b>&verbar;</b></span>&nbsp;&nbsp;
* The `Makefile`, `remarks.md`,`.info.json`, and `.auth.json` **MUST**
have a file size **greater than 0** and **MUST** have content. Note
that `mkiocccentry(1)` will check for file **size** but will **NOT**
check for content.
* <p class="leftbar">
Before forming the tarball, `mkiocccentry(1)` will run `chksubmit(1)` on your
submission directory and if **ANY** problems are found (with `.auth.json`,
`.info.json` or **ANYTHING** else), your tarball will **NOT** be formed.
</p>
<span style='font-size:28px;'><b>&verbar;</b></span>&nbsp;&nbsp;
* Your submitted source code **MUST** be called `prog.c`. When the
* <p class="leftbar">The `Makefile`, `remarks.md`,`.info.json`, and `.auth.json`
**MUST** have a file size **greater than 0** and **MUST** have content. Note
that `mkiocccentry(1)` will check for file **size** but will **NOT** check for
content. On the other hand `chksubmit(1)` will check that the `.auth.json` and
`.info.json` are both valid JSON and are valid according to the IOCCC
requirements.</p>
* <p class="leftbar">
Your submitted source code **MUST** be called `prog.c`. When the
`Makefile` compiles your code, the executable (if applicable) **MUST**
be called `prog`. The `Makefile` may compile your source code into
other filenames as well, if you want.
other filenames as well, if you want.</p>
<span style='font-size:28px;'><b>&verbar;</b></span>&nbsp;&nbsp;
* As `prog`, `prog.alt`, `prog.alt.o`, `prog.o` may be created by your
* <p class="leftbar">
As `prog`, `prog.alt`, `prog.alt.o`, `prog.o` may be created by your
`Makefile`, your submission **MUST NOT** include those files in your
**top** directory.
**top** directory.</p>
<span style='font-size:28px;'><b>&verbar;</b></span>&nbsp;&nbsp;
* Your submission may **NOT** have any file that starts with `COPYING`,
`COPYRIGHT`, or `LICENSE` as those files are reserved by IOCCC.
* <p class="leftbar">
Your submission may **NOT** have any file that starts with `COPYING`,
`COPYRIGHT`, or `LICENSE` as those files are reserved by IOCCC.</p>
<span style='font-size:28px;'><b>&verbar;</b></span>&nbsp;&nbsp;
* Your submission may **NOT** have in the **top** directory:
* <p class="leftbar">
Your submission may **NOT** have in the **top** directory:
`prog.orig.c`, `README.md` or `index.html` as those files are reserved
by the IOCCC.
by the IOCCC.</p>
<span style='font-size:28px;'><b>&verbar;</b></span>&nbsp;&nbsp;
* Your submission may **NOT** have in the **top** directory any file
that matches a file glob pattern form `[0-9][0-9][0-9][0-9]_*.tar.bz2`
as those files are reserved by IOCCC.
* <p class="leftbar">
Your submission may **NOT** have in the **top** directory any file that matches
a file glob pattern form `[0-9][0-9][0-9][0-9]_*.tar.bz2` as those files are
reserved by IOCCC.</p>
<span style='font-size:28px;'><b>&verbar;</b></span>&nbsp;&nbsp;
* Your submission may **ONLY** contain files and directories. Other
file types such as symlinks, sockets etc. are **NOT** allowed.
* <p class="leftbar">
Your submission may **ONLY** contain **regular** files and directories. Other
file types such as symlinks, sockets etc. are **NOT** allowed.</p>
<span style='font-size:28px;'><b>&verbar;</b></span>&nbsp;&nbsp;
* **All** directories **MUST** have permission mode of **0755**. All
files **MUST** have the file mode of **0444**, EXCEPT for files that
end in `.sh` which must have a mode of **0555**.
* <p class="leftbar">
**All** directories **MUST** have permission mode of `0755`. All
files **MUST** have the file mode of `0444`, **EXCEPT** for files that
end in `.sh` which must have a mode of `0555`.</p>
<span style='font-size:28px;'><b>&verbar;</b></span>&nbsp;&nbsp;
* All files that end in `.md` **MUST** be in markdown format.
* <p class="leftbar">
All files that end in `.md` **MUST** be in markdown format.
</p>
<span style='font-size:28px;'><b>&verbar;</b></span>&nbsp;&nbsp;
* All filenames are treated as case insensitive. For example,
* <p class="leftbar">
All filenames are treated as case insensitive. For example,
`REMARKS.MD`, and `Remarks.md`, and `remarks.md` are considered by
`mkiocccenty(1)` to be the **SAME** file. When preparing a submission
on a case sensitive filesystem, ensure that the submission will work on
a case insensitive filesystem.
</p>
<p class="leftbar">
**NOTE**: by 'top directory' we mean the directory with `prog.c`,
@@ -303,7 +308,7 @@ restore the directory to its original state.
With the exception of the `/tmp` and the `/var/tmp` directories,
assuming the directory name or filename does **NOT** start with a `.`
(dot), your submission **MUST NOT** create or modify directories and
files ABOVE the current directory.
files **ABOVE** the current directory.
The `Makefile` `clobber` target **MUST** restore your submission to its
original form, including the removal of any created files and
@@ -338,12 +343,11 @@ See [Rule 19 - Prime](rules.html#rule19-prime).
</div>
<p class="leftbar">
You, the author(s), **MUST** own the contents of your submission,
**OR**, IF you do **NOT** own the work, then you **MUST** have
permission from the original owner(s) to its use. If you submit
**ANY** content that is owned by others, you **MUST** detail that
ownership, i.e., who owns what, and document the permission you
obtained from them in your `remarks.md` file.
You, the author(s), **MUST** own the contents of your submission, **OR**, IF you
do **NOT** own the work, then you **MUST** have permission from the original
owner(s) to its use. If you submit **ANY** content that is owned by others, you
**MUST** detail that ownership, i.e., who owns what, and document in your
`remarks.md` the permission you obtained from them.
</p>
<p class="leftbar">
@@ -493,7 +497,7 @@ abuse](guidelines.html#guideline11-abuse).
</div>
</div>
Use of UTF-8 is supported by `C89` standard and its updates and so too
Use of UTF-8 is supported by `C11` standard and its updates and so too
by the IOCCC.
See [Guidelines for Rule 12 - UTF-8](guidelines.html#guideline12-utf8).
@@ -620,26 +624,29 @@ comply may result in the submission being disqualified_**.
</div>
</div>
TL;DR: use `mkiocccentry(1)` to package your submission.
**TL;DR**: use `mkiocccentry(1)` to package your submission.
The files, directories, and paths **MUST** conform to the limits
imposed by `mkiocccentry(1)`, including but **NOT** limited, to their
imposed by `mkiocccentry(1)`, including but **NOT** limited to, their
names, count, path length, directory tree depth, and permissions.
<p class="leftbar">
The submission tree may have at most **13** directories and maximum
directory depths of **4**. The maximum number of files, excluding
`prog.c`, `remarks.md`, `Makefile`, `prog.alt.c`, `try.sh`,
`try.alt.sh`, `.info.json` and `.auth.json` is **31**. And the maximum
file-path component is **38** and maximum path length is **60**.
`try.alt.sh`, `.info.json` and `.auth.json` is **31**.
</p>
<p class="leftbar">The maximum file-path component is **38** and the maximum
path length is **60**.
</p>
The submission **MUST** be a `.txz` compressed tarball (i.e., tarball
compressed by `xz(1)`) as constructed by `mkiocccentry(1)`, which
compressed by `xz(1)`) **as constructed by** `mkiocccentry(1)`, which
**MUST** be within **[1..3999971]** bytes in size.
The tarball **MUST** be a **v7 format** tarball, and any supplementary
tarballs you provide **MUST** also be **v7 format**.
tarballs you provide **MUST ALSO** be **v7 format**.
The sum of all file lengths, after unpacking from the tarball, **MUST**
be less than `27651*1024` (**28314624**) bytes.