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

+282 -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,294 @@
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- -->
<!-- file: 2004/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>2004 omoikane</title>
<meta name="description" content="IOCCC year: 2004 IOCCC winner: omoikane winner index page">
<meta name="keywords" content="IOCCC,2004,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>2004/omoikane</title>
<meta name="description" content="2004 IOCCC winner omoikane">
<meta name="keywords" content="IOCCC, 2004, IOCCC 2004, 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>2004 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>2004/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%2F2004%2Fomoikane%2Findex.html">Nu Html check https://ioccc-src.github.io/temp-test-ioccc/2004/omoikane/index.html</a></p>
<!-- End Nu Html Checker -->
<div class="topnav">
<a class="Left" href="../newbern/index.html">&larr; newbern</a>
<a class="Left" href="../index.html">&uarr; 2004 &uarr;</a>
<a class="Left" href="../schnitzi/index.html">schnitzi &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>
<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">./omoikane</span> infile layout outfile</span></code></pre></div>
<h2 id="try">Try:</h2>
<pre><code>./omoikane omoikane.info omoikane.info omoikane.output</code></pre>
<h2 id="judges-remarks">Judges’ remarks:</h2>
<p>For extra credit, spot the checksum in the source file itself. What
makes this one particularly interesting is that the checksum, strictly
speaking, isn’t being computed at all. Rather, the file is modified to
have the desired checksum! This does, we suppose, solve the problem that
inserting a checksum would change the file’s checksum; if you have to
change it, you might as well change it!</p>
<p>This program was submitted under the name <code>Rinia</code>, so the
Author’s Comments refer to it as such.</p>
<h2 id="authors-remarks">Author’s remarks:</h2>
<h3 id="rinia-11404"><code>Rinia</code> (1/14/04)</h3>
<p><code>Rinia</code> is a tool for embedding CRCs in text files. No
need to assign strange file names or package .SFVs with your files!
<code>Rinia</code> will insert a human-readable checksum string in the
text itself! <code>^_^</code></p>
<h3 id="usage">Usage</h3>
<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="ex">./omoikane</span> <span class="op">&lt;</span>infile<span class="op">&gt;</span> <span class="op">&lt;</span>layout<span class="op">&gt;</span> <span class="op">&lt;</span>outfile<span class="op">&gt;</span></span></code></pre></div>
<p>All three arguments may reference the same file. All files is assumed
to be of ASCII character set.</p>
<h3 id="input">Input</h3>
<p>Any file larger than 8 bytes is valid. Upper limit on file size is
limited by memory.</p>
<p>If input file can’t be loaded for any reason, <code>Rinia</code> will
say “bad input” and exit immediately.</p>
<h3 id="layout">Layout</h3>
<p>The layout file contains a map of where <code>Rinia</code> can patch.
The content consists of marker characters (where <code>Rinia</code> is
allowed to change in the original text) and other characters (where the
original text will stay as is). <code>Rinia</code> will select the
marker character using these heuristics:</p>
<ol type="1">
<li>Ignore all space/control/extended characters.</li>
<li>Select characters that appeared 8 times in a row.</li>
<li>Of those selected characters, pick one with the lowest
frequency.</li>
</ol>
<p>One way to create the layout file is to make a copy of the original
file, replace where you want <code>Rinia</code> to match with a rare
character, then replace the remaining ones with space. Often it’s
possible to write the original file in such a way that it can be used as
a layout.</p>
<p>Example file/layout:</p>
<pre><code>file: layout:
crc = ######## ... . XXXXXXXX
patch = ###### ..... . XXXXXX
other text here ..... .... ....</code></pre>
<p>And <code>Rinia</code> may generate a file similar to this:</p>
<pre><code>crc = 1bad73cf
patch = #FR-QQ
other text here</code></pre>
<p>Note that the original file by itself is a valid layout file, since
<code>Rinia</code> will recognize that only <code>#</code> marks enough
space to hold the checksum, and has the lowest frequency.</p>
<p>If layout file can’t be used for any reason, <code>Rinia</code> will
say “bad layout” and exit immediately.</p>
<h3 id="output-m">Output m</h3>
<p>If <code>Rinia</code> finds a usable checksum, she will say “OK.” and
write to the specified output file. Otherwise the exit message is “fail”
and nothing is written.</p>
<p>Chances of success and how long it takes to run to completion is
completely dominated by the layout file design. In general,
<code>Rinia</code> runs faster if the checksum is placed before the
other marker characters rather than after, e.g.:</p>
<pre><code> a: X X XXX b: XXXXXXXX c: XXXXXXXX
XXXXXXXX X X XXX XXXXX
</code></pre>
<p><code>a</code> usually takes the longest time, while <code>c</code>
usually is the fastest.</p>
<p>That said, each run is randomized with respect to system time, so
it’s not always certain whether <code>Rinia</code> will succeed in a
short time or not. In general, 5 marker characters are sufficient, and
takes a few minutes.</p>
<p>For reference, <code>rinia.c</code> was produced on a 1.7GHz machine
(the checksum is at line 17). Out of 25 runs, the shortest was 2 seconds
while the longest took 5 minutes. Average was about a minute. Checksum
for this file (<code>b7a81524</code>) took about 4 minutes.</p>
<h3 id="algorithm">Algorithm</h3>
<p>Inserting a checksum in the file you are computing the checksum of
isn’t quite trivial, since changing the file content would change the
final checksum value.</p>
<p>To insert the checksum, <code>Rinia</code> first assumes a random
final checksum, inserts that string, then modifies other parts to
compensate for the change in content.</p>
<p>The compensation bytes are very easy to compute for binary files with
enough consecutive scratch areas, but for text files with
non-consecutive areas and limited degrees of freedom, <code>Rinia</code>
has to try out all character combinations. This is done in a
hierarchical fashion, computing only smallest partial checksum after
each change.</p>
<p>For computers a few years old, this is probably still too slow to be
acceptable… but at the speed the IOCCC judges run the contest these
days, I am sure you have enough patience for it <code>_^</code></p>
<h3 id="source-code">Source code</h3>
<p><code>rinia.c</code> should compile anywhere (but with a few
warnings). I don’t have a big-endian machine to test but
<code>Rinia</code> should work there as well. ASCII character set
required though.</p>
<p>Code is formatted to the shape of “<code>Rinia</code>” from the
anime/game “Moekko Company”. Of course at 90x50 it’s hard to recognize
anything <code>^_^</code></p>
<p><code>Rinia</code> is the slow but hardworking android. On some jobs
she does very well, on others she would spend lots of time and effort
but still fail…</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-2004omoikane"><a name="inventory"></a>Inventory
for 2004/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/2004/omoikane/omoikane.c">omoikane.c</a>
- winning source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2004/omoikane/Makefile">Makefile</a>
- winner Makefile</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2004/omoikane/omoikane.orig.c">omoikane.orig.c</a>
- original source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2004/omoikane/omoikane.info">omoikane.info</a>
- information about Rinia</li>
<li><a href="2004_omoikane.tar.bz2">2004_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/2004/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/2004/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/2004/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%2F2004%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 -->