build index.html for all winners

Updated manifest as per recent file changes.

Updated winner `.winner.json` to reflect the manifest changes.

Added [bin/all_run.sh](bin/all_run.sh) tool to run a command over
all winning entries.

These tools had slight improvements in the help usage message:

* bin/gen-author.sh VERSION="1.3.1 2024-01-16"
* bin/gen-inventory.sh VERSION="1.0.1 2024-01-16"
* bin/pandoc_wrapper.sh VERSION="1.3.1 2024-01-16"
* bin/subst.default.sh VERSION="1.1.1 2024-01-16"
* bin/subst.winner-index.sh VERSION="1.1.1 2024-01-16"

The `bin/readme2index.sh` tool was improved so that
if the `index.html` file exists and the tool forms
the exact same content, then the file `index.html`
file is NOT touched.

* bin/readme2index.sh VERSION="1.1 2024-01-16"

We used the following command to generate `index.html` files
for all winning entries:

```sh
bin/all_run.sh -v 3 bin/readme2index.sh
```

NOTE: We have not (yet) built HTML files above the winner directory
level (e.g., no year level nor top level HTML), nor have be built
non-index HTML files for winners.

NOTE: By default we are running `pandoc(1)` with:

```
--fail-if-warnings=true
```

This means that any problems with markdown to HTML
generates an error.  This is done to be sure that
the HTML conversion is clean.

We had to fix the following `README.md` files:

* `2000/rince/README.md`

The reference [^2] was never used.  We made a guess that [^2] applies
to the same spot as [^1].  Perhaps there is a better spot where
[^2] applies?

NOTE: For every reference, there MUST be some place where that
reference is used.

* 2012/vik/README.md

The string "$...$" is assumed to be a TeX encoded string.

NOTE: Every "$..$" needs to be backslashed as in "\$..\$".

* 2018/burton1/README.md

The reference [2] was duplicated.  We changed the
second [2] to [3].

NOTE: Every reference needs to have a unique number.

* 2020/carlini/README.md

The string "$...$" is assumed to be a TeX encoded string.

NOTE: Every "$..$" needs to be backslashed as in "\$..\$".

We also found 2 errors in the `author/author_handle.json` file set:

* author/Anonymous_2001.json

The `author/Anonymous_2001.json` file was missing.

* author/Jari_Arkko.json

The winner ID for `1989_jar.1` had a typo.
This commit is contained in:
Landon Curt Noll committed 2024-01-17 00:32:39 -08:00
1 parent 893cd915b6
commit c1466f5165
350 files changed
+95242 -4217

No files matched your search

+324 -13
View File
@@ -1,4 +1,6 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<!-- START: two lines up starts content from: inc/top.default.html -->
<!-- -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
@@ -6,27 +8,336 @@
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- -->
<!-- file: 2012/omoikane/index.html created by: fake.gen_index.sh version: 1.0.5 2023-10-31 -->
<html lang="en">
<!-- END: this line ends content from: inc/top.default.html -->
<!-- -->
<!-- This file was formed by the tool: bin/readme2index.sh version: 1.1 2024-01-16 -->
<!-- -->
<!-- START: this line starts content from: inc/head.default.html -->
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>2012 omoikane</title>
<meta name="description" content="IOCCC year: 2012 IOCCC winner: omoikane winner index page">
<meta name="keywords" content="IOCCC,2012,omoikane,winner index page">
<link rel="stylesheet" href="/temp-test-ioccc/ioccc.css">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>2012/omoikane</title>
<meta name="description" content="2012 IOCCC winner omoikane">
<meta name="keywords" content="IOCCC, 2012, IOCCC 2012, IOCCC winner, omoikane">
</head>
<!-- END: this line ends content from: inc/head.default.html -->
<!-- START: this line starts content from: inc/body.default.html -->
<body>
<h1>2012 omoikane</h1>
<!-- END: this line ends content from: inc/body.default.html -->
<!-- START: this line starts content from: inc/header.default.html -->
<p>XXX - fake content until readme2index is working - XXX</p>
<div class="header">
<img src="/temp-test-ioccc/png/ioccc.png" alt="IOCCC image by Matt Zucker" width=300 height=110>
<h1>The International Obfuscated C Code Contest</h1>
<h2>2012/omoikane</h2>
</div>
<hr style="width:50%;text-align:left;margin-left:0">
<!-- END: this line ends content from: inc/header.default.html -->
<!-- START: this line starts content from: inc/topnav.mid.html -->
<!-- Start Nu Html Checker -->
<p><a href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fioccc-src.github.io%2Ftemp-test-ioccc%2F2012%2Fomoikane%2Findex.html">Nu Html check https://ioccc-src.github.io/temp-test-ioccc/2012/omoikane/index.html</a></p>
<!-- End Nu Html Checker -->
<div class="topnav">
<a class="Left" href="../konno/index.html">&larr; konno</a>
<a class="Left" href="../index.html">&uarr; 2012 &uarr;</a>
<a class="Left" href="../tromp/index.html">tromp &rarr;</a>
<a class="Right" href="#inventory">Inventory</a>
</div>
<!-- END: this line ends content from: inc/topnav.mid.html -->
<!-- START: this line starts content from: inc/begin-row.default.html -->
<div class="row">
<!-- END: this line ends content from: inc/begin-row.default.html -->
<!-- START: this line starts content from: inc/begin-leftcolumn.default.html -->
<div class="leftcolumn">
<!-- END: this line ends content from: inc/begin-leftcolumn.default.html -->
<!-- START: this line starts content from: inc/sidenav.default.html -->
<div class="sidenav">
<a href="#content">Jump to contents</a>
</div>
<hr>
<div class="sidenav">
<a href="/temp-test-ioccc/index.html">IOCCC Home</a>
<a href="/temp-test-ioccc/years.html">Winning Entries</a>
<a href="/temp-test-ioccc/winners.html">People who have won</a>
</div>
<hr>
<div class="sidenav">
<a href="/temp-test-ioccc/news.html">IOCCC News</a>
<a href="/temp-test-ioccc/faq.html#submit">How to enter the IOCCC</a>
<a href="/temp-test-ioccc/faq.html">FAQ</a>
</div>
<hr>
<div class="sidenav">
<a href="/temp-test-ioccc/bugs.html">Bugs &amp; (mis)features</a>
<a href="/temp-test-ioccc/faq.html#fix_a_winner">Fixing IOCCC winners</a>
<a href="/temp-test-ioccc/faq.html#fix_web_site">Fixing the web site</a>
<a href="/temp-test-ioccc/faq.html#fix_author">Fixing winner info</a>
<a href="/temp-test-ioccc/thanks-for-help.html">Thanks for the help</a>
</div>
<hr>
<div class="sidenav">
<a href="/temp-test-ioccc/judges.html">The IOCCC Judges</a>
<a href="/temp-test-ioccc/contact.html">Contacting the IOCCC</a>
</div>
<hr>
<div class="sidenav">
<a href="#top">Jump to top</a>
</div>
<!-- END: this line ends content from: inc/sidenav.default.html -->
<!-- START: this line starts content from: inc/end-leftcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-leftcolumn.default.html -->
<!-- START: this line starts content from: inc/begin-rightcolumn.default.html -->
<div class="rightcolumn">
<!-- END: this line ends content from: inc/begin-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/before-content.default.html -->
<a name="content"></a>
<!-- END: this line ends content from: inc/before-content.default.html -->
<!-- START: this line starts content generated by: bin/gen-author.sh -->
<p><a name="author"><strong>Author:</strong></a> <br><br>Name: <a
href="/temp-test-ioccc/winners.html#Don_Yang">Don Yang</a><br> Location:
<a href="/temp-test-ioccc/location.html#US">US</a></p>
<!-- END: next line ends content generated by: bin/gen-author.sh -->
<h2 id="to-build">To build:</h2>
<div class="sourceCode" id="cb1"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="fu">make</span></span></code></pre></div>
<p>There is an alternate version that will read from the compiled file
itself, in case you don’t have a <code>/dev/urandom</code> file. There
is also a version that should theoretically work with Windows which
distinguishes binary and text. See <a href="#alternate-code">alternate
code</a> below.</p>
<h2 id="to-use">To use:</h2>
<div class="sourceCode" id="cb2"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a><span class="ex">./nyaruko</span> <span class="pp">[</span><span class="ss">seed.txt</span><span class="pp">]</span> <span class="op">&lt;</span> original.bin <span class="op">&gt;</span> output.c</span>
<span id="cb2-2"><a href="#cb2-2" aria-hidden="true" tabindex="-1"></a><span class="fu">bash</span> output.c <span class="op">&gt;</span> key.c</span>
<span id="cb2-3"><a href="#cb2-3" aria-hidden="true" tabindex="-1"></a><span class="fu">perl</span> output.c <span class="op">&gt;</span> data.c</span>
<span id="cb2-4"><a href="#cb2-4" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb2-5"><a href="#cb2-5" aria-hidden="true" tabindex="-1"></a><span class="fu">cat</span> key.c data.c <span class="op">&gt;</span> output.c</span>
<span id="cb2-6"><a href="#cb2-6" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb2-7"><a href="#cb2-7" aria-hidden="true" tabindex="-1"></a><span class="fu">cc</span> output.c <span class="at">-o</span> output</span>
<span id="cb2-8"><a href="#cb2-8" aria-hidden="true" tabindex="-1"></a><span class="ex">./output</span> <span class="op">&gt;</span> regenerated.bin</span></code></pre></div>
<p>NOTE: if your OS does not have <code>/dev/urandom</code> then you
should specify a seed file or use the <a
href="#alternate-code">alternate version</a> which reads in the compiled
binary itself.</p>
<h2 id="try">Try:</h2>
<div class="sourceCode" id="cb3"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a><span class="ex">./try.sh</span></span></code></pre></div>
<p>The script <a href="try.sh">try.sh</a> will check if you have perl
before trying to use the perl parts of the script.</p>
<h2 id="alternate-code">Alternate code:</h2>
<p>The alternate version will, if no file is specified, read in the
compiled binary itself rather than trying to open
<code>/dev/urandom</code>, which is the default for the original entry.
This is useful if your system does not have a <code>/dev/urandom</code>
file and you do not want to specify an extra file. The second alternate
version is like the first except it also should theoretically work with
Windows, setting binary mode on <code>stdin</code> and
<code>stdout</code>.</p>
<h3 id="alternate-build">Alternate build:</h3>
<p>For the first version:</p>
<div class="sourceCode" id="cb4"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a><span class="fu">make</span> alt</span></code></pre></div>
<p>For the second version:</p>
<div class="sourceCode" id="cb5"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a><span class="fu">make</span> alt2</span></code></pre></div>
<h3 id="alternate-use">Alternate use:</h3>
<p>Use <code>nyaruko.alt</code> or <code>nyaruko.alt2</code> as you
would <code>nyaruko</code> above.</p>
<h3 id="alternate-try">Alternate try:</h3>
<p>For the first alternate version:</p>
<div class="sourceCode" id="cb6"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb6-1"><a href="#cb6-1" aria-hidden="true" tabindex="-1"></a><span class="ex">./try.alt.sh</span></span></code></pre></div>
<p>We have no way to test the second version, sorry (tm Canada :-)
)!</p>
<h2 id="judges-remarks">Judges’ remarks:</h2>
<p>The judges have nothing to add that has not already been written
about in the <a href="spoiler.html">spoiler.html</a> (requires
JavaScript) file! :-)</p>
<h2 id="authors-remarks">Author’s remarks:</h2>
<h3 id="usage">Usage</h3>
<p><code>Nyaruko</code> is a binary to text filter. Given some input on
<code>stdin</code>, <code>Nyaruko</code> will produce C code that
reproduces this input on <code>stdout</code>:</p>
<div class="sourceCode" id="cb7"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb7-1"><a href="#cb7-1" aria-hidden="true" tabindex="-1"></a><span class="ex">./nyaruko</span> <span class="op">&lt;</span> original.bin <span class="op">&gt;</span> output.c</span>
<span id="cb7-2"><a href="#cb7-2" aria-hidden="true" tabindex="-1"></a><span class="fu">gcc</span> output.c <span class="at">-o</span> output</span>
<span id="cb7-3"><a href="#cb7-3" aria-hidden="true" tabindex="-1"></a><span class="ex">./output</span> <span class="op">&gt;</span> regenerated.bin</span></code></pre></div>
<p>Output is encrypted, but both key and data are included in the
output. To separate the key from the data, run these commands:</p>
<div class="sourceCode" id="cb8"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true" tabindex="-1"></a><span class="fu">bash</span> output.c <span class="op">&gt;</span> key.c</span>
<span id="cb8-2"><a href="#cb8-2" aria-hidden="true" tabindex="-1"></a><span class="fu">perl</span> output.c <span class="op">&gt;</span> data.c</span></code></pre></div>
<p>The key-less <code>data.c</code> still compiles, but produces a
different message on <code>stdout</code> instead of the original input.
This message is a hint to why the code is formatted the way it is.</p>
<p>To combine the key and data, concatenate them together in either
order:</p>
<div class="sourceCode" id="cb9"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb9-1"><a href="#cb9-1" aria-hidden="true" tabindex="-1"></a><span class="fu">cat</span> key.c data.c <span class="op">&gt;</span> output.c</span>
<span id="cb9-2"><a href="#cb9-2" aria-hidden="true" tabindex="-1"></a><span class="fu">cat</span> data.c key.c <span class="op">&gt;</span> output.c</span></code></pre></div>
<p>By default, <code>Nyaruko</code> generates a unique random key for
every message, using <code>/dev/urandom</code> as the seed. If given an
extra command line argument, <code>Nyaruko</code> will seed using that
file instead of <code>/dev/urandom</code>:</p>
<div class="sourceCode" id="cb10"><pre
class="sourceCode sh"><code class="sourceCode bash"><span id="cb10-1"><a href="#cb10-1" aria-hidden="true" tabindex="-1"></a><span class="ex">./nyaruko</span> seed.txt <span class="op">&lt;</span> input.bin <span class="op">&gt;</span> output.c</span></code></pre></div>
<p>This makes the output key deterministic, allowing the same key to be
shared across different files. On operating systems that do not have
<code>/dev/urandom</code>, users should always specify this extra seed
argument to avoid indeterministic keys, or else use the alternate
version which will by default read the compiled alternate version
itself, which might or might not be deterministic, depending on where
and how it’s used.</p>
<h3 id="features">Features</h3>
<p>Implementation details that make <code>Nyaruko</code> more obfuscated
than usual programs:</p>
<ul>
<li><code>Nyaruko</code> recycles variables and buffers to reduce
internal state. The variable names are also carefully chosen for
mixed-case madness.</li>
<li><code>Nyaruko</code> employs some preprocessor magic to share much
of the same code and state between the encoder and decoder, and to
increase occurrences of smileys ;)</li>
</ul>
<p>Output code has these features:</p>
<ul>
<li>Fits nicely under 80 columns, and does not contain any
trigraphs.</li>
<li>Uses a fairly efficient encoding scheme, better than
<code>uuencode</code> for files larger than ~13K, and better than
<code>base64</code> for files larger than 20K.</li>
<li>Encryption with <a
href="https://en.wikipedia.org/wiki/ISAAC_(cipher)">ISAAC</a>, a
cryptographically secure pseudorandom number generator.</li>
<li>Trivial 3 language polyglot.</li>
</ul>
<p>Code layout is meant to resemble <a
href="https://en.wikipedia.org/wiki/Nyarlathotep">Nyaruko</a>, also
known as <code>Nyarlathotep</code>, the Crawling Chaos. The most obvious
thing to do with chaos is to make a random number generator, and the
most obvious thing to do with a random number generator is to make <a
href="https://en.wikipedia.org/wiki/One-time_pad">one-time-pads</a> for
encryption.</p>
<h3 id="compatibility">Compatibility</h3>
<p><code>Nyaruko</code> has these environment dependencies:</p>
<ul>
<li>Requires ASCII character set.</li>
<li>Assumes <code>sizeof(unsigned int) == 4</code>.</li>
<li>Best viewed with tab stops set to 8 spaces.</li>
</ul>
<p>Output code has the same dependencies, with the additional
requirement that the compiler must support arbitrarily long string
literals. Maximum input size that can be encoded while still producing
standard-compliant output is ~276 bytes for C89, and ~3168 bytes for
C99.</p>
<p><code>Nyaruko</code> has been to verified to work with these
compiler/OS combinations:</p>
<ul>
<li>gcc 4.4.5 on Linux (32bit and 64bit)</li>
<li>clang 3.1 on Windows (Cygwin)</li>
<li>gcc 4.5.3 on Windows (Cygwin)</li>
<li>gcc 4.5.3 on Windows (MingW)</li>
<li>gcc 4.3.5 on JSLinux</li>
<li>tcc 0.9.25 on JSLinux</li>
</ul>
<p>Note that on MingW, <code>stdin</code> and <code>stdout</code> are
not opened in binary mode by default, this means <code>Nyaruko</code>
may not faithfully encode files on MingW.</p>
<h3 id="extra-files">Extra files</h3>
<p><a href="spoiler.html">spoiler.html</a> - Contains full recording of
how the code went from blank state to an obfuscated program, gzipped to
fit under 1MB. Requires JavaScript.</p>
<h2 id="copyright-and-cc-by-sa-4.0-license">Copyright and CC BY-SA 4.0
License:</h2>
<p>This file is Copyright (c) 2023 by Landon Curt Noll. All Rights
Reserved. You are free to share and adapt this file under the terms of
this license:</p>
<pre><code>Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</code></pre>
<p>For more information, see:
https://creativecommons.org/licenses/by-sa/4.0/</p>
<!-- START: this line starts content generated by: bin/gen-inventory.sh -->
<h1 id="inventory-for-2012omoikane"><a name="inventory"></a>Inventory
for 2012/omoikane</h1>
<h2 id="primary-files">Primary files</h2>
<ul>
<li><a href="index.html">index.html</a> - winner home page</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/omoikane/Makefile">Makefile</a>
- winner Makefile</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/omoikane/nyaruko.alt.c">nyaruko.alt.c</a>
- alternative source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/omoikane/nyaruko.alt2.c">nyaruko.alt2.c</a>
- alternate alternative source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/omoikane/nyaruko.orig.c">nyaruko.orig.c</a>
- original source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/omoikane/nyaruko.c">nyaruko.c</a>
- source to generate random data</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/omoikane/try.alt.sh">try.alt.sh</a>
- how to run alternative code</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/omoikane/try.sh">try.sh</a>
- how to run</li>
<li><a href="spoiler.html">spoiler.html</a> - SPOILER WARNING</li>
<li><a href="2012_omoikane.tar.bz2">2012_omoikane.tar.bz2</a> - download
winning source</li>
</ul>
<h2 id="secondary-files">Secondary files</h2>
<ul>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/omoikane/.gitignore">.gitignore</a>
- list of files that should not be committed under git</li>
<li><a href=".path">.path</a> - directory path from top directory</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/omoikane/.winner.json">.winner.json</a>
- description of winner in JSON</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/omoikane/README.md">README.md</a>
- markdown source for index.html</li>
</ul>
<!-- END: next line ends content generated by: bin/gen-inventory.sh -->
<!-- START: this line starts content from: inc/after-content.default.html -->
<!-- END: this line ends content from: inc/after-content.default.html -->
<!-- START: this line starts content from: inc/end-rightcolumn.default.html -->
</div>
<!-- END: this line ends content from: inc/end-rightcolumn.default.html -->
<!-- START: this line starts content from: inc/end-row.default.html -->
</div>
<!-- END: this line ends content from: inc/end-row.default.html -->
<!-- START: this line starts content from: inc/footer.default.html -->
<div class="footer">
<hr>
<h2>Coda</h2>
<p><a href="https://validator.w3.org/nu/?doc=https%3A%2F%2Fioccc-src.github.io%2Ftemp-test-ioccc%2F2012%2Fomoikane%2Findex.html">Nu HTML check this web page</a></p>
<p><a href="#top">Jump to top</a> <a href="#content">Jump to Content</a> <a href="#inventory">Jump to Inventory</a></p>
</div>
<!-- END: this line ends content from: inc/footer.default.html -->
<!-- START: this line starts content from: inc/bottom.default.html -->
</body>
</html>
<!-- END: this line ends content from: inc/bottom.default.html -->