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

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