From 1c5f14f3e065cb79ac6ffd03a192c9aa89201d7d Mon Sep 17 00:00:00 2001
From: Cody Boone Ferguson <53008573+xexyl@users.noreply.github.com>
Date: Mon, 10 Feb 2025 13:28:41 -0800
Subject: [PATCH] More updates to FAQ for mkiocccentry process
Missing steps were added and other things which have changed (fixed)
have also bee noted.
There was also a typo fix in the rules.
---
faq.html | 154 ++++++++++++++++++++++++++++++-----------------
faq.md | 155 ++++++++++++++++++++++++++++++------------------
next/rules.html | 4 +-
next/rules.md | 4 +-
4 files changed, 198 insertions(+), 119 deletions(-)
diff --git a/faq.html b/faq.html
index 6f12bcabc..689213674 100644
--- a/faq.html
+++ b/faq.html
@@ -425,7 +425,7 @@
IOCCC FAQ Table of Contents
-This is FAQ version 28.2.7 2025-02-09.
+This is FAQ version 28.2.8 2025-02-10.
- Q 0.0: How can I enter the IOCCC?
@@ -1392,50 +1392,68 @@ Jump to: top
Q 3.0: What is the mkiocccentry(1) process and what sort of checks does it perform?
-The mkiocccentry(1) tool performs the following steps:
+In full, the mkiocccentry(1) tool performs the following steps:
-- Ask the user for a submission ID (see the quick-start
-guide for more details on how to obtain this).
+
- Ask the user for a submission ID (see the how to register
+for more details on how to obtain this and Rule 17 for
+the importance of this).
-- If this is an invalid UUID (malformed), it is an error.
+- If this is an invalid UUID (malformed), you will be asked to correct it
+until it is.
-- Ask the user for the submission slot (the submission number; see Rule
-17 for more details).
+
- Ask the user for the submission slot (the submission number; see how to
+register and Rule 17 for more details).
-- If this is out of range it is an error (see
MAX_SUBMIT_SLOT in
-limit_ioccc.h).
+- If this is out of range (see
MAX_SUBMIT_SLOT in
+limit_ioccc.h)
+and you will be asked to correct it until it is.
+
+- Make the submission directory under
topdir in the form of
+workdir/submit.USERNAME-SLOT.TIMESTAMP (the timestamp is calculated by
+mkiocccentry(1) so you do not have to worry about this).
+
+- If this directory already exists it is an error.
- Change to the
topdir.
-- Traverses the directory, creating lists of ignored
+
- Traverse the directory, creating lists of ignored/forbidden
files/directories/symlinks as well as a list directories to make and a list of
-files to copy to the submission directory.
+files to copy to the submission directory (and if (sub)directories are found
+with files, copy those files to their respective directory). Note the following:
- If the depth is too deep it is an error (see
MAX_PATH_DEPTH in
limit_ioccc.h).
-- If there are too many directories it is an error (see
MAX_DIR_COUNT in
+ - If there are too many extra directories (total count not including the
+submission directory itself, unrelated to
MAX_PATH_DEPTH above) it is an
+error (see MAX_EXTRA_DIR_COUNT in
limit_ioccc.h).
-- If a filename or directory name is not a sane relative path, not allowed
-or will not be added for some other reason, it will be added to a relevant list to show to
-the user later, to let them know it is ignored. By
relative we mean it
-must not start with / and by sane we mean that each component must match
-the regexp: ^[0-9A-Za-z]+[0-9A-Za-z_+.-]*$.
-- If the path length (i.e. the entire length of the path from the
topdir)
-is too long it is an error (see MAX_PATH_LEN in
-limit_ioccc.h).
-- If a filename is too long it is an error (see
MAX_FILENAME_LEN in
-limit_ioccc.h).
-- If there is an unknown error it is an error :-)
-- If a path is NULL it is an error.
-- If a path is an empty string it is an error.
- If the max path length is <= 0 it is an error (and a bug).
- If the max depth is <= 0 it is an error (and a bug).
- If the max filename length is <= 0 it is an error (and a bug).
-- If a directory is not readable it is an error.
+- If a path is NULL it is an error.
+- If a path is an empty string it is an error.
+- If the path length (i.e.
strlen(path) where path starts after the
+initial ./ of the path in the topdir) is too long it is an error (see MAX_PATH_LEN in
+limit_ioccc.h).
+- If a filename (last component of the path) is too long it is an error (see
MAX_FILENAME_LEN in
+limit_ioccc.h).
+- If a filename or directory name is not a sane relative path, not allowed
+or will not be added for some other reason, it will be added to a relevant list to show to
+the user later, to let them know it will not be added to the submission. By
relative we mean it
+must not start with / (which shouldn’t happen even if you give an absolute
+path) and by sane we mean that each component must match the regexp: ^[0-9A-Za-z]+[0-9A-Za-z_+.-]*$.
+- If a directory is unreadable it is an error.
+- If a directory causes a cycle in the tree it is an error.
+- If
stat(2) on the path fails it is an error.
- If
prog.c, Makefile or remarks.md is/are not found it is an error.
- If too many files that are not
prog.c, Makefile, remarks.md,
try.sh, prog.alt.c or try.alt.sh are found, it is an error (see
MAX_EXTRA_FILE_COUNT in
limit_ioccc.h).
+- Symlinks are not allowed but it is not an error (they will be added to a
+list and ignored).
+- If any file type other than a regular file, a directory or a symlink is
+encountered it is an error.
+- If there is an unknown error it is an error :-)
- Show each list to the user, asking if this is okay. The lists include:
@@ -1451,8 +1469,8 @@ with ..
- Directories to be made.
- Required files (
prog.c, Makefile and remarks.md) to be copied.
- Non-required files to be copied.
-- The user is asked to verify each list, including the list of files to be
-added, and if the user says it is not OK the program will abort.
+- The user is asked to verify each list, including the lists of directories
+and files to be made/copied, and if the user says it is not OK the program will abort.
Make any directories if necessary (under
workdir/submit.USERNAME-SLOT.TIMESTAMP i.e. the submission directory).
@@ -1463,21 +1481,25 @@ added, and if the user says it is not OK the program will abort.
The non-ignored files are copied to their respective directories under the
submission directory.
-try.sh and try.alt.sh MUST be and are copied as mode 0555.
+try.sh and try.alt.sh MUST be and are copied as mode 0555.
- All other files MUST be and are copied as mode
0444.
-- Anything else is an error and
txzchk(1) will flag this.
+- Anything else will be flagged by
txzchk(1).
cd submit.USERNAME-SLOT.TIMESTAMP (i.e. switch to submission directory).
make -f Makefile clobber.
-- If this fails it is not an error but you are warned about it (even so, see Rule 20).
+- If this fails it is not an error but you are warned about it (it is an error only if the
Makefile
+does not exist); even so, see Rule 20.
Traverse the new tree from . with additional steps from (4).
- If any file has an ignored directory name in it, it is an error.
- If a symlink is found it is an error.
+- If any file type other than a directory or regular file exists it is an
+error.
- If a forbidden filename exists it is an error.
-- If any file or directory starts with
/ or is not POSIX plus + safe chars only it is an error.
+- If any file or directory starts with
/ or is not POSIX plus + safe chars
+only (see (4) above) it is an error.
- If the depth is too deep it is an error.
- If
prog.c, Makefile or remarks.md are missing (or not readable
regular files) it is an error.
@@ -1493,11 +1515,13 @@ empty file it is an error but otherwise you may override any warnings
check_remarks_md() will be run on your remarks.m; if it is not a
regular readable file or it is empty it is an error. Otherwise it will
proceed. Note it does not check that there is any text in the file, just
-that the file size is not 0.
-- If any other error condition in step (4) occurs it is also an error.
+that the file size is not 0, and having a remarks.md that is not size 0
+but has no content is violating Rule 17 and Rule
+19.
+If any other error condition from step (4) occurs it is also an error.
-Report on files that were copied in (3) and directories made in (3) but are
-now gone: asking the user to verify.
+Report on any directories that were made and files that were copied in (7)
+but are now gone: asking the user to verify.
Present the list of non-dot files that remain and ask the user to confirm.
Ask the user for a submission title.
Ask the user for a one line abstract of the submission.
@@ -1505,36 +1529,49 @@ now gone: asking the user to verify.
questions (see below for more information on what kind of questions).
Show the output of ls -lakR ., asking the user to confirm that the listing
is okay.
+Create .info.json and run chkentry(1) on it.
+
+- If
chkentry(1) fails to validate the file make sure that you have
+obtained and compiled the latest version of all the tools and you either are
+in the repo’s directory, you pass the options to give the path to the tools
+or you have installed the latest tools!
+
+Create .auth.json and run chkentry(1) on it.
+
+- If
chkentry(1) fails to validate the file make sure that you have
+obtained and compiled the latest version of all the tools and you either are
+in the repo’s directory, you pass the options to give the path to the tools
+or you have installed the latest tools!
+
Create the tarball.
Run txzchk(1) on the tarball.
-If any of the steps fail or if the user says something is not okay, it aborts.
-Some of the checks that are made:
+If any of the steps fail or if the user says something is not okay, it aborts.
+Some of the other checks that are made:
-- If the files do not exist, are not regular files or cannot be read.
- If
prog.c violates Rule 2 (see
iocccsize.c).
-- If
prog.c is empty.
-- If
prog.c has any high bit char (see
-iocccsize.c).
-- If
prog.c has any NUL char (see
-iocccsize.c).
+- If
prog.c is empty (see Rule 1 and the
+Guidelines).
+- If
prog.c has any NUL (\0) char (see
+rule_count.c).
- If
prog.c has any unknown or invalid trigraph (see
-iocccsize.c).
+rule_count.c).
- If
prog.c triggers a word buffer overflow (see
-iocccsize.c).
+rule_count.c).
- If
prog.c triggers an ungetc(3) error (see
-iocccsize.c).
+rule_count.c).
- If the first rule in the
Makefile is not all.
- If the
Makefile does not have a clean rule.
- If the
Makefile does not have a clobber rule.
- If the
Makefile does not have a try rule.
-If your Makefile is empty or remarks.md is empty it is an error and you will
-have to fix it.
-Conditions that one must correct, and which mkiocccentry(1) will prompt until
+
Conditions that one MUST correct, and which mkiocccentry(1) will prompt until
they are correct, are:
+- Your contest ID is invalidly formed.
+- Your submit slot is < 0 or >
MAX_SUBMIT_SLOT (see
+limit_ioccc.h).
- Your title is not in the range of 1 through
MAX_TITLE_LEN chars (see
limit_ioccc.h).
- Your title does not match the regexp
^[0-9a-z][0-9a-z._+-]*$.
@@ -1545,8 +1582,7 @@ they are correct, are:
- An author name is not 1 through
MAX_NAME_LEN chars (see
limit_ioccc.h).
- Duplicate author name.
-- Country code is invalid (not ISO 3166-1 2 character
-codes).
+- Country code is invalid (i.e. it is not a ISO 3166-1 2 character code).
- An email, if provided, is not in the format of
x@y or
if x or y contain a @, are empty or if the total length is longer than
MAX_EMAIL_LEN (see limit_ioccc.h).
@@ -1556,10 +1592,10 @@ or https:// or is longer than MAX_URL_LEN chars (see
or does not have anything after the http:// or https://.
- A mastodon handle, if provided, is not in the form of
@user@site (i.e. starts with an @, has text following it and then another
-@ followed by more text and has no other @) or is longer than MAX_MASTODON_LEN (see
+@ followed by more text and has no other @), or if it is longer than MAX_MASTODON_LEN (see
limit_ioccc.h).
- A GitHub account, if provided, does not start with an
@,
-has more than one @ or is longer than MAX_GITHUB_LEN (see
+has more than one @, does not have any text after the @ or is longer than MAX_GITHUB_LEN (see
limit_ioccc.h).
- An affiliation, if provided, is longer than
MAX_AFFILIATION_LEN (see limit_ioccc.h).
@@ -1567,6 +1603,9 @@ has more than one @ or is longer than MAX_GITHUB_LEN (
not match the regexp ^[0-9A-Za-z][0-9A-Za-z._+-]*$.
- An author handle is repeated.
+The program does confirm that the information for each author is correct,
+allowing you to correct the information without having to start the program
+over.
Although the mkiocccentry(1) tool will verify everything for you, you may wish
to validate different parts individually with the different tools. As the
rules state, each of these tools has a -h option.
@@ -1585,9 +1624,12 @@ FAQ on “fnamchk”
for more details on the tools that mkiocccentry either executes directly or
indirectly as part of the packaging process, especially if you wish to run one
or more of these tools manually.
+See also the
+FAQ on “how to test everything at once without having to answer
+questions”.
See also the Guidelines and the Rules
-(especially Rule 2, Rule
-17, Rule 20).
+(especially Rule 1, Rule 2, Rule
+17, Rule 19 and Rule 20).
Jump to: top
diff --git a/faq.md b/faq.md
index 35ad3d7c6..b23bb52fc 100644
--- a/faq.md
+++ b/faq.md
@@ -1,6 +1,6 @@
# IOCCC FAQ Table of Contents
-This is FAQ version **28.2.7 2025-02-09**.
+This is FAQ version **28.2.8 2025-02-10**.
## 0. [Entering the IOCCC: the bare minimum you need to know](#enter_questions)
@@ -1212,45 +1212,61 @@ Jump to: [top](#)
### Q 3.0: What is the `mkiocccentry(1)` process and what sort of checks does it perform?
-The `mkiocccentry(1)` tool performs the following steps:
+In full, the `mkiocccentry(1)` tool performs the following steps:
-0. Ask the user for a submission ID (see the [quick-start
-guide](quick-start.html) for more details on how to obtain this).
- * If this is an invalid UUID (malformed), it is an error.
-1. Ask the user for the submission slot (the submission number; see [Rule
-17](next/rules.html#rule17) for more details).
- * If this is out of range it is an error (see `MAX_SUBMIT_SLOT` in
- [limit_ioccc.h](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h)).
+0. Ask the user for a submission ID (see the [how to register](next/register.html)
+for more details on how to obtain this and [Rule 17](next/rules.html#rule17) for
+the importance of this).
+ * If this is an invalid UUID (malformed), you will be asked to correct it
+ until it is.
+1. Ask the user for the submission slot (the submission number; see [how to
+register](next/register.html) and [Rule 17](next/rules.html#rule17) for more details).
+ * If this is out of range (see `MAX_SUBMIT_SLOT` in
+ [limit_ioccc.h](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h))
+ and you will be asked to correct it until it is.
+2. Make the submission directory under `topdir` in the form of
+`workdir/submit.USERNAME-SLOT.TIMESTAMP` (the timestamp is calculated by
+`mkiocccentry(1)` so you do not have to worry about this).
+ * If this directory already exists it is an error.
3. Change to the `topdir`.
-4. Traverses the directory, creating lists of ignored
+4. Traverse the directory, creating lists of ignored/forbidden
files/directories/symlinks as well as a list directories to make and a list of
-files to copy to the submission directory.
+files to copy to the submission directory (and if (sub)directories are found
+with files, copy those files to their respective directory). Note the following:
* If the depth is too deep it is an error (see `MAX_PATH_DEPTH` in
[limit_ioccc.h](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h)).
- * If there are too many directories it is an error (see `MAX_DIR_COUNT` in
+ * If there are too many extra directories (total count not including the
+ submission directory itself, unrelated to `MAX_PATH_DEPTH` above) it is an
+ error (see `MAX_EXTRA_DIR_COUNT` in
+ [limit_ioccc.h](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h)).
+ * If the max path length is <= 0 it is an error (and a bug).
+ * If the max depth is <= 0 it is an error (and a bug).
+ * If the max filename length is <= 0 it is an error (and a bug).
+ * If a path is NULL it is an error.
+ * If a path is an empty string it is an error.
+ * If the path length (i.e. `strlen(path)` where path starts after the
+ initial `./` of the path in the `topdir`) is too long it is an error (see `MAX_PATH_LEN` in
+ [limit_ioccc.h](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h)).
+ * If a filename (last component of the path) is too long it is an error (see `MAX_FILENAME_LEN` in
[limit_ioccc.h](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h)).
* If a filename or directory name is not a sane relative path, not allowed
or will not be added for some other reason, it will be added to a relevant list to show to
- the user later, to let them know it is ignored. By `relative` we mean it
- must not start with `/` and by `sane` we mean that each component must match
- the regexp: `^[0-9A-Za-z]+[0-9A-Za-z_+.-]*$`.
- * If the path length (i.e. the entire length of the path from the `topdir`)
- is too long it is an error (see `MAX_PATH_LEN` in
- [limit_ioccc.h](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h)).
- * If a filename is too long it is an error (see `MAX_FILENAME_LEN` in
- [limit_ioccc.h](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h)).
- * If there is an unknown error it is an error :-)
- * If a path is NULL it is an error.
- * If a path is an empty string it is an error.
- * If the max path length is <= 0 it is an error (and a bug).
- * If the max depth is <= 0 it is an error (and a bug).
- * If the max filename length is <= 0 it is an error (and a bug).
- * If a directory is not readable it is an error.
+ the user later, to let them know it will not be added to the submission. By `relative` we mean it
+ must not start with `/` (which shouldn't happen even if you give an absolute
+ path) and by `sane` we mean that each component must match the regexp: `^[0-9A-Za-z]+[0-9A-Za-z_+.-]*$`.
+ * If a directory is unreadable it is an error.
+ * If a directory causes a cycle in the tree it is an error.
+ * If `stat(2)` on the path fails it is an error.
* If `prog.c`, `Makefile` or `remarks.md` is/are not found it is an error.
* If too many files that are not `prog.c`, `Makefile`, `remarks.md`,
`try.sh`, `prog.alt.c` or `try.alt.sh` are found, it is an error (see
`MAX_EXTRA_FILE_COUNT` in
[limit_ioccc.h](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h)).
+ * Symlinks are not allowed but it is not an error (they will be added to a
+ list and ignored).
+ * If any file type other than a regular file, a directory or a symlink is
+ encountered it is an error.
+ * If there is an unknown error it is an error :-)
5. Show each list to the user, asking if this is okay. The lists include:
* Ignored directories (those like `.git`, `CVS`, `RCCS` and `.svn`).
* Unsafe directory names that will not be added (i.e. those that are not
@@ -1264,25 +1280,29 @@ files to copy to the submission directory.
* Directories to be made.
* Required files (`prog.c`, `Makefile` and `remarks.md`) to be copied.
* Non-required files to be copied.
- * The user is asked to verify each list, including the list of files to be
- added, and if the user says it is not OK the program will abort.
+ * The user is asked to verify each list, including the lists of directories
+ and files to be made/copied, and if the user says it is not OK the program will abort.
6. Make any directories if necessary (under
`workdir/submit.USERNAME-SLOT.TIMESTAMP` i.e. the submission directory).
* Directories **MUST** be and are made with mode `0755`.
* If any directory is not this mode `txzchk(1)` will flag it.
7. The non-ignored files are copied to their respective directories under the
submission directory.
- * `try.sh` and `try.alt.sh` MUST be and are copied as mode `0555`.
+ * `try.sh` and `try.alt.sh` **MUST** be and are copied as mode `0555`.
* All other files **MUST** be and are copied as mode `0444`.
- * Anything else is an error and `txzchk(1)` will flag this.
+ * Anything else will be flagged by `txzchk(1)`.
8. `cd submit.USERNAME-SLOT.TIMESTAMP` (i.e. switch to submission directory).
9. `make -f Makefile clobber`.
- * If this fails it is not an error but you are warned about it (even so, see [Rule 20](next/rules.html#rule20)).
+ * If this fails it is not an error but you are warned about it (it is an error only if the `Makefile`
+ does not exist); even so, see [Rule 20](next/rules.html#rule20).
10. Traverse the new tree from `.` with additional steps from (4).
* If any file has an ignored directory name in it, it is an error.
* If a symlink is found it is an error.
+ * If any file type other than a directory or regular file exists it is an
+ error.
* If a forbidden filename exists it is an error.
- * If any file or directory starts with `/` or is not POSIX plus + safe chars only it is an error.
+ * If any file or directory starts with `/` or is not POSIX plus + safe chars
+ only (see (4) above) it is an error.
* If the depth is too deep it is an error.
* If `prog.c`, `Makefile` or `remarks.md` are missing (or not readable
regular files) it is an error.
@@ -1298,10 +1318,12 @@ submission directory.
* `check_remarks_md()` will be run on your `remarks.m`; if it is not a
regular readable file or it is empty it is an error. Otherwise it will
proceed. Note it does not check that there is any text in the file, just
- that the file size is not 0.
- * If any other error condition in step (4) occurs it is also an error.
-11. Report on files that were copied in (3) and directories made in (3) but are
-now gone: asking the user to verify.
+ that the file size is not 0, and having a `remarks.md` that is not size 0
+ but has no content is violating [Rule 17](next/rules.html#rule17) and [Rule
+ 19](next/rules.html#rule19).
+ * If any other error condition from step (4) occurs it is also an error.
+11. Report on any directories that were made and files that were copied in (7)
+but are now gone: asking the user to verify.
12. Present the list of non-dot files that remain and ask the user to confirm.
13. Ask the user for a submission title.
14. Ask the user for a one line abstract of the submission.
@@ -1309,38 +1331,46 @@ now gone: asking the user to verify.
questions (see below for more information on what kind of questions).
16. Show the output of `ls -lakR .`, asking the user to confirm that the listing
is okay.
-17. Create the tarball.
-18. Run `txzchk(1)` on the tarball.
+17. Create `.info.json` and run `chkentry(1)` on it.
+ * If `chkentry(1)` fails to validate the file make sure that you have
+ obtained and compiled the latest version of all the tools and you either are
+ in the repo's directory, you pass the options to give the path to the tools
+ or you have installed the latest tools!
+18. Create `.auth.json` and run `chkentry(1)` on it.
+ * If `chkentry(1)` fails to validate the file make sure that you have
+ obtained and compiled the latest version of all the tools and you either are
+ in the repo's directory, you pass the options to give the path to the tools
+ or you have installed the latest tools!
+19. Create the tarball.
+20. Run `txzchk(1)` on the tarball.
If any of the steps fail or if the user says something is not okay, it aborts.
+Some of the other checks that are made:
-Some of the checks that are made:
-
-- If the files do not exist, are not regular files or cannot be read.
- If `prog.c` violates [Rule 2](next/rules.html#rule2) (see
[iocccsize.c](https://github.com/ioccc-src/mkiocccentry/blob/master/iocccsize.c)).
-- If `prog.c` is empty.
-- If `prog.c` has any high bit char (see
-[iocccsize.c](https://github.com/ioccc-src/mkiocccentry/blob/master/iocccsize.c)).
-- If `prog.c` has any NUL char (see
-[iocccsize.c](https://github.com/ioccc-src/mkiocccentry/blob/master/iocccsize.c)).
+- If `prog.c` is empty (see [Rule 1](next/rules.html#rule1) and the
+[Guidelines](next/guidelines.html)).
+- If `prog.c` has any NUL (`\0`) char (see
+[rule_count.c](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/rule_count.c)).
- If `prog.c` has any unknown or invalid trigraph (see
-[iocccsize.c](https://github.com/ioccc-src/mkiocccentry/blob/master/iocccsize.c)).
+[rule_count.c](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/rule_count.c)).
- If `prog.c` triggers a word buffer overflow (see
-[iocccsize.c](https://github.com/ioccc-src/mkiocccentry/blob/master/iocccsize.c)).
+[rule_count.c](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/rule_count.c)).
- If `prog.c` triggers an `ungetc(3)` error (see
-[iocccsize.c](https://github.com/ioccc-src/mkiocccentry/blob/master/iocccsize.c)).
+[rule_count.c](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/rule_count.c)).
- If the first rule in the `Makefile` is not `all`.
- If the `Makefile` does not have a `clean` rule.
- If the `Makefile` does not have a `clobber` rule.
- If the `Makefile` does not have a `try` rule.
-If your `Makefile` is empty or `remarks.md` is empty it is an error and you will
-have to fix it.
-Conditions that one must correct, and which `mkiocccentry(1)` will prompt until
+Conditions that one **MUST** correct, and which `mkiocccentry(1)` will prompt until
they are correct, are:
+- Your _contest ID_ is invalidly formed.
+- Your _submit slot_ is < 0 or > `MAX_SUBMIT_SLOT` (see
+[limit_ioccc.h](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h)).
- Your _title_ is not in the range of 1 through `MAX_TITLE_LEN` chars (see
[limit_ioccc.h](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h)).
- Your _title_ does not match the regexp `^[0-9a-z][0-9a-z._+-]*$`.
@@ -1351,8 +1381,7 @@ they are correct, are:
- An author _name_ is not 1 through `MAX_NAME_LEN` chars (see
[limit_ioccc.h](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h)).
- Duplicate author _name_.
-- _Country code_ is invalid (not ISO 3166-1 2 character
-codes).
+- _Country code_ is invalid (i.e. it is not a ISO 3166-1 2 character code).
- An _email_, if provided, is not in the format of `x@y` or
if `x` or `y` contain a `@`, are empty or if the total length is longer than
`MAX_EMAIL_LEN` (see [limit_ioccc.h](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h)).
@@ -1362,10 +1391,10 @@ or `https://` or is longer than `MAX_URL_LEN` chars (see
or does not have anything after the `http://` or `https://`.
- A _mastodon handle_, if provided, is not in the form of
`@user@site` (i.e. starts with an `@`, has text following it and then another
-`@` followed by more text and has no other `@`) or is longer than `MAX_MASTODON_LEN` (see
+`@` followed by more text and has no other `@`), or if it is longer than `MAX_MASTODON_LEN` (see
[limit_ioccc.h](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h)).
- A _GitHub account_, if provided, does not start with an `@`,
-has more than one `@` or is longer than `MAX_GITHUB_LEN` (see
+has more than one `@`, does not have any text after the `@` or is longer than `MAX_GITHUB_LEN` (see
[limit_ioccc.h](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h)).
- An _affiliation_, if provided, is longer than
`MAX_AFFILIATION_LEN` (see [limit_ioccc.h](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h)).
@@ -1373,6 +1402,10 @@ has more than one `@` or is longer than `MAX_GITHUB_LEN` (see
not match the regexp `^[0-9A-Za-z][0-9A-Za-z._+-]*$`.
- An _author handle_ is repeated.
+The program does confirm that the information for each author is correct,
+allowing you to correct the information without having to start the program
+over.
+
Although the `mkiocccentry(1)` tool will verify everything for you, you may wish
to validate different parts individually with the different tools. As the
[rules](next/rules.html) state, each of these tools has a `-h` option.
@@ -1393,9 +1426,13 @@ for more details on the tools that `mkiocccentry` either executes directly or
indirectly as part of the packaging process, especially if you wish to run one
or more of these tools manually.
+See also the
+FAQ on "[how to test everything at once without having to answer
+questions](#mkiocccentry_test)".
+
See also the [Guidelines](next/guidelines.html) and the [Rules](next/rules.html)
-(especially [Rule 2](next/rules.html#rule2), [Rule
-17](next/rules.html#rule17), [Rule 20](next/rules.html#rule20)).
+(especially [Rule 1](next/rules.html#rule1), [Rule 2](next/rules.html#rule2), [Rule
+17](next/rules.html#rule17), [Rule 19](next/rules.html#rule19) and [Rule 20](next/rules.html#rule20)).
Jump to: [top](#)
diff --git a/next/rules.html b/next/rules.html
index 9e525a639..eac4b8e46 100644
--- a/next/rules.html
+++ b/next/rules.html
@@ -461,7 +461,7 @@ writing by
contacting the judges.
-These IOCCC rules are version 28.22 2025-02-08.
+These IOCCC rules are version 28.23 2025-02-10.
The markdown form of these rules
@@ -1295,7 +1295,7 @@ guidelines for additional markdown guidance.
make(1) compatibility the IOCCC
supports for more details.
-You are ENCOURAGED to use
+You are ENCOURAGED to use the
Makefile example, renamed as Makefile of course, for help in constructing your
Makefile. See the Makefile section in the
guidelines for more details.
diff --git a/next/rules.md b/next/rules.md
index 13d7dacb6..8dfc688f8 100644
--- a/next/rules.md
+++ b/next/rules.md
@@ -53,7 +53,7 @@ Jump to: [top](#)
-These [IOCCC rules](rules.html) are version **28.22 2025-02-08**.
+These [IOCCC rules](rules.html) are version **28.23 2025-02-10**.
@@ -1105,7 +1105,7 @@ make(1) compatibility the IOCCC
supports](../faq.html#make_compatibility) for more details.
-You are **ENCOURAGED** to use
+You are **ENCOURAGED** to use the
Makefile example, renamed as `Makefile` of course, for help in constructing your
`Makefile`. See the [Makefile section](guidelines.html#makefile) in the
guidelines for more details.