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

+6 -6
View File
@@ -111,9 +111,9 @@ additional chunks are copied into the resulting image.
For some reason the chocolate image seems to have some special properties.
Apart from being quite big and a little bit noisy, it appears that when embedded
into another image and extracted, the bitmap data is also a valid
[brain$#@$](https://en.wikipedia.org/wiki/Brainfuck) program. It is of course
[brain\$#@\$](https://en.wikipedia.org/wiki/Brainfuck) program. It is of course
possible to get the bitmap data from the extracted image, and run it through any
of the previous winning brain$#@$ interpreters, but I thought it would be easier
of the previous winning brain\$#@\$ interpreters, but I thought it would be easier
to include an interpreter in the program to avoid the hassle:
```sh
@@ -122,7 +122,7 @@ to include an interpreter in the program to avoid the hassle:
```
It is of course also possible to embed a
[brain$#@$](https://en.wikipedia.org/wiki/Brainfuck) program as a text file
[brain\$#@\$](https://en.wikipedia.org/wiki/Brainfuck) program as a text file
(as explained above) and decode it, e.g.:
```sh
@@ -172,7 +172,7 @@ program to crash.
Since a lot of care was taken to keep the code simple, it turned out to be
quite easy to extend functionality. I did include a small
[brain$#@$](https://en.wikipedia.org/wiki/Brainfuck) after I
[brain\$#@\$](https://en.wikipedia.org/wiki/Brainfuck) after I
realized that the chocolate image had some interesting properties.
But there is more functionality I added that didn't fit within the size
@@ -181,9 +181,9 @@ format source code based on a PNG image. So the format of the program is
actually done by the program itself.
And to be honest, the chocolate image did not have a
[brain$#@$](https://en.wikipedia.org/wiki/Brainfuck) program
[brain\$#@\$](https://en.wikipedia.org/wiki/Brainfuck) program
embedded to begin with. I added functionality to the program to embed a
brain$#@$ into a PNG image and used it to create the image provided with
brain\$#@\$ into a PNG image and used it to create the image provided with
the entry.
I also added a method to analyze PNG images, to print the size and format,
+298 -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,310 @@
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- -->
<!-- file: 2012/vik/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 vik</title>
<meta name="description" content="IOCCC year: 2012 IOCCC winner: vik winner index page">
<meta name="keywords" content="IOCCC,2012,vik,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/vik</title>
<meta name="description" content="2012 IOCCC winner vik">
<meta name="keywords" content="IOCCC, 2012, IOCCC 2012, IOCCC winner, vik">
</head>
<!-- END: this line ends content from: inc/head.default.html -->
<!-- START: this line starts content from: inc/body.default.html -->
<body>
<h1>2012 vik</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/vik</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%2Fvik%2Findex.html">Nu Html check https://ioccc-src.github.io/temp-test-ioccc/2012/vik/index.html</a></p>
<!-- End Nu Html Checker -->
<div class="topnav">
<a class="Left" href="../tromp/index.html">&larr; tromp</a>
<a class="Left" href="../index.html">&uarr; 2012 &uarr;</a>
<a class="Left" href="../zeitak/index.html">zeitak &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#Daniel_Vik">Daniel Vik</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>This entry requires <a href="https://www.zlib.net">Zlib</a>.</p>
<p>There is an alternate version which might work for Windows. See <a
href="#alternate-code">Alternate code</a> section below.</p>
<h3 id="bugs-and-misfeatures">Bugs and (Mis)features:</h3>
<p>The current status of this entry is:</p>
<pre><code>STATUS: INABIAF - please **DO NOT** fix</code></pre>
<p>For more detailed information see <a href="/bugs.md#2012-vik">2012
vik in bugs.md</a>.</p>
<h2 id="to-use">To use:</h2>
<p>To embed text (from file or command line):</p>
<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">./vik</span> e base.png filename <span class="op">&gt;</span> encodedimg.png</span></code></pre></div>
<p>or</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="ex">./vik</span> e base.png SomeRandomText <span class="op">&gt;</span> encodedimg.png</span></code></pre></div>
<p>To extract the embedded text:</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="ex">./vik</span> d encodedimg.png</span></code></pre></div>
<p>To embed a PNG into another:</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">./vik</span> e base.png source.png <span class="op">&gt;</span> encodedimg.png</span></code></pre></div>
<p>To extract the embedded PNG:</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">./vik</span> d encodedimg.png <span class="op">&gt;</span> restored.png</span></code></pre></div>
<h2 id="try">Try:</h2>
<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="ex">./try.sh</span></span></code></pre></div>
<h2 id="alternate-code">Alternate code:</h2>
<p>For those few who might use Windows this alternate code might
work.</p>
<h3 id="alternate-build">Alternate build:</h3>
<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">make</span> alt</span></code></pre></div>
<h3 id="alternate-use">Alternate use:</h3>
<p>Use <code>vik.alt</code> as you would <code>vik</code> above.</p>
<h2 id="judges-remarks">Judges’ remarks:</h2>
<p>References to chocolate had no effect on judging this entry. We
guarantee it.</p>
<p>Can you discern hidden pieces of chocolate in <a
href="chocolate-in-ioccc.png">chocolate-in-ioccc.png</a>?</p>
<figure>
<img src="chocolate-in-ioccc.png" title="Chocolate in IOCCC"
alt="chocolate in ioccc" />
<figcaption aria-hidden="true">chocolate in ioccc</figcaption>
</figure>
<h2 id="authors-remarks">Author’s remarks:</h2>
<h3 id="introduction">Introduction</h3>
<p>This program is a <a
href="https://en.wikipedia.org/wiki/Steganography">steganography</a>
application for embedding an image or text into another image as well as
extracting the embedded image or text back. The program stores the
embedded image or text in the low bits of the RGB values.</p>
<p>The program supports any 8 bit true color PNG images (RGB, RGBA,
greyscale, and greyscale+alpha). The output image is always 8 bit RGB.
When embedding one image into another, the width and height needs to be
the same.</p>
<p>The program only updates the <code>IDAT</code> and <code>IHDR</code>
chunks of the source image. Any additional chunks are copied into the
resulting image.</p>
<h3 id="bonus-extractor">Bonus Extractor:</h3>
<p>For some reason the chocolate image seems to have some special
properties. Apart from being quite big and a little bit noisy, it
appears that when embedded into another image and extracted, the bitmap
data is also a valid <a
href="https://en.wikipedia.org/wiki/Brainfuck">brain$#@$</a> program. It
is of course possible to get the bitmap data from the extracted image,
and run it through any of the previous winning brain$#@$ interpreters,
but I thought it would be easier to include an interpreter in the
program to avoid the hassle:</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">./vik</span> e ioccc.png chocolate.png <span class="op">&gt;</span> encodedimg.png</span>
<span id="cb10-2"><a href="#cb10-2" aria-hidden="true" tabindex="-1"></a><span class="ex">./vik</span> b encodedimg.png</span></code></pre></div>
<p>It is of course also possible to embed a <a
href="https://en.wikipedia.org/wiki/Brainfuck">brain$#@$</a> program as
a text file (as explained above) and decode it, e.g.:</p>
<div class="sourceCode" id="cb11"><pre
class="sourceCode sh"><code class="sourceCode bash"><span id="cb11-1"><a href="#cb11-1" aria-hidden="true" tabindex="-1"></a><span class="ex">./vik</span> e ioccc.png .+<span class="pp">[</span><span class="ss">.+</span><span class="pp">]</span> <span class="op">&gt;</span> encodedimg.png</span>
<span id="cb11-2"><a href="#cb11-2" aria-hidden="true" tabindex="-1"></a><span class="ex">./vik</span> b encodedimg.png</span></code></pre></div>
<h3 id="obfuscation">Obfuscation</h3>
<p>I really wanted to keep the program simple, so instead of adding
multiple macros or helper methods that can be confusing, I placed all
functionality in the <code>main()</code> function. <code>main()</code>
is called recursively and quite extensively, but it gives the benefit
that all invocations of the function have the same parameters,
<code>argv</code> and <code>argc</code>. This really helps readability,
as a programmer doesn’t need to remember several variable or function
names. I also tried to reduce the number of keywords, and the program
only has four <code>for</code> loops followed by a single
<code>return</code> statement. There is a little bit of use of the
ternary (<code>?:</code>) operator, but this is really there to keep the
program as simple as possible.</p>
<h3 id="portability">Portability</h3>
<p>The program is portable to most platforms that have <a
href="https://www.zlib.net">zlib</a> available. The only system
dependency is that the program relies on writing binary data to
<code>stdout</code>.</p>
<p>By default, Microsoft compilers adds carriage returns to new lines,
and to compile the program on this platform, the following line can be
added after the variable declarations in the main declaration in order
to run correctly:</p>
<div class="sourceCode" id="cb12"><pre class="sourceCode c"><code class="sourceCode c"><span id="cb12-1"><a href="#cb12-1" aria-hidden="true" tabindex="-1"></a>_setmode<span class="op">(</span>_fileno<span class="op">(</span>stdout<span class="op">),</span> <span class="bn">0x8000</span><span class="op">);</span></span></code></pre></div>
<p>NOTE: this is what the <a href="#alternate-code">Alternate code</a>
does.</p>
<h3 id="limitations">Limitations</h3>
<p>The program doesn’t have many error checks so passing in invalid
arguments or images of mismatching sizes, or unsupported pixel formats
will cause the program to crash.</p>
<h3 id="extendability">Extendability</h3>
<p>Since a lot of care was taken to keep the code simple, it turned out
to be quite easy to extend functionality. I did include a small <a
href="https://en.wikipedia.org/wiki/Brainfuck">brain$#@$</a> after I
realized that the chocolate image had some interesting properties.</p>
<p>But there is more functionality I added that didn’t fit within the
size limits and could not remain included. For example, I added a method
to format source code based on a PNG image. So the format of the program
is actually done by the program itself.</p>
<p>And to be honest, the chocolate image did not have a <a
href="https://en.wikipedia.org/wiki/Brainfuck">brain$#@$</a> program
embedded to begin with. I added functionality to the program to embed a
brain$#@$ into a PNG image and used it to create the image provided with
the entry.</p>
<p>I also added a method to analyze PNG images, to print the size and
format, as well as the scan line filters.</p>
<p>All these features were quite easy to add, much thanks to the
(actually pretty good) design of the code.</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-2012vik"><a name="inventory"></a>Inventory for
2012/vik</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/vik/vik.c">vik.c</a>
- winning source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/vik/Makefile">Makefile</a>
- winner Makefile</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/vik/vik.alt.c">vik.alt.c</a>
- alternative source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/vik/vik.orig.c">vik.orig.c</a>
- original source</li>
<li><a href="chocolate.png">chocolate.png</a> - encoding image</li>
<li><a href="ioccc.png">ioccc.png</a> - encoding image</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/vik/try.sh">try.sh</a>
- how to run</li>
<li><a href="2012_vik.tar.bz2">2012_vik.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/vik/.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/vik/.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/vik/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%2Fvik%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 -->