Various updates/fixes for recent chkentry mods
This commit is contained in:
1 parent
7e559b6da1
commit
664a7b57bd
8 files changed
+804
-601
No files matched your search
@@ -425,7 +425,7 @@
|
||||
|
||||
<!-- BEFORE: 1st line of markdown file: faq.md -->
|
||||
<h1 id="ioccc-faq-table-of-contents">IOCCC FAQ Table of Contents</h1>
|
||||
<p>This is FAQ version <strong>28.2.9 2025-02-12</strong>.</p>
|
||||
<p>This is FAQ version <strong>28.2.10 2025-02-26</strong>.</p>
|
||||
<h2 id="entering-the-ioccc-the-bare-minimum-you-need-to-know">0. <a href="#enter_questions">Entering the IOCCC: the bare minimum you need to know</a></h2>
|
||||
<ul>
|
||||
<li><strong>Q 0.0</strong>: <a class="normal" href="#enter">How can I enter the IOCCC?</a></li>
|
||||
@@ -471,7 +471,7 @@
|
||||
<li><strong>Q 3.0</strong>: <a class="normal" href="#mkiocccentry_process">What is the <code>mkiocccentry(1)</code> process and what sort of checks does it perform?</a></li>
|
||||
<li><strong>Q 3.1</strong>: <a class="normal" href="#txzchk">How can I validate my submission tarball?</a></li>
|
||||
<li><strong>Q 3.2</strong>: <a class="normal" href="#fnamchk">What is the <code>fnamchk</code> tool?</a></li>
|
||||
<li><strong>Q 3.3</strong>: <a class="normal" href="#chkentry">How can I validate my <code>.auth.json</code> and/or <code>.info.json</code> files?</a></li>
|
||||
<li><strong>Q 3.3</strong>: <a class="normal" href="#chkentry">How can I validate my submission directory?</a></li>
|
||||
<li><strong>Q 3.4</strong>: <a class="normal" href="#auth_json">What is a <code>.auth.json</code> file?</a></li>
|
||||
<li><strong>Q 3.5</strong>: <a class="normal" href="#info_json">What is a <code>.info.json</code> file?</a></li>
|
||||
<li><strong>Q 3.6</strong>: <a class="normal" href="#author_handle_faq">What is an <code>author handle</code>?</a></li>
|
||||
@@ -629,11 +629,21 @@ code, your Makefile, your remarks, any other data files you wish to provide (up
|
||||
to a maximum, including the mandatory files, defined in
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h">limit_ioccc.h</a>
|
||||
as <code>MAX_FILE_COUNT</code>) and other information about your submission,
|
||||
information about the author (or authors), and then it runs a lot of tests.</p>
|
||||
information about the author (or authors), and then it will give you a list of
|
||||
subdirectories, if any, that will be made, and files that will be copied to the
|
||||
submission directory. It will list files and directories that it will (for
|
||||
various reasons) not create as well, asking you to confirm these things are all
|
||||
okay. Some things are strictly forbidden (such as a directory tree too deep) and
|
||||
it will tell you about these as well, so you can fix it.</p>
|
||||
<p>Assuming you agree to the list of directories and files, it will make the
|
||||
directories (if necessary) and copy the files. It will then switch to the
|
||||
submission directory, run <code>make clobber</code> and then scan the directory again,
|
||||
looking for mismatches. If no errors are detected it will list everything to you
|
||||
again, asking you to confirm it is good.</p>
|
||||
<p>If everything is OK, it will write the required <code>.auth.json</code> and <code>.info.json</code>
|
||||
files, checking each with <code>chkentry(1)</code> and then, if all is OK, it will create
|
||||
the tarball. After the tarball is formed, it will run <code>txzchk(1)</code> on it, which
|
||||
runs <code>fnamchk(1)</code>. If all is OK, your submission tarball should be good to go.</p>
|
||||
and then run <code>chkentry(1)</code> on the directory. If all is OK it will create the
|
||||
tarball. After the tarball is formed, it will run <code>txzchk(1)</code> on it, which runs
|
||||
<code>fnamchk(1)</code>. If all is OK, your submission tarball should be good to go.</p>
|
||||
<p>Please see
|
||||
FAQ on “<a href="#txzchk">txzchk</a>”,
|
||||
the
|
||||
@@ -706,19 +716,20 @@ cause problems. Additionally, if you do not have the most recent version when
|
||||
submitting a tarball it will be rejected for not having the right versions of
|
||||
the tools. This is why you <strong>MUST</strong> make sure you have the most recent version
|
||||
of all the tools and you either run it from the repo directory itself OR you
|
||||
install them (<code>make install</code> as via <code>sudo</code> or as root).</p>
|
||||
install them (<code>make install</code> as via <code>sudo</code> or as root). We recommend you install
|
||||
the tools but if you wish to run it from the repo directory you may.</p>
|
||||
<p>If the <strong><em>subdirectory</em> in the <em>work directory</em></strong> (based on your submit ID and
|
||||
slot number) already exists, you will have to
|
||||
move it, remove it or otherwise specify a different work directory (<strong>NOT</strong> the
|
||||
subdirectory), as it needs to be empty.</p>
|
||||
<p>This <em>subdirectory is where your files will be <strong>copied</strong> to</em>. Your <em>submission
|
||||
tarball</em> (which you will upload to the submit server) that <code>txzchk(1)</code> will
|
||||
validate <em>will be placed in the <strong>work directory</strong></em>, and <strong>its <em>contents</em> will
|
||||
be the <em>subdirectory</em> with your submission’s files</strong>.
|
||||
The <code>mkiocccentry(1)</code> tool will also ask you for information about your
|
||||
submission <em>as well as author details</em> (that will only be looked at if the
|
||||
submission wins), run some tests and run a number of other tools, as
|
||||
mentioned above, and as described in the “<a href="#mkiocccentry_details">finer
|
||||
slot number) already exists, you will have to move it, remove it or otherwise
|
||||
specify a different work directory (<strong>NOT</strong> the subdirectory), as it needs to be
|
||||
empty.</p>
|
||||
<p>This <em>subdirectory is where your directories will be made and where your files
|
||||
will be <strong>copied</strong> to</em>. Your <em>submission tarball</em> (which you will upload to the
|
||||
submit server) that <code>txzchk(1)</code> will validate <em>will be placed in the <strong>work
|
||||
directory</strong></em>, and <strong>its <em>contents</em> will be the <em>subdirectory</em> with your
|
||||
submission’s files</strong>. The <code>mkiocccentry(1)</code> tool will also ask you for
|
||||
information about your submission <em>as well as author details</em> (that will only be
|
||||
looked at if the submission wins), run some tests and run a number of other
|
||||
tools, as mentioned above, and as described in the “<a href="#mkiocccentry_details">finer
|
||||
details</a>” section.</p>
|
||||
<p>See also the
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry/blob/master/FAQ.md">mkiocccentry repo FAQ</a>
|
||||
@@ -885,7 +896,7 @@ FAQ on “<a href="#makefile">submission Makefiles</a>.</p>
|
||||
<div id="file_perms">
|
||||
<h3 id="q-0.6-what-permissions-may-my-files-be-and-what-if-i-need-different-permissions">Q 0.6: What permissions may my files be and what if I need different permissions?</h3>
|
||||
</div>
|
||||
<p>As <a href="#rule17">Rule 17</a> states, files in your submission tarball <strong>MUST</strong> be
|
||||
<p>As <a href="next/rules.html#rule17">Rule 17</a> states, files in your submission tarball <strong>MUST</strong> be
|
||||
specific permissions. In particular: directories <strong>MUST</strong> be <code>drwxr-xr-x</code> (i.e.
|
||||
<code>0755</code>), the optional files, <code>try.sh</code> or <code>try.alt.sh</code>, if provided, <strong>MUST</strong> be
|
||||
<code>-r-xr-xr-x</code> (i.e. <code>0555</code>) and all other files <strong>MUST</strong> be <code>-r--r--r--</code> (i.e.
|
||||
@@ -969,7 +980,7 @@ For example:</p>
|
||||
</div>
|
||||
<p>The IOCCC makes extensive use of <a href="https://daringfireball.net/projects/markdown/">markdown</a>.
|
||||
For example, when <a href="next/submit.html">submitting to the IOCCC</a>, we have people
|
||||
submit remarks about entry in markdown format. Every
|
||||
submit remarks about their submission(s) in markdown format. Every
|
||||
<a href="years.html">winning IOCCC entry</a> uses a <code>README.md</code> markdown file
|
||||
as the basis for forming the <code>index.html</code> web page for that entry.
|
||||
All generated HTML pages on the <a href="https://www.ioccc.org/index.html">Official IOCCC website</a>
|
||||
@@ -1018,6 +1029,10 @@ do have to try again you’ll have to remove it.</p>
|
||||
<p>This will run the tests that <code>mkiocccentry(1)</code>, write the JSON files, use
|
||||
<code>chkentry(1)</code>, package the tarball and run <code>txzchk(1)</code> on it.</p>
|
||||
<p>See also the
|
||||
FAQ on “<a href="#mkiocccentry">mkiocccentry</a>”,
|
||||
the
|
||||
FAQ on “<a href="#using_mkiocccentry">using mkiocccentry</a>”,
|
||||
the
|
||||
FAQ on “<a href="#info_json">.info.json</a>”,
|
||||
the
|
||||
FAQ on “<a href="#auth_json">.auth.json</a>”,
|
||||
@@ -1047,6 +1062,13 @@ submission</a>, which not only discusses the maximum
|
||||
number of files (including extra files) but also specific rules you must follow
|
||||
if you do include a tarball. Not following these points puts you at great risk
|
||||
of violating <a href="next/rules.html#rule17">Rule 17</a>!</p>
|
||||
<p>Also, remember what the <a href="next/guidelines.html">guidelines</a> say:</p>
|
||||
<blockquote>
|
||||
<p><strong>IMPORTANT REMINDER</strong>: make <strong>SURE</strong> your tarball does <strong>NOT</strong> reveal who you are!
|
||||
The <code>mkiocccentry(1)</code> tool creates a v7 format tarball to prevent this.</p>
|
||||
</blockquote>
|
||||
<p>You can do this by creating the tarball like:</p>
|
||||
<pre><code> tar --format=v7 -cJf foo.txz directory</code></pre>
|
||||
<hr style="width:50%;text-align:left;margin-left:0">
|
||||
<hr style="width:50%;text-align:left;margin-left:0">
|
||||
<div id="judging">
|
||||
@@ -1129,16 +1151,19 @@ discussion</a>.</p>
|
||||
</div>
|
||||
<p>There are unfortunately some warnings that cannot be disabled; they are always
|
||||
enabled whatever warning options you have enabled. Also, there is a warning that
|
||||
is enabled whenever you act on <code>char *</code>s, saying it is unsafe buffer usage, even
|
||||
when it’s not. This might be enabled by <code>-Weverything</code> but it might not be; for
|
||||
more details on why we use <code>-Weverything</code> in Clang see the
|
||||
FAQ on “<a href="#weverything">-Weverything</a>”.</p>
|
||||
<p>It is not detrimental to your submission if you disable this, which you can do
|
||||
by specifying <code>-Wno-unsafe-buffer-usage</code>.</p>
|
||||
is enabled whenever you use a pointer as a buffer, saying it is unsafe buffer
|
||||
usage, even when it is not.</p>
|
||||
<p>This might be enabled by <code>-Weverything</code> but it might not be but it is not
|
||||
detrimental to your submission if you disable this, which you can do by
|
||||
specifying <code>-Wno-unsafe-buffer-usage</code>.</p>
|
||||
<p>So in short, no you should not worry about these as they are sometimes
|
||||
inevitable in obfuscated code and even non-obfuscated code.</p>
|
||||
<p>If you <em>can</em> work past this it might be good but this is not something that
|
||||
should be worried about too much as this is on the compiler developers, not you.</p>
|
||||
should be worried about too much as this is on the compiler developers, not you.
|
||||
Of course if you do work past it feel free to brag, though <strong>BE SURE TO TELL
|
||||
US</strong> the OS, OS version, compiler and compiler version.</p>
|
||||
<p>For more details on why we use <code>-Weverything</code> in Clang see the FAQ on
|
||||
“<a href="#weverything">-Weverything</a>”.</p>
|
||||
<p>Jump to: <a href="#">top</a></p>
|
||||
<div id="frequent-themes">
|
||||
<h3 id="q-2.3-what-types-of-entries-have-been-frequently-submitted-to-the-ioccc">Q 2.3: What types of entries have been frequently submitted to the IOCCC?</h3>
|
||||
@@ -1399,11 +1424,12 @@ verify everything is in order. If something is not allowed (bad filename for
|
||||
example) or an error occurs (missing required file for example) you will be
|
||||
notified of this. After you verify everything is okay the files/directories
|
||||
found will be copied/made and it will then switch to the submission directory.
|
||||
In the submission directory it scans the file hierarchy again and verifies
|
||||
things are still okay. When done it will ask you to verify things are still OK.
|
||||
If all is good it’ll ask you for more information about the author(s). Next the
|
||||
two required JSON files <code>.auth.json</code> and <code>.info.json</code> will be created, running
|
||||
<code>chkentry(1)</code> on each. If all is good it’ll give you another chance to say the
|
||||
In the submission directory it first runs <code>make clobber</code> and then scans the
|
||||
directory hierarchy again, verifying things are still okay. When done it will
|
||||
ask you to verify things still look OK to you too. If all is good it’ll ask you
|
||||
for more information about the author(s). Next the two required JSON files
|
||||
<code>.auth.json</code> and <code>.info.json</code> will be created. After that <code>chkentry(1)</code> will be
|
||||
run on the directory. If all is good it’ll give you another chance to say the
|
||||
files/directories look good and if you answer yes it’ll create the tarball and
|
||||
run <code>txzchk</code> on it.</p>
|
||||
<p>In most cases the program will prompt you to verify your input is correct. In
|
||||
@@ -1565,19 +1591,14 @@ but has no content is violating <a href="next/rules.html#rule17">Rule 17</a> and
|
||||
<li>Ask the user for a one line abstract of the submission.</li>
|
||||
<li>Ask the user for the number of authors and for each author ask a variety of
|
||||
questions (see below for more information on what kind of questions).</li>
|
||||
<li>Create <code>.info.json</code> and run <code>chkentry(1)</code> on it.
|
||||
<li>Create <code>.info.json</code>.</li>
|
||||
<li>Create <code>.auth.json</code>.</li>
|
||||
<li>Run <code>chkentry(1)</code> on your submission directory to verify things look good,
|
||||
including that the <code>.info.json</code> and <code>.auth.json</code> files are okay.
|
||||
<ul>
|
||||
<li>If <code>chkentry(1)</code> 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!</li>
|
||||
</ul></li>
|
||||
<li>Create <code>.auth.json</code> and run <code>chkentry(1)</code> on it.
|
||||
<ul>
|
||||
<li>If <code>chkentry(1)</code> 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!</li>
|
||||
<li>It also checks that the manifest in <code>.info.json</code> matches what is in the
|
||||
submission directory and it verifies file permissions too; if you wish to
|
||||
know what else it does we suggest you read the source code.</li>
|
||||
</ul></li>
|
||||
<li>Show the output of <code>ls -lakR .</code>, asking the user to confirm that the listing
|
||||
is okay.</li>
|
||||
@@ -1722,43 +1743,53 @@ for more information.</p>
|
||||
<p>Jump to: <a href="#">top</a></p>
|
||||
<div id="validating_auth_info_json">
|
||||
<div id="chkentry">
|
||||
<h3 id="q-3.3-how-can-i-validate-my-.auth.json-andor-.info.json-files">Q 3.3: How can I validate my <code>.auth.json</code> and/or <code>.info.json</code> files?</h3>
|
||||
<h3 id="q-3.3-how-can-i-validate-my-submission-directory">Q 3.3: How can I validate my submission directory?</h3>
|
||||
</div>
|
||||
</div>
|
||||
<p>If you want to validate the <code>.auth.json</code> or <code>.info.json</code> files you
|
||||
should use <code>chkentry(1)</code> from the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry
|
||||
repo</a>.</p>
|
||||
<p>The <code>chkentry(1)</code> tool uses the IOCCC version of the <a href="https://github.com/ioccc-src/mkiocccentry/blob/master/jparse/man/man3/jparse.3">jparse
|
||||
<p>If you want to validate your submission directory manually, including but not
|
||||
limited to the <code>.auth.json</code> or <code>.info.json</code> files, you should use <code>chkentry(1)</code>
|
||||
from the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry repo</a>.</p>
|
||||
<p>The <code>chkentry(1)</code> tool runs a variety of checks on your submission directory,
|
||||
including but not limited to, using the <a href="https://github.com/ioccc-src/mkiocccentry/blob/master/jparse/man/man3/jparse.3">jparse
|
||||
API</a>
|
||||
to perform <strong>additional</strong> checks on these two IOCCC specific JSON files. It is
|
||||
<em>possible</em> that this version will at times differ from the <a href="https://github.com/xexyl/jparse/blob/master/man/man3/jparse.3">official jparse
|
||||
API</a> at the
|
||||
<a href="https://github.com/xexyl/jparse">official jparse repo</a> and this is one of the
|
||||
reasons the tools’ <code>-V</code> (version option) show the JSON parser version as well.</p>
|
||||
to validate the two IOCCC specific JSON files (as valid JSON) and additional
|
||||
checks on those files as well. An important thing that it does is verify that
|
||||
your files are the right permissions and that the manifest in the <code>.info.json</code>
|
||||
files match what is in the directory. What all the checks are is out of scope of this
|
||||
document; if you wish to know we recommend you read the <a href="https://github.com/ioccc-src/mkiocccentry/blob/master/chkentry.c">source
|
||||
code</a>.</p>
|
||||
<p><strong>NOTE</strong>: the IOCCC <a href="https://github.com/ioccc-src/mkiocccentry/blob/master/jparse/man/man3/jparse.3">jparse
|
||||
API</a>
|
||||
is a synced copy of the <a href="https://github.com/xexyl/jparse">official jparse
|
||||
repo</a> <em>at the time of the contest open date</em>.</p>
|
||||
<p>See the
|
||||
FAQ on “<a href="#auth_json">.auth.json</a>”
|
||||
and
|
||||
FAQ on “<a href="#info_json">.info.json</a>”
|
||||
for more details on these files.</p>
|
||||
<p>The <code>chkentry(1)</code> tool accepts more than one command line form.
|
||||
You may specify a <code>.auth.json</code> and/or
|
||||
<code>.info.json</code> file. An argument of “<code>.</code>” will skip that file. For instance:</p>
|
||||
<pre><code> # run checks on .info.json:
|
||||
chkentry . .info.json
|
||||
|
||||
# run checks on .auth.json:
|
||||
chkentry .auth.json .
|
||||
|
||||
# run checks on .auth.json and .info.json:
|
||||
chkentry .auth.json .info.json</code></pre>
|
||||
for more details on the two required and very important JSON files.</p>
|
||||
<p>The <code>chkentry(1)</code> tool accepts a single arg, a directory that <strong>MUST</strong> have the
|
||||
two JSON files, <code>.auth.json</code> and <code>.info.json</code>. (Okay there is an option to skip
|
||||
files but this is for the judges <strong>ONLY</strong>; use of this option to validate your
|
||||
submission puts you at a great risk of violating <a href="next/rules.html#rule17">Rule
|
||||
17</a>!).</p>
|
||||
<p>As an example, if your submission directory is <code>12345678-1234-4321-abcd-1234567890ab-0/</code> then you should run the
|
||||
following command:</p>
|
||||
<pre><code> chkentry 12345678-1234-4321-abcd-1234567890ab-0</code></pre>
|
||||
<p>If there is a <a href="https://www.json.org/json-en.html">JSON</a> issue detected by the
|
||||
<code>jparse(3)</code> API, then there is a <a href="https://www.json.org/json-en.html">JSON</a> error and
|
||||
<code>chkentry(1)</code> will report it as an <strong>error</strong>. If the parsing is OK (i.e. valid
|
||||
JSON) but there is an issue in one or both of the
|
||||
<code>jparse(3)</code> API (i.e. it is not valid JSON) it is an error and <code>chkentry(1)</code>
|
||||
will report this, exiting with a non-zero exit code. If the parsing is OK (i.e.
|
||||
valid JSON) but there is an issue in one or both of the
|
||||
<a href="https://www.json.org/json-en.html">JSON</a> files in <strong>the context of the IOCCC</strong>,
|
||||
it will report this as an <strong>error</strong>. Thus, if you were to package your
|
||||
submission manually then you would be violating <a href="next/rules.html#rule17">Rule
|
||||
17</a>.</p>
|
||||
it will report this as an <strong>error</strong>. It also does, as briefly noted above, other
|
||||
checks.</p>
|
||||
<p>If <code>chkentry(1)</code> fails to validate your submission directory your submission
|
||||
<strong>WILL</strong> be <strong>REJECTED</strong>! This is why you <strong>MUST</strong> make sure you use the
|
||||
<code>mkiocccentry(1)</code> tool to form your submission directory.</p>
|
||||
<p>See the
|
||||
FAQ on “<a href="#auth_json">.auth.json</a>”
|
||||
and the
|
||||
FAQ on “<a href="#info_json">.info.json</a>”
|
||||
as well as <a href="next/rules.html#rule17">Rule 17</a> for more information.</p>
|
||||
<p>Jump to: <a href="#">top</a></p>
|
||||
<div id="auth_json">
|
||||
<h3 id="q-3.4-what-is-a-.auth.json-file">Q 3.4: What is a <code>.auth.json</code> file?</h3>
|
||||
@@ -1787,7 +1818,7 @@ information about the author or authors of the submission, in JSON format.</p>
|
||||
<ul>
|
||||
<li>The current version of the <code>.auth.json</code> file.</li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> this <strong>MUST</strong> match <strong>THIS</strong> IOCCC’s <code>.auth.json</code> version, defined as
|
||||
<p><strong>IMPORTANT:</strong> this <strong>MUST</strong> match <strong>THIS</strong> IOCCC’s <code>.auth.json</code> version, defined as
|
||||
<code>AUTH_VERSION</code> in
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry/blob/master/soup/version.h">soup/version.h</a>
|
||||
in the <a href="https://github.com/ioccc-src/mkiocccentry/">mkiocccentry repo</a>. If
|
||||
@@ -1796,7 +1827,7 @@ this is not the case your submission <strong>WILL BE</strong> rejected!</p></li>
|
||||
<ul>
|
||||
<li>Which contest number this is (e.g. 1 for 1984, 2 for 1985, 27 for 2020).</li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> this <strong>MUST</strong> match <strong>THIS</strong> IOCCC’s contest value, defined as
|
||||
<p><strong>IMPORTANT:</strong> this <strong>MUST</strong> match <strong>THIS</strong> IOCCC’s contest value, defined as
|
||||
<code>IOCCC_CONTEST</code> in
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h">soup/limit_ioccc.h</a>
|
||||
in the <a href="https://github.com/ioccc-src/mkiocccentry/">mkiocccentry repo</a>. If
|
||||
@@ -1807,7 +1838,7 @@ this is not the case your submission <strong>WILL BE</strong> rejected!</p></li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> sometimes an IOCCC year runs into another year and the contest year
|
||||
might not match when it ends.</p>
|
||||
<p><strong>NOTE:</strong> this <strong>MUST</strong> match <strong>THIS</strong> IOCCC’s contest, defined as
|
||||
<p><strong>IMPORTANT:</strong> this <strong>MUST</strong> match <strong>THIS</strong> IOCCC’s contest, defined as
|
||||
<code>IOCCC_YEAR</code> in
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h">soup/limit_ioccc.h</a>
|
||||
in the <a href="https://github.com/ioccc-src/mkiocccentry/">mkiocccentry repo</a>. If
|
||||
@@ -1816,17 +1847,17 @@ this is not the case your submission <strong>WILL BE</strong> rejected!</p></li>
|
||||
<ul>
|
||||
<li>The version of <code>mkiocccentry</code> that formed this <code>.auth.json</code> file.</li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> this <strong>MUST</strong> match <strong>THIS</strong> IOCCC’s <code>mkiocccentry</code> version,
|
||||
<p><strong>IMPORTANT:</strong> this <strong>MUST</strong> match <strong>THIS</strong> IOCCC’s <code>mkiocccentry</code> version,
|
||||
defined as <code>MKIOCCCENTRY_VERSION</code> in
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry/blob/master/soup/version.h">soup/version.h</a>
|
||||
in the <a href="https://github.com/ioccc-src/mkiocccentry/">mkiocccentry repo</a>. If
|
||||
this is not the case your submission <strong>WILL BE</strong> rejected!</p></li>
|
||||
<li><p><code>chkentry_version</code> (double quoted string)</p>
|
||||
<ul>
|
||||
<li>The version of <code>chkentry</code> that was used to validate this <code>.auth.json</code>,
|
||||
assuming that it was created by <code>mkiocccentry</code>.</li>
|
||||
<li>The version of <code>chkentry</code> that was used to validate the submission
|
||||
directory, including the <code>.auth.json</code> file.</li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> this <strong>MUST</strong> match <strong>THIS</strong> IOCCC’s <code>chkentry</code> version, defined
|
||||
<p><strong>IMPORTANT:</strong> this <strong>MUST</strong> match <strong>THIS</strong> IOCCC’s <code>chkentry</code> version, defined
|
||||
as <code>CHKENTRY_VERSION</code> in
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry/blob/master/soup/version.h">soup/version.h</a>
|
||||
in the <a href="https://github.com/ioccc-src/mkiocccentry/">mkiocccentry repo</a>. If
|
||||
@@ -1836,7 +1867,7 @@ this is not the case your submission <strong>WILL BE</strong> rejected!</p></li>
|
||||
<li>The version of <code>fnamchk</code> that <code>txzchk</code> uses to validate the filename of
|
||||
the xz compressed tarball.</li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> this <strong>MUST</strong> match <strong>THIS</strong> IOCCC’s <code>fnamchk</code> version in order for it
|
||||
<p><strong>IMPORTANT:</strong> this <strong>MUST</strong> match <strong>THIS</strong> IOCCC’s <code>fnamchk</code> version in order for it
|
||||
to be valid. If this is not the case your submission <strong>WILL BE</strong> rejected!</p></li>
|
||||
<li><p><code>IOCCC_contest_id</code> (double quoted string)</p>
|
||||
<ul>
|
||||
@@ -1851,19 +1882,20 @@ violating <a href="next/rules.html#rule17">Rule 17</a>!</p></li>
|
||||
<ul>
|
||||
<li>The xz compressed tarball filename.</li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> this <strong>MUST</strong> match the actual tarball’s <strong>filename</strong> in order for
|
||||
<p><strong>IMPORTANT:</strong> this <strong>MUST</strong> match the actual tarball’s <strong>filename</strong> in order for
|
||||
this to be valid. If there is a mismatch you stand a great risk of having
|
||||
your submission rejected for violating <a href="next/rules.html#rule17">Rule 17</a>!
|
||||
Moreover, it is possible that <code>txzchk</code> will report a problem through
|
||||
<code>fnamchk(1)</code> which also puts you at great risk of violating <a href="next/rules.html#rule17">Rule
|
||||
17</a>. If <code>txzchk</code> does not detect this, though, it
|
||||
does not mean it’s a bug but rather that the directory in the tarball
|
||||
matches the filename.</p></li>
|
||||
17</a>. <code>txzchk</code> will use the output of <code>fnamchk</code> to
|
||||
obtain the correct directory <em>name</em> in the tarball; if <code>fnamchk</code> fails to
|
||||
validate your filename, or if you have the wrong directory name in the
|
||||
tarball, this will be flaggd.</p></li>
|
||||
<li><p><code>submit_slot</code> (number)</p>
|
||||
<ul>
|
||||
<li>The submission number.</li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> this <strong>MUST</strong> be within the range of 0 <strong>THROUGH</strong>
|
||||
<p><strong>IMPORTANT:</strong> this <strong>MUST</strong> be within the range of 0 <strong>THROUGH</strong>
|
||||
<code>MAX_SUBMIT_SLOT</code> (see
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h">soup/limit_ioccc.h</a>
|
||||
in the <a href="https://github.com/ioccc-src/mkiocccentry/">mkiocccentry repo</a>). If
|
||||
@@ -1873,7 +1905,7 @@ rejected for violating <a href="next/rules.html#rule17">Rule 17</a>!</p></li>
|
||||
<ul>
|
||||
<li>How many authors this submission has.</li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> this <strong>MUST</strong> be within the range of 1 <strong>THROUGH</strong>
|
||||
<p><strong>IMPORTANT:</strong> this <strong>MUST</strong> be within the range of 1 <strong>THROUGH</strong>
|
||||
<code>MAX_AUTHORS</code> (see
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h">soup/limit_ioccc.h</a>
|
||||
in the <a href="https://github.com/ioccc-src/mkiocccentry/">mkiocccentry repo</a>). If
|
||||
@@ -1910,10 +1942,14 @@ for a list of valid codes.</li>
|
||||
<li><p><code>url</code> (<code>null</code> or double quoted string)</p>
|
||||
<ul>
|
||||
<li>The primary <strong>URL</strong> of this author, or <code>null</code> if not provided.</li>
|
||||
<li>The URL must start with <code>http://</code> or <code>https://</code> and have more text after it;
|
||||
we do not even try and detect a hostname.</li>
|
||||
</ul></li>
|
||||
<li><p><code>alt_url</code> (<code>null</code> or double quoted string)</p>
|
||||
<ul>
|
||||
<li>The <strong>alt URL</strong> of this author, or <code>null</code> if not provided.</li>
|
||||
<li>The URL must start with <code>http://</code> or <code>https://</code> and have more text after it;
|
||||
we do not even try and detect a hostname.</li>
|
||||
</ul></li>
|
||||
<li><p><code>mastodon</code> (<code>null</code> or double quoted string)</p>
|
||||
<ul>
|
||||
@@ -1931,7 +1967,7 @@ provided.</li>
|
||||
<ul>
|
||||
<li>This author’s <strong>affiliation</strong>, if any, or <code>null</code> if not provided.</li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> if provided, the length of the <strong>affiliation</strong> <strong>MUST</strong> be within
|
||||
<p><strong>IMPORTANT:</strong> if provided, the length of the <strong>affiliation</strong> <strong>MUST</strong> be within
|
||||
the range of 1 <strong>THROUGH</strong> <code>MAX_AFFILIATION_LEN</code> (see
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h">soup/limit_ioccc.h</a>
|
||||
in the <a href="https://github.com/ioccc-src/mkiocccentry/">mkiocccentry repo</a>). If
|
||||
@@ -1974,7 +2010,7 @@ for more information.</p></li>
|
||||
FAQ on “<a href="#info_json">.info.json</a>”
|
||||
for more information.</li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> this <strong>MUST</strong> be greater than or equal to <code>MIN_TIMESTAMP</code> (see
|
||||
<p><strong>IMPORTANT:</strong> this <strong>MUST</strong> be greater than or equal to <code>MIN_TIMESTAMP</code> (see
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h">soup/limit_ioccc.h</a>
|
||||
in the <a href="https://github.com/ioccc-src/mkiocccentry/">mkiocccentry repo</a>). If
|
||||
this is not the case your submission <strong>WILL BE</strong> rejected.</p></li>
|
||||
@@ -1983,7 +2019,7 @@ this is not the case your submission <strong>WILL BE</strong> rejected.</p></li>
|
||||
<li>Microseconds since the tstamp (seconds since epoch when <code>.auth.json</code> was
|
||||
formed - see <code>gettimeofday(2)</code>) second.</li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> this <strong>MUST</strong> be within the range <code>MIN_FORMED_TIMESTAMP_USEC</code>
|
||||
<p><strong>IMPORTANT:</strong> this <strong>MUST</strong> be within the range <code>MIN_FORMED_TIMESTAMP_USEC</code>
|
||||
<strong>THROUGH</strong> <code>MAX_FORMED_TIMESTAMP_USEC</code> and is validated by
|
||||
<code>test_formed_timestamp_usec()</code> in
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry/blob/master/soup/entry_util.c">soup/entry_util.c</a>
|
||||
@@ -1994,7 +2030,7 @@ submission <strong>WILL BE</strong> rejected!</p></li>
|
||||
<ul>
|
||||
<li><code>"Thu Jan 01 00:00:00 1970 UTC"</code> (<code>gettimeofday(2)</code> epoch).</li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> this <strong>MUST</strong> be <code>"Thu Jan 01 00:00:00 1970 UTC"</code> which is <code>#define</code>d
|
||||
<p><strong>IMPORTANT:</strong> this <strong>MUST</strong> be <code>"Thu Jan 01 00:00:00 1970 UTC"</code> which is <code>#define</code>d
|
||||
as <code>TIMESTAMP_EPOCH</code> in
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h">soup/limit_ioccc.h</a>
|
||||
in the <a href="https://github.com/ioccc-src/mkiocccentry/">mkiocccentry repo</a>. If
|
||||
@@ -2003,30 +2039,35 @@ this is not the case your submission <strong>WILL BE</strong> rejected!</p></li>
|
||||
<ul>
|
||||
<li>Minimum number of second since epoch for <strong>this</strong> IOCCC.</li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> this <strong>MUST</strong> be >= <code>MIN_TIMESTAMP</code> defined in
|
||||
<p><strong>IMPORTANT:</strong> this <strong>MUST</strong> be >= <code>MIN_TIMESTAMP</code> defined in
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h">soup/limit_ioccc.h</a>
|
||||
in the <a href="https://github.com/ioccc-src/mkiocccentry/">mkiocccentry repo</a>. If
|
||||
this is not the case your submission <strong>WILL BE</strong> rejected!</p></li>
|
||||
</ul>
|
||||
<p>This file will be verified with the <code>chkentry(1)</code> tool and if there are any
|
||||
problems <strong>it is an error</strong>. If there is an error the tarball will <strong>NOT</strong> be
|
||||
formed by <code>mkiocccentry</code>; otherwise the <code>txzchk(1)</code> tool will be executed on the
|
||||
tarball.</p>
|
||||
<p>This file will <strong>NOT</strong> be looked at unless the submission wins! Nonetheless,
|
||||
<code>chkentry(1)</code> <strong>WILL BE</strong> used on the file as part of the judging process.</p>
|
||||
<p>This file will be validated with the <code>chkentry(1)</code> tool and if there are any
|
||||
problems with it or the submission directory, <strong>it is an error</strong>. If there is an
|
||||
error the tarball will <strong>NOT</strong> be formed by <code>mkiocccentry</code>; otherwise the
|
||||
<code>txzchk(1)</code> tool will be executed on the tarball.</p>
|
||||
<p>This file will <strong>NOT</strong> be looked at unless the submission wins! Nonetheless, the
|
||||
file <strong>MUST</strong> be present in the submission directory and it <strong>MUST</strong> be valid
|
||||
JSON and it <strong>MUST</strong> pass all IOCCC semantics checks and all other checks
|
||||
<code>chkentry(1)</code> perform. <code>chkentry(1)</code> is used by <code>mkiocccentry(1)</code> and the judges
|
||||
will use it on the submission directory as part of the judging process.</p>
|
||||
<p>At the risk of stating the obvious, if your <code>.auth.json</code> file is invalid JSON or
|
||||
is reported invalid by <code>chkentry</code> your submission will almost certainly be
|
||||
is reported invalid by <code>chkentry(1)</code>, or if your submission directory is
|
||||
reported invalid by <code>chkentry(1)</code>, your submission will almost certainly be
|
||||
rejected for violating the <a href="next/rules.html">Rules</a> and in particular <a href="next/rules.html#rule17">Rule
|
||||
17</a>.</p>
|
||||
<p>An obvious example where <code>chkentry</code> would fail to validate <code>.auth.json</code> is if
|
||||
<p>An obvious example where <code>chkentry(1)</code> would fail to validate <code>.auth.json</code> is if
|
||||
there is a mismatch of type in the JSON file with what is expected, for
|
||||
instance, if in <code>.auth.json</code> the <code>no_comment</code> 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 <code>chkentry</code>) your submission would be rejected for violating <a href="next/rules.html#rule17">Rule
|
||||
17</a> and in particular because <code>chkentry</code> would not
|
||||
validate the <code>.auth.json</code> file.</p>
|
||||
not a string or is the wrong 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 <code>chkentry(1)</code>) your submission would be
|
||||
rejected for violating <a href="next/rules.html#rule17">Rule 17</a> and in particular
|
||||
because <code>chkentry(1)</code> would not validate the <code>.auth.json</code> file (and maybe other
|
||||
things too).</p>
|
||||
<p>If you wish to <strong>verify</strong> that your <code>.auth.json</code> file is valid <strong>JSON</strong> then see the
|
||||
FAQ on “<a href="#validating_json">validating JSON documents</a>”.</p>
|
||||
<p>Jump to: <a href="#">top</a></p>
|
||||
@@ -2066,7 +2107,7 @@ for more information.</p>
|
||||
<ul>
|
||||
<li>The current version of the <code>.info.json</code> files.</li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> this <strong>MUST</strong> match <strong>THIS</strong> IOCCC’s <code>.info.json</code> version, defined as
|
||||
<p><strong>IMPORTANT:</strong> this <strong>MUST</strong> match <strong>THIS</strong> IOCCC’s <code>.info.json</code> version, defined as
|
||||
<code>INFO_VERSION</code> in
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry/blob/master/soup/version.h">soup/version.h</a>
|
||||
in the <a href="https://github.com/ioccc-src/mkiocccentry/">mkiocccentry repo</a>. If
|
||||
@@ -2075,7 +2116,7 @@ this is not the case your submission <strong>WILL BE</strong> rejected!</p></li>
|
||||
<ul>
|
||||
<li>Which contest number this is (e.g. 1 for 1984, 2 for 1985, 27 for 2020).</li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> this <strong>MUST</strong> match <strong>THIS</strong> IOCCC’s contest value, defined as
|
||||
<p><strong>IMPORTANT:</strong> this <strong>MUST</strong> match <strong>THIS</strong> IOCCC’s contest value, defined as
|
||||
<code>IOCCC_CONTEST</code> in
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h">soup/limit_ioccc.h</a>
|
||||
in the <a href="https://github.com/ioccc-src/mkiocccentry/">mkiocccentry repo</a>. If
|
||||
@@ -2086,7 +2127,7 @@ this is not the case your submission <strong>WILL BE</strong> rejected!</p></li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> sometimes an IOCCC year runs into another year and the contest year
|
||||
might not match when it ends.</p>
|
||||
<p><strong>NOTE:</strong> this <strong>MUST</strong> match <strong>THIS</strong> IOCCC’s contest, defined as
|
||||
<p><strong>IMPORTANT:</strong> this <strong>MUST</strong> match <strong>THIS</strong> IOCCC’s contest, defined as
|
||||
<code>IOCCC_YEAR</code> in
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h">soup/limit_ioccc.h</a>
|
||||
in the <a href="https://github.com/ioccc-src/mkiocccentry/">mkiocccentry repo</a>. If
|
||||
@@ -2095,7 +2136,7 @@ this is not the case your submission <strong>WILL BE</strong> rejected!</p></li>
|
||||
<ul>
|
||||
<li>The version of <code>mkiocccentry</code> that formed this <code>.auth.json</code> file.</li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> this <strong>MUST</strong> match <strong>THIS</strong> IOCCC’s <code>mkiocccentry</code> version,
|
||||
<p><strong>IMPORTANT:</strong> this <strong>MUST</strong> match <strong>THIS</strong> IOCCC’s <code>mkiocccentry</code> version,
|
||||
defined as <code>MKIOCCCENTRY_VERSION</code> in
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry/blob/master/soup/version.h">soup/version.h</a>
|
||||
in the <a href="https://github.com/ioccc-src/mkiocccentry/">mkiocccentry repo</a>. If
|
||||
@@ -2104,17 +2145,17 @@ this is not the case your submission <strong>WILL BE</strong> rejected!</p></li>
|
||||
<ul>
|
||||
<li>The version of <code>iocccsize</code> that was used for this <code>.info.json</code> file.</li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> this <strong>MUST</strong> match <strong>THIS</strong> IOCCC’s <code>iocccentry</code> version,
|
||||
<p><strong>IMPORTANT:</strong> this <strong>MUST</strong> match <strong>THIS</strong> IOCCC’s <code>iocccentry</code> version,
|
||||
defined as <code>IOCCCSIZE_VERSION</code> in
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry/blob/master/soup/version.h">soup/version.h</a>
|
||||
in the <a href="https://github.com/ioccc-src/mkiocccentry/">mkiocccentry repo</a>. If
|
||||
this is not the case your submission <strong>WILL BE</strong> rejected!</p></li>
|
||||
<li><p><code>chkentry_version</code> (double quoted string)</p>
|
||||
<ul>
|
||||
<li>The version of <code>chkentry</code> that was used to validate this <code>.info.json</code>,
|
||||
assuming that it was created by <code>mkiocccentry</code>.</li>
|
||||
<li>The version of <code>chkentry</code> that was used to validate the submission
|
||||
directory, including the <code>.info.json</code> file.</li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> this <strong>MUST</strong> match <strong>THIS</strong> IOCCC’s <code>chkentry</code> version, defined
|
||||
<p><strong>IMPORTANT:</strong> this <strong>MUST</strong> match <strong>THIS</strong> IOCCC’s <code>chkentry</code> version, defined
|
||||
as <code>CHKENTRY_VERSION</code> in
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry/blob/master/soup/version.h">soup/version.h</a>
|
||||
in the <a href="https://github.com/ioccc-src/mkiocccentry/">mkiocccentry repo</a>. If
|
||||
@@ -2124,7 +2165,7 @@ this is not the case your submission <strong>WILL BE</strong> rejected!</p></li>
|
||||
<li>The version of <code>fnamchk</code> that <code>txzchk</code> uses to validate the filename of
|
||||
the xz compressed tarball.</li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> this <strong>MUST</strong> match <strong>THIS</strong> IOCCC’s <code>fnamchk</code> version, defined
|
||||
<p><strong>IMPORTANT:</strong> this <strong>MUST</strong> match <strong>THIS</strong> IOCCC’s <code>fnamchk</code> version, defined
|
||||
as <code>FNAMCHK_VERSION</code> in
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry/blob/master/soup/version.h">soup/version.h</a>
|
||||
in the <a href="https://github.com/ioccc-src/mkiocccentry/">mkiocccentry repo</a>. If
|
||||
@@ -2133,7 +2174,7 @@ this is not the case your submission <strong>WILL BE</strong> rejected!</p></li>
|
||||
<ul>
|
||||
<li>The version of <code>txzchk</code> used to validate the xz compressed tarball.</li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> this <strong>MUST</strong> match <strong>THIS</strong> IOCCC’s <code>txzchk</code> version, defined
|
||||
<p><strong>IMPORTANT:</strong> this <strong>MUST</strong> match <strong>THIS</strong> IOCCC’s <code>txzchk</code> version, defined
|
||||
as <code>TXZCHK_VERSION</code> in
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry/blob/master/soup/version.h">soup/version.h</a>
|
||||
in the <a href="https://github.com/ioccc-src/mkiocccentry/">mkiocccentry repo</a>. If
|
||||
@@ -2143,15 +2184,12 @@ this is not the case your submission <strong>WILL BE</strong> rejected!</p></li>
|
||||
<li>The IOCCC contestant ID used as a username in the form of <strong>in the form of
|
||||
a UUID</strong> and submission number; see the <a href="next/rules.html">rules</a> for more details
|
||||
on this, and in particular <a href="next/rules.html#rule17">Rule 17</a>.</li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> if the contest ID is <strong>NOT</strong> in this format then <code>fnamchk</code> will
|
||||
report it as an <strong>error</strong> and your submission <strong>WILL BE</strong> rejected for
|
||||
violating <a href="next/rules.html#rule17">Rule 17</a>!</p></li>
|
||||
</ul></li>
|
||||
<li><p><code>submit_slot</code> (number)</p>
|
||||
<ul>
|
||||
<li>The submission number.</li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> this <strong>MUST</strong> be within the range of 0 <strong>THROUGH</strong>
|
||||
<p><strong>IMPORTANT:</strong> this <strong>MUST</strong> be within the range of 0 <strong>THROUGH</strong>
|
||||
<code>MAX_SUBMIT_SLOT</code> (see
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h">soup/limit_ioccc.h</a>
|
||||
in the <a href="https://github.com/ioccc-src/mkiocccentry/">mkiocccentry repo</a>). If
|
||||
@@ -2164,7 +2202,7 @@ rejected for violating <a href="next/rules.html#rule17">Rule 17</a>!</p></li>
|
||||
in the <a href="https://github.com/ioccc-src/mkiocccentry/">mkiocccentry repo</a>) that
|
||||
matches the regexp <code>[a-z0-9][a-z0-9_+-]*</code>.</li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> if this is <strong>NOT</strong> the case you stand a great risk of having your submission
|
||||
<p><strong>IMPORTANT:</strong> if this is <strong>NOT</strong> the case you stand a great risk of having your submission
|
||||
rejected for violating <a href="next/rules.html#rule17">Rule 17</a>!</p></li>
|
||||
<li><p><code>abstract</code> (double quoted string)</p>
|
||||
<ul>
|
||||
@@ -2174,33 +2212,34 @@ rejected for violating <a href="next/rules.html#rule17">Rule 17</a>!</p></li>
|
||||
in the <a href="https://github.com/ioccc-src/mkiocccentry/">mkiocccentry repo</a>)</li>
|
||||
</ul>
|
||||
<p>The <code>abstract</code> may not contain a <code>;</code> (semicolon), nor <code>&</code> (ampersand), nor <code>,</code> (comma).</p>
|
||||
<p><strong>NOTE:</strong> if your abstract is 0 in length or > the maximum abstract length you
|
||||
<p><strong>IMPORTANT:</strong> if your abstract is 0 in length or > the maximum abstract length you
|
||||
stand a great risk of having your submission rejected for violating <a href="next/rules.html#rule17">Rule
|
||||
17</a>!</p></li>
|
||||
<li><p><code>tarball</code> (double quoted string)</p>
|
||||
<ul>
|
||||
<li>The xz compressed tarball filename.</li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> this <strong>MUST</strong> match the actual tarball’s <strong>filename</strong> in order for
|
||||
<p><strong>IMPORTANT:</strong> this <strong>MUST</strong> match the actual tarball’s <strong>filename</strong> in order for
|
||||
this to be valid. If there is a mismatch you stand a great risk of having
|
||||
your submission rejected for violating <a href="next/rules.html#rule17">Rule 17</a>!
|
||||
Moreover, it is possible that <code>txzchk</code> will report a problem through
|
||||
<code>fnamchk(1)</code> which also puts you at great risk of violating <a href="next/rules.html#rule17">Rule
|
||||
17</a>. If <code>txzchk</code> does not detect this, though, it
|
||||
does not mean it’s a bug but rather that the directory in the tarball
|
||||
matches the filename.</p></li>
|
||||
17</a>. <code>txzchk</code> will use the output of <code>fnamchk</code> to
|
||||
obtain the correct directory <em>name</em> in the tarball; if <code>fnamchk</code> fails to
|
||||
validate your filename, or if you have the wrong directory name in the
|
||||
tarball, this will be flaggd.</p></li>
|
||||
<li><p><code>rule_2a_size</code> (number)</p>
|
||||
<ul>
|
||||
<li>The size calculated of <a href="next/rules.html#rule2a">Rule 2a</a>.</li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> if this violates <a href="next/rules.html#rule2a">Rule 2a</a> you stand a great
|
||||
<p><strong>IMPORTANT:</strong> if this violates <a href="next/rules.html#rule2a">Rule 2a</a> you stand a great
|
||||
chance of having your submission rejected for violating the
|
||||
<a href="next/rules.html">Rules</a>!</p></li>
|
||||
<li><p><code>rule_2b_size</code> (number)</p>
|
||||
<ul>
|
||||
<li>The size calculated of <a href="next/rules.html#rule2b">Rule 2b</a>.</li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> if this violates <a href="next/rules.html#rule2b">Rule 2b</a> you stand a great
|
||||
<p><strong>IMPORTANT:</strong> if this violates <a href="next/rules.html#rule2b">Rule 2b</a> you stand a great
|
||||
chance of having your submission rejected for violating the
|
||||
<a href="next/rules.html">Rules</a>!</p></li>
|
||||
<li><p><code>empty_override</code> (boolean)</p>
|
||||
@@ -2212,7 +2251,7 @@ chance of having your submission rejected for violating the
|
||||
<li><code>true</code> if user overrides warning of <a href="next/rules.html#rule2a">Rule 2a</a>
|
||||
violation, else <code>false</code>.</li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> if the <a href="next/rules.html#rule2a">Rule 2a</a> calculated size is <strong>NOT</strong>
|
||||
<p><strong>IMPORTANT:</strong> if the <a href="next/rules.html#rule2a">Rule 2a</a> calculated size is <strong>NOT</strong>
|
||||
violated but this is <code>true</code> then you stand a good chance of having your
|
||||
submission rejected for violating <a href="next/rules.html#rule17">Rule 17</a>!</p></li>
|
||||
<li><p><code>rule_2a_mismatch</code> (boolean)</p>
|
||||
@@ -2225,7 +2264,7 @@ same as the file size.</li>
|
||||
<li><code>true</code> if user overrides warning of <a href="next/rules.html#rule2b">Rule 2b</a>
|
||||
violation, else <code>false</code>.</li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> if the <a href="next/rules.html#rule2b">Rule 2b</a> calculated size is <strong>NOT</strong>
|
||||
<p><strong>IMPORTANT:</strong> if the <a href="next/rules.html#rule2b">Rule 2b</a> calculated size is <strong>NOT</strong>
|
||||
violated but this is <code>true</code> then you stand a good chance of having your
|
||||
submission rejected for violating <a href="next/rules.html#rule17">Rule 17</a>!</p></li>
|
||||
<li><p><code>highbit_warning</code> (boolean)</p>
|
||||
@@ -2249,7 +2288,7 @@ bit set - octet value >= 128); see <a href="next/rules.html#rule13">Rule 13</
|
||||
<li><code>true</code> if <code>prog.c</code> triggered a word buffer overflow (see <code>iocccsize</code>),
|
||||
else <code>false</code>.</li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> this does <strong>NOT</strong> mean that your code has been checked for buffer
|
||||
<p><strong>IMPORTANT:</strong> this does <strong>NOT</strong> mean that your code has been checked for buffer
|
||||
overflows in general.</p></li>
|
||||
<li><p><code>ungetc_warning</code> (boolean)</p>
|
||||
<ul>
|
||||
@@ -2260,7 +2299,7 @@ overflows in general.</p></li>
|
||||
<li><code>true</code> if the user overrides any warnings about an incomplete/incorrect
|
||||
<code>Makefile</code> file, else <code>false</code>.</li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> if the <code>Makefile</code> file has no problems and this is <code>true</code> then
|
||||
<p><strong>IMPORTANT:</strong> if the <code>Makefile</code> file has no problems and this is <code>true</code> then
|
||||
you stand a good chance of having your submission rejected for violating
|
||||
<a href="next/rules.html#rule17">Rule 17</a>!</p>
|
||||
<p>See the
|
||||
@@ -2270,7 +2309,7 @@ for more information.</p></li>
|
||||
<ul>
|
||||
<li><code>true</code> if the first rule in the <code>Makefile</code> file is <code>all</code>, else <code>false</code>.</li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> if the <code>Makefile</code> file does <strong>NOT</strong> have an <code>all</code> rule or it is not
|
||||
<p><strong>IMPORTANT:</strong> if the <code>Makefile</code> file does <strong>NOT</strong> have an <code>all</code> rule or it is not
|
||||
first and this boolean is <code>true</code> then you stand a good chance of having your
|
||||
submission rejected for violating <a href="next/rules.html#rule17">Rule 17</a>!</p>
|
||||
<p>See the
|
||||
@@ -2280,7 +2319,7 @@ for more information.</p></li>
|
||||
<ul>
|
||||
<li><code>true</code> if the <code>Makefile</code> file has an <code>all</code> rule, else <code>false</code>.</li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> if the <code>Makefile</code> file does <strong>NOT</strong> have an <code>all</code> rule and this
|
||||
<p><strong>IMPORTANT:</strong> if the <code>Makefile</code> file does <strong>NOT</strong> have an <code>all</code> rule and this
|
||||
boolean is <code>true</code>, or if it does <strong>NOT</strong> have an <code>all</code> rule but
|
||||
<code>first_rule_is_all</code> is <code>true</code> then you stand a good chance of having your
|
||||
submission rejected for violating <a href="next/rules.html#rule17">Rule 17</a>!</p>
|
||||
@@ -2291,7 +2330,7 @@ for more information.</p></li>
|
||||
<ul>
|
||||
<li><code>true</code> if the <code>Makefile</code> file has a <code>clean</code> rule, else <code>false</code>.</li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> if the <code>Makefile</code> file does <strong>NOT</strong> have a <code>clean</code> rule and this
|
||||
<p><strong>IMPORTANT:</strong> if the <code>Makefile</code> file does <strong>NOT</strong> have a <code>clean</code> rule and this
|
||||
boolean is <code>true</code> then you stand a good chance of having your submission
|
||||
rejected for violating <a href="next/rules.html#rule17">Rule 17</a>!</p>
|
||||
<p>See the
|
||||
@@ -2301,7 +2340,7 @@ for more information.</p></li>
|
||||
<ul>
|
||||
<li><code>true</code> if the <code>Makefile</code> file has a <code>clobber</code> rule, else <code>false</code>.</li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> if the <code>Makefile</code> file does <strong>NOT</strong> have an <code>clobber</code> rule and this
|
||||
<p><strong>IMPORTANT:</strong> if the <code>Makefile</code> file does <strong>NOT</strong> have an <code>clobber</code> rule and this
|
||||
boolean is <code>true</code> then you stand a good chance of having your submission
|
||||
rejected for violating <a href="next/rules.html#rule17">Rule 17</a>!</p>
|
||||
<p>See the
|
||||
@@ -2311,7 +2350,7 @@ for more information.</p></li>
|
||||
<ul>
|
||||
<li><code>true</code> if the <code>Makefile</code> file has a <code>try</code> rule, else <code>false</code>.</li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> if the <code>Makefile</code> file does <strong>NOT</strong> have an <code>try</code> rule and this
|
||||
<p><strong>IMPORTANT:</strong> if the <code>Makefile</code> file does <strong>NOT</strong> have a <code>try</code> rule and this
|
||||
boolean is <code>true</code> then you stand a good chance of having your submission
|
||||
rejected for violating <a href="next/rules.html#rule17">Rule 17</a>!</p>
|
||||
<p>See the
|
||||
@@ -2321,7 +2360,7 @@ for more information.</p></li>
|
||||
<ul>
|
||||
<li><code>true</code> if the <code>test</code> ID was used to form the tarball, else <code>false</code>.</li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> if this is <code>true</code> then this may <strong>NOT</strong> be submitted to the
|
||||
<p><strong>IMPORTANT:</strong> if this is <code>true</code> then this may <strong>NOT</strong> be submitted to the
|
||||
contest! Please do <strong>NOT</strong> email the <a href="judges.html">Judges</a> your submission!</p></li>
|
||||
</ul>
|
||||
<p>Next comes the <code>manifest</code> <strong>array</strong> which <strong>MUST</strong> have AT LEAST the following.
|
||||
@@ -2337,8 +2376,9 @@ See the
|
||||
FAQ on “<a href="#info_json">.info.json</a>”
|
||||
for more information.</li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> if this is <strong>NOT</strong> the case you stand a great chance of having your
|
||||
submission rejected for violating <a href="next/rules.html#rule17">Rule 17</a>!</p></li>
|
||||
<p><strong>IMPORTANT:</strong> if this is <strong>NOT</strong> the case you stand a
|
||||
great chance of having your submission rejected for violating <a href="next/rules.html#rule17">Rule
|
||||
17</a>!</p></li>
|
||||
<li><p><code>auth_JSON</code> (double quoted string)</p>
|
||||
<ul>
|
||||
<li>This <code>MUST</code> be <code>".auth.json"</code>, defined as <code>AUTH_JSON_FILENAME</code> in
|
||||
@@ -2349,7 +2389,7 @@ See the
|
||||
FAQ on “<a href="#auth_json">.auth.json</a>”
|
||||
for more information.</li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> if this is <strong>NOT</strong> the case you stand a great chance of having your
|
||||
<p><strong>IMPORTANT:</strong> if this is <strong>NOT</strong> the case you stand a great chance of having your
|
||||
submission rejected for violating <a href="next/rules.html#rule17">Rule 17</a>!</p></li>
|
||||
<li><p><code>c_src</code> (double quoted string)</p>
|
||||
<ul>
|
||||
@@ -2358,10 +2398,8 @@ submission rejected for violating <a href="next/rules.html#rule17">Rule 17</a>!<
|
||||
in the <a href="https://github.com/ioccc-src/mkiocccentry/">mkiocccentry repo</a>, and
|
||||
is your submission source code.</li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> if this is <strong>NOT</strong> the case you stand a great chance of having your
|
||||
submission rejected for violating <a href="next/rules.html#rule17">Rule 17</a>!</p>
|
||||
<p><strong>NOTE:</strong> if you provide to <code>mkiocccentry</code> a different filename it will be
|
||||
copied to <code>prog.c</code>.</p></li>
|
||||
<p><strong>IMPORTANT:</strong> if this is <strong>NOT</strong> the case you stand a great chance of having your
|
||||
submission rejected for violating <a href="next/rules.html#rule17">Rule 17</a>!</p></li>
|
||||
<li><p><code>Makefile</code> (double quoted string)</p>
|
||||
<ul>
|
||||
<li>This <code>MUST</code> be <code>"Makefile"</code>, defined as <code>MAKEFILE_FILENAME</code> in
|
||||
@@ -2372,10 +2410,8 @@ See the
|
||||
FAQ on “<a href="#makefile">Makefile</a>”
|
||||
for more information.</li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> if this is <strong>NOT</strong> the case you stand a great chance of having your
|
||||
submission rejected for violating <a href="next/rules.html#rule17">Rule 17</a>!</p>
|
||||
<p><strong>NOTE:</strong> if you provide to <code>mkiocccentry</code> a different filename it will be
|
||||
copied to <code>Makefile</code>.</p></li>
|
||||
<p><strong>IMPORTANT:</strong> if this is <strong>NOT</strong> the case you stand a great chance of having your
|
||||
submission rejected for violating <a href="next/rules.html#rule17">Rule 17</a>!</p></li>
|
||||
<li><p><code>remarks</code> (double quoted string)</p>
|
||||
<ul>
|
||||
<li>This <code>MUST</code> be <code>"remarks.md"</code>, defined as <code>REMARKS_FILENAME</code> in
|
||||
@@ -2386,10 +2422,8 @@ See the
|
||||
FAQ on “<a href="#remarks_md">remarks.md</a>”
|
||||
for more information.</li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> if this is <strong>NOT</strong> the case you stand a great chance of having your
|
||||
submission rejected for violating <a href="next/rules.html#rule17">Rule 17</a>!</p>
|
||||
<p><strong>NOTE:</strong> if you provide to <code>mkiocccentry</code> a different filename it will be
|
||||
copied to <code>remarks.md</code>.</p></li>
|
||||
<p><strong>IMPORTANT:</strong> if this is <strong>NOT</strong> the case you stand a great chance of having your
|
||||
submission rejected for violating <a href="next/rules.html#rule17">Rule 17</a>!</p></li>
|
||||
</ul>
|
||||
<p>The <code>manifest</code> <strong>array</strong> also <strong>OPTIONALLY</strong> has one or more of the field:</p>
|
||||
<ul>
|
||||
@@ -2397,16 +2431,17 @@ copied to <code>remarks.md</code>.</p></li>
|
||||
<ul>
|
||||
<li>Any additional file that you need or want to include with your submission.</li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> this MUST <strong>NOT</strong> match a mandatory filename (see above list) and
|
||||
<code>chkentry</code> will verify this for you; it is <strong>ALSO</strong> an <strong>error</strong> if the
|
||||
filenames are not unique. In these cases you stand a great risk of having
|
||||
your submission rejected for violating <a href="next/rules.html#rule17">Rule 17</a>! On
|
||||
the other hand, <strong>ONLY</strong> <code>mkiocccentry</code> will verify that the files exist and
|
||||
can be read; <code>txzchk(1)</code> will <strong>NOT</strong> do this for you as it only <strong>LISTS</strong>
|
||||
the tarball: it does <strong>NOT</strong> extract it. Even so, the <a href="judges.html">Judges</a>
|
||||
<strong>WILL</strong> 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!</p></li>
|
||||
<p><strong>IMPORTANT:</strong> this MUST <strong>NOT</strong> match a mandatory filename (see above list)
|
||||
and <code>chkentry</code> will verify this for you; it is <strong>ALSO</strong> an <strong>error</strong> if the
|
||||
filenames are not unique, not POSIX plus + safe chars only, if they are the
|
||||
wrong permission and various other things. In these cases you stand a great
|
||||
risk of having your submission rejected for violating <a href="next/rules.html#rule17">Rule
|
||||
17</a>! On the other hand, <strong>ONLY</strong> <code>mkiocccentry</code> will
|
||||
verify that the files exist and can be read; <code>txzchk(1)</code> will <strong>NOT</strong> do
|
||||
this for you as it only <strong>LISTS</strong> the tarball: it does <strong>NOT</strong> extract it.
|
||||
Even so, the <a href="judges.html">Judges</a> <strong>WILL</strong> 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!</p></li>
|
||||
</ul>
|
||||
<p>Finally, after the <code>manifest</code> <strong>array</strong>, the following fields <strong>MUST</strong> exist:</p>
|
||||
<ul>
|
||||
@@ -2414,7 +2449,7 @@ documented!</p></li>
|
||||
<ul>
|
||||
<li>Seconds since epoch when JSON (<code>.auth.json</code> or <code>.info.json</code>) file was formed (see <code>gettimeofday(2)</code>).</li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> this <strong>MUST</strong> be greater than or equal to <code>MIN_TIMESTAMP</code> (see
|
||||
<p><strong>IMPORTANT:</strong> this <strong>MUST</strong> be greater than or equal to <code>MIN_TIMESTAMP</code> (see
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h">soup/limit_ioccc.h</a>
|
||||
in the <a href="https://github.com/ioccc-src/mkiocccentry/">mkiocccentry repo</a>). If
|
||||
this is not the case your submission <strong>WILL BE</strong> rejected.</p></li>
|
||||
@@ -2423,7 +2458,7 @@ this is not the case your submission <strong>WILL BE</strong> rejected.</p></li>
|
||||
<li>Microseconds since the tstamp (seconds since epoch when <code>.auth.json</code> was
|
||||
formed - see <code>gettimeofday(2)</code>) second.</li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> this <strong>MUST</strong> be within the range <code>MIN_FORMED_TIMESTAMP_USEC</code>
|
||||
<p><strong>IMPORTANT:</strong> this <strong>MUST</strong> be within the range <code>MIN_FORMED_TIMESTAMP_USEC</code>
|
||||
<strong>THROUGH</strong> <code>MAX_FORMED_TIMESTAMP_USEC</code> and is validated by
|
||||
<code>test_formed_timestamp_usec()</code> in
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry/blob/master/soup/entry_util.c">soup/entry_util.c</a>
|
||||
@@ -2434,7 +2469,7 @@ submission <strong>WILL BE</strong> rejected!</p></li>
|
||||
<ul>
|
||||
<li><code>"Thu Jan 01 00:00:00 1970 UTC"</code> (<code>gettimeofday(2)</code> epoch).</li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> this <strong>MUST</strong> be <code>"Thu Jan 01 00:00:00 1970 UTC"</code> which is <code>#define</code>d
|
||||
<p><strong>IMPORTANT:</strong> this <strong>MUST</strong> be <code>"Thu Jan 01 00:00:00 1970 UTC"</code> which is <code>#define</code>d
|
||||
as <code>TIMESTAMP_EPOCH</code> in
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h">soup/limit_ioccc.h</a>
|
||||
in the <a href="https://github.com/ioccc-src/mkiocccentry/">mkiocccentry repo</a>. If
|
||||
@@ -2443,25 +2478,26 @@ this is not the case your submission <strong>WILL BE</strong> rejected!</p></li>
|
||||
<ul>
|
||||
<li>Minimum number of second since epoch for <strong>this</strong> IOCCC.</li>
|
||||
</ul>
|
||||
<p><strong>NOTE:</strong> this <strong>MUST</strong> be >= <code>MIN_TIMESTAMP</code> defined in
|
||||
<p><strong>IMPORTANT:</strong> this <strong>MUST</strong> be >= <code>MIN_TIMESTAMP</code> defined in
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h">soup/limit_ioccc.h</a>
|
||||
in the <a href="https://github.com/ioccc-src/mkiocccentry/">mkiocccentry repo</a>. If
|
||||
this is not the case your submission <strong>WILL BE</strong> rejected!</p></li>
|
||||
</ul>
|
||||
<p>This file will be verified with the <code>chkentry(1)</code> tool and if there are any
|
||||
problems <strong>it is an error</strong> and the tarball will <strong>NOT</strong> be formed by
|
||||
<code>mkiocccentry</code>; otherwise the <code>txzchk(1)</code> tool will be executed on the tarball.</p>
|
||||
<p>This file will be validated with the <code>chkentry(1)</code> tool and if there are any
|
||||
problems with it or the submission directory, <strong>it is an error</strong>. If there is an
|
||||
error the tarball will <strong>NOT</strong> be formed by <code>mkiocccentry</code>; otherwise the
|
||||
<code>txzchk(1)</code> tool will be executed on the tarball.</p>
|
||||
<p>The <a href="judges.html">Judges</a> <strong>WILL</strong> use <code>chkentry(1)</code> on this file during the
|
||||
judging process and if it does not pass your submission <strong>WILL BE</strong> rejected.</p>
|
||||
<p>An obvious example where <code>chkentry</code> would fail to validate <code>.info.json</code> is if
|
||||
there is a mismatch of type in the JSON file with what is expected, for
|
||||
instance, if in <code>.info.json</code> the <code>no_comment</code> 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 <code>chkentry</code>) your submission would be rejected for violating <a href="next/rules.html#rule17">Rule
|
||||
17</a> and in particular because <code>chkentry</code> would not
|
||||
validate the <code>.info.json</code> file.</p>
|
||||
not a string or is the wrong 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 <code>chkentry</code>) your submission would be
|
||||
rejected for violating <a href="next/rules.html#rule17">Rule 17</a> and in particular
|
||||
because <code>chkentry</code> would not validate the <code>.info.json</code> file.</p>
|
||||
<p>If you wish to <strong>verify</strong> that your <code>.info.json</code> file is valid <strong>JSON</strong> then see the
|
||||
FAQ on “<a href="#validating_json">validating JSON documents</a>”.</p>
|
||||
<p>Jump to: <a href="#">top</a></p>
|
||||
@@ -4049,8 +4085,8 @@ below note) this would be advisable.</p>
|
||||
<p><strong>NOTE</strong>: different versions of <code>clang</code> have other differences as well. For instance
|
||||
a defect of <code>clang</code> that required numerous entries to be fixed for clang is that it
|
||||
requires that <code>main()</code>’s arguments to be of a specific type. However some
|
||||
versions of <code>clang</code> are more strict in the number of args allowed.
|
||||
Jump to: <a href="#">top</a></p>
|
||||
versions of <code>clang</code> are more strict in the number of args allowed.</p>
|
||||
<p>Jump to: <a href="#">top</a></p>
|
||||
<hr style="width:50%;text-align:left;margin-left:0">
|
||||
<hr style="width:50%;text-align:left;margin-left:0">
|
||||
<div id="running_entries">
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# IOCCC FAQ Table of Contents
|
||||
|
||||
This is FAQ version **28.2.9 2025-02-12**.
|
||||
This is FAQ version **28.2.10 2025-02-26**.
|
||||
|
||||
|
||||
## 0. [Entering the IOCCC: the bare minimum you need to know](#enter_questions)
|
||||
@@ -45,7 +45,7 @@ This is FAQ version **28.2.9 2025-02-12**.
|
||||
- **Q 3.0**: <a class="normal" href="#mkiocccentry_process">What is the `mkiocccentry(1)` process and what sort of checks does it perform?</a>
|
||||
- **Q 3.1**: <a class="normal" href="#txzchk">How can I validate my submission tarball?</a>
|
||||
- **Q 3.2**: <a class="normal" href="#fnamchk">What is the `fnamchk` tool?</a>
|
||||
- **Q 3.3**: <a class="normal" href="#chkentry">How can I validate my `.auth.json` and/or `.info.json` files?</a>
|
||||
- **Q 3.3**: <a class="normal" href="#chkentry">How can I validate my submission directory?</a>
|
||||
- **Q 3.4**: <a class="normal" href="#auth_json">What is a `.auth.json` file?</a>
|
||||
- **Q 3.5**: <a class="normal" href="#info_json">What is a `.info.json` file?</a>
|
||||
- **Q 3.6**: <a class="normal" href="#author_handle_faq">What is an `author handle`?</a>
|
||||
@@ -218,12 +218,23 @@ code, your Makefile, your remarks, any other data files you wish to provide (up
|
||||
to a maximum, including the mandatory files, defined in
|
||||
[limit_ioccc.h](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h)
|
||||
as `MAX_FILE_COUNT`) and other information about your submission,
|
||||
information about the author (or authors), and then it runs a lot of tests.
|
||||
information about the author (or authors), and then it will give you a list of
|
||||
subdirectories, if any, that will be made, and files that will be copied to the
|
||||
submission directory. It will list files and directories that it will (for
|
||||
various reasons) not create as well, asking you to confirm these things are all
|
||||
okay. Some things are strictly forbidden (such as a directory tree too deep) and
|
||||
it will tell you about these as well, so you can fix it.
|
||||
|
||||
Assuming you agree to the list of directories and files, it will make the
|
||||
directories (if necessary) and copy the files. It will then switch to the
|
||||
submission directory, run `make clobber` and then scan the directory again,
|
||||
looking for mismatches. If no errors are detected it will list everything to you
|
||||
again, asking you to confirm it is good.
|
||||
|
||||
If everything is OK, it will write the required `.auth.json` and `.info.json`
|
||||
files, checking each with `chkentry(1)` and then, if all is OK, it will create
|
||||
the tarball. After the tarball is formed, it will run `txzchk(1)` on it, which
|
||||
runs `fnamchk(1)`. If all is OK, your submission tarball should be good to go.
|
||||
and then run `chkentry(1)` on the directory. If all is OK it will create the
|
||||
tarball. After the tarball is formed, it will run `txzchk(1)` on it, which runs
|
||||
`fnamchk(1)`. If all is OK, your submission tarball should be good to go.
|
||||
|
||||
Please see
|
||||
FAQ on "[txzchk](#txzchk)",
|
||||
@@ -328,21 +339,22 @@ cause problems. Additionally, if you do not have the most recent version when
|
||||
submitting a tarball it will be rejected for not having the right versions of
|
||||
the tools. This is why you **MUST** make sure you have the most recent version
|
||||
of all the tools and you either run it from the repo directory itself OR you
|
||||
install them (`make install` as via `sudo` or as root).
|
||||
install them (`make install` as via `sudo` or as root). We recommend you install
|
||||
the tools but if you wish to run it from the repo directory you may.
|
||||
|
||||
If the **_subdirectory_ in the _work directory_** (based on your submit ID and
|
||||
slot number) already exists, you will have to
|
||||
move it, remove it or otherwise specify a different work directory (**NOT** the
|
||||
subdirectory), as it needs to be empty.
|
||||
slot number) already exists, you will have to move it, remove it or otherwise
|
||||
specify a different work directory (**NOT** the subdirectory), as it needs to be
|
||||
empty.
|
||||
|
||||
This _subdirectory is where your files will be **copied** to_. Your _submission
|
||||
tarball_ (which you will upload to the submit server) that `txzchk(1)` will
|
||||
validate _will be placed in the **work directory**_, and **its _contents_ will
|
||||
be the _subdirectory_ with your submission's files**.
|
||||
The `mkiocccentry(1)` tool will also ask you for information about your
|
||||
submission _as well as author details_ (that will only be looked at if the
|
||||
submission wins), run some tests and run a number of other tools, as
|
||||
mentioned above, and as described in the "[finer
|
||||
This _subdirectory is where your directories will be made and where your files
|
||||
will be **copied** to_. Your _submission tarball_ (which you will upload to the
|
||||
submit server) that `txzchk(1)` will validate _will be placed in the **work
|
||||
directory**_, and **its _contents_ will be the _subdirectory_ with your
|
||||
submission's files**. The `mkiocccentry(1)` tool will also ask you for
|
||||
information about your submission _as well as author details_ (that will only be
|
||||
looked at if the submission wins), run some tests and run a number of other
|
||||
tools, as mentioned above, and as described in the "[finer
|
||||
details](#mkiocccentry_details)" section.
|
||||
|
||||
See also the
|
||||
@@ -542,7 +554,7 @@ Jump to: [top](#)
|
||||
### Q 0.6: What permissions may my files be and what if I need different permissions?
|
||||
</div>
|
||||
|
||||
As [Rule 17](#rule17) states, files in your submission tarball **MUST** be
|
||||
As [Rule 17](next/rules.html#rule17) states, files in your submission tarball **MUST** be
|
||||
specific permissions. 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.
|
||||
@@ -662,7 +674,7 @@ Jump to: [top](#)
|
||||
|
||||
The IOCCC makes extensive use of [markdown](https://daringfireball.net/projects/markdown/).
|
||||
For example, when [submitting to the IOCCC](next/submit.html), we have people
|
||||
submit remarks about entry in markdown format. Every
|
||||
submit remarks about their submission(s) in markdown format. Every
|
||||
[winning IOCCC entry](years.html) uses a `README.md` markdown file
|
||||
as the basis for forming the `index.html` web page for that entry.
|
||||
All generated HTML pages on the [Official IOCCC website](https://www.ioccc.org/index.html)
|
||||
@@ -731,6 +743,10 @@ This will run the tests that `mkiocccentry(1)`, write the JSON files, use
|
||||
`chkentry(1)`, package the tarball and run `txzchk(1)` on it.
|
||||
|
||||
See also the
|
||||
FAQ on "[mkiocccentry](#mkiocccentry)",
|
||||
the
|
||||
FAQ on "[using mkiocccentry](#using_mkiocccentry)",
|
||||
the
|
||||
FAQ on "[.info.json](#info_json)",
|
||||
the
|
||||
FAQ on "[.auth.json](#auth_json)",
|
||||
@@ -766,6 +782,20 @@ number of files (including extra files) but also specific rules you must follow
|
||||
if you do include a tarball. Not following these points puts you at great risk
|
||||
of violating [Rule 17](next/rules.html#rule17)!
|
||||
|
||||
Also, remember what the [guidelines](next/guidelines.html) say:
|
||||
|
||||
> **IMPORTANT REMINDER**: make **SURE** your tarball does **NOT** reveal who you are!
|
||||
The `mkiocccentry(1)` tool creates a v7 format tarball to prevent this.
|
||||
|
||||
You can do this by creating the tarball like:
|
||||
|
||||
|
||||
``` <!---sh-->
|
||||
tar --format=v7 -cJf foo.txz directory
|
||||
```
|
||||
|
||||
|
||||
|
||||
<hr style="width:50%;text-align:left;margin-left:0">
|
||||
<hr style="width:50%;text-align:left;margin-left:0">
|
||||
|
||||
@@ -873,19 +903,23 @@ Jump to: [top](#)
|
||||
|
||||
There are unfortunately some warnings that cannot be disabled; they are always
|
||||
enabled whatever warning options you have enabled. Also, there is a warning that
|
||||
is enabled whenever you act on `char *`s, saying it is unsafe buffer usage, even
|
||||
when it's not. This might be enabled by `-Weverything` but it might not be; for
|
||||
more details on why we use `-Weverything` in Clang see the
|
||||
FAQ on "[-Weverything](#weverything)".
|
||||
is enabled whenever you use a pointer as a buffer, saying it is unsafe buffer
|
||||
usage, even when it is not.
|
||||
|
||||
It is not detrimental to your submission if you disable this, which you can do
|
||||
by specifying `-Wno-unsafe-buffer-usage`.
|
||||
This might be enabled by `-Weverything` but it might not be but it is not
|
||||
detrimental to your submission if you disable this, which you can do by
|
||||
specifying `-Wno-unsafe-buffer-usage`.
|
||||
|
||||
So in short, no you should not worry about these as they are sometimes
|
||||
inevitable in obfuscated code and even non-obfuscated code.
|
||||
|
||||
If you *can* work past this it might be good but this is not something that
|
||||
should be worried about too much as this is on the compiler developers, not you.
|
||||
Of course if you do work past it feel free to brag, though **BE SURE TO TELL
|
||||
US** the OS, OS version, compiler and compiler version.
|
||||
|
||||
For more details on why we use `-Weverything` in Clang see the FAQ on
|
||||
"[-Weverything](#weverything)".
|
||||
|
||||
Jump to: [top](#)
|
||||
|
||||
@@ -1219,11 +1253,12 @@ verify everything is in order. If something is not allowed (bad filename for
|
||||
example) or an error occurs (missing required file for example) you will be
|
||||
notified of this. After you verify everything is okay the files/directories
|
||||
found will be copied/made and it will then switch to the submission directory.
|
||||
In the submission directory it scans the file hierarchy again and verifies
|
||||
things are still okay. When done it will ask you to verify things are still OK.
|
||||
If all is good it'll ask you for more information about the author(s). Next the
|
||||
two required JSON files `.auth.json` and `.info.json` will be created, running
|
||||
`chkentry(1)` on each. If all is good it'll give you another chance to say the
|
||||
In the submission directory it first runs `make clobber` and then scans the
|
||||
directory hierarchy again, verifying things are still okay. When done it will
|
||||
ask you to verify things still look OK to you too. If all is good it'll ask you
|
||||
for more information about the author(s). Next the two required JSON files
|
||||
`.auth.json` and `.info.json` will be created. After that `chkentry(1)` will be
|
||||
run on the directory. If all is good it'll give you another chance to say the
|
||||
files/directories look good and if you answer yes it'll create the tarball and
|
||||
run `txzchk` on it.
|
||||
|
||||
@@ -1369,21 +1404,18 @@ submission directory.
|
||||
13. Ask the user for a one line abstract of the submission.
|
||||
14. Ask the user for the number of authors and for each author ask a variety of
|
||||
questions (see below for more information on what kind of questions).
|
||||
15. 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!
|
||||
16. 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!
|
||||
17. Show the output of `ls -lakR .`, asking the user to confirm that the listing
|
||||
15. Create `.info.json`.
|
||||
16. Create `.auth.json`.
|
||||
17. Run `chkentry(1)` on your submission directory to verify things look good,
|
||||
including that the `.info.json` and `.auth.json` files are okay.
|
||||
* It also checks that the manifest in `.info.json` matches what is in the
|
||||
submission directory and it verifies file permissions too; if you wish to
|
||||
know what else it does we suggest you read the source code.
|
||||
18. Show the output of `ls -lakR .`, asking the user to confirm that the listing
|
||||
is okay.
|
||||
18. Create the tarball with the name in the form of
|
||||
19. Create the tarball with the name in the form of
|
||||
`submit.USERNAME-SLOT.TIMESTAMP`.
|
||||
19. Run `txzchk(1)` on 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:
|
||||
@@ -1554,51 +1586,66 @@ Jump to: [top](#)
|
||||
|
||||
<div id="validating_auth_info_json">
|
||||
<div id="chkentry">
|
||||
### Q 3.3: How can I validate my `.auth.json` and/or `.info.json` files?
|
||||
### Q 3.3: How can I validate my submission directory?
|
||||
</div>
|
||||
</div>
|
||||
|
||||
If you want to validate the `.auth.json` or `.info.json` files you
|
||||
should use `chkentry(1)` from the [mkiocccentry
|
||||
repo](https://github.com/ioccc-src/mkiocccentry).
|
||||
If you want to validate your submission directory manually, including but not
|
||||
limited to the `.auth.json` or `.info.json` files, you should use `chkentry(1)`
|
||||
from the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry).
|
||||
|
||||
The `chkentry(1)` tool uses the IOCCC version of the [jparse
|
||||
The `chkentry(1)` tool runs a variety of checks on your submission directory,
|
||||
including but not limited to, using the [jparse
|
||||
API](https://github.com/ioccc-src/mkiocccentry/blob/master/jparse/man/man3/jparse.3)
|
||||
to perform **additional** checks on these two IOCCC specific JSON files. It is
|
||||
_possible_ that this version will at times differ from the [official jparse
|
||||
API](https://github.com/xexyl/jparse/blob/master/man/man3/jparse.3) at the
|
||||
[official jparse repo](https://github.com/xexyl/jparse) and this is one of the
|
||||
reasons the tools' `-V` (version option) show the JSON parser version as well.
|
||||
to validate the two IOCCC specific JSON files (as valid JSON) and additional
|
||||
checks on those files as well. An important thing that it does is verify that
|
||||
your files are the right permissions and that the manifest in the `.info.json`
|
||||
files match what is in the directory. What all the checks are is out of scope of this
|
||||
document; if you wish to know we recommend you read the [source
|
||||
code](https://github.com/ioccc-src/mkiocccentry/blob/master/chkentry.c).
|
||||
|
||||
**NOTE**: the IOCCC [jparse
|
||||
API](https://github.com/ioccc-src/mkiocccentry/blob/master/jparse/man/man3/jparse.3)
|
||||
is a synced copy of the [official jparse
|
||||
repo](https://github.com/xexyl/jparse) _at the time of the contest open date_.
|
||||
|
||||
See the
|
||||
FAQ on "[.auth.json](#auth_json)"
|
||||
and
|
||||
FAQ on "[.info.json](#info_json)"
|
||||
for more details on these files.
|
||||
for more details on the two required and very important JSON files.
|
||||
|
||||
The `chkentry(1)` tool accepts a single arg, a directory that **MUST** have the
|
||||
two JSON files, `.auth.json` and `.info.json`. (Okay there is an option to skip
|
||||
files but this is for the judges **ONLY**; use of this option to validate your
|
||||
submission puts you at a great risk of violating [Rule
|
||||
17](next/rules.html#rule17)!).
|
||||
|
||||
As an example, if your submission directory is `12345678-1234-4321-abcd-1234567890ab-0/` then you should run the
|
||||
following command:
|
||||
|
||||
The `chkentry(1)` tool accepts more than one command line form.
|
||||
You may specify a `.auth.json` and/or
|
||||
`.info.json` file. An argument of "`.`" will skip that file. For instance:
|
||||
|
||||
``` <!---sh-->
|
||||
# run checks on .info.json:
|
||||
chkentry . .info.json
|
||||
|
||||
# run checks on .auth.json:
|
||||
chkentry .auth.json .
|
||||
|
||||
# run checks on .auth.json and .info.json:
|
||||
chkentry .auth.json .info.json
|
||||
chkentry 12345678-1234-4321-abcd-1234567890ab-0
|
||||
```
|
||||
|
||||
If there is a [JSON](https://www.json.org/json-en.html) issue detected by the
|
||||
`jparse(3)` API, then there is a [JSON](https://www.json.org/json-en.html) error and
|
||||
`chkentry(1)` will report it as an **error**. If the parsing is OK (i.e. valid
|
||||
JSON) but there is an issue in one or both of the
|
||||
`jparse(3)` API (i.e. it is not valid JSON) it is an error and `chkentry(1)`
|
||||
will report this, exiting with a non-zero exit code. If the parsing is OK (i.e.
|
||||
valid JSON) but there is an issue in one or both of the
|
||||
[JSON](https://www.json.org/json-en.html) files in **the context of the IOCCC**,
|
||||
it will report this as an **error**. Thus, if you were to package your
|
||||
submission manually then you would be violating [Rule
|
||||
17](next/rules.html#rule17).
|
||||
it will report this as an **error**. It also does, as briefly noted above, other
|
||||
checks.
|
||||
|
||||
If `chkentry(1)` fails to validate your submission directory your submission
|
||||
**WILL** be **REJECTED**! This is why you **MUST** make sure you use the
|
||||
`mkiocccentry(1)` tool to form your submission directory.
|
||||
|
||||
See the
|
||||
FAQ on "[.auth.json](#auth_json)"
|
||||
and the
|
||||
FAQ on "[.info.json](#info_json)"
|
||||
as well as [Rule 17](next/rules.html#rule17) for more information.
|
||||
|
||||
Jump to: [top](#)
|
||||
|
||||
@@ -1628,7 +1675,7 @@ In order of the file's contents we describe each required field, below:
|
||||
- `IOCCC_auth_version` (double quoted string)
|
||||
* The current version of the `.auth.json` file.
|
||||
|
||||
**NOTE:** this **MUST** match **THIS** IOCCC's `.auth.json` version, defined as
|
||||
**IMPORTANT:** this **MUST** match **THIS** IOCCC's `.auth.json` version, defined as
|
||||
`AUTH_VERSION` in
|
||||
[soup/version.h](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/version.h)
|
||||
in the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry/). If
|
||||
@@ -1637,7 +1684,7 @@ In order of the file's contents we describe each required field, below:
|
||||
- `IOCCC_contest` (double quoted string)
|
||||
* Which contest number this is (e.g. 1 for 1984, 2 for 1985, 27 for 2020).
|
||||
|
||||
**NOTE:** this **MUST** match **THIS** IOCCC's contest value, defined as
|
||||
**IMPORTANT:** this **MUST** match **THIS** IOCCC's contest value, defined as
|
||||
`IOCCC_CONTEST` 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/). If
|
||||
@@ -1649,7 +1696,7 @@ In order of the file's contents we describe each required field, below:
|
||||
**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
|
||||
**IMPORTANT:** this **MUST** match **THIS** IOCCC's contest, defined as
|
||||
`IOCCC_YEAR` 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/). If
|
||||
@@ -1658,17 +1705,17 @@ In order of the file's contents we describe each required field, below:
|
||||
- `mkiocccentry_version` (double quoted string)
|
||||
* The version of `mkiocccentry` that formed this `.auth.json` file.
|
||||
|
||||
**NOTE:** this **MUST** match **THIS** IOCCC's `mkiocccentry` version,
|
||||
**IMPORTANT:** this **MUST** match **THIS** IOCCC's `mkiocccentry` version,
|
||||
defined as `MKIOCCCENTRY_VERSION` in
|
||||
[soup/version.h](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/version.h)
|
||||
in the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry/). If
|
||||
this is not the case your submission **WILL BE** rejected!
|
||||
|
||||
- `chkentry_version` (double quoted string)
|
||||
* The version of `chkentry` that was used to validate this `.auth.json`,
|
||||
assuming that it was created by `mkiocccentry`.
|
||||
* The version of `chkentry` that was used to validate the submission
|
||||
directory, including the `.auth.json` file.
|
||||
|
||||
**NOTE:** this **MUST** match **THIS** IOCCC's `chkentry` version, defined
|
||||
**IMPORTANT:** this **MUST** match **THIS** IOCCC's `chkentry` version, defined
|
||||
as `CHKENTRY_VERSION` in
|
||||
[soup/version.h](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/version.h)
|
||||
in the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry/). If
|
||||
@@ -1678,7 +1725,7 @@ In order of the file's contents we describe each required field, below:
|
||||
* The version of `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
|
||||
**IMPORTANT:** 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` (double quoted string)
|
||||
@@ -1693,19 +1740,20 @@ In order of the file's contents we describe each required field, below:
|
||||
- `tarball` (double quoted string)
|
||||
* The xz compressed tarball filename.
|
||||
|
||||
**NOTE:** this **MUST** match the actual tarball's **filename** in order for
|
||||
**IMPORTANT:** 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](next/rules.html#rule17)!
|
||||
Moreover, it is possible that `txzchk` will report a problem through
|
||||
`fnamchk(1)` which also puts you at great risk of violating [Rule
|
||||
17](next/rules.html#rule17). 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.
|
||||
17](next/rules.html#rule17). `txzchk` will use the output of `fnamchk` to
|
||||
obtain the correct directory _name_ in the tarball; if `fnamchk` fails to
|
||||
validate your filename, or if you have the wrong directory name in the
|
||||
tarball, this will be flaggd.
|
||||
|
||||
- `submit_slot` (number)
|
||||
* The submission number.
|
||||
|
||||
**NOTE:** this **MUST** be within the range of 0 **THROUGH**
|
||||
**IMPORTANT:** this **MUST** be within the range of 0 **THROUGH**
|
||||
`MAX_SUBMIT_SLOT` (see
|
||||
[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/)). If
|
||||
@@ -1715,7 +1763,7 @@ In order of the file's contents we describe each required field, below:
|
||||
- `author_count` (number)
|
||||
* How many authors this submission has.
|
||||
|
||||
**NOTE:** this **MUST** be within the range of 1 **THROUGH**
|
||||
**IMPORTANT:** this **MUST** be within the range of 1 **THROUGH**
|
||||
`MAX_AUTHORS` (see
|
||||
[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/)). If
|
||||
@@ -1734,71 +1782,74 @@ Next, the JSON `authors` **array** holds the following information about the
|
||||
author(s) of the submission:
|
||||
|
||||
- `name` (double quoted string)
|
||||
* The **name** of this author.
|
||||
* The **name** of this author.
|
||||
|
||||
- `location_code` (double quoted string)
|
||||
* The **location code** of this author (an ISO 3166-1 2 character code).
|
||||
* The **location code** of this author (an ISO 3166-1 2 character code).
|
||||
See
|
||||
<https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements>
|
||||
for a list of valid codes.
|
||||
|
||||
**NOTE:** in `mkiocccentry` use `XX` if you want your location to be anonymous.
|
||||
**NOTE:** in `mkiocccentry` use `XX` if you want your location to be anonymous.
|
||||
|
||||
- `email` (`null` or double quoted string)
|
||||
* The **email** of this author in the form of `x@y`, or `null` if not provided.
|
||||
* The **email** of this author in the form of `x@y`, or `null` if not provided.
|
||||
|
||||
- `url` (`null` or double quoted string)
|
||||
* The primary **URL** of this author, or `null` if not provided.
|
||||
* The primary **URL** of this author, or `null` if not provided.
|
||||
* The URL must start with `http://` or `https://` and have more text after it;
|
||||
we do not even try and detect a hostname.
|
||||
|
||||
- `alt_url` (`null` or double quoted string)
|
||||
* The **alt URL** of this author, or `null` if not provided.
|
||||
* The **alt URL** of this author, or `null` if not provided.
|
||||
* The URL must start with `http://` or `https://` and have more text after it;
|
||||
we do not even try and detect a hostname.
|
||||
|
||||
- `mastodon` (`null` or double quoted string)
|
||||
* The Mastodon handle of this author in the form of `@user@domain`, or
|
||||
* The Mastodon handle of this author in the form of `@user@domain`, or
|
||||
`null` if not provided. See the
|
||||
FAQ on "[Mastodon](#try_mastodon)"
|
||||
for more information.
|
||||
|
||||
- `github` (`null` or double quoted string)
|
||||
* The **[GitHub](https://github.com) account** of this author in the form of `@user`, or `null` if not
|
||||
* The **[GitHub](https://github.com) account** of this author in the form of `@user`, or `null` if not
|
||||
provided.
|
||||
|
||||
- `affiliation` (`null` or double quoted string)
|
||||
* This author's **affiliation**, if any, or `null` if not provided.
|
||||
* This author's **affiliation**, if any, or `null` if not provided.
|
||||
|
||||
**NOTE:** if provided, the length of the **affiliation** **MUST** be within
|
||||
**IMPORTANT:** if provided, the length of the **affiliation** **MUST** be within
|
||||
the range of 1 **THROUGH** `MAX_AFFILIATION_LEN` (see
|
||||
[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/)). If
|
||||
this is not the case you stand a great risk of having your submission
|
||||
rejected for violating [Rule 17](next/rules.html#rule17)!
|
||||
|
||||
**NOTE:** an **affiliation** does **NOT** have any affect on whether you will win or not.
|
||||
**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.
|
||||
* `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.
|
||||
**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
|
||||
* `true` if this default handle was accepted, `false` if one is provided
|
||||
by this author.
|
||||
|
||||
- `author_handle` (double quoted string)
|
||||
* This author's handle (custom or default provided).
|
||||
* This author's handle (custom or default provided).
|
||||
|
||||
**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](authors.html) page and the author JSON file.
|
||||
See the
|
||||
FAQ on "[author handle](#author_handle_faq)"
|
||||
and the
|
||||
FAQ on "[author_handle.json](#author_json)"
|
||||
for more information.
|
||||
**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](authors.html) page and the author JSON file.
|
||||
See the
|
||||
FAQ on "[author handle](#author_handle_faq)"
|
||||
and the
|
||||
FAQ on "[author_handle.json](#author_json)"
|
||||
for more information.
|
||||
|
||||
- `author_number` (number)
|
||||
* This author number in the `authors` array.
|
||||
* This author number in the `authors` array.
|
||||
|
||||
After the `authors` **array** the remaining of a `.auth.json` file holds:
|
||||
|
||||
@@ -1807,7 +1858,7 @@ After the `authors` **array** the remaining of a `.auth.json` file holds:
|
||||
FAQ on "[.info.json](#info_json)"
|
||||
for more information.
|
||||
|
||||
**NOTE:** this **MUST** be greater than or equal to `MIN_TIMESTAMP` (see
|
||||
**IMPORTANT:** this **MUST** be greater than or equal to `MIN_TIMESTAMP` (see
|
||||
[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/)). If
|
||||
this is not the case your submission **WILL BE** rejected.
|
||||
@@ -1816,7 +1867,7 @@ After the `authors` **array** the remaining of a `.auth.json` file holds:
|
||||
* Microseconds since the tstamp (seconds since epoch when `.auth.json` was
|
||||
formed - see `gettimeofday(2)`) second.
|
||||
|
||||
**NOTE:** this **MUST** be within the range `MIN_FORMED_TIMESTAMP_USEC`
|
||||
**IMPORTANT:** 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](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/entry_util.c)
|
||||
@@ -1827,7 +1878,7 @@ After the `authors` **array** the remaining of a `.auth.json` file holds:
|
||||
- `timestamp_epoch` (double quoted 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 `#define`d
|
||||
**IMPORTANT:** this **MUST** be `"Thu Jan 01 00:00:00 1970 UTC"` which is `#define`d
|
||||
as `TIMESTAMP_EPOCH` 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/). If
|
||||
@@ -1836,33 +1887,38 @@ After the `authors` **array** the remaining of a `.auth.json` file holds:
|
||||
- `min_timestamp` (number)
|
||||
* Minimum number of second since epoch for **this** IOCCC.
|
||||
|
||||
**NOTE:** this **MUST** be >= `MIN_TIMESTAMP` defined in
|
||||
**IMPORTANT:** this **MUST** be >= `MIN_TIMESTAMP` defined 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/). 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 be validated with the `chkentry(1)` tool and if there are any
|
||||
problems with it or the submission directory, **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.
|
||||
This file will **NOT** be looked at unless the submission wins! Nonetheless, the
|
||||
file **MUST** be present in the submission directory and it **MUST** be valid
|
||||
JSON and it **MUST** pass all IOCCC semantics checks and all other checks
|
||||
`chkentry(1)` perform. `chkentry(1)` is used by `mkiocccentry(1)` and the judges
|
||||
will use it on the submission directory 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
|
||||
is reported invalid by `chkentry(1)`, or if your submission directory is
|
||||
reported invalid by `chkentry(1)`, your submission will almost certainly be
|
||||
rejected for violating the [Rules](next/rules.html) and in particular [Rule
|
||||
17](next/rules.html#rule17).
|
||||
|
||||
An obvious example where `chkentry` would fail to validate `.auth.json` is if
|
||||
An obvious example where `chkentry(1)` 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](next/rules.html#rule17) and in particular because `chkentry` would not
|
||||
validate the `.auth.json` file.
|
||||
not a string or is the wrong 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(1)`) your submission would be
|
||||
rejected for violating [Rule 17](next/rules.html#rule17) and in particular
|
||||
because `chkentry(1)` would not validate the `.auth.json` file (and maybe other
|
||||
things too).
|
||||
|
||||
If you wish to **verify** that your `.auth.json` file is valid **JSON** then see the
|
||||
FAQ on "[validating JSON documents](#validating_json)".
|
||||
@@ -1904,7 +1960,7 @@ In order of the file's contents we describe each required field, below:
|
||||
- `IOCCC_info_version` (double quoted string)
|
||||
* The current version of the `.info.json` files.
|
||||
|
||||
**NOTE:** this **MUST** match **THIS** IOCCC's `.info.json` version, defined as
|
||||
**IMPORTANT:** this **MUST** match **THIS** IOCCC's `.info.json` version, defined as
|
||||
`INFO_VERSION` in
|
||||
[soup/version.h](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/version.h)
|
||||
in the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry/). If
|
||||
@@ -1913,7 +1969,7 @@ In order of the file's contents we describe each required field, below:
|
||||
- `IOCCC_contest` (double quoted string)
|
||||
* Which contest number this is (e.g. 1 for 1984, 2 for 1985, 27 for 2020).
|
||||
|
||||
**NOTE:** this **MUST** match **THIS** IOCCC's contest value, defined as
|
||||
**IMPORTANT:** this **MUST** match **THIS** IOCCC's contest value, defined as
|
||||
`IOCCC_CONTEST` 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/). If
|
||||
@@ -1925,7 +1981,7 @@ In order of the file's contents we describe each required field, below:
|
||||
**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
|
||||
**IMPORTANT:** this **MUST** match **THIS** IOCCC's contest, defined as
|
||||
`IOCCC_YEAR` 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/). If
|
||||
@@ -1934,7 +1990,7 @@ In order of the file's contents we describe each required field, below:
|
||||
- `mkiocccentry_version` (double quoted string)
|
||||
* The version of `mkiocccentry` that formed this `.auth.json` file.
|
||||
|
||||
**NOTE:** this **MUST** match **THIS** IOCCC's `mkiocccentry` version,
|
||||
**IMPORTANT:** this **MUST** match **THIS** IOCCC's `mkiocccentry` version,
|
||||
defined as `MKIOCCCENTRY_VERSION` in
|
||||
[soup/version.h](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/version.h)
|
||||
in the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry/). If
|
||||
@@ -1943,17 +1999,17 @@ In order of the file's contents we describe each required field, below:
|
||||
- `iocccsize_version` (double quoted string)
|
||||
* The version of `iocccsize` that was used for this `.info.json` file.
|
||||
|
||||
**NOTE:** this **MUST** match **THIS** IOCCC's `iocccentry` version,
|
||||
**IMPORTANT:** this **MUST** match **THIS** IOCCC's `iocccentry` version,
|
||||
defined as `IOCCCSIZE_VERSION` in
|
||||
[soup/version.h](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/version.h)
|
||||
in the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry/). If
|
||||
this is not the case your submission **WILL BE** rejected!
|
||||
|
||||
- `chkentry_version` (double quoted string)
|
||||
* The version of `chkentry` that was used to validate this `.info.json`,
|
||||
assuming that it was created by `mkiocccentry`.
|
||||
* The version of `chkentry` that was used to validate the submission
|
||||
directory, including the `.info.json` file.
|
||||
|
||||
**NOTE:** this **MUST** match **THIS** IOCCC's `chkentry` version, defined
|
||||
**IMPORTANT:** this **MUST** match **THIS** IOCCC's `chkentry` version, defined
|
||||
as `CHKENTRY_VERSION` in
|
||||
[soup/version.h](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/version.h)
|
||||
in the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry/). If
|
||||
@@ -1963,7 +2019,7 @@ In order of the file's contents we describe each required field, below:
|
||||
* The version of `fnamchk` that `txzchk` uses to validate the filename of
|
||||
the xz compressed tarball.
|
||||
|
||||
**NOTE:** this **MUST** match **THIS** IOCCC's `fnamchk` version, defined
|
||||
**IMPORTANT:** this **MUST** match **THIS** IOCCC's `fnamchk` version, defined
|
||||
as `FNAMCHK_VERSION` in
|
||||
[soup/version.h](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/version.h)
|
||||
in the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry/). If
|
||||
@@ -1972,7 +2028,7 @@ In order of the file's contents we describe each required field, below:
|
||||
- `txzchk_version` (double quoted string)
|
||||
* The version of `txzchk` used to validate the xz compressed tarball.
|
||||
|
||||
**NOTE:** this **MUST** match **THIS** IOCCC's `txzchk` version, defined
|
||||
**IMPORTANT:** this **MUST** match **THIS** IOCCC's `txzchk` version, defined
|
||||
as `TXZCHK_VERSION` in
|
||||
[soup/version.h](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/version.h)
|
||||
in the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry/). If
|
||||
@@ -1983,15 +2039,10 @@ In order of the file's contents we describe each required field, below:
|
||||
a UUID** and submission number; see the [rules](next/rules.html) for more details
|
||||
on this, and in particular [Rule 17](next/rules.html#rule17).
|
||||
|
||||
**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](next/rules.html#rule17)!
|
||||
|
||||
|
||||
- `submit_slot` (number)
|
||||
* The submission number.
|
||||
|
||||
**NOTE:** this **MUST** be within the range of 0 **THROUGH**
|
||||
**IMPORTANT:** this **MUST** be within the range of 0 **THROUGH**
|
||||
`MAX_SUBMIT_SLOT` (see
|
||||
[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/)). If
|
||||
@@ -2004,7 +2055,7 @@ In order of the file's contents we describe each required field, below:
|
||||
in the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry/)) 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
|
||||
**IMPORTANT:** if this is **NOT** the case you stand a great risk of having your submission
|
||||
rejected for violating [Rule 17](next/rules.html#rule17)!
|
||||
|
||||
- `abstract` (double quoted string)
|
||||
@@ -2015,33 +2066,34 @@ In order of the file's contents we describe each required field, below:
|
||||
|
||||
The `abstract` may not contain a `;` (semicolon), nor `&` (ampersand), nor `,` (comma).
|
||||
|
||||
**NOTE:** if your abstract is 0 in length or > the maximum abstract length you
|
||||
**IMPORTANT:** 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](next/rules.html#rule17)!
|
||||
|
||||
- `tarball` (double quoted string)
|
||||
* The xz compressed tarball filename.
|
||||
|
||||
**NOTE:** this **MUST** match the actual tarball's **filename** in order for
|
||||
**IMPORTANT:** 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](next/rules.html#rule17)!
|
||||
Moreover, it is possible that `txzchk` will report a problem through
|
||||
`fnamchk(1)` which also puts you at great risk of violating [Rule
|
||||
17](next/rules.html#rule17). 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.
|
||||
17](next/rules.html#rule17). `txzchk` will use the output of `fnamchk` to
|
||||
obtain the correct directory _name_ in the tarball; if `fnamchk` fails to
|
||||
validate your filename, or if you have the wrong directory name in the
|
||||
tarball, this will be flaggd.
|
||||
|
||||
- `rule_2a_size` (number)
|
||||
* The size calculated of [Rule 2a](next/rules.html#rule2a).
|
||||
|
||||
**NOTE:** if this violates [Rule 2a](next/rules.html#rule2a) you stand a great
|
||||
**IMPORTANT:** if this violates [Rule 2a](next/rules.html#rule2a) you stand a great
|
||||
chance of having your submission rejected for violating the
|
||||
[Rules](next/rules.html)!
|
||||
|
||||
- `rule_2b_size` (number)
|
||||
* The size calculated of [Rule 2b](next/rules.html#rule2b).
|
||||
|
||||
**NOTE:** if this violates [Rule 2b](next/rules.html#rule2b) you stand a great
|
||||
**IMPORTANT:** if this violates [Rule 2b](next/rules.html#rule2b) you stand a great
|
||||
chance of having your submission rejected for violating the
|
||||
[Rules](next/rules.html)!
|
||||
|
||||
@@ -2052,7 +2104,7 @@ In order of the file's contents we describe each required field, below:
|
||||
* `true` if user overrides warning of [Rule 2a](next/rules.html#rule2a)
|
||||
violation, else `false`.
|
||||
|
||||
**NOTE:** if the [Rule 2a](next/rules.html#rule2a) calculated size is **NOT**
|
||||
**IMPORTANT:** if the [Rule 2a](next/rules.html#rule2a) calculated size is **NOT**
|
||||
violated but this is `true` then you stand a good chance of having your
|
||||
submission rejected for violating [Rule 17](next/rules.html#rule17)!
|
||||
|
||||
@@ -2064,7 +2116,7 @@ In order of the file's contents we describe each required field, below:
|
||||
* `true` if user overrides warning of [Rule 2b](next/rules.html#rule2b)
|
||||
violation, else `false`.
|
||||
|
||||
**NOTE:** if the [Rule 2b](next/rules.html#rule2b) calculated size is **NOT**
|
||||
**IMPORTANT:** if the [Rule 2b](next/rules.html#rule2b) calculated size is **NOT**
|
||||
violated but this is `true` then you stand a good chance of having your
|
||||
submission rejected for violating [Rule 17](next/rules.html#rule17)!
|
||||
|
||||
@@ -2085,7 +2137,7 @@ In order of the file's contents we describe each required field, below:
|
||||
* `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
|
||||
**IMPORTANT:** this does **NOT** mean that your code has been checked for buffer
|
||||
overflows in general.
|
||||
|
||||
- `ungetc_warning` (boolean)
|
||||
@@ -2095,7 +2147,7 @@ In order of the file's contents we describe each required field, below:
|
||||
* `true` if the user overrides any warnings about an incomplete/incorrect
|
||||
`Makefile` file, else `false`.
|
||||
|
||||
**NOTE:** if the `Makefile` file has no problems and this is `true` then
|
||||
**IMPORTANT:** if the `Makefile` file has no problems and this is `true` then
|
||||
you stand a good chance of having your submission rejected for violating
|
||||
[Rule 17](next/rules.html#rule17)!
|
||||
|
||||
@@ -2106,7 +2158,7 @@ In order of the file's contents we describe each required field, below:
|
||||
- `first_rule_is_all` (boolean)
|
||||
* `true` if the first rule in the `Makefile` file is `all`, else `false`.
|
||||
|
||||
**NOTE:** if the `Makefile` file does **NOT** have an `all` rule or it is not
|
||||
**IMPORTANT:** if the `Makefile` file does **NOT** have an `all` rule or it is not
|
||||
first and this boolean is `true` then you stand a good chance of having your
|
||||
submission rejected for violating [Rule 17](next/rules.html#rule17)!
|
||||
|
||||
@@ -2117,7 +2169,7 @@ In order of the file's contents we describe each required field, below:
|
||||
- `found_all_rule` (boolean)
|
||||
* `true` if the `Makefile` file has an `all` rule, else `false`.
|
||||
|
||||
**NOTE:** if the `Makefile` file does **NOT** have an `all` rule and this
|
||||
**IMPORTANT:** if the `Makefile` file does **NOT** have an `all` rule and this
|
||||
boolean is `true`, or if it does **NOT** have an `all` rule but
|
||||
`first_rule_is_all` is `true` then you stand a good chance of having your
|
||||
submission rejected for violating [Rule 17](next/rules.html#rule17)!
|
||||
@@ -2129,7 +2181,7 @@ In order of the file's contents we describe each required field, below:
|
||||
- `found_clean_rule` (boolean)
|
||||
* `true` if the `Makefile` file has a `clean` rule, else `false`.
|
||||
|
||||
**NOTE:** if the `Makefile` file does **NOT** have a `clean` rule and this
|
||||
**IMPORTANT:** if the `Makefile` file does **NOT** have a `clean` rule and this
|
||||
boolean is `true` then you stand a good chance of having your submission
|
||||
rejected for violating [Rule 17](next/rules.html#rule17)!
|
||||
|
||||
@@ -2140,7 +2192,7 @@ In order of the file's contents we describe each required field, below:
|
||||
- `found_clobber_rule` (boolean)
|
||||
* `true` if the `Makefile` file has a `clobber` rule, else `false`.
|
||||
|
||||
**NOTE:** if the `Makefile` file does **NOT** have an `clobber` rule and this
|
||||
**IMPORTANT:** if the `Makefile` file does **NOT** have an `clobber` rule and this
|
||||
boolean is `true` then you stand a good chance of having your submission
|
||||
rejected for violating [Rule 17](next/rules.html#rule17)!
|
||||
|
||||
@@ -2151,7 +2203,7 @@ In order of the file's contents we describe each required field, below:
|
||||
- `found_try_rule` (boolean)
|
||||
* `true` if the `Makefile` file has a `try` rule, else `false`.
|
||||
|
||||
**NOTE:** if the `Makefile` file does **NOT** have an `try` rule and this
|
||||
**IMPORTANT:** if the `Makefile` file does **NOT** have a `try` rule and this
|
||||
boolean is `true` then you stand a good chance of having your submission
|
||||
rejected for violating [Rule 17](next/rules.html#rule17)!
|
||||
|
||||
@@ -2162,7 +2214,7 @@ In order of the file's contents we describe each required field, below:
|
||||
- `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
|
||||
**IMPORTANT:** if this is `true` then this may **NOT** be submitted to the
|
||||
contest! Please do **NOT** email the [Judges](judges.html) your submission!
|
||||
|
||||
Next comes the `manifest` **array** which **MUST** have AT LEAST the following.
|
||||
@@ -2177,8 +2229,9 @@ The `mkiocccentry(1)` tool will write it in this order:
|
||||
FAQ on "[.info.json](#info_json)"
|
||||
for more information.
|
||||
|
||||
**NOTE:** if this is **NOT** the case you stand a great chance of having your
|
||||
submission rejected for violating [Rule 17](next/rules.html#rule17)!
|
||||
**IMPORTANT:** if this is **NOT** the case you stand a
|
||||
great chance of having your submission rejected for violating [Rule
|
||||
17](next/rules.html#rule17)!
|
||||
|
||||
- `auth_JSON` (double quoted string)
|
||||
* This `MUST` be `".auth.json"`, defined as `AUTH_JSON_FILENAME` in
|
||||
@@ -2189,7 +2242,7 @@ The `mkiocccentry(1)` tool will write it in this order:
|
||||
FAQ on "[.auth.json](#auth_json)"
|
||||
for more information.
|
||||
|
||||
**NOTE:** if this is **NOT** the case you stand a great chance of having your
|
||||
**IMPORTANT:** if this is **NOT** the case you stand a great chance of having your
|
||||
submission rejected for violating [Rule 17](next/rules.html#rule17)!
|
||||
|
||||
- `c_src` (double quoted string)
|
||||
@@ -2198,12 +2251,9 @@ The `mkiocccentry(1)` tool will write it in this order:
|
||||
in the [mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry/), and
|
||||
is your submission source code.
|
||||
|
||||
**NOTE:** if this is **NOT** the case you stand a great chance of having your
|
||||
**IMPORTANT:** if this is **NOT** the case you stand a great chance of having your
|
||||
submission rejected for violating [Rule 17](next/rules.html#rule17)!
|
||||
|
||||
**NOTE:** if you provide to `mkiocccentry` a different filename it will be
|
||||
copied to `prog.c`.
|
||||
|
||||
- `Makefile` (double quoted string)
|
||||
* This `MUST` be `"Makefile"`, defined as `MAKEFILE_FILENAME` in
|
||||
[soup/entry_util.h](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/entry_util.h)
|
||||
@@ -2213,12 +2263,9 @@ The `mkiocccentry(1)` tool will write it in this order:
|
||||
FAQ on "[Makefile](#makefile)"
|
||||
for more information.
|
||||
|
||||
**NOTE:** if this is **NOT** the case you stand a great chance of having your
|
||||
**IMPORTANT:** if this is **NOT** the case you stand a great chance of having your
|
||||
submission rejected for violating [Rule 17](next/rules.html#rule17)!
|
||||
|
||||
**NOTE:** if you provide to `mkiocccentry` a different filename it will be
|
||||
copied to `Makefile`.
|
||||
|
||||
- `remarks` (double quoted string)
|
||||
* This `MUST` be `"remarks.md"`, defined as `REMARKS_FILENAME` in
|
||||
[soup/entry_util.h](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/entry_util.h)
|
||||
@@ -2228,35 +2275,33 @@ The `mkiocccentry(1)` tool will write it in this order:
|
||||
FAQ on "[remarks.md](#remarks_md)"
|
||||
for more information.
|
||||
|
||||
**NOTE:** if this is **NOT** the case you stand a great chance of having your
|
||||
**IMPORTANT:** if this is **NOT** the case you stand a great chance of having your
|
||||
submission rejected for violating [Rule 17](next/rules.html#rule17)!
|
||||
|
||||
**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` (double quoted string)
|
||||
|
||||
* Any additional file that you need or want to include with your submission.
|
||||
|
||||
**NOTE:** this MUST **NOT** match a mandatory filename (see above list) and
|
||||
`chkentry` will verify this for you; it is **ALSO** an **error** if the
|
||||
filenames are not unique. In these cases you stand a great risk of having
|
||||
your submission rejected for violating [Rule 17](next/rules.html#rule17)! 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](judges.html)
|
||||
**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!
|
||||
**IMPORTANT:** this MUST **NOT** match a mandatory filename (see above list)
|
||||
and `chkentry` will verify this for you; it is **ALSO** an **error** if the
|
||||
filenames are not unique, not POSIX plus + safe chars only, if they are the
|
||||
wrong permission and various other things. In these cases you stand a great
|
||||
risk of having your submission rejected for violating [Rule
|
||||
17](next/rules.html#rule17)! 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](judges.html) **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!
|
||||
|
||||
Finally, after the `manifest` **array**, the following fields **MUST** exist:
|
||||
|
||||
- `formed_timestamp` (number)
|
||||
* Seconds since epoch when JSON (`.auth.json` or `.info.json`) file was formed (see `gettimeofday(2)`).
|
||||
|
||||
**NOTE:** this **MUST** be greater than or equal to `MIN_TIMESTAMP` (see
|
||||
**IMPORTANT:** this **MUST** be greater than or equal to `MIN_TIMESTAMP` (see
|
||||
[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/)). If
|
||||
this is not the case your submission **WILL BE** rejected.
|
||||
@@ -2265,7 +2310,7 @@ Finally, after the `manifest` **array**, the following fields **MUST** exist:
|
||||
* Microseconds since the tstamp (seconds since epoch when `.auth.json` was
|
||||
formed - see `gettimeofday(2)`) second.
|
||||
|
||||
**NOTE:** this **MUST** be within the range `MIN_FORMED_TIMESTAMP_USEC`
|
||||
**IMPORTANT:** 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](https://github.com/ioccc-src/mkiocccentry/blob/master/soup/entry_util.c)
|
||||
@@ -2276,7 +2321,7 @@ Finally, after the `manifest` **array**, the following fields **MUST** exist:
|
||||
- `timestamp_epoch` (double quoted 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 `#define`d
|
||||
**IMPORTANT:** this **MUST** be `"Thu Jan 01 00:00:00 1970 UTC"` which is `#define`d
|
||||
as `TIMESTAMP_EPOCH` 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/). If
|
||||
@@ -2285,14 +2330,15 @@ Finally, after the `manifest` **array**, the following fields **MUST** exist:
|
||||
- `min_timestamp` (number)
|
||||
* Minimum number of second since epoch for **this** IOCCC.
|
||||
|
||||
**NOTE:** this **MUST** be >= `MIN_TIMESTAMP` defined in
|
||||
**IMPORTANT:** this **MUST** be >= `MIN_TIMESTAMP` defined 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/). 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** and the tarball will **NOT** be formed by
|
||||
`mkiocccentry`; otherwise the `txzchk(1)` tool will be executed on the tarball.
|
||||
This file will be validated with the `chkentry(1)` tool and if there are any
|
||||
problems with it or the submission directory, **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](judges.html) **WILL** use `chkentry(1)` on this file during the
|
||||
judging process and if it does not pass your submission **WILL BE** rejected.
|
||||
@@ -2300,12 +2346,12 @@ 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](next/rules.html#rule17) and in particular because `chkentry` would not
|
||||
validate the `.info.json` file.
|
||||
not a string or is the wrong 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](next/rules.html#rule17) and in particular
|
||||
because `chkentry` would not validate the `.info.json` file.
|
||||
|
||||
If you wish to **verify** that your `.info.json` file is valid **JSON** then see the
|
||||
FAQ on "[validating JSON documents](#validating_json)".
|
||||
@@ -4780,6 +4826,7 @@ below note) this would be advisable.
|
||||
a defect of `clang` that required numerous entries to be fixed for clang is that it
|
||||
requires that `main()`'s arguments to be of a specific type. However some
|
||||
versions of `clang` are more strict in the number of args allowed.
|
||||
|
||||
Jump to: [top](#)
|
||||
|
||||
<hr style="width:50%;text-align:left;margin-left:0">
|
||||
|
||||
+68
-36
@@ -436,8 +436,9 @@ Mastodon</a> feed as <em>sometimes</em> the
|
||||
<p>See our
|
||||
FAQ on “<a href="../faq.html#feedback">rules, guidelines, tools feedback</a>”
|
||||
as well as our
|
||||
FAQ on “<a href="../faq.html#question">about asking questions</a>”
|
||||
about these guidelines. You might also find the FAQ in general useful, especially the
|
||||
FAQ on “<a href="../faq.html#question">asking questions</a>”
|
||||
about these rules. You might also find the FAQ in general useful, as well as the
|
||||
<a href="../quick-start.html">quick start guide</a> and <a href="register.html">how to register</a>.
|
||||
FAQ on “<a href="../quick-start.html#enter">how to enter the IOCCC</a>”.</p>
|
||||
<h1 id="the-ioccc-is-pending">The IOCCC is pending</h1>
|
||||
<p>While the IOCCC is not open yet, there is a tentative opening date for the next IOCCC.</p>
|
||||
@@ -461,11 +462,11 @@ writing by <a href="../contact.html">contacting the judges</a>.</p>
|
||||
</div>
|
||||
</div>
|
||||
<p class="leftbar">
|
||||
These <a href="guidelines.html">IOCCC guidelines</a> are version <strong>28.38 2025-02-12</strong>.
|
||||
These <a href="guidelines.html">IOCCC guidelines</a> are version <strong>28.39 2025-02-26</strong>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
The <a href="guidelines.md" download="guidelines.md">markdown form of these guidelines</a>
|
||||
is available for download.
|
||||
The markdown form of these guidelines <a href="guidelines.md"
|
||||
download="guidelines.md">is available for download</a>.
|
||||
</p>
|
||||
<p><strong>IMPORTANT</strong>: Be <strong>SURE</strong> to read the <a href="rules.html">IOCCC rules</a>.</p>
|
||||
<p>Jump to: <a href="#">top</a></p>
|
||||
@@ -602,11 +603,12 @@ The <code>-d</code> option is an alias for <code>-s 21701</code>. An example use
|
||||
</p>
|
||||
<pre><code> mkiocccentry -d workdir topdir</code></pre>
|
||||
<p class="leftbar">
|
||||
where <code>workdir</code> is the directory which the tarball will be formed and the
|
||||
where <code>workdir</code> is the directory where the tarball will be formed and the
|
||||
<code>topdir</code> is the directory which has the required files (<code>prog.c</code>, <code>Makefile</code> and
|
||||
<code>remarks.md</code>) along with extra data files you wish to submit. Be aware
|
||||
that if the directory exists already, you will have to remove it or move it
|
||||
before this option will work a second time, just like in normal mode.
|
||||
<code>remarks.md</code>) along with extra data files (and if you wish, directories) you
|
||||
wish to submit. Be aware that if the directory exists already, you will have to
|
||||
remove it or move it before this option will work a second time, just like in
|
||||
normal mode.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
<strong>IMPORTANT NOTE</strong>: if you run the program outside the repo directory
|
||||
@@ -616,9 +618,10 @@ are required like <code>chkentry(1)</code>, <code>txzchk(1)</code> and <code>fna
|
||||
have installed them but some tools are out of date (in the install path) it will
|
||||
cause problems. Additionally, if you do not have the most recent version when
|
||||
submitting a tarball it will be rejected for not having the right versions of
|
||||
the tools. This is why you <strong>MUST</strong> make sure you have the most recent
|
||||
version of all the tools and you either run it from the repo directory itself OR
|
||||
you install them (<code>make install</code> as root or via <code>sudo</code>).
|
||||
the tools. This is why you <strong>MUST</strong> make sure you have the most recent version
|
||||
of all the tools and you either run it from the repo directory itself OR you
|
||||
install them (<code>make install</code> as via <code>sudo</code> or as root). We recommend you install
|
||||
the tools but if you wish to run it from the repo directory you may.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
<a href="rules.html#rule17">Rule 17</a> has been <strong>significantly modified</strong>
|
||||
@@ -652,8 +655,8 @@ previously uploaded submission by rebuilding your submission with the
|
||||
To help you with this, so that you do not have to repeatedly answer all the
|
||||
questions, the <code>mkiocccentry(1)</code> tool has the options <code>-a answers</code>, <code>-A answers</code>
|
||||
and <code>-i answers</code>, where <code>-a</code> will write to an answers file (if it does not
|
||||
already exist), <code>-A</code> will overwrite the file and <code>-i</code> will read the answers from
|
||||
the file. If you use <code>-A</code>, be sure you don’t overwrite another file by accident!
|
||||
already exist), <code>-A</code> <strong>WILL OVERWRITE THE FILE</strong> and <code>-i</code> will read the answers from
|
||||
the file. If you use <code>-A</code>, <strong>BE SURE</strong> you don’t overwrite another file by accident!
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
Once the contest enters the <strong><a href="../status.html#judging">judging</a></strong> state, you will
|
||||
@@ -854,10 +857,11 @@ its algorithm.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
If <code>mkiocccentry</code> encounters an <strong>error</strong> the program will exit and the xz
|
||||
compressed tarball <strong>will not be formed</strong>. For instance, if <code>chkentry(1)</code> (see
|
||||
below) fails to validate the <code>.auth.json</code> or <code>.info.json</code>
|
||||
<a href="https://www.json.org/json-en.html">JSON</a> files (see below) that <code>mkiocccentry(1)</code> creates,
|
||||
it is an error and <strong>possibly</strong> a bug that you should <a href="https://github.com/ioccc-src/mkiocccentry/issues/new?assignees=&labels=bug&projects=&template=bug_report.yml&title=%5BBug%5D+%3Ctitle%3E">report as a bug at the
|
||||
compressed tarball <strong>will not be formed</strong>. For instance, if
|
||||
<a href="#chkentry">chkentry(1)</a> fails to validate the <code>.auth.json</code> or <code>.info.json</code>
|
||||
<a href="https://www.json.org/json-en.html">JSON</a> files (see below) that
|
||||
<code>mkiocccentry(1)</code> creates, or anything else <code>mkiocccentry(1)</code> does, it is an
|
||||
<strong>error</strong> and <strong>possibly</strong> a bug that you should <a href="https://github.com/ioccc-src/mkiocccentry/issues/new?assignees=&labels=bug&projects=&template=bug_report.yml&title=%5BBug%5D+%3Ctitle%3E">report as a bug at the
|
||||
mkiocccentry bug report
|
||||
page</a>.
|
||||
<strong>PLEASE run the <code>bug_report.sh</code> script to help us out here!</strong> See the
|
||||
@@ -878,7 +882,9 @@ Needless to say, we do <strong>NOT</strong> recommend these options.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
In many places it will prompt you to verify what you input, allowing you to
|
||||
correct details as you go along.
|
||||
correct details as you go along. Be advised that there is a default answer and
|
||||
if you press enter it will proceed with that default, so make sure you have
|
||||
provided the correct answer.
|
||||
</p>
|
||||
<p>Jump to: <a href="#">top</a></p>
|
||||
<div id="mkiocccentry-synopsis">
|
||||
@@ -891,9 +897,10 @@ The synopsis of the <code>mkiocccentry(1)</code> tool is:
|
||||
<p class="leftbar">
|
||||
To help you with editing a submission, the <code>mkiocccentry(1)</code> tool has
|
||||
some options to write <em>OR</em> read from an answers file so you do not have to input
|
||||
the information about the author(s) and the submission more than once (unless of
|
||||
the information about the author(s) and the submission more than once, unless of
|
||||
course you need to make some changes, in which case you can use the option that
|
||||
overwrites the file).
|
||||
overwrites the file. If you do use the overwrite option, <strong>MAKE SURE</strong> you do
|
||||
not overwrite another file!
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
See the
|
||||
@@ -911,8 +918,9 @@ execute one or more additional tools.
|
||||
</p>
|
||||
<h2 id="iocccsize"><code>iocccsize</code></h2>
|
||||
<p class="leftbar">
|
||||
<code>mkiocccentry(1)</code> will use code from <code>iocccsize(1)</code> which
|
||||
detects a number of issues that you may ignore, if you wish, as noted above.
|
||||
<code>mkiocccentry(1)</code> will use code from <code>iocccsize(1)</code> which detects a number of
|
||||
issues (such as <a href="rules.html#rule2">Rule 2</a>) that you may ignore, if you wish, as
|
||||
noted above.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
In other words, you no longer need to run <code>iocccsize</code> manually. However, the
|
||||
@@ -929,7 +937,12 @@ submission. These files <strong>MUST</strong> pass the checks of <code>chkentry(
|
||||
If <code>chkentry</code> does not pass and you used <code>mkiocccentry(1)</code> it is <strong>very likely</strong> a
|
||||
bug and you should <a href="https://github.com/ioccc-src/mkiocccentry/issues/new?assignees=&labels=bug&projects=&template=bug_report.yml&title=%5BBug%5D+%3Ctitle%3E">report it as a bug at the mkiocccentry issues
|
||||
page</a>.
|
||||
See the
|
||||
<strong>PLEASE</strong> run the command:
|
||||
</p>
|
||||
<pre><code> make bug_report</code></pre>
|
||||
<p class="leftbar">
|
||||
from the top level repo directory itself.
|
||||
See also the
|
||||
FAQ on “<a href="../faq.html#mkiocccentry_bugs">reporting mkiocccentry bugs</a>”.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
@@ -939,10 +952,15 @@ executed on it. In this case, there should be no problems, as <code>mkiocccentry
|
||||
<strong>NOT</strong> form a tarball if there are any issues.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
If <code>mkiocccentry(1)</code> is used and <code>chkentry(1)</code> fails to validate either of the
|
||||
files, then unless it is a system specific problem, it is likely a bug in
|
||||
<strong>NOTE</strong>: <code>chkentry(1)</code> also validates other things in your submission
|
||||
directory.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
If <code>mkiocccentry(1)</code> is used and <code>chkentry(1)</code> fails to validate your submission
|
||||
directory, then unless it is a system specific problem, it could be a bug in
|
||||
<code>mkiocccentry(1)</code>, <code>chkentry(1)</code> or possibly <code>jparse</code>, though this is quite
|
||||
unlikely.
|
||||
unlikely. Nonetheless, if you believe there is a bug, you may report it as
|
||||
explained above.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
If you want to know what <code>.auth.json</code> is, see the
|
||||
@@ -993,15 +1011,16 @@ installed separately, in order to use the tools in <code>mkiocccentry</code>.
|
||||
In other words, <code>mkiocccentry</code> <strong>contains everything</strong> you need, and <em>even if you
|
||||
do install</em> the libraries from their respective repos, it/they will <strong>not be
|
||||
used</strong> when compiling the <code>mkiocccentry</code> tools. This is important to
|
||||
make sure that you’re using the correct versions, which is verified by
|
||||
<code>chkentry</code>. See <a href="rules.html#rule17">Rule 17</a>!
|
||||
make sure that you’re using the correct versions, which is also verified by
|
||||
<code>chkentry</code> (in the JSON files created by <code>mkiocccentry(1)</code>). See <a href="rules.html#rule17">Rule
|
||||
17</a>!
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
Please see the
|
||||
FAQ on “<a href="../faq.html#chkentry">validating .auth.json and/or .info.json files</a>
|
||||
for more details on <code>chkentry</code> and how you can use it to validate your
|
||||
<code>.auth.json</code> and <code>.info.json</code> files manually, without having to repackage your
|
||||
submission.
|
||||
<code>.auth.json</code> and <code>.info.json</code> files (and your submission directory in general)
|
||||
manually, without having to repackage your submission.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
You might also wish to see the
|
||||
@@ -1018,7 +1037,8 @@ compressed tarball; if any issues are found (‘<code>feathers are stuck in the
|
||||
<code>mkiocccentry(1)</code></strong>, then it is <strong>possibly</strong> a bug in one of the tools and you
|
||||
might want to <a href="https://github.com/ioccc-src/mkiocccentry/issues/new?assignees=&labels=bug&projects=&template=bug_report.yml&title=%5BBug%5D+%3Ctitle%3E">report it as a bug at the mkiocccentry bug report
|
||||
page</a>. <strong>PLEASE run the
|
||||
<code>bug_report.sh</code> script to help us out here!</strong> See the
|
||||
<code>bug_report.sh</code> script to help us out here!</strong> You may do this by running from
|
||||
the top level directory of the repo <code>make bug_report</code>. See the
|
||||
FAQ on “<a href="../faq.html#mkiocccentry_bugs">report mkiocccentry bugs</a>”.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
@@ -1055,9 +1075,9 @@ an extra file, not an optional file.
|
||||
<p class="leftbar">
|
||||
In particular, any file that is not <code>prog.c</code>, <code>Makefile</code>, <code>remarks.md</code>,
|
||||
<code>try.sh</code>, <code>prog.alt.c</code> or <code>try.alt.sh</code> will be counted as an extra file, and if
|
||||
<code>try.sh</code>, <code>prog.alt.c</code> or <code>try.alt.sh</code> are not in the top level directory they
|
||||
will also be counted as an extra file. The <code>.info.json</code> and <code>.auth.json</code> files
|
||||
are not counted as extra files but are required.
|
||||
<code>try.sh</code>, <code>prog.alt.c</code> or <code>try.alt.sh</code> are not in the top level submission
|
||||
directory they will also be counted as an extra file. The <code>.info.json</code> and
|
||||
<code>.auth.json</code> files are not counted as extra files but are required.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
In other words, the actual amount of <strong>EXTRA</strong> files is 31.
|
||||
@@ -1078,7 +1098,9 @@ section</a> for more details on this important tool.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
If you <strong>DO</strong> include a tarball, and the build process or the program extracts
|
||||
said tarball(s), the make <code>clobber</code> rule <strong>MUST</strong> remove them.
|
||||
said tarball(s), the make <code>clobber</code> rule <strong>MUST</strong> remove them. Even so, if you
|
||||
include a tarball to get past the limit on the number of files, you <strong>MUST</strong>
|
||||
justify this in your remarks!
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
<strong>IMPORTANT REMINDER</strong>: make <strong>SURE</strong> your tarball does <strong>NOT</strong> reveal who you are!
|
||||
@@ -1442,6 +1464,10 @@ use of <code>git(1)</code> or <code>gh(1)</code>, just be sure that your submiss
|
||||
submission Makefile don’t depend on such tools.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
Of course if you do use GitHub to work on your submission, you might want to
|
||||
make the repo private so you don’t reveal who you are. :-)
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
If this is not clear, please do <strong>NOT</strong> use these tools to help with the
|
||||
<code>clobber</code> rule! For instance, do <strong>NOT</strong> use <code>git clean</code>! Not only does this
|
||||
depend on the user having <code>git(1)</code> but it also does not account for the
|
||||
@@ -1461,6 +1487,12 @@ In other words, for <code>make clobber</code>, do something like:
|
||||
<p class="leftbar">
|
||||
And do <strong>NOT</strong> use <code>git</code> for any other tool either.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
<strong>NOTE</strong>: <code>mkiocccentry(1)</code> will directly run <code>make clobber</code> in the submission
|
||||
directory. An although it is not an error if this fails, if it fails because the
|
||||
Makefile does not have a clobber rule, it will be flagged by <code>mkiocccentry(1)</code>
|
||||
(you may ignore this but it does put you at a risk of violating the rules).
|
||||
</p>
|
||||
<p>Jump to: <a href="#">top</a></p>
|
||||
<div id="likes">
|
||||
<div id="dislikes">
|
||||
|
||||
+75
-38
@@ -14,8 +14,9 @@ Mastodon](https://fosstodon.org/@ioccc) feed as _sometimes_ the
|
||||
See our
|
||||
FAQ on "[rules, guidelines, tools feedback](../faq.html#feedback)"
|
||||
as well as our
|
||||
FAQ on "[about asking questions](../faq.html#question)"
|
||||
about these guidelines. You might also find the FAQ in general useful, especially the
|
||||
FAQ on "[asking questions](../faq.html#question)"
|
||||
about these rules. You might also find the FAQ in general useful, as well as the
|
||||
[quick start guide](../quick-start.html) and [how to register](register.html).
|
||||
FAQ on "[how to enter the IOCCC](../quick-start.html#enter)".
|
||||
|
||||
|
||||
@@ -49,12 +50,12 @@ Jump to: [top](#)
|
||||
</div>
|
||||
|
||||
<p class="leftbar">
|
||||
These [IOCCC guidelines](guidelines.html) are version **28.38 2025-02-12**.
|
||||
These [IOCCC guidelines](guidelines.html) are version **28.39 2025-02-26**.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The <a href="guidelines.md" download="guidelines.md">markdown form of these guidelines</a>
|
||||
is available for download.
|
||||
The markdown form of these guidelines <a href="guidelines.md"
|
||||
download="guidelines.md">is available for download</a>.
|
||||
</p>
|
||||
|
||||
**IMPORTANT**: Be **SURE** to read the [IOCCC rules](rules.html).
|
||||
@@ -226,11 +227,12 @@ The `-d` option is an alias for `-s 21701`. An example use:
|
||||
```
|
||||
|
||||
<p class="leftbar">
|
||||
where `workdir` is the directory which the tarball will be formed and the
|
||||
where `workdir` is the directory where the tarball will be formed and the
|
||||
`topdir` is the directory which has the required files (`prog.c`, `Makefile` and
|
||||
`remarks.md`) along with extra data files you wish to submit. Be aware
|
||||
that if the directory exists already, you will have to remove it or move it
|
||||
before this option will work a second time, just like in normal mode.
|
||||
`remarks.md`) along with extra data files (and if you wish, directories) you
|
||||
wish to submit. Be aware that if the directory exists already, you will have to
|
||||
remove it or move it before this option will work a second time, just like in
|
||||
normal mode.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
@@ -241,9 +243,10 @@ are required like `chkentry(1)`, `txzchk(1)` and `fnamchk(1)`. But even if you
|
||||
have installed them but some tools are out of date (in the install path) it will
|
||||
cause problems. Additionally, if you do not have the most recent version when
|
||||
submitting a tarball it will be rejected for not having the right versions of
|
||||
the tools. This is why you **MUST** make sure you have the most recent
|
||||
version of all the tools and you either run it from the repo directory itself OR
|
||||
you install them (`make install` as root or via `sudo`).
|
||||
the tools. This is why you **MUST** make sure you have the most recent version
|
||||
of all the tools and you either run it from the repo directory itself OR you
|
||||
install them (`make install` as via `sudo` or as root). We recommend you install
|
||||
the tools but if you wish to run it from the repo directory you may.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
@@ -283,8 +286,8 @@ previously uploaded submission by rebuilding your submission with the
|
||||
To help you with this, so that you do not have to repeatedly answer all the
|
||||
questions, the `mkiocccentry(1)` tool has the options `-a answers`, `-A answers`
|
||||
and `-i answers`, where `-a` will write to an answers file (if it does not
|
||||
already exist), `-A` will overwrite the file and `-i` will read the answers from
|
||||
the file. If you use `-A`, be sure you don't overwrite another file by accident!
|
||||
already exist), `-A` **WILL OVERWRITE THE FILE** and `-i` will read the answers from
|
||||
the file. If you use `-A`, **BE SURE** you don't overwrite another file by accident!
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
@@ -531,10 +534,11 @@ its algorithm.
|
||||
|
||||
<p class="leftbar">
|
||||
If `mkiocccentry` encounters an **error** the program will exit and the xz
|
||||
compressed tarball **will not be formed**. For instance, if `chkentry(1)` (see
|
||||
below) fails to validate the `.auth.json` or `.info.json`
|
||||
[JSON](https://www.json.org/json-en.html) files (see below) that `mkiocccentry(1)` creates,
|
||||
it is an error and **possibly** a bug that you should [report as a bug at the
|
||||
compressed tarball **will not be formed**. For instance, if
|
||||
[chkentry(1)](#chkentry) fails to validate the `.auth.json` or `.info.json`
|
||||
[JSON](https://www.json.org/json-en.html) files (see below) that
|
||||
`mkiocccentry(1)` creates, or anything else `mkiocccentry(1)` does, it is an
|
||||
**error** and **possibly** a bug that you should [report as a bug at the
|
||||
mkiocccentry bug report
|
||||
page](https://github.com/ioccc-src/mkiocccentry/issues/new?assignees=&labels=bug&projects=&template=bug_report.yml&title=%5BBug%5D+%3Ctitle%3E).
|
||||
**PLEASE run the `bug_report.sh` script to help us out here!** See the
|
||||
@@ -558,7 +562,9 @@ Needless to say, we do **NOT** recommend these options.
|
||||
|
||||
<p class="leftbar">
|
||||
In many places it will prompt you to verify what you input, allowing you to
|
||||
correct details as you go along.
|
||||
correct details as you go along. Be advised that there is a default answer and
|
||||
if you press enter it will proceed with that default, so make sure you have
|
||||
provided the correct answer.
|
||||
</p>
|
||||
|
||||
|
||||
@@ -579,9 +585,10 @@ The synopsis of the `mkiocccentry(1)` tool is:
|
||||
<p class="leftbar">
|
||||
To help you with editing a submission, the `mkiocccentry(1)` tool has
|
||||
some options to write _OR_ read from an answers file so you do not have to input
|
||||
the information about the author(s) and the submission more than once (unless of
|
||||
the information about the author(s) and the submission more than once, unless of
|
||||
course you need to make some changes, in which case you can use the option that
|
||||
overwrites the file).
|
||||
overwrites the file. If you do use the overwrite option, **MAKE SURE** you do
|
||||
not overwrite another file!
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
@@ -607,8 +614,9 @@ execute one or more additional tools.
|
||||
</div>
|
||||
|
||||
<p class="leftbar">
|
||||
`mkiocccentry(1)` will use code from `iocccsize(1)` which
|
||||
detects a number of issues that you may ignore, if you wish, as noted above.
|
||||
`mkiocccentry(1)` will use code from `iocccsize(1)` which detects a number of
|
||||
issues (such as [Rule 2](rules.html#rule2)) that you may ignore, if you wish, as
|
||||
noted above.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
@@ -631,7 +639,16 @@ submission. These files **MUST** pass the checks of `chkentry(1)`!
|
||||
If `chkentry` does not pass and you used `mkiocccentry(1)` it is **very likely** a
|
||||
bug and you should [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).
|
||||
See the
|
||||
**PLEASE** run the command:
|
||||
</p>
|
||||
|
||||
``` <!---sh-->
|
||||
make bug_report
|
||||
```
|
||||
|
||||
<p class="leftbar">
|
||||
from the top level repo directory itself.
|
||||
See also the
|
||||
FAQ on "[reporting mkiocccentry bugs](../faq.html#mkiocccentry_bugs)".
|
||||
</p>
|
||||
|
||||
@@ -643,10 +660,16 @@ executed on it. In this case, there should be no problems, as `mkiocccentry(1)`
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
If `mkiocccentry(1)` is used and `chkentry(1)` fails to validate either of the
|
||||
files, then unless it is a system specific problem, it is likely a bug in
|
||||
**NOTE**: `chkentry(1)` also validates other things in your submission
|
||||
directory.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
If `mkiocccentry(1)` is used and `chkentry(1)` fails to validate your submission
|
||||
directory, then unless it is a system specific problem, it could be a bug in
|
||||
`mkiocccentry(1)`, `chkentry(1)` or possibly `jparse`, though this is quite
|
||||
unlikely.
|
||||
unlikely. Nonetheless, if you believe there is a bug, you may report it as
|
||||
explained above.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
@@ -703,16 +726,17 @@ installed separately, in order to use the tools in `mkiocccentry`.
|
||||
In other words, `mkiocccentry` **contains everything** you need, and _even if you
|
||||
do install_ the libraries from their respective repos, it/they will **not be
|
||||
used** when compiling the `mkiocccentry` tools. This is important to
|
||||
make sure that you're using the correct versions, which is verified by
|
||||
`chkentry`. See [Rule 17](rules.html#rule17)!
|
||||
make sure that you're using the correct versions, which is also verified by
|
||||
`chkentry` (in the JSON files created by `mkiocccentry(1)`). See [Rule
|
||||
17](rules.html#rule17)!
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
Please see the
|
||||
FAQ on "[validating .auth.json and/or .info.json files](../faq.html#chkentry)
|
||||
for more details on `chkentry` and how you can use it to validate your
|
||||
`.auth.json` and `.info.json` files manually, without having to repackage your
|
||||
submission.
|
||||
`.auth.json` and `.info.json` files (and your submission directory in general)
|
||||
manually, without having to repackage your submission.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
@@ -736,7 +760,8 @@ tarball`' :-) ) **AND if and _ONLY IF_ you used
|
||||
`mkiocccentry(1)`**, then it is **possibly** a bug in one of the tools and you
|
||||
might want to [report it as a bug at the mkiocccentry bug report
|
||||
page](https://github.com/ioccc-src/mkiocccentry/issues/new?assignees=&labels=bug&projects=&template=bug_report.yml&title=%5BBug%5D+%3Ctitle%3E). **PLEASE run the
|
||||
`bug_report.sh` script to help us out here!** See the
|
||||
`bug_report.sh` script to help us out here!** You may do this by running from
|
||||
the top level directory of the repo `make bug_report`. See the
|
||||
FAQ on "[report mkiocccentry bugs](../faq.html#mkiocccentry_bugs)".
|
||||
</p>
|
||||
|
||||
@@ -780,9 +805,9 @@ an extra file, not an optional file.
|
||||
<p class="leftbar">
|
||||
In particular, any file that is not `prog.c`, `Makefile`, `remarks.md`,
|
||||
`try.sh`, `prog.alt.c` or `try.alt.sh` will be counted as an extra file, and if
|
||||
`try.sh`, `prog.alt.c` or `try.alt.sh` are not in the top level directory they
|
||||
will also be counted as an extra file. The `.info.json` and `.auth.json` files
|
||||
are not counted as extra files but are required.
|
||||
`try.sh`, `prog.alt.c` or `try.alt.sh` are not in the top level submission
|
||||
directory they will also be counted as an extra file. The `.info.json` and
|
||||
`.auth.json` files are not counted as extra files but are required.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
@@ -807,7 +832,9 @@ section](#txzchk) for more details on this important tool.
|
||||
|
||||
<p class="leftbar">
|
||||
If you **DO** include a tarball, and the build process or the program extracts
|
||||
said tarball(s), the make `clobber` rule **MUST** remove them.
|
||||
said tarball(s), the make `clobber` rule **MUST** remove them. Even so, if you
|
||||
include a tarball to get past the limit on the number of files, you **MUST**
|
||||
justify this in your remarks!
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
@@ -835,8 +862,6 @@ in your `remarks.md`).
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
|
||||
<p class="leftbar">
|
||||
See also the
|
||||
FAQ on "[txzchk](../faq.html#txzchk)".
|
||||
@@ -1282,6 +1307,11 @@ use of `git(1)` or `gh(1)`, just be sure that your submission code and your
|
||||
submission Makefile don't depend on such tools.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
Of course if you do use GitHub to work on your submission, you might want to
|
||||
make the repo private so you don't reveal who you are. :-)
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
If this is not clear, please do **NOT** use these tools to help with the
|
||||
`clobber` rule! For instance, do **NOT** use `git clean`! Not only does this
|
||||
@@ -1314,6 +1344,13 @@ And do **NOT** use `git` for any other tool either.
|
||||
</p>
|
||||
|
||||
|
||||
<p class="leftbar">
|
||||
**NOTE**: `mkiocccentry(1)` will directly run `make clobber` in the submission
|
||||
directory. An although it is not an error if this fails, if it fails because the
|
||||
Makefile does not have a clobber rule, it will be flagged by `mkiocccentry(1)`
|
||||
(you may ignore this but it does put you at a risk of violating the rules).
|
||||
</p>
|
||||
|
||||
Jump to: [top](#)
|
||||
|
||||
<div id="likes">
|
||||
|
||||
+86
-62
@@ -437,8 +437,8 @@ Mastodon</a> feed as <em>sometimes</em> the
|
||||
FAQ on “<a href="../faq.html#feedback">rules, guidelines, tools feedback</a>”
|
||||
as well as our
|
||||
FAQ on “<a href="../faq.html#question">about asking questions</a>”
|
||||
about these rules. You might also find the FAQ in general useful, especially the
|
||||
FAQ on “<a href="../quick-start.html#enter">how to enter the IOCCC</a>”.</p>
|
||||
about these rules. You might also find the FAQ in general useful, as well as the
|
||||
<a href="../quick-start.html">quick start guide</a> and <a href="register.html">how to register</a>.</p>
|
||||
<h1 id="the-ioccc-is-pending">The IOCCC is pending</h1>
|
||||
<p>While the IOCCC is not open now, there is a tentative opening date for the next IOCCC.</p>
|
||||
<p>Comments and suggestions on these preliminary rules are welcome. See the
|
||||
@@ -461,11 +461,11 @@ writing by <a href="../contact.html">contacting the judges</a>.</p>
|
||||
</div>
|
||||
</div>
|
||||
<p class="leftbar">
|
||||
These <a href="rules.html">IOCCC rules</a> are version <strong>28.24 2025-02-12</strong>.
|
||||
These <a href="rules.html">IOCCC rules</a> are version <strong>28.25 2025-02-26</strong>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
The <a href="rules.md" download="rules.md">markdown form of these rules</a>
|
||||
is available for download.
|
||||
The markdown form of these rules <a href="rules.md" download="rules.md">is
|
||||
available for download</a>.
|
||||
</p>
|
||||
<p><strong>IMPORTANT</strong>: Be sure to read the <a href="guidelines.html">IOCCC guidelines</a>.</p>
|
||||
<p>Jump to: <a href="#">top</a></p>
|
||||
@@ -859,7 +859,7 @@ super-user, special owner, special group, etc.) are still <strong>HIGHLY
|
||||
DISCOURAGED</strong>. We do not guarantee these functions will behave as
|
||||
you expect on our test platforms. If your program needs special
|
||||
permissions you <strong>MUST</strong> document this fact, and explain why
|
||||
it is needed in your submissions <code>remarks.md</code> file.</p>
|
||||
it is needed in your submission’s <code>remarks.md</code> file.</p>
|
||||
<p>Jump to: <a href="#">top</a></p>
|
||||
<div id="rule12">
|
||||
<h2 id="rule-12">Rule 12</h2>
|
||||
@@ -978,10 +978,9 @@ and <code>.auth.json</code>) and files that are also not the optional files (<co
|
||||
<p>Jump to: <a href="#">top</a></p>
|
||||
<h3 id="rule-17---the-complex-details">Rule 17 - The COMPLEX details</h3>
|
||||
<p class="leftbar">
|
||||
Each submission <strong>MUST</strong> be in the form of a xz compressed tarball.
|
||||
<p>Each submission <strong>MUST</strong> be in the form of a xz compressed tarball.
|
||||
The xz compressed tarball filename must be of the form:
|
||||
</p>
|
||||
<pre><code> ^submit.username-slot_num.[1-9][0-9]{9,}.txz$</code></pre>
|
||||
<code>^submit.username-slot_num.[1-9][0-9]{9,}.txz$</code>.</p>
|
||||
<p class="leftbar">
|
||||
… where <em><code>username</code></em> is your IOCCC registration username <strong>in the form of a
|
||||
<a href="https://en.wikipedia.org/wiki/Universally_unique_identifier">UUID</a></strong> (see
|
||||
@@ -993,7 +992,7 @@ details), and where <em><code>slot_num</code></em> is a single decimal digit int
|
||||
In particular, <code>username</code> is in the form of:
|
||||
<code>xxxxxxxx-xxxx-4xxx-Nxxx-xxxxxxxxxxxx</code> where <code>'x'</code> is a hex digit in the range
|
||||
of <code>[0-9a-f]</code>, 4 is the UUID version, and <code>N</code> is one of <code>8</code>, <code>9</code>, <code>a</code>, or <code>b</code>.
|
||||
And yes, there is a 4 (UUID version 4) and variants <code>0x8</code>, <code>0x9</code>, <code>0xa</code> and
|
||||
And yes, there is a 4 (UUID version 4) and the variants <code>0x8</code>, <code>0x9</code>, <code>0xa</code> and
|
||||
<code>0xb</code> in there.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
@@ -1001,40 +1000,27 @@ Your xz compressed tarball <strong>MUST</strong> contain, <strong>at a minimum</
|
||||
</p>
|
||||
<ul>
|
||||
<li><p class="leftbar">
|
||||
<code>Makefile</code>
|
||||
<code>prog.c</code>
|
||||
</p></li>
|
||||
<li><p class="leftbar">
|
||||
<code>prog.c</code>
|
||||
<code>Makefile</code>
|
||||
</p></li>
|
||||
<li><p class="leftbar">
|
||||
<code>remarks.md</code>
|
||||
</p></li>
|
||||
<li><p class="leftbar">
|
||||
<code>.info.json</code>
|
||||
<code>.auth.json</code>
|
||||
</p></li>
|
||||
<li><p class="leftbar">
|
||||
<code>.auth.json</code>
|
||||
<code>.info.json</code>
|
||||
</p></li>
|
||||
</ul>
|
||||
<p class="leftbar">
|
||||
The <code>.info.json</code> is generated by the <code>mkiocccentry(1)</code> tool. If not, and it is
|
||||
not valid JSON or it does not pass the <code>chkentry(1)</code> tool, your submission
|
||||
<strong>WILL BE</strong> rejected! If you do use <code>mkiocccentry(1)</code> and it fails to pass
|
||||
<code>chkentry(1)</code> then you might wish to <a href="https://github.com/ioccc-src/mkiocccentry/issues/new?assignees=&labels=bug&projects=&template=bug_report.yml&title=%5BBug%5D+%3Ctitle%3E">report it as a bug at the mkiocccentry
|
||||
issues
|
||||
page</a>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
The <code>.auth.json</code> is generated by the <code>mkiocccentry(1)</code> tool. If not, and it is
|
||||
not valid JSON or it does not pass the <code>chkentry(1)</code> tool, your submission
|
||||
<strong>WILL BE</strong> rejected! If you do use <code>mkiocccentry(1)</code> and it fails to pass
|
||||
<code>chkentry(1)</code> then you might wish to <a href="https://github.com/ioccc-src/mkiocccentry/issues/new?assignees=&labels=bug&projects=&template=bug_report.yml&title=%5BBug%5D+%3Ctitle%3E">report it as a bug at the mkiocccentry
|
||||
issues
|
||||
page</a>.
|
||||
<code>prog.c</code> is of course your submission program.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
The <code>Makefile</code> <strong>MUST</strong> be a <strong>non</strong>-empty file in <strong><a href="https://www.gnu.org/software/make/manual/make.html">GNU
|
||||
Makefile</a></strong> form. See the
|
||||
Makefile</a></strong> format. See the
|
||||
<a href="guidelines.html#makefile">Makefile section in the guidelines</a>,
|
||||
the
|
||||
FAQ on “<a href="../faq.html#submission_makefiles">submission Makefile</a>”
|
||||
@@ -1043,7 +1029,7 @@ FAQ on “<a href="../faq.html#make_compatibility">Makefile compatibility</a>”
|
||||
for help.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
The <code>remarks.md</code> <strong>MUST</strong> be a <strong>non</strong>-empty file in markdown form
|
||||
The <code>remarks.md</code> <strong>MUST</strong> be a <strong>non</strong>-empty file in markdown format
|
||||
(<code>mkiocccentry(1)</code> only checks the file size but if you do not have any text in
|
||||
it you still risk violating this rule). See also
|
||||
<a href="#rule18">Rule 18</a> and our
|
||||
@@ -1057,13 +1043,40 @@ See also the <a href="https://www.markdownguide.org/basic-syntax">markdown synta
|
||||
and the <a href="https://spec.commonmark.org/current/">CommonMark Spec</a>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
The xz compressed tarball file <strong>MUST</strong> be less than or equal to <strong>3999971</strong> octets in size.
|
||||
The <code>.auth.json</code> file is created by <code>mkiocccentry(1)</code> and it holds information
|
||||
about the author(s) of the submission. It will <strong>ONLY</strong> be looked at if your
|
||||
submission wins but it <strong>MUST</strong> still be valid according to <code>chkentry(1)</code>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
The <code>.info.json</code> file is created by <code>mkiocccentry(1)</code> and it holds information
|
||||
about the submission itself. It also <strong>MUST</strong> be valid according to
|
||||
<code>chkentry(1)</code>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
For the complete <code>mkiocccentry(1)</code> process, see the
|
||||
FAQ on the “<a href="../faq.html#mkiocccentry_process">mkiocccentry process</a>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
The tool performs a lot of checks, both directly and indirectly, and if it or
|
||||
any other tool detects <strong>ANY</strong> problem, you are <strong>HIGHLY</strong> encouraged to fix it
|
||||
and try again.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
If you do use <code>mkiocccentry(1)</code> and you run into a problem, you might see the
|
||||
FAQ on “<a href="../faq.html#questions">how to ask a question about the IOCCC rules, guidelines and
|
||||
tools</a>”.
|
||||
If you believe you have encountered a bug, feel free to open a bug report at the
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry/issues/new?assignees=&labels=bug&projects=&template=bug_report.yml&title=%5BBug%5D+%3Ctitle%3E">mkiocccentry repo issues
|
||||
page</a>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
The xz compressed tarball file <strong>MUST</strong> be <= <strong>3999971</strong> octets in size.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
When your submission’s xz compressed tarball is uncompressed,
|
||||
the total size of your submission: the sum of the size of the program,
|
||||
hints, comments, build and info files <strong>MUST</strong> be less than or equal
|
||||
to <strong>28314624</strong> octets (<strong>27651K</strong>) in size.
|
||||
the total size of your submission (the sum of the size of the program,
|
||||
hints, comments, build and info files) <strong>MUST</strong> be <=
|
||||
<strong>28314624</strong> octets (<strong>27651K</strong>) in size.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
Your submission’s xz compressed tarball <strong>MUST</strong> pass the <code>txzchk(1)</code> test. See
|
||||
@@ -1101,7 +1114,7 @@ Be <= <strong>38</strong> characters in length.
|
||||
<li><p class="leftbar">
|
||||
<strong>NOT</strong> contain a path component of: <strong><code>.</code></strong> (that is, with
|
||||
the exception of files generated by <code>mkiocccentry(1)</code> itself, it must have
|
||||
<strong>NO</strong> <strong><code>.</code></strong>).
|
||||
<strong>NO</strong> <strong><code>.</code></strong> an <strong>NO</strong> dot file).
|
||||
</p></li>
|
||||
<li><p class="leftbar">
|
||||
<strong>NOT</strong> contain a path component of: <strong><code>..</code></strong> (that is,
|
||||
@@ -1134,8 +1147,8 @@ entry.
|
||||
</p></li>
|
||||
</ul>
|
||||
<p class="leftbar">
|
||||
The <code>chkentry(1)</code> tool will validate these two JSON files <em>prior to</em> the tarball
|
||||
being formed.
|
||||
The <code>chkentry(1)</code> tool will validate these two JSON files, and do other checks
|
||||
on your submission directory as well, <em>prior to</em> forming the tarball.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
Files and directories in your submission tarball <strong>MUST</strong> be specific
|
||||
@@ -1144,17 +1157,22 @@ permissions and <code>mkiocccentry(1)</code> does this for you. In particular: d
|
||||
<code>try.alt.sh</code>, if provided, <strong>MUST</strong> be <code>-r-xr-xr-x</code> (i.e. <code>0555</code>) and all other
|
||||
files <strong>MUST</strong> be <code>-r--r--r--</code> (i.e. <code>0444</code>). If the files do not have these
|
||||
permissions, your submission <strong>WILL</strong> be rejected for violating <a href="#rule17">Rule
|
||||
17</a>! If you do need different permissions, then see the
|
||||
17</a>! In addition to <code>mkiocccentry(1)</code> creating and copying the
|
||||
directories and files with these modes, it also verifies them after the fact and
|
||||
if they are not correct it is an <strong>error</strong>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
If you do need different permissions, then see the
|
||||
FAQ on “<a href="../faq.html#file_perms">file permissions</a>”. Also keep in mind
|
||||
<a href="#rule4">Rule 4</a>, <a href="#rule5">Rule 5</a> and <a href="#rule21">Rule 21</a>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
The <code>txzchk(1)</code> tool will verify these (and other things) for you and
|
||||
the <code>chkentry(1)</code> tool will do additional checks on the contents of the
|
||||
<code>.auth.json</code> and <code>.info.json</code> files (including JSON validity). If these checks
|
||||
fail it is an error and <code>mkiocccentry(1)</code> will fail. In this case (it fails and
|
||||
you used <code>mkiocccentry(1)</code>) it is very <strong>possibly</strong> a bug; please <a href="https://github.com/ioccc-src/mkiocccentry/issues/new?assignees=&labels=bug&projects=&template=bug_report.yml&title=%5BBug%5D+%3Ctitle%3E">report it as
|
||||
a bug at the mkiocccentry issues
|
||||
The <code>txzchk(1)</code> tool will also verify file/directory permissions (and many other
|
||||
things) for you and so will <code>chkentry(1)</code> (along with validating the JSON files
|
||||
and running semantics checks on them). If these checks fail it is an <strong>error</strong>
|
||||
and <code>mkiocccentry(1)</code> will fail. In this case (it fails and you used
|
||||
<code>mkiocccentry(1)</code>) it is very <strong>possibly</strong> a bug; please <a href="https://github.com/ioccc-src/mkiocccentry/issues/new?assignees=&labels=bug&projects=&template=bug_report.yml&title=%5BBug%5D+%3Ctitle%3E">report it as a bug at
|
||||
the mkiocccentry issues
|
||||
page</a>.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
@@ -1166,7 +1184,9 @@ possible there could be a problem and this poses a big risk of violating <a href
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
The <code>fnamchk(1)</code>, which <code>txzchk(1)</code> executes, will verify that the
|
||||
filename is correct.
|
||||
filename is correct. But if you do package your tarball manually, and you have a
|
||||
mismatch in what is in the tarball and the name, <code>txzchk(1)</code> will flag the
|
||||
discrepancy as an error and exit with non-zero.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
These checks <strong>MUST PASS</strong>. If they do not you stand a significant chance of
|
||||
@@ -1179,7 +1199,7 @@ having your submission rejected for violating <a href="#rule17">Rule 17</a>!
|
||||
The maximum number of files your submission tarball may contain, not counting
|
||||
the optional files (<code>prog.alt.c</code>, <code>try.sh</code>, <code>try.alt.sh</code>) and the mandatory
|
||||
files (<code>prog.c</code>, <code>Makefile</code>, <code>remarks.md</code> plus the <code>mkiocccentry(1)</code> generated
|
||||
files <code>.auth.json</code> and <code>.info.json</code>) is 31. This is defined in the macro
|
||||
files <code>.auth.json</code> and <code>.info.json</code>), is 31. This is defined in the macro
|
||||
<code>MAX_EXTRA_FILE_COUNT</code> in
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry/blob/master/soup/limit_ioccc.h">soup/limit_ioccc.h</a>
|
||||
in the <a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry repo</a>. See the
|
||||
@@ -1191,7 +1211,8 @@ If you do include a tarball that takes your extra files count over the maximum,
|
||||
you <strong>MUST</strong> explain this in your <code>remarks.md</code> file! <strong>PLEASE</strong> do not include a
|
||||
tarball with extra files for a test-suite; instead mention in your remarks that
|
||||
you have extra files for a test-suite that can be included should your
|
||||
submission win.
|
||||
submission win. Of course if you don’t need that many files for a test-suite you
|
||||
are more than welcome to include those files in your submission.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
If you need to extract a tarball by some Makefile, or perhaps the program
|
||||
@@ -1199,13 +1220,14 @@ itself, then <code>make clobber</code> <strong>MUST</strong> remove everything t
|
||||
created!
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
Tarballs <strong>MUST</strong> only create files and directories <em>under them</em>. They may
|
||||
<strong>NOT</strong> contain absolute paths (paths that start with <code>/</code>)! <code>txzchk</code> only checks
|
||||
the submission tarball so you must verify these details yourself.
|
||||
Tarballs <strong>MUST</strong> only create files and directories <em>under</em> the submission
|
||||
directory. They may <strong>NOT</strong> contain absolute paths (paths that start with <code>/</code>)!
|
||||
<code>txzchk</code> only checks the submission tarball so you must verify these details
|
||||
yourself.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
Make <strong>SURE</strong> your tarball does not reveal who you are! The <code>mkiocccentry(1)</code>
|
||||
tool uses the v7 format. For instance you might try:
|
||||
<strong>IMPORTANT REMINDER</strong>: <strong>MAKE SURE</strong> your tarball does not reveal who you are!
|
||||
The <code>mkiocccentry(1)</code> tool uses the v7 format. For instance you might try:
|
||||
</p>
|
||||
<pre><code> tar --format=v7 -cJf foo.txz directory</code></pre>
|
||||
<hr style="width:50%;text-align:left;margin-left:0">
|
||||
@@ -1232,16 +1254,18 @@ for more help on ensuring you do have the most up to date release.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
We recommend that you run <code>make</code> and then install the tools (and man pages) via
|
||||
<code>make install</code> (as root or using <code>sudo(1)</code>) to help you run these tools from your
|
||||
submission’s directory. The <code>make install</code> will install in <code>/usr/local</code>.
|
||||
However, <strong>you do not have</strong> to install them, but in that case you’ll have to run it
|
||||
from the toolkit’s directory or use the correct options to specify the path to
|
||||
the necessary tools, and also specify the path to your files.
|
||||
<code>make install</code> (as root or using <code>sudo(1)</code>) to help you run these tools from
|
||||
your submission’s directory (or any other directory). The <code>make install</code> will
|
||||
install in <code>/usr/local</code>. However, <strong>you do not have</strong> to install them, but in
|
||||
that case you’ll have to run it from the toolkit’s directory or use the correct
|
||||
options to specify the path to the necessary tools, and also specify the path to
|
||||
your files.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
These tools will link in the <code>jparse(3)</code> library; <code>chkentry(1)</code> uses the parser
|
||||
to validate the <a href="https://www.json.org/json-en.html">JSON</a> but the other tools
|
||||
use parts of the library as well.
|
||||
These tools will link in the <code>jparse(3)</code> library and the <code>dbg</code> library and the
|
||||
<code>dyn_array</code> library; <code>chkentry(1)</code> uses the JSON parser (<code>jparse</code>) to validate
|
||||
and parse the <a href="https://www.json.org/json-en.html">JSON</a> but the other tools use
|
||||
parts of the <code>jparse</code> utility functions as well.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
If you run into a problem with one or more of these tools, <strong>PLEASE</strong> <a href="https://github.com/ioccc-src/mkiocccentry/issues/new?assignees=&labels=bug&projects=&template=bug_report.yml&title=%5BBug%5D+%3Ctitle%3E">report it
|
||||
@@ -1253,10 +1277,10 @@ FAQ on “<a href="../faq.html#mkiocccentry_bugs">mkiocccentry repo bugs</a>”.
|
||||
</p>
|
||||
<p class="leftbar">
|
||||
At the risk of stating the obvious: submissions that violate <a href="#rule17">Rule
|
||||
17</a> <strong>will be rejected</strong>, so <strong>be sure</strong> to use the latest release of the
|
||||
17</a> <strong>WILL BE REJECTED</strong>, so <strong>BE SURE</strong> to use the latest release of the
|
||||
<a href="https://github.com/ioccc-src/mkiocccentry">mkiocccentry repo</a>, to form and test
|
||||
your submission’s xz compressed tarball. Do <strong>NOT</strong> assume you have the most
|
||||
recent release without pulling or downloading via GitHub and <strong>make sure</strong> you
|
||||
recent release without pulling or downloading via GitHub and do <strong>MAKE SURE</strong> you
|
||||
do this <strong>AFTER</strong> the <a href="../status.html">contest status</a> has changed to
|
||||
<a href="../status.html#open">open</a>.
|
||||
</p>
|
||||
|
||||
+90
-65
@@ -15,8 +15,8 @@ See our
|
||||
FAQ on "[rules, guidelines, tools feedback](../faq.html#feedback)"
|
||||
as well as our
|
||||
FAQ on "[about asking questions](../faq.html#question)"
|
||||
about these rules. You might also find the FAQ in general useful, especially the
|
||||
FAQ on "[how to enter the IOCCC](../quick-start.html#enter)".
|
||||
about these rules. You might also find the FAQ in general useful, as well as the
|
||||
[quick start guide](../quick-start.html) and [how to register](register.html).
|
||||
|
||||
|
||||
# The IOCCC is pending
|
||||
@@ -50,15 +50,13 @@ Jump to: [top](#)
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<p class="leftbar">
|
||||
These [IOCCC rules](rules.html) are version **28.24 2025-02-12**.
|
||||
These [IOCCC rules](rules.html) are version **28.25 2025-02-26**.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The <a href="rules.md" download="rules.md">markdown form of these rules</a>
|
||||
is available for download.
|
||||
The markdown form of these rules <a href="rules.md" download="rules.md">is
|
||||
available for download</a>.
|
||||
</p>
|
||||
|
||||
**IMPORTANT**: Be sure to read the [IOCCC guidelines](guidelines.html).
|
||||
@@ -603,7 +601,7 @@ super-user, special owner, special group, etc.) are still **HIGHLY
|
||||
DISCOURAGED**. We do not guarantee these functions will behave as
|
||||
you expect on our test platforms. If your program needs special
|
||||
permissions you **MUST** document this fact, and explain why
|
||||
it is needed in your submissions `remarks.md` file.
|
||||
it is needed in your submission's `remarks.md` file.
|
||||
|
||||
|
||||
Jump to: [top](#)
|
||||
@@ -757,11 +755,7 @@ Jump to: [top](#)
|
||||
<p class="leftbar">
|
||||
Each submission **MUST** be in the form of a xz compressed tarball.
|
||||
The xz compressed tarball filename must be of the form:
|
||||
</p>
|
||||
|
||||
``` <!---re-->
|
||||
^submit.username-slot_num.[1-9][0-9]{9,}.txz$
|
||||
```
|
||||
`^submit.username-slot_num.[1-9][0-9]{9,}.txz$`.
|
||||
|
||||
<p class="leftbar">
|
||||
... where _`username`_ is your IOCCC registration username **in the form of a
|
||||
@@ -775,7 +769,7 @@ details), and where _`slot_num`_ is a single decimal digit integer
|
||||
In particular, `username` is in the form of:
|
||||
`xxxxxxxx-xxxx-4xxx-Nxxx-xxxxxxxxxxxx` where `'x'` is a hex digit in the range
|
||||
of `[0-9a-f]`, 4 is the UUID version, and `N` is one of `8`, `9`, `a`, or `b`.
|
||||
And yes, there is a 4 (UUID version 4) and variants `0x8`, `0x9`, `0xa` and
|
||||
And yes, there is a 4 (UUID version 4) and the variants `0x8`, `0x9`, `0xa` and
|
||||
`0xb` in there.
|
||||
</p>
|
||||
|
||||
@@ -783,33 +777,19 @@ And yes, there is a 4 (UUID version 4) and variants `0x8`, `0x9`, `0xa` and
|
||||
Your xz compressed tarball **MUST** contain, **at a minimum**, the following files:
|
||||
</p>
|
||||
|
||||
* <p class="leftbar">`Makefile`</p>
|
||||
* <p class="leftbar">`prog.c`</p>
|
||||
* <p class="leftbar">`Makefile`</p>
|
||||
* <p class="leftbar">`remarks.md`</p>
|
||||
* <p class="leftbar">`.info.json`</p>
|
||||
* <p class="leftbar">`.auth.json`</p>
|
||||
* <p class="leftbar">`.info.json`</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The `.info.json` is generated by the `mkiocccentry(1)` tool. If not, and it is
|
||||
not valid JSON or it does not pass the `chkentry(1)` tool, your submission
|
||||
**WILL BE** rejected! If you do use `mkiocccentry(1)` and it fails to pass
|
||||
`chkentry(1)` then you might wish to [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>
|
||||
|
||||
<p class="leftbar">
|
||||
The `.auth.json` is generated by the `mkiocccentry(1)` tool. If not, and it is
|
||||
not valid JSON or it does not pass the `chkentry(1)` tool, your submission
|
||||
**WILL BE** rejected! If you do use `mkiocccentry(1)` and it fails to pass
|
||||
`chkentry(1)` then you might wish to [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).
|
||||
`prog.c` is of course your submission program.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The `Makefile` **MUST** be a **non**-empty file in **[GNU
|
||||
Makefile](https://www.gnu.org/software/make/manual/make.html)** form. See the
|
||||
Makefile](https://www.gnu.org/software/make/manual/make.html)** format. See the
|
||||
[Makefile section in the guidelines](guidelines.html#makefile),
|
||||
the
|
||||
FAQ on "[submission Makefile](../faq.html#submission_makefiles)"
|
||||
@@ -819,7 +799,7 @@ for help.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The `remarks.md` **MUST** be a **non**-empty file in markdown form
|
||||
The `remarks.md` **MUST** be a **non**-empty file in markdown format
|
||||
(`mkiocccentry(1)` only checks the file size but if you do not have any text in
|
||||
it you still risk violating this rule). See also
|
||||
[Rule 18](#rule18) and our
|
||||
@@ -835,14 +815,47 @@ and the [CommonMark Spec](https://spec.commonmark.org/current/).
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The xz compressed tarball file **MUST** be less than or equal to **3999971** octets in size.
|
||||
The `.auth.json` file is created by `mkiocccentry(1)` and it holds information
|
||||
about the author(s) of the submission. It will **ONLY** be looked at if your
|
||||
submission wins but it **MUST** still be valid according to `chkentry(1)`.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The `.info.json` file is created by `mkiocccentry(1)` and it holds information
|
||||
about the submission itself. It also **MUST** be valid according to
|
||||
`chkentry(1)`.
|
||||
</p>
|
||||
|
||||
|
||||
<p class="leftbar">
|
||||
For the complete `mkiocccentry(1)` process, see the
|
||||
FAQ on the "[mkiocccentry process](../faq.html#mkiocccentry_process).
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The tool performs a lot of checks, both directly and indirectly, and if it or
|
||||
any other tool detects **ANY** problem, you are **HIGHLY** encouraged to fix it
|
||||
and try again.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
If you do use `mkiocccentry(1)` and you run into a problem, you might see the
|
||||
FAQ on "[how to ask a question about the IOCCC rules, guidelines and
|
||||
tools](../faq.html#questions)".
|
||||
If you believe you have encountered a bug, feel free to open a bug report at the
|
||||
[mkiocccentry repo issues
|
||||
page](https://github.com/ioccc-src/mkiocccentry/issues/new?assignees=&labels=bug&projects=&template=bug_report.yml&title=%5BBug%5D+%3Ctitle%3E).
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The xz compressed tarball file **MUST** be <= **3999971** octets in size.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
When your submission's xz compressed tarball is uncompressed,
|
||||
the total size of your submission: the sum of the size of the program,
|
||||
hints, comments, build and info files **MUST** be less than or equal
|
||||
to **28314624** octets (**27651K**) in size.
|
||||
the total size of your submission (the sum of the size of the program,
|
||||
hints, comments, build and info files) **MUST** be <=
|
||||
**28314624** octets (**27651K**) in size.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
@@ -881,7 +894,7 @@ Filenames in your entry (that is, not including the files generated by the
|
||||
* <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>
|
||||
**NO** **`.`** an **NO** dot file).</p>
|
||||
* <p class="leftbar">**NOT** contain a path component of: **`..`** (that is,
|
||||
**NO** **`..`**).</p>
|
||||
* <p class="leftbar">Match the regular expression
|
||||
@@ -901,8 +914,8 @@ authors (that will only be looked at if the submission wins).</p>
|
||||
entry.</p>
|
||||
|
||||
<p class="leftbar">
|
||||
The `chkentry(1)` tool will validate these two JSON files _prior to_ the tarball
|
||||
being formed.
|
||||
The `chkentry(1)` tool will validate these two JSON files, and do other checks
|
||||
on your submission directory as well, _prior to_ forming the tarball.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
@@ -912,18 +925,24 @@ permissions and `mkiocccentry(1)` does this for you. In particular: directories
|
||||
`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
|
||||
17](#rule17)! In addition to `mkiocccentry(1)` creating and copying the
|
||||
directories and files with these modes, it also verifies them after the fact and
|
||||
if they are not correct it is an **error**.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
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 fails and
|
||||
you used `mkiocccentry(1)`) it is very **possibly** a bug; please [report it as
|
||||
a bug at the mkiocccentry issues
|
||||
The `txzchk(1)` tool will also verify file/directory permissions (and many other
|
||||
things) for you and so will `chkentry(1)` (along with validating the JSON files
|
||||
and running semantics checks on them). If these checks 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>
|
||||
|
||||
@@ -937,7 +956,9 @@ possible there could be a problem and this poses a big risk of violating [Rule
|
||||
|
||||
<p class="leftbar">
|
||||
The `fnamchk(1)`, which `txzchk(1)` executes, will verify that the
|
||||
filename is correct.
|
||||
filename is correct. But if you do package your tarball manually, and you have a
|
||||
mismatch in what is in the tarball and the name, `txzchk(1)` will flag the
|
||||
discrepancy as an error and exit with non-zero.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
@@ -953,7 +974,7 @@ having your submission rejected for violating [Rule 17](#rule17)!
|
||||
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` plus the `mkiocccentry(1)` generated
|
||||
files `.auth.json` and `.info.json`) is 31. This is defined in the macro
|
||||
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
|
||||
@@ -966,7 +987,8 @@ If you do include a tarball that takes your extra files count over the maximum,
|
||||
you **MUST** explain this in your `remarks.md` file! **PLEASE** do not include a
|
||||
tarball with extra files for a test-suite; instead mention in your remarks that
|
||||
you have extra files for a test-suite that can be included should your
|
||||
submission win.
|
||||
submission win. Of course if you don't need that many files for a test-suite you
|
||||
are more than welcome to include those files in your submission.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
@@ -976,14 +998,15 @@ created!
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
Tarballs **MUST** only create files and directories _under them_. They may
|
||||
**NOT** contain absolute paths (paths that start with `/`)! `txzchk` only checks
|
||||
the submission tarball so you must verify these details yourself.
|
||||
Tarballs **MUST** only create files and directories _under_ the submission
|
||||
directory. They may **NOT** contain absolute paths (paths that start with `/`)!
|
||||
`txzchk` only checks the submission tarball so you must verify these details
|
||||
yourself.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
Make **SURE** your tarball does not reveal who you are! The `mkiocccentry(1)`
|
||||
tool uses the v7 format. For instance you might try:
|
||||
**IMPORTANT REMINDER**: **MAKE SURE** your tarball does not reveal who you are!
|
||||
The `mkiocccentry(1)` tool uses the v7 format. For instance you might try:
|
||||
</p>
|
||||
|
||||
``` <!---sh-->
|
||||
@@ -1019,17 +1042,19 @@ for more help on ensuring you do have the most up to date release.
|
||||
|
||||
<p class="leftbar">
|
||||
We recommend that you run `make` and then install the tools (and man pages) via
|
||||
`make install` (as root or using `sudo(1)`) to help you run these tools from your
|
||||
submission's directory. The `make install` will install in `/usr/local`.
|
||||
However, **you do not have** to install them, but in that case you'll have to run it
|
||||
from the toolkit's directory or use the correct options to specify the path to
|
||||
the necessary tools, and also specify the path to your files.
|
||||
`make install` (as root or using `sudo(1)`) to help you run these tools from
|
||||
your submission's directory (or any other directory). The `make install` will
|
||||
install in `/usr/local`. However, **you do not have** to install them, but in
|
||||
that case you'll have to run it from the toolkit's directory or use the correct
|
||||
options to specify the path to the necessary tools, and also specify the path to
|
||||
your files.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
These tools will link in the `jparse(3)` library; `chkentry(1)` uses the parser
|
||||
to validate the [JSON](https://www.json.org/json-en.html) but the other tools
|
||||
use parts of the library as well.
|
||||
These tools will link in the `jparse(3)` library and the `dbg` library and the
|
||||
`dyn_array` library; `chkentry(1)` uses the JSON parser (`jparse`) to validate
|
||||
and parse the [JSON](https://www.json.org/json-en.html) but the other tools use
|
||||
parts of the `jparse` utility functions as well.
|
||||
</p>
|
||||
|
||||
<p class="leftbar">
|
||||
@@ -1042,10 +1067,10 @@ FAQ on "[mkiocccentry repo bugs](../faq.html#mkiocccentry_bugs)".
|
||||
</p>
|
||||
|
||||
<p class="leftbar">At the risk of stating the obvious: submissions that violate [Rule
|
||||
17](#rule17) **will be rejected**, so **be sure** to use the latest release of the
|
||||
17](#rule17) **WILL BE REJECTED**, so **BE SURE** to use the latest release of the
|
||||
[mkiocccentry repo](https://github.com/ioccc-src/mkiocccentry), to form and test
|
||||
your submission's xz compressed tarball. Do **NOT** assume you have the most
|
||||
recent release without pulling or downloading via GitHub and **make sure** you
|
||||
recent release without pulling or downloading via GitHub and do **MAKE SURE** you
|
||||
do this **AFTER** the [contest status](../status.html) has changed to
|
||||
[open](../status.html#open).
|
||||
</p>
|
||||
|
||||
+11
-10
@@ -540,16 +540,17 @@ However, installing it will make it easier for you as you can run it from your
|
||||
submission’s directory. See the
|
||||
FAQ on “<strong><a href="https://github.com/ioccc-src/mkiocccentry/blob/master/FAQ.md#install">installing mkiocccentry</a></strong>”
|
||||
at the mkiocccentry repo.</p>
|
||||
<p>However, an <strong>IMPORTANT NOTE</strong>: if you run the program outside the repo
|
||||
directory (specifying the absolute or relative path to the tool) and you
|
||||
have not installed the tools then you will have to specify the options for the
|
||||
tools that are required like <code>chkentry(1)</code>, <code>txzchk(1)</code> and <code>fnamchk(1)</code>. But
|
||||
even if you have installed them but some tools are out of date (in the install
|
||||
path) it will cause problems. Additionally, if you do not have the most recent
|
||||
version when submitting a tarball it will be rejected for not having the right
|
||||
versions of the tools. This is why you <strong>MUST</strong> make sure you have the most
|
||||
recent version of all the tools and you either run it from the repo directory
|
||||
itself OR you install them (<code>make install</code> as via <code>sudo</code> or as root).</p>
|
||||
<p><strong>IMPORTANT NOTE</strong>: if you run the program outside the repo directory
|
||||
(specifying the absolute or relative path to the tool) and you have not
|
||||
installed the tools then you will have to specify the options for the tools that
|
||||
are required like <code>chkentry(1)</code>, <code>txzchk(1)</code> and <code>fnamchk(1)</code>. But even if you
|
||||
have installed them but some tools are out of date (in the install path) it will
|
||||
cause problems. Additionally, if you do not have the most recent version when
|
||||
submitting a tarball it will be rejected for not having the right versions of
|
||||
the tools. This is why you <strong>MUST</strong> make sure you have the most recent version
|
||||
of all the tools and you either run it from the repo directory itself OR you
|
||||
install them (<code>make install</code> as via <code>sudo</code> or as root). We recommend you install
|
||||
the tools but if you wish to run it from the repo directory you may.</p>
|
||||
<p>If the <code>mkiocccentry</code> tool indicates that there is a problem with your
|
||||
submission, especially if it identifies a <a href="next/rules.html#rule2">Rule 2</a>, or
|
||||
any other rule, related problem, you are <strong>strongly</strong> encouraged to revise and
|
||||
|
||||
+11
-10
@@ -164,16 +164,17 @@ submission's directory. See the
|
||||
FAQ on "**[installing mkiocccentry](https://github.com/ioccc-src/mkiocccentry/blob/master/FAQ.md#install)**"
|
||||
at the mkiocccentry repo.
|
||||
|
||||
However, an **IMPORTANT NOTE**: if you run the program outside the repo
|
||||
directory (specifying the absolute or relative path to the tool) and you
|
||||
have not installed the tools then you will have to specify the options for the
|
||||
tools that are required like `chkentry(1)`, `txzchk(1)` and `fnamchk(1)`. But
|
||||
even if you have installed them but some tools are out of date (in the install
|
||||
path) it will cause problems. Additionally, if you do not have the most recent
|
||||
version when submitting a tarball it will be rejected for not having the right
|
||||
versions of the tools. This is why you **MUST** make sure you have the most
|
||||
recent version of all the tools and you either run it from the repo directory
|
||||
itself OR you install them (`make install` as via `sudo` or as root).
|
||||
**IMPORTANT NOTE**: if you run the program outside the repo directory
|
||||
(specifying the absolute or relative path to the tool) and you have not
|
||||
installed the tools then you will have to specify the options for the tools that
|
||||
are required like `chkentry(1)`, `txzchk(1)` and `fnamchk(1)`. But even if you
|
||||
have installed them but some tools are out of date (in the install path) it will
|
||||
cause problems. Additionally, if you do not have the most recent version when
|
||||
submitting a tarball it will be rejected for not having the right versions of
|
||||
the tools. This is why you **MUST** make sure you have the most recent version
|
||||
of all the tools and you either run it from the repo directory itself OR you
|
||||
install them (`make install` as via `sudo` or as root). We recommend you install
|
||||
the tools but if you wish to run it from the repo directory you may.
|
||||
|
||||
If the `mkiocccentry` tool indicates that there is a problem with your
|
||||
submission, especially if it identifies a [Rule 2](next/rules.html#rule2), or
|
||||
|
||||
Reference in new issue
Block a user