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:
1 parent
9eb7a54e9f
commit
b0b212acb1
402 files changed
+37061
-55132
No files matched your search
+85
-125
@@ -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">'I am testing this thing.'</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 & 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 & 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, '.' ':' ',' ';' '!' and '?'.</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"><</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"><</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">'testing the draft mode'</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">'testing the draft mode'</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 -->
|
||||
|
||||
Reference in new issue
Block a user