force use of pandoc version >= 3.1.12.2

The `bin/pandoc-wrapper.sh` tool will verify that the ssytem
has a recent enough version of `pandoc(1)`.

We explain why we insist on `pandoc(1)`. version >= 3.1.12.2
in comments where the $PANDOC_MIN_VERSION is set.

Added `--wrap=preserve` as a default argument to `pandoc(1)`.
While this change will impact every HTML file generated,
we believe this will improve the ability of someone to look
at the generated HTML and correlate with the original markdown.

Changed `bin/pandoc-wrapper.sh` VERSION from "1.4.2 2024-03-17"
to "1.4.3 2024-03-18".

Performed `make www` to achieve all of the above and to generate
HTML using the new  `--wrap=preserve` `pandoc(1)` mode.
This commit is contained in:
Landon Curt Noll committed 2024-03-18 01:26:39 -07:00
1 parent 9eb7a54e9f
commit b0b212acb1
402 files changed
+37061 -55132

No files matched your search

+50 -80
View File
@@ -130,8 +130,8 @@
<h2 id="author"><a name="author"></a>Author:</h2>
<ul>
<li>Name: <a href="../../authors.html#Don_Yang">Don Yang</a><br>
Location: <a href="../../location.html#US">US</a> - <em>United States of
America</em> (<em>United States</em>) <br><br></li>
Location: <a href="../../location.html#US">US</a> - <em>United States of America</em> (<em>United States</em>)
<br><br></li>
</ul>
<!-- END: next line ends content generated by: bin/output-index-author.sh -->
@@ -146,48 +146,41 @@ America</em> (<em>United States</em>) <br><br></li>
<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>
<h2 id="judges-remarks">Judges’ remarks:</h2>
<p>Before analysing the code in detail we were able to guess two out of
four tests this entry uses to tell the 5 languages/flavors apart. Can
you find all four?</p>
<p>The way the text is encoded in the output doesn’t cease to amaze. Can
you tell why an array of 512 elements is needed?</p>
<p>NOTE: the author calls the program <code>Fuuko</code> and so the
source file referred to in their remarks uses <code>fuuko.c</code>. The
<a href="Makefile">Makefile</a> will compile everything so you need not
worry about this.</p>
<p>Before analysing the code in detail we were able to guess two out of four tests
this entry uses to tell the 5 languages/flavors apart. Can you find all four?</p>
<p>The way the text is encoded in the output doesn’t cease to amaze. Can you tell
why an array of 512 elements is needed?</p>
<p>NOTE: the author calls the program <code>Fuuko</code> and so the source file referred to in
their remarks uses <code>fuuko.c</code>. The <a href="Makefile">Makefile</a> will compile everything
so you need not worry about this.</p>
<h2 id="authors-remarks">Author’s remarks:</h2>
<p><code>Fuuko</code> is a <a
href="https://en.wikipedia.org/wiki/Starfish">sea star</a> generator.
Feed her some input through <code>stdin</code> to get lots of sea star
patterns on <code>stdout</code>.</p>
<p><code>Fuuko</code> is a <a href="https://en.wikipedia.org/wiki/Starfish">sea star</a> generator. Feed
her some input through <code>stdin</code> to get lots of sea star patterns on <code>stdout</code>.</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">cc</span> <span class="at">-O3</span> <span class="at">-std</span><span class="op">=</span>c90 fuuko.c <span class="at">-lm</span> <span class="at">-o</span> fuuko_c90</span>
<span id="cb4-2"><a href="#cb4-2" aria-hidden="true" tabindex="-1"></a><span class="bu">echo</span> IOCCC <span class="kw">|</span> <span class="ex">./fuuko_c90</span> <span class="op">&gt;</span> output_c90.c</span></code></pre></div>
<p>If you compile with a C99 compiler instead of C90, the sea stars will
have eyes.</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">cc</span> <span class="at">-O3</span> <span class="at">-std</span><span class="op">=</span>c99 fuuko.c <span class="at">-lm</span> <span class="at">-o</span> fuuko_c99</span>
<span id="cb5-2"><a href="#cb5-2" aria-hidden="true" tabindex="-1"></a><span class="bu">echo</span> IOCCC <span class="kw">|</span> <span class="ex">./fuuko_c99</span> <span class="op">&gt;</span> output_c99.c</span></code></pre></div>
<p>Don’t like <a href="https://en.wikipedia.org/wiki/Starfish">sea
stars</a>? Use a C++98 compiler to get a <a
href="https://en.wikipedia.org/wiki/Dango">dango</a> instead.</p>
<p>Don’t like <a href="https://en.wikipedia.org/wiki/Starfish">sea stars</a>? Use a C++98
compiler to get a <a href="https://en.wikipedia.org/wiki/Dango">dango</a> instead.</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">g++</span> <span class="at">-O3</span> <span class="at">-std</span><span class="op">=</span>c++98 fuuko.c <span class="at">-lm</span> <span class="at">-o</span> fuuko_cpp98</span>
<span id="cb6-2"><a href="#cb6-2" aria-hidden="true" tabindex="-1"></a><span class="bu">echo</span> IOCCC <span class="kw">|</span> <span class="ex">./fuuko_cpp98</span> <span class="op">&gt;</span> output_cpp98.c</span></code></pre></div>
<p>Don’t like <a href="https://en.wikipedia.org/wiki/Dango">dango</a>
either? Use a C++11 compiler to get just <a
href="https://en.wikipedia.org/wiki/Circle">circles</a> (or <a
href="https://en.wikipedia.org/wiki/Swiss_cheeses_and_dairy_products">Swiss
cheese</a>, if you prefer that).</p>
<p>Don’t like <a href="https://en.wikipedia.org/wiki/Dango">dango</a> either? Use a C++11
compiler to get just <a href="https://en.wikipedia.org/wiki/Circle">circles</a> (or <a href="https://en.wikipedia.org/wiki/Swiss_cheeses_and_dairy_products">Swiss
cheese</a>, if you
prefer that).</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">g++</span> <span class="at">-O3</span> <span class="at">-std</span><span class="op">=</span>c++11 fuuko.c <span class="at">-lm</span> <span class="at">-o</span> fuuko_cpp11</span>
<span id="cb7-2"><a href="#cb7-2" aria-hidden="true" tabindex="-1"></a><span class="bu">echo</span> IOCCC <span class="kw">|</span> <span class="ex">./fuuko_cpp11</span> <span class="op">&gt;</span> output_cpp11.c</span></code></pre></div>
<p>Don’t like any of these patterns? Use a C11 compiler and there will
be no extra pattern.</p>
<p>Don’t like any of these patterns? Use a C11 compiler and there will be
no extra pattern.</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">cc</span> <span class="at">-O3</span> <span class="at">-std</span><span class="op">=</span>c11 fuuko.c <span class="at">-lm</span> <span class="at">-o</span> fuuko_c11</span>
<span id="cb8-2"><a href="#cb8-2" aria-hidden="true" tabindex="-1"></a><span class="bu">echo</span> IOCCC <span class="kw">|</span> <span class="ex">./fuuko_c11</span> <span class="op">&gt;</span> output_c11.c</span></code></pre></div>
<p>Regardless of which of these C/C++ dialects you choose, the output
will all be valid C90 code that reproduces original input on
<code>stdout</code>, filled with pointer dereferences (C stars).</p>
will all be valid C90 code that reproduces original input on <code>stdout</code>,
filled with pointer dereferences (C stars).</p>
<p>Next time people ask you for a few pointers on C, you can run their
question through <code>Fuuko</code> and give them pointers all day
long.</p>
question through <code>Fuuko</code> and give them pointers all day long.</p>
<h3 id="compatibility">Compatibility</h3>
<p><code>Fuuko</code> has been tested under these environments:</p>
<ul>
@@ -205,76 +198,53 @@ probably cygwin bug)</li>
<h3 id="features">Features</h3>
<p>The most obscure parts are in detecting the subtle differences in
different dialects. The standard committees put a lot of effort into
avoiding “quiet changes”, but <code>Fuuko</code> is still able to
exploit a few of those. It should be an interesting exercise for the
reader to figure how she did it.</p>
<p>Output patterns are usually random (except for C11). The built-in
random number generator is seeded using <a
href="https://en.wikipedia.org/wiki/Address_space_layout_randomization">ASLR</a>.
On systems where ASLR is not so random (such as cygwin), you can
introduce randomness by changing number of command line arguments to
<code>Fuuko</code>.</p>
avoiding “quiet changes”, but <code>Fuuko</code> is still able to exploit a few of
those. It should be an interesting exercise for the reader to figure
how she did it.</p>
<p>Output patterns are usually random (except for C11). The built-in random number
generator is seeded using
<a href="https://en.wikipedia.org/wiki/Address_space_layout_randomization">ASLR</a>. On
systems where ASLR is not so random (such as cygwin), you can introduce
randomness by changing number of command line arguments to <code>Fuuko</code>.</p>
<p>Output is somewhat robust: corruption on most of the lines will
usually result in a compiler warning. This is because the output is
vastly redundant: For ~1K of input, expect output to be on the order of
~1MB, and take ~500MB of RAM to compile.</p>
<p><a
href="https://en.wikipedia.org/wiki/Computation_of_cyclic_redundancy_checks#CRC-32_algorithm">CRC32</a>
vastly redundant: For ~1K of input, expect output to be on the order
of ~1MB, and take ~500MB of RAM to compile.</p>
<p><a href="https://en.wikipedia.org/wiki/Computation_of_cyclic_redundancy_checks#CRC-32_algorithm">CRC32</a>
of source code is embedded in the source code itself.</p>
<p>The process of writing this program can be seen by opening <a
href="spoiler.html">spoiler.html</a> in a browser that supports
JavaScript.</p>
<p>Code layout is inspired by <a
href="https://clannad.fandom.com/wiki/Fuko_Ibuki">Ibuki Fuuko</a>, for
her love of sea stars.</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>
<p>The process of writing this program can be seen by opening
<a href="spoiler.html">spoiler.html</a> in a browser that supports JavaScript.</p>
<p>Code layout is inspired by <a href="https://clannad.fandom.com/wiki/Fuko_Ibuki">Ibuki
Fuuko</a>, for her love of sea stars.</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>
<p>For more information, see: https://creativecommons.org/licenses/by-sa/4.0/</p>
<!-- END: this line ends content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<!-- START: this line starts content for HTML phase 22 by: bin/output-index-inventory.sh via bin/md2html.sh -->
<!-- START: this line starts content generated by: bin/output-index-inventory.sh -->
<h1 id="inventory-for-2015yang"><a name="inventory"></a>Inventory for
2015/yang</h1>
<h1 id="inventory-for-2015yang"><a name="inventory"></a>Inventory for 2015/yang</h1>
<p><a href="#top">Jump to top</a></p>
<h2 id="primary-files">Primary files</h2>
<ul>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/yang/prog.c">prog.c</a>
- entry source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/yang/Makefile">Makefile</a>
- entry Makefile</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/yang/prog.orig.c">prog.orig.c</a>
- original source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/yang/try.sh">try.sh</a>
- how to run</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/yang/prog.c">prog.c</a> - entry source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/yang/Makefile">Makefile</a> - entry Makefile</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/yang/prog.orig.c">prog.orig.c</a> - original source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/yang/try.sh">try.sh</a> - how to run</li>
<li><a href="spoiler.html">spoiler.html</a> - SPOILER WARNING</li>
<li><a href="2015_yang.tar.bz2">2015_yang.tar.bz2</a> - download entry
source</li>
<li><a href="2015_yang.tar.bz2">2015_yang.tar.bz2</a> - download entry source</li>
</ul>
<h2 id="secondary-files">Secondary files</h2>
<ul>
<li><a href="index.html">index.html</a> - entry home page</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/yang/.entry.json">.entry.json</a>
- description of entry in JSON</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/yang/.gitignore">.gitignore</a>
- list of files that should not be committed under git</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/yang/.entry.json">.entry.json</a> - description of entry in JSON</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/yang/.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/2015/yang/README.md">README.md</a>
- markdown source for index.html</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/yang/README.md">README.md</a> - markdown source for index.html</li>
</ul>
<!-- END: next line ends content generated by: bin/output-index-inventory.sh -->