Fixes in rules

As per Landon's request I have done additional checks. I did not do a
very thorough check but things should hopefully be a bit clearer now.
This commit is contained in:
Cody Boone Ferguson committed 2025-12-02 09:50:28 -08:00
1 parent e70b02f022
commit 0aeac9b80c
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">