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

+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.