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

+85 -125
View File
@@ -129,9 +129,9 @@
<h2 id="author"><a name="author"></a>Author:</h2>
<ul>
<li>Name: <a href="../../authors.html#Etienne_Duble">Etienne
Duble</a><br> Location: <a href="../../location.html#FR">FR</a> -
<em>French Republic</em> (<em>France</em>) <br><br></li>
<li>Name: <a href="../../authors.html#Etienne_Duble">Etienne Duble</a><br>
Location: <a href="../../location.html#FR">FR</a> - <em>French Republic</em> (<em>France</em>)
<br><br></li>
</ul>
<!-- END: next line ends content generated by: bin/output-index-author.sh -->
@@ -141,20 +141,18 @@ Duble</a><br> Location: <a href="../../location.html#FR">FR</a> -
<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 of this entry, discussed in the
author’s remarks. See <a href="#alternate-code">Alternate code</a>
below.</p>
<p>There is an alternate version of this entry, discussed in the author’s remarks.
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="bu">echo</span> Some text <span class="kw">|</span> <span class="ex">./prog</span></span></code></pre></div>
<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>As the script says if you want to move to the next command at any
point (lorem-ipsum.txt takes a while to print in particular) you may do
so by hitting ctrl-c/sending intr.</p>
<p>As the script says if you want to move to the next command at any point
(lorem-ipsum.txt takes a while to print in particular) you may do so by hitting
ctrl-c/sending intr.</p>
<h2 id="alternate-code">Alternate code:</h2>
<p>This alternate code, provided by the author, is discussed in more
detail by the author in the ‘<a href="prog.c">prog.c</a> vs <a
href="prog.alt.c">prog.alt.c</a>’ section of their remarks.</p>
<p>This alternate code, provided by the author, is discussed in more detail by the
author in the ‘<a href="prog.c">prog.c</a> vs <a href="prog.alt.c">prog.alt.c</a>’ section of their remarks.</p>
<h3 id="alternate-build">Alternate build:</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="fu">make</span> alt</span></code></pre></div>
<h3 id="alternate-use">Alternate use:</h3>
@@ -162,29 +160,24 @@ href="prog.alt.c">prog.alt.c</a>’ section of their remarks.</p>
<h2 id="judges-remarks">Judges’ remarks:</h2>
<p>Beautiful penmanship! However, your fonts may vary.</p>
<p>How does this entry compress the font it uses? What’s the purpose of
<code>lrand48(3)</code>? Why does the program dump core, when it does :)
?</p>
<code>lrand48(3)</code>? Why does the program dump core, when it does :) ?</p>
<h2 id="authors-remarks">Author’s remarks:</h2>
<h3 id="introduction">Introduction</h3>
<p>This program <strong>prints text in your terminal with an interesting
hand-writing effect</strong>.</p>
<p>It uses the <em>Braille patterns</em> range of the unicode standard:
this allows to consider each terminal character as a tiny 2x4
bitmap.</p>
<p>It uses the <em>Braille patterns</em> range of the unicode standard: this
allows to consider each terminal character as a tiny 2x4 bitmap.</p>
<p>Turning the Braille code into something visual might be considered
blasphemous. When I was fighting to make this program work, I started
wondering if it was not the reason for its very erratic behaviour.</p>
<h3 id="prog.c-vs-prog.alt.c"><a href="prog.c">prog.c</a> vs <a
href="prog.alt.c">prog.alt.c</a></h3>
<p>The file <a href="prog.alt.c">prog.alt.c</a> is the one I
submitted.</p>
<p><a href="../../authors.html#Gil_Dogon">Gil Dogon</a> noted a few
unsafe statements (statements whose behaviour is undefined in the C
standard and, as such, could cause issues with other compilers or
optimization levels). These have been fixed in <a
href="prog.c">prog.c</a>.</p>
<p>After this fix, in order to remain rule-2-compliant, a variable name
has also been shortened in this file.</p>
<h3 id="prog.c-vs-prog.alt.c"><a href="prog.c">prog.c</a> vs <a href="prog.alt.c">prog.alt.c</a></h3>
<p>The file <a href="prog.alt.c">prog.alt.c</a> is the one I submitted.</p>
<p><a href="../../authors.html#Gil_Dogon">Gil Dogon</a> noted a few unsafe statements (statements
whose behaviour is undefined in the C standard and, as such, could cause issues
with other compilers or optimization levels). These have been fixed in
<a href="prog.c">prog.c</a>.</p>
<p>After this fix, in order to remain rule-2-compliant, a variable name has also
been shortened in this file.</p>
<h3 id="how-to-build">How to build</h3>
<p>If you have <code>clang</code>:</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="va">CC</span><span class="op">=</span>clang <span class="fu">make</span> <span class="at">-e</span></span></code></pre></div>
@@ -192,15 +185,15 @@ has also been shortened in this file.</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="fu">make</span></span></code></pre></div>
<p>(You will get a few warnings in this case.)</p>
<h3 id="how-to-use-it">How to use it</h3>
<p>You need a terminal configured to handle a <em>UTF-8</em> encoding
and a font including <em>Braille patterns</em>.</p>
<p>You need a terminal configured to handle a <em>UTF-8</em> encoding and a font including
<em>Braille patterns</em>.</p>
<p>This is the default on most modern GNU/Linux operating systems.</p>
<p>The default terminal application (gnome-terminal) or even a simple
xterm should render things properly.</p>
<p>I tested this on several Debian and Ubuntu systems, 32 and 64bits and
no configuration was needed.</p>
<p>I also tested it on FreeBSD 9.3 32bits (font and encoding
configuration was needed in this case).</p>
<p>The default terminal application (gnome-terminal) or even a simple xterm should
render things properly.</p>
<p>I tested this on several Debian and Ubuntu systems, 32 and 64bits and no
configuration was needed.</p>
<p>I also tested it on FreeBSD 9.3 32bits (font and encoding configuration was
needed in this case).</p>
<h4 id="basic-mode">Basic mode:</h4>
<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">$</span> echo <span class="st">&#39;I am testing this thing.&#39;</span> <span class="kw">|</span> <span class="ex">./prog</span></span>
<span id="cb7-2"><a href="#cb7-2" aria-hidden="true" tabindex="-1"></a><span class="ex">[...</span> rendering ...]</span>
@@ -215,129 +208,96 @@ configuration was needed in this case).</p>
<h3 id="obfuscation">Obfuscation:</h3>
<p>This entry is obfuscated in various ways:</p>
<ul>
<li>The structure is hidden by avoiding loops, <code>if</code>
statements, ternary conditionals, and jump-related instructions.
Instead, recursion is heavily used.</li>
<li>The structure is hidden by avoiding loops, <code>if</code> statements, ternary
conditionals, and jump-related instructions. Instead, recursion is heavily
used.</li>
<li>Merging all functions into one added even more recursion. ;)</li>
<li>The provided code does not contain the same number of opening and
closing parenthesis.</li>
<li>Preprocessing the code inflates it and adds lots of indents.
Removing some of the tricks involved without breaking the program will
be challenging.</li>
<li>The program ‘plays’ with standard input &amp; output streams, which
causes unusual side effects.</li>
<li>The provided code does not contain the same number of opening and closing
parenthesis.</li>
<li>Preprocessing the code inflates it and adds lots of indents. Removing some
of the tricks involved without breaking the program will be challenging.</li>
<li>The program ‘plays’ with standard input &amp; output streams, which causes
unusual side effects.</li>
<li>Some variables are re-used for unrelated processes.</li>
<li>Crucial data may be hidden in unexpected places (e.g. as the size of
a temporary buffer).</li>
<li>Some parts of the code may have no effect (but may have an effect in
a specific context, who knows?), and classical libc functions may not
act as usual.</li>
<li>Crucial data may be hidden in unexpected places (e.g. as the size of a
temporary buffer).</li>
<li>Some parts of the code may have no effect (but may have an effect in a
specific context, who knows?), and classical libc functions may not act as
usual.</li>
<li>And of course variable names are hard to read (or distracting).</li>
</ul>
<p>On the other hand, the following may help:</p>
<ul>
<li>The code layout should help to identify which part of the code is
obfuscated. ;)</li>
<li>File <a href="codes.txt">codes.txt</a> shows how each character is
drawn. This data is encoded in macro <code>O_o</code> at the top of the
source file.</li>
<li>File <a href="codes.txt">codes.txt</a> shows how each character is drawn. This data is
encoded in macro <code>O_o</code> at the top of the source file.</li>
</ul>
<h3 id="limitations">Limitations:</h3>
<h4 id="charset">Charset</h4>
<p>In order to comply with the size rule, I encoded only a part of the
visible ASCII chars:</p>
<p>In order to comply with the size rule, I encoded only a part of the visible ASCII
chars:</p>
<pre><code>a-z, A-Z, &#39;.&#39; &#39;:&#39; &#39;,&#39; &#39;;&#39; &#39;!&#39; and &#39;?&#39;.</code></pre>
<p>Uppercase and lowercase chars are rendered the same. The program also
understands space and linefeed (<code>\n</code>). Other chars are simply
ignored (most of the time ;)</p>
understands space and linefeed (<code>\n</code>). Other chars are simply ignored (most of
the time ;)</p>
<h4 id="stack-size">Stack size</h4>
<p>This limitation is due to the heavy use of recursion. After having
processed a large number of characters, the process may exceed the stack
size and crash. (However I did not experience this myself. The top-level
recursion might be removed by the compiler as part of its
optimizations.)</p>
<p>This limitation is due to the heavy use of recursion. After having processed a
large number of characters, the process may exceed the stack size and crash.
(However I did not experience this myself. The top-level recursion might be
removed by the compiler as part of its optimizations.)</p>
<h4 id="line-rendering">Line rendering</h4>
<p>The program does its best to avoid cutting words at the end of lines,
but it could still happen in case of long words.</p>
<h3 id="subtleties-and-extra-features">Subtleties and extra
features</h3>
<p>The program does its best to avoid cutting words at the end of lines, but it
could still happen in case of long words.</p>
<h3 id="subtleties-and-extra-features">Subtleties and extra features</h3>
<h4 id="handling-more-than-text-docs">Handling more than text docs?</h4>
<p>Given the limited set of characters handled, the program is mostly
limited to simple text documents.</p>
<p>Given the limited set of characters handled, the program is mostly limited to
simple text documents.</p>
<p>Thus, if you try for example:</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">$</span> ./prog <span class="op">&lt;</span> prog.c</span></code></pre></div>
<p>You will not get something that looks like C code. (but you can still
try, if you are curious. :)</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">$</span> ./prog <span class="op">&lt;</span> prog.c</span></code></pre></div>
<p>You will not get something that looks like C code. (but you can still try, if
you are curious. :)</p>
<h4 id="a-draft-mode">A ‘draft’ mode</h4>
<p>Defining an environment variable called <code>DRAFT</code> will
enable the ‘draft-mode’. Try for example:</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">$</span> echo <span class="st">&#39;testing the draft mode&#39;</span> <span class="kw">|</span> <span class="va">DRAFT</span><span class="op">=</span>1 <span class="ex">./prog</span></span></code></pre></div>
<p>The program will run much faster but the rendering will be less
precise.</p>
<p>Defining an environment variable called <code>DRAFT</code> will enable the ‘draft-mode’.
Try for example:</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">$</span> echo <span class="st">&#39;testing the draft mode&#39;</span> <span class="kw">|</span> <span class="va">DRAFT</span><span class="op">=</span>1 <span class="ex">./prog</span></span></code></pre></div>
<p>The program will run much faster but the rendering will be less precise.</p>
<h4 id="the-subtle-interactive-mode">The subtle interactive mode</h4>
<p>I saved the best for last: usually, programs that handle an
“interactive mode” have to check whether their standard input is a
terminal or not (by using <code>isatty()</code>). Did you notice that
this program does not perform any such detection, but still behaves (or
seems to behave) appropriately?</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>I saved the best for last: usually, programs that handle an “interactive mode”
have to check whether their standard input is a terminal or not (by using
<code>isatty()</code>). Did you notice that this program does not perform any such
detection, but still behaves (or seems to behave) appropriately?</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-2015duble"><a name="inventory"></a>Inventory for
2015/duble</h1>
<h1 id="inventory-for-2015duble"><a name="inventory"></a>Inventory for 2015/duble</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/duble/prog.c">prog.c</a>
- entry source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/duble/Makefile">Makefile</a>
- entry Makefile</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/duble/prog.alt.c">prog.alt.c</a>
- alternative source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/duble/prog.orig.c">prog.orig.c</a>
- original source</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/duble/codes.txt">codes.txt</a>
- show how each character is drawn</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/duble/lorem-ipsum.txt">lorem-ipsum.txt</a>
- sample input</li>
<li><a
href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/duble/try.sh">try.sh</a>
- how to run</li>
<li><a href="2015_duble.tar.bz2">2015_duble.tar.bz2</a> - download entry
source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/duble/prog.c">prog.c</a> - entry source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/duble/Makefile">Makefile</a> - entry Makefile</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/duble/prog.alt.c">prog.alt.c</a> - alternative source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/duble/prog.orig.c">prog.orig.c</a> - original source</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/duble/codes.txt">codes.txt</a> - show how each character is drawn</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/duble/lorem-ipsum.txt">lorem-ipsum.txt</a> - sample input</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/2015/duble/try.sh">try.sh</a> - how to run</li>
<li><a href="2015_duble.tar.bz2">2015_duble.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/duble/.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/duble/.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/duble/.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/duble/.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/duble/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/duble/README.md">README.md</a> - markdown source for index.html</li>
</ul>
<!-- END: next line ends content generated by: bin/output-index-inventory.sh -->