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

+310 -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,322 @@
<!-- !!! DO NOT MODIFY THIS FILE - This file is generated by a tool !!! -->
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<!-- -->
<!-- file: 2012/deckmyn/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 deckmyn</title>
<meta name="description" content="IOCCC year: 2012 IOCCC winner: deckmyn winner index page">
<meta name="keywords" content="IOCCC,2012,deckmyn,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/deckmyn</title>
<meta name="description" content="2012 IOCCC winner deckmyn">
<meta name="keywords" content="IOCCC, 2012, IOCCC 2012, IOCCC winner, deckmyn">
</head>
<!-- END: this line ends content from: inc/head.default.html -->
<!-- START: this line starts content from: inc/body.default.html -->
<body>
<h1>2012 deckmyn</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/deckmyn</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%2Fdeckmyn%2Findex.html">Nu Html check https://ioccc-src.github.io/temp-test-ioccc/2012/deckmyn/index.html</a></p>
<!-- End Nu Html Checker -->
<div class="topnav">
<a class="Left" href="../blakely/index.html">&larr; blakely</a>
<a class="Left" href="../index.html">&uarr; 2012 &uarr;</a>
<a class="Left" href="../dlowe/index.html">dlowe &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#Alex_Deckmyn">Alex Deckmyn</a><br>
Location: <a href="/temp-test-ioccc/location.html#BE">BE</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>
<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-deckmyn">2012 deckmyn in bugs.md</a>.</p>
<h2 id="to-use">To use:</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">./deckmyn</span> <span class="st">&quot;</span><span class="va">$(</span><span class="fu">cat</span> deckmyn.c<span class="va">)</span><span class="st">&quot;</span> <span class="st">&quot;</span><span class="va">$(</span><span class="fu">cat</span> musicfile.txt<span class="va">)</span><span class="st">&quot;</span> <span class="op">&gt;</span> sheetmusic.pbm</span></code></pre></div>
<h2 id="try">Try:</h2>
<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">./try.sh</span></span></code></pre></div>
<h2 id="judges-remarks">Judges’ remarks:</h2>
<p>The C of this entry is definitely sharp. The program cleverly uses
its own source at runtime to define the notes, time signature and
accidental bitmaps.</p>
<p>In addition to sheet music, this program is also able to, given the
right input, generate an image of a 10-pin <a
href="https://en.wikipedia.org/wiki/Dual_in-line_package">DIP chip</a>
(a sound processor?).</p>
<h3 id="historical-remarks">Historical remarks:</h3>
<p>We previously wrote that ironically, the way this entry is called
from the command line is an abuse of <a
href="https://en.wikipedia.org/wiki/C_shell">C Shell</a>. Please use <a
href="https://en.wikipedia.org/wiki/Bourne_shell">Bourne-family
shells</a> to run this entry.</p>
<p>… but in 2023 we changed the backticks to be the bash
<code>$(..)</code> construct. This is not done in the author’s remarks,
however.</p>
<h2 id="authors-remarks">Author’s remarks:</h2>
<h3 id="example-use">Example use</h3>
<p>You need the source code and example input (either one of the example
files, or manual input as below) ready and a program capable of showing
<a href="https://en.wikipedia.org/wiki/Netpbm">.pbm bitmap format</a>
images.</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">./deckmyn</span> <span class="st">&quot;</span><span class="kw">`</span><span class="fu">cat</span> deckmyn.c<span class="kw">`</span><span class="st">&quot;</span> <span class="st">&quot;</span><span class="kw">`</span><span class="fu">cat</span> example_greensleeves<span class="kw">`</span><span class="st">&quot;</span> <span class="op">&gt;</span> greensleeves.pbm</span></code></pre></div>
<p>If you have macOS you can open the image like:</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">open</span> greensleeves.pbm</span></code></pre></div>
<p>… otherwise, you’ll have to open it in your viewer of choice how you
would normally open an image.</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">./deckmyn</span> <span class="st">&quot;</span><span class="kw">`</span><span class="fu">cat</span> deckmyn.c<span class="kw">`</span><span class="st">&quot;</span> <span class="st">&quot;KF m44c4 c4 g4 g4 : a4 a4 g2 :; &quot;</span> <span class="op">&gt;</span> short_bass.pbm</span></code></pre></div>
<p>If you have macOS you can open the image like:</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="ex">open</span> short_bass.pbm</span></code></pre></div>
<p>… otherwise, you’ll have to open it in your viewer of choice how you
would normally open an image.</p>
<h3 id="description">Description</h3>
<p>Every major C competition should have an entry capable of producing C
major. This is a music notation program. It produces <a
href="https://en.wikipedia.org/wiki/Netpbm">bitmaps</a>
(<code>.pbm</code>) of music based on ASCII input. A full manual is
added as a <a href="deckmyn.md">separate file</a>. Some musical examples
are also included.</p>
<p>The program is capable of printing notes, rests, (double) bar lines
and accidentals on a single melodic line (multiple staves). No chords,
polyphony etc.</p>
<p>The program expects <em>two command line arguments</em>. The first is
a (very long) string that contains the complete music font. Note that it
should <em>not</em> be given as a file name! The default music font is
encoded in the (whitespace of the) source code <a
href="deckmyn.c">deckmyn.c</a> itself. Therefore, the first argument
should be <code>"``</code> <code>cat deckmyn.c</code>
<code>``"</code>.</p>
<p>The second command line argument is the music itself. This is, again,
a string, not a file name. All music signs are entered as tokens of
exactly 3 characters. The code is very sensitive to bad spacing! So for
instance, if you use a file to write the music (e.g. <a
href="example_greensleeves">example_greensleeves</a>), you should keep
in mind that newline is also a character!</p>
<h3 id="internals">Internals</h3>
<p>To minimise the memory footprint, this program has <em>no variable
declarations at all</em>, except for the arguments to
<code>main()</code>. The only available memory space is from the command
line arguments and count (<code>argv</code> and <code>argc</code>).
Parts of <code>argv</code> are cast as <code>int</code> when values
under 0 or beyond 127 are expected.</p>
<p>The “music font” is defined by the source code itself. The first few
lines are not part of the font definition, as this memory space will be
modified by the program. (So as required by the rules, it is only a
(memory) copy of the source code that is modified.)</p>
<p>As there is no memory available, output is directly to
<code>stdout</code>, byte by byte, from the top left to the bottom right
pixel.</p>
<h3 id="limitations">LIMITATIONS</h3>
<p>The memory locations of <code>argv</code> are used for various
purposes. Therefore, the program name (default <code>deckmyn</code>)
must be <em>at least 4 characters long</em>, including possibly the
path. This, along with the ending <code>'\0'</code>, gives minimum 5
bytes of useful memory space. Otherwise, the program may attempt to
write outside the string.</p>
<p>The code is quite sensitive. Errors in the input can lead to strange
results. The code does not read beyond the end of the music input, but
that is about the only error checking available. Any input that is not
according to the rules in the <a href="deckmyn.md">manual</a>, may cause
errors.</p>
<p>The program has no special hardware limitations or requirements,
other than 8bit <code>char</code> (<code>signed</code> or
<code>unsigned</code>) and two’s complement negatives.</p>
<p>The limitations of using <code>char</code> as counters for e.g. the
number of music staves are minor. 127 staves to a page is rather a
lot.</p>
<h3 id="obfuscations">Obfuscations</h3>
<p>The code has no declared variables other than the command line
variables. Not even pointers (we all know how messy code can get with
too many pointers!). As more than one variable needs values beyond 127,
parts of the command line memory are cast to <code>int</code> using a
macro.</p>
<ul>
<li>The formatting of the code is in fact necessary, as this is the
definition of the music font. It is therefore not an obfuscation.</li>
<li>The use of only <code>argv</code>/<code>argc</code> as memory
locations is a matter of reducing the memory footprint. Again, it is not
an obfuscation.</li>
<li>Calling the only remaining variables, and the two defined macros,
<code>c</code> and <code>C</code>, is merely a matter of conforming to
the standard <a href="https://en.wikipedia.org/wiki/WYSIWYG">WYSIWYG</a>
paradigm common in commercial notation programs (’What You
<code>C</code> is What You Get). So once again it is not an obfuscation.
Anyway, it’s a C coding contest, right?</li>
<li>Randomly using the numerical (ASCII) value for characters is
compensated for by replacing some numbers by a character representation.
On average, therefore, it is not an obfuscation.</li>
<li>Randomly changing the way the elements of <code>argv</code> are
addressed is a matter of maintaining a diversified code base. It is
therefore not… Oh all right.</li>
<li>The actual output of the music is done by one <code>printf(3)</code>
call including a 800+ character nested conditional expression.</li>
<li><code>printf()</code> is also used for its return value.</li>
</ul>
<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-2012deckmyn"><a name="inventory"></a>Inventory for
2012/deckmyn</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/deckmyn/deckmyn.c">deckmyn.c</a>
- winning source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/deckmyn/Makefile">Makefile</a>
- winner Makefile</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/deckmyn/deckmyn.orig.c">deckmyn.orig.c</a>
- original source</li>
<li><a href="deckmyn.html">deckmyn.html</a> - user manual</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/deckmyn/example_beethoven">example_beethoven</a>
- music notation</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/deckmyn/example_greensleeves">example_greensleeves</a>
- music notation</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/deckmyn/try.sh">try.sh</a>
- how to run</li>
<li><a href="2012_deckmyn.tar.bz2">2012_deckmyn.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/deckmyn/.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/deckmyn/.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/deckmyn/README.md">README.md</a>
- markdown source for index.html</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2012/deckmyn/deckmyn.md">deckmyn.md</a>
- markdown source for design.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%2Fdeckmyn%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 -->