diff --git a/faq.html b/faq.html index a18ffe313..fe751f0ca 100644 --- a/faq.html +++ b/faq.html @@ -394,6 +394,8 @@
mkiocccentry tool?.auth.json file?.info.json file?author handle?author_handle.json file and how are they used?entry_id?remarks.md file, see FAQ 2.1,
submitted theme and how compares with previous IOCCC winners
of the same theme.
We recommend starting with the sample Makefile as found in the mkiocccentry GitHub repo, @@ -796,7 +800,7 @@ as it lists things you should not use in markdown files.
See also CommonMark Spec.mkiocccentry tool?mkiocccentry tool?As the mkiocccentry toolkit is @@ -820,6 +824,628 @@ file. If it does not find a problem but you think there is a problem, please still do feel free to report it and do make sure you attach the log nonetheless. If it does find problems, it will give you a summary of the problems and when you attach the log file we will see those too.
+.auth.json file?This file is constructed by the mkiocccentry(1) prior to forming the xz
+compressed tarball of your submission. The .auth.json file contains
+information about the author or authors of the submission, in JSON format. The
+JSON authors array holds the following information about the authors of the
+submission:
name (string)
location_code (string)
NOTE: in mkiocccentry use XX if you want your location to be anonymous.
email (string)
x@y, or null if not provided.url (string)
null if not provided.alt_url (string)
null if not provided.mastodon (string)
@user@domain, or
+null if not provided.github (string)
@user, or null if not
+provided.affiliation (string)
null if not provided.NOTE: if provided, the length of the affiliation MUST be within
+the range of 1 THROUGH MAX_AFFILIATION_LEN (see
+soup/limit_ioccc.h
+in the mkiocccentry repo). If
+this is not the case you stand a great risk of having your submission
+rejected for violating Rule 17!
NOTE: an affiliation does NOT have any affect on whether you will win or not.
past_winning_author (boolean)
true if this author claims to have won a past IOCCC, false if this
+author has NOT won before.NOTE: this has NO effect on whether you will win or not.
default_handle (boolean)
true if this default handle was accepted, false if one is provided
+by this author.author_handle (string)
NOTE: if you have won before, we ENCOURAGE you to use the same handle of
+your previous winning entries, to help in organising the
+authors.html page and the author JSON file (see: What is an
+author handle? and What is an author_handle.json
+file and how are they used?).
author_number (number)
authors array..auth.json:The file also contains the following details:
+no_comment (string)
no comment about no_comment so we ask you to please
+NOT comment about our no comments. :-)IOCCC_auth_version (string)
.auth.json file.NOTE: this MUST match THIS IOCCC’s .auth.json version, defined as
+AUTH_VERSION in
+soup/version.h
+in the mkiocccentry repo. If
+this is not the case your submission WILL BE rejected!
IOCCC_contest (string)
NOTE: this MUST match THIS IOCCC’s contest value, defined as
+IOCCC_CONTEST in
+soup/limit_ioccc.h
+in the mkiocccentry repo. If
+this is not the case your submission WILL BE rejected!
IOCCC_year (number)
NOTE: sometimes an IOCCC year runs into another year and the contest year +might not match when it ends.
+NOTE: this MUST match THIS IOCCC’s contest, defined as
+IOCCC_YEAR in
+soup/limit_ioccc.h
+in the mkiocccentry repo. If
+this is not the case your submission WILL BE rejected!
mkiocccentry_version (string)
mkiocccentry that formed this .auth.json file.NOTE: this MUST match THIS IOCCC’s mkiocccentry version,
+defined as MKIOCCCENTRY_VERSION in
+soup/version.h
+in the mkiocccentry repo. If
+this is not the case your submission WILL BE rejected!
chkentry_version (string)
chkentry that was used to validate this .auth.json,
+assuming that it was created by mkiocccentry.NOTE: this MUST match THIS IOCCC’s chkentry version, defined
+as CHKENTRY_VERSION in
+soup/version.h
+in the mkiocccentry repo. If
+this is not the case your submission WILL BE rejected!
fnamchk_version (string)
fnamchk that txzchk uses to validate the filename of
+the xz compressed tarball.NOTE: this MUST match THIS IOCCC’s fnamchk version in order for it
+to be valid. If this is not the case your submission WILL BE rejected!
IOCCC_contest_id (string)
NOTE: if the contest ID is NOT in this format then fnamchk will
+report it as an error and your submission WILL BE rejected for
+violating Rule 17!
tarball (string)
NOTE: this MUST match the actual tarball’s filename in order for
+this to be valid. If there is a mismatch you stand a great risk of having
+your submission rejected for violating Rule 17!
+Moreover, it is possible that txzchk will report a problem through
+fnamchk(1) which also puts you at great risk of violating Rule
+17. If txzchk does not detect this, though, it
+does not mean it’s a bug but rather that the directory in the tarball
+matches the filename.
submit_slot (number)
NOTE: this MUST be within the range of 0 THROUGH
+MAX_SUBMIT_SLOT (see
+soup/limit_ioccc.h
+in the mkiocccentry repo). If
+this is not the case you stand a great risk of having your submission
+rejected for violating Rule 17!
author_count (number)
NOTE: this MUST be within the range of 1 THROUGH
+MAX_AUTHORS (see
+soup/limit_ioccc.h
+in the mkiocccentry repo). If
+this is not the case you stand a great risk of having your submission
+rejected for violating the Rules! Moreover, if the
+author_count is inconsitent with how many authors are in the authors
+array your submission will be invalid.
test_mode (boolean)
true if the test ID was used to form the tarball, else false.NOTE: if true then this may NOT be submitted to the contest! Please do
+NOT email the Judges your submission!
formed_timestamp (number)
.auth.json/.info json was formed (see gettimeofday(2)).NOTE: this MUST be greater than or equal to MIN_TIMESTAMP (see
+soup/limit_ioccc.h
+in the mkiocccentry repo). If
+this is not the case your submission WILL BE rejected.
formed_timestamp_usec (number)
.auth.json was
+formed - see gettimeofday(2)) second.NOTE: this MUST be within the range MIN_FORMED_TIMESTAMP_USEC
+THROUGH MAX_FORMED_TIMESTAMP_USEC and is validated by
+test_formed_timestamp_usec() in
+soup/entry_util.c
+in the mkiocccentry repo. If
+this is not the case chkentry(1) will report an error and your
+submission WILL BE rejected!
timestamp_epoch (string)
"Thu Jan 01 00:00:00 1970 UTC" (gettimeofday(2) epoch).NOTE: this MUST be "Thu Jan 01 00:00:00 1970 UTC" which is #defined
+as TIMESTAMP_EPOCH in
+soup/limit_ioccc.h
+in the mkiocccentry repo. If
+this is not the case your submission WILL BE rejected!
min_timestamp (number)
NOTE: this MUST be >= MIN_TIMESTAMP defined in
+soup/limit_ioccc.h
+in the mkiocccentry repo. If
+this is not the case your submission WILL BE rejected!
This file will be verified with the chkentry(1) tool and if there are any
+problems it is an error. If there is an error the tarball will NOT be
+formed by mkiocccentry; otherwise the txzchk(1) tool will be executed on the
+tarball.
This file will NOT be looked at unless the submission wins! Nonetheless,
+chkentry(1) WILL BE used on the file as part of the judging process.
At the risk of stating the obvious, if your .auth.json file is invalid JSON or
+is reported invalid by chkentry your submission will almost certainly be
+rejected for violating the Rules and in particular Rule
+17.
An obvious example where chkentry would fail to validate .auth.json is if
+there is a mismatch of type in the JSON file with what is expected, for
+instance, if in .auth.json the no_comment that we chose to not comment on is
+not a string. Another obvious example is when things are out of range (see above
+for list). Two more examples would be if a field is missing or if an unknown
+filed is in the file. In these cases (and any others that must be established as
+valid by chkentry) your submission would be rejected for violating Rule
+17 and in particular because chkentry would not
+validate the .auth.json file.
.info.json file?This file is constructed by the mkiocccentry(1) prior to forming the xz
+compressed tarball of your submission. The .info.json file contains
+information about the submission, in JSON format. The
+JSON manifest array contains information about the files of the submission,
+including the mandatory .auth.json, .info.json,
+C source and remarks files. In particular:
info_JSON (string)
MUST be ".info.json", defined as INFO_JSON_FILENAME in
+soup/entry_util.h
+in the mkiocccentry repo, and
+it is the .info.json file that mkiocccentry forms.NOTE: if this is NOT the case you stand a great chance of having your +submission rejected for violating Rule 17!
auth_JSON (string)
MUST be ".auth.json", defined as AUTH_JSON_FILENAME in
+soup/entry_util.h
+in the mkiocccentry repo, and
+it is the .auth.json file that mkiocccentry forms.NOTE: if this is NOT the case you stand a great chance of having your +submission rejected for violating Rule 17!
c_src (string)
MUST be "prog.c", defined as PROG_C_FILENAME in
+soup/entry_util.h
+in the mkiocccentry repo, and
+is your submission source code.NOTE: if this is NOT the case you stand a great chance of having your +submission rejected for violating Rule 17!
+NOTE: if you provide to mkiocccentry a different filename it will be
+copied to prog.c.
Makefile (string)
MUST be "Makefile", defined as MAKEFILE_FILENAME in
+soup/entry_util.h
+in the mkiocccentry repo, and
+is your Makefile.NOTE: if this is NOT the case you stand a great chance of having your +submission rejected for violating Rule 17!
+NOTE: if you provide to mkiocccentry a different filename it will be
+copied to Makefile.
remarks (string)
MUST be "remarks.md", defined as REMARKS_FILENAME in
+soup/entry_util.h
+in the mkiocccentry repo, and
+is your remarks.md.NOTE: if this is NOT the case you stand a great chance of having your +submission rejected for violating Rule 17!
+NOTE: if you provide to mkiocccentry a different filename it will be
+copied to remarks.md.
The manifest array also optionally has one or more of the field:
extra_file (string)
NOTE: this MUST NOT match a mandatory filename (see above list) and
+chkentry will verify this for you; it is also an error if it the
+filenames are not unique. In these cases you stand a great risk of having
+your submission rejected for violating Rule 17! On
+the other hand, ONLY mkiocccentry will verify that the files exist and
+can be read; txzchk(1) will NOT do this for you as it only LISTS
+the tarball: it does NOT extract it. Even so, the Judges
+WILL extract the tarball and if a file listed in the manifest does not
+exist your submission will very likely be rejected for not being as
+documented!
The file also contains the following details:
+no_comment (string)
no comment about no_comment so we ask you to please
+NOT comment about our no comments. :-)IOCCC_info_version (string)
.info.json files.NOTE: this MUST match THIS IOCCC’s .info.json version, defined as
+INFO_VERSION in
+soup/version.h
+in the mkiocccentry repo. If
+this is not the case your submission WILL BE rejected!
IOCCC_contest (string)
NOTE: this MUST match THIS IOCCC’s contest value, defined as
+IOCCC_CONTEST in
+soup/limit_ioccc.h
+in the mkiocccentry repo. If
+this is not the case your submission WILL BE rejected!
IOCCC_year (number)
NOTE: sometimes an IOCCC year runs into another year and the contest year +might not match when it ends.
+NOTE: this MUST match THIS IOCCC’s contest, defined as
+IOCCC_YEAR in
+soup/limit_ioccc.h
+in the mkiocccentry repo. If
+this is not the case your submission WILL BE rejected!
mkiocccentry_version (string)
mkiocccentry that formed this .auth.json file.NOTE: this MUST match THIS IOCCC’s mkiocccentry version,
+defined as MKIOCCCENTRY_VERSION in
+soup/version.h
+in the mkiocccentry repo. If
+this is not the case your submission WILL BE rejected!
iocccsize_version (string)
iocccsize that was used for this .info.json file.NOTE: this MUST match THIS IOCCC’s iocccentry version,
+defined as IOCCCSIZE_VERSION in
+soup/version.h
+in the mkiocccentry repo. If
+this is not the case your submission WILL BE rejected!
chkentry_version (string)
chkentry that was used to validate this .info.json,
+assuming that it was created by mkiocccentry.NOTE: this MUST match THIS IOCCC’s chkentry version, defined
+as CHKENTRY_VERSION in
+soup/version.h
+in the mkiocccentry repo. If
+this is not the case your submission WILL BE rejected!
fnamchk_version (string)
fnamchk that txzchk uses to validate the filename of
+the xz compressed tarball.NOTE: this MUST match THIS IOCCC’s fnamchk version, defined
+as FNAMCHK_VERSION in
+soup/version.h
+in the mkiocccentry repo. If
+this is not the case your submission WILL BE rejected!
txzchk_version (string)
txzchk used to validate the xz compressed tarball.NOTE: this MUST match THIS IOCCC’s txzchk version, defined
+as TXZCHK_VERSION in
+soup/version.h
+in the mkiocccentry repo. If
+this is not the case your submission WILL BE rejected!
IOCCC_contest_id (string)
NOTE: if the contest ID is NOT in this format then fnamchk will
+report it as an error and your submission WILL BE rejected for
+violating Rule 17!
submit_slot (number)
NOTE: this MUST be within the range of 0 THROUGH
+MAX_SUBMIT_SLOT (see
+soup/limit_ioccc.h
+in the mkiocccentry repo). If
+this is not the case you stand a great risk of having your submission
+rejected for violating Rule 17!
title (string)
MAX_TITLE_LEN, defined in
+soup/limit_ioccc.h
+in the mkiocccentry repo) that
+matches the regexp [a-z0-9][a-z0-9_+-]*.NOTE: if this is NOT the case you stand a great risk of having your submission +rejected for violating Rule 17!
abstract (string)
MAX_ABSTRACT_LEN, defined in
+soup/limit_ioccc.h
+in the mkiocccentry repo)NOTE: if your abstract is 0 in length or > the maximum abstract length you +stand a great risk of having your submission rejected for violating Rule +17!
tarball (string)
NOTE: this MUST match the actual tarball’s filename in order for
+this to be valid. If there is a mismatch you stand a great risk of having
+your submission rejected for violating Rule 17!
+Moreover, it is possible that txzchk will report a problem through
+fnamchk(1) which also puts you at great risk of violating Rule
+17. If txzchk does not detect this, though, it
+does not mean it’s a bug but rather that the directory in the tarball
+matches the filename.
rule_2a_size (number)
NOTE: if this violates Rule 2a you stand a great +chance of having your submission rejected for violating the +Rules!
rule_2b_size (number)
NOTE: if this violates Rule 2b you stand a great +chance of having your submission rejected for violating the +Rules!
empty_override (boolean)
true if user override warning of an empty source file, else false.rule_2a_override (boolean)
true if user overrides warning of Rule 2a
+violation, else false.NOTE: if the Rule 2a calculated size is NOT
+violated but this is true then you stand a good chance of having your
+submission rejected for violating Rule 17!
rule_2a_mismatch (boolean)
true if Rule 2a calculated size is not the
+same as the file size.rule_2b_override (boolean)
true if user overrides warning of Rule 2b
+violation, else false.NOTE: if the Rule 2b calculated size is NOT
+violated but this is true then you stand a good chance of having your
+submission rejected for violating Rule 17!
highbit_warning (boolean)
true if iocccsize detects a high bit (unescaped octets with the high
+bit set - octet value >= 128); see Rule 13, else
+false.nul_warning (boolean)
true if iocccsize detects a NUL character in the prog.c, else
+false.trigraph_warning (boolean)
true if iocccsize detects an unknown or invalid trigraph in
+prog.c, else false.wordbuf_warning (boolean)
true if prog.c triggered a word buffer overflow (see iocccsize),
+else false.NOTE: this does NOT mean that your code has been checked for buffer +overflows in general.
ungetc_warning (boolean)
true if prog.c triggered an ungetc(3) error, else false.Makefile_override (boolean)
true if the user overrides any warnings about an incomplete/incorrect
+Makefile, else false.NOTE: if the Makefile has no problems and this is true then
+you stand a good chance of having your submission rejected for violating
+Rule 17!
first_rule_is_all (boolean)
true if the first rule in the Makefile is
+all, else false.found_all_rule (boolean)
true if the Makefile has an all rule, else
+false.found_clean_rule (boolean)
true if the Makefile has a clean rule, else
+false.found_clobber_rule (boolean)
true if the Makefile has a clobber rule,
+else false.found_try_rule (boolean)
true if the Makefile has a try rule, else
+false.test_mode (boolean)
true if the test ID was used to form the tarball, else false.NOTE: if this is true then this may NOT be submitted to the
+contest! Please do NOT email the Judges your submission!
formed_timestamp (number)
.info json was formed (see gettimeofday(2)).NOTE: this MUST be greater than or equal to MIN_TIMESTAMP (see
+soup/limit_ioccc.h
+in the mkiocccentry repo). If
+this is not the case your submission WILL BE rejected.
formed_timestamp_usec (number)
.auth.json was
+formed - see gettimeofday(2)) second.NOTE: this MUST be within the range MIN_FORMED_TIMESTAMP_USEC
+THROUGH MAX_FORMED_TIMESTAMP_USEC and is validated by
+test_formed_timestamp_usec() in
+soup/entry_util.c
+in the mkiocccentry repo. If
+this is not the case chkentry(1) will report an error and your
+submission WILL BE rejected!
timestamp_epoch (string)
"Thu Jan 01 00:00:00 1970 UTC" (gettimeofday(2) epoch).NOTE: this MUST be "Thu Jan 01 00:00:00 1970 UTC" which is #defined
+as TIMESTAMP_EPOCH in
+soup/limit_ioccc.h
+in the mkiocccentry repo. If
+this is not the case your submission WILL BE rejected!
min_timestamp (number)
NOTE: this MUST be >= MIN_TIMESTAMP defined in
+soup/limit_ioccc.h
+in the mkiocccentry repo. If
+this is not the case your submission WILL BE rejected!
This file will be verified with the chkentry(1) tool and if there are any
+problems it is an error. If there is an error the tarball will NOT be
+formed by mkiocccentry; otherwise the txzchk(1) tool will be executed on the
+tarball.
The Judges WILL use chkentry(1) on this file during the
+judging process and if it does not pass your submission WILL BE rejected.
An obvious example where chkentry would fail to validate .info.json is if
+there is a mismatch of type in the JSON file with what is expected, for
+instance, if in .info.json the no_comment that we chose to not comment on is
+not a string. Another obvious example is when things are out of range (see above
+for list). Two more examples would be if a field is missing or if an unknown
+filed is in the file. In these cases (and any others that must be established as
+valid by chkentry) your submission would be rejected for violating Rule
+17 and in particular because chkentry would not
+validate the .info.json file.
By tradition, we do not say.
First, PLEASE read the IOCCC markdown guidelines.
@@ -2732,7 +3359,7 @@ in the case ofTL:DR: The contents of these JSON files contain the best known @@ -2752,7 +3379,7 @@ of the form:
author/author_handle.json
where author_handle is an author handle. See FAQ 6.5 for more information about an author handles.
-author_handle.json JSON file contentsThe syntax of a author_handle.json follows the So-called JSON spec.
See json_index.html
for information on the So-called JSON spec.
"mastodon_url" : null,
NOTE: The JSON null is NOT enclosed in quotes!
-See “FAQ 6.12: What is Mastodon and why does IOCCC use it?” for more +
See the FAQ on what is Mastodon and why does IOCCC uses it for more information on Mastodon.
"github" : "@mame",
@@ -3315,8 +3942,10 @@ to help ensure that everyone may enjoy the IOCCC.
The IOCCC uses Mastodon for news updates, announcements, and for various other social media purposes.
Please follow the IOCCC on Mastodon.
- The IOCCC no longer uses twitter, or whatever that someone who appears to have poor impulse control
- (allegedly) calls their platform these days.
++The IOCCC no longer uses twitter, or whatever that someone who appears to have +poor impulse control (allegedly) calls their platform these days.
+
The IOCCC prefers to reside in the fediverse.
For help with Mastodon:
There is help with Mastodon available for diff --git a/faq.md b/faq.md index fe9d675a3..fdb1978f4 100644 --- a/faq.md +++ b/faq.md @@ -11,7 +11,8 @@ - 0.6 - What is the best way to ask a question about the IOCCC rules, guideline and tools? - 0.7 - What are the IOCCC best practices for using markdown? - 0.8 - How do I report bugs in a `mkiocccentry` tool? - +- 0.9 - What is a `.auth.json` file? +- 0.10 - What is a `.info.json` file? ## Section 1 - [History of the IOCCC](#faq1) @@ -23,7 +24,7 @@ ## Section 2 - [IOCCC Judging process](#faq2) - 2.0 - How many entries do the judges receive for a given IOCCC? -- 2.1 - What should I put in the remarks.md file of my entry? +- 2.1 - What should I put in the remarks.md file of my submission? - 2.2 - Why don't you publish entries that do not win? - 2.3 - How much time does it take to judge the contest? - 2.4 - How many judging rounds do you have? @@ -88,7 +89,7 @@ other inconsistencies with the original entry?](#faq4_3) - 6.3 - May I use parts of the IOCCC in an article, book, newsletter, or instructional material? - 6.4 - Why do you sometimes use the first person plural? - 6.5 - What is an `author handle`? -- 6.6 - What is an author_handle.json file and how are they used? +- 6.6 - What is an `author_handle.json` file and how are they used? - 6.7 - What is an `entry_id`? - 6.8 - What is the purpose of the .top, .year and .path files? - 6.9 - What is the current meaning of the IOCCC terms Author, Entry, and Submission? @@ -363,10 +364,12 @@ of the same theme.