mirror of
https://github.com/ganelson/inform.git
synced 2024-07-08 10:04:21 +03:00
248 lines
33 KiB
HTML
248 lines
33 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
|
<html>
|
|
<head>
|
|
<title>3/sd</title>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
<meta http-equiv="Content-Language" content="en-gb">
|
|
<link href="inweb.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
|
</head>
|
|
<body>
|
|
|
|
<!--Weave of '3/laaf' generated by 7-->
|
|
<ul class="crumbs"><li><a href="../webs.html">★</a></li><li><a href="index.html">inblorb 4</a></li><li><a href="index.html#3">Chapter 3: Other Material</a></li><li><b>Links and Auxiliary Files</b></li></ul><p class="purpose">To manage links to auxiliary files, and placeholder variables.</p>
|
|
|
|
<ul class="toc"><li><a href="#SP1">§1. </a></li><li><a href="#SP2">§2. Registration</a></li><li><a href="#SP4">§4. Linking</a></li><li><a href="#SP6">§6. Links</a></li><li><a href="#SP7">§7. Cover image</a></li><li><a href="#SP8">§8. Releasing</a></li></ul><hr class="tocbar">
|
|
|
|
<p class="inwebparagraph"><a id="SP1"></a><b>§1. </b>Auxiliary files are for items bundled up with the release but which are
|
|
deliberately made accessible for the eventual player: things such as maps
|
|
or manuals. Inblorb needs to know about these only when releasing a website;
|
|
they are also recorded in an iFiction record, but Inblorb does not create
|
|
that (<code class="display"><span class="extract">ni</span></code> does).
|
|
</p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">auxiliary_file</span><span class="plain"> {</span>
|
|
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">filename</span><span class="plain"> *</span><span class="identifier">full_filename</span><span class="plain">;</span>
|
|
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">aux_leafname</span><span class="plain">;</span>
|
|
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">aux_subfolder</span><span class="plain">;</span>
|
|
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">description</span><span class="plain">;</span>
|
|
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">format</span><span class="plain">; </span> <span class="comment">e.g., "jpg", "pdf"</span>
|
|
<span class="constant">MEMORY_MANAGEMENT</span>
|
|
<span class="plain">} </span><span class="reserved">auxiliary_file</span><span class="plain">;</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The structure auxiliary_file is accessed in 2/bw and here.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP2"></a><b>§2. Registration. </b>The format text is set to a lower-case version of the filename extension,
|
|
and the URL to the filename itself; except when there is no extension, so
|
|
that the auxiliary resource is a mini-website in a subfolder of the release
|
|
website. In that case the format is <code class="display"><span class="extract">link</span></code> and the URL is to the index file
|
|
in the subfolder.
|
|
</p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Links::create_auxiliary_file</span><span class="plain">(</span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">fn</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">description</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">subfolder</span><span class="plain">) {</span>
|
|
<span class="reserved">auxiliary_file</span><span class="plain"> *</span><span class="identifier">aux</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">auxiliary_file</span><span class="plain">);</span>
|
|
<span class="identifier">aux</span><span class="plain">-</span><span class="element">>description</span><span class="plain"> = </span><span class="functiontext">Str::duplicate</span><span class="plain">(</span><span class="identifier">description</span><span class="plain">);</span>
|
|
<span class="identifier">aux</span><span class="plain">-</span><span class="element">>aux_subfolder</span><span class="plain"> = </span><span class="functiontext">Str::duplicate</span><span class="plain">(</span><span class="identifier">subfolder</span><span class="plain">);</span>
|
|
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">ext</span><span class="plain">);</span>
|
|
<span class="functiontext">Links::get_extension_from_textual_filename</span><span class="plain">(</span><span class="identifier">ext</span><span class="plain">, </span><span class="identifier">fn</span><span class="plain">);</span>
|
|
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">leaf</span><span class="plain">);</span>
|
|
<span class="functiontext">Links::get_leafname_from_textual_filename</span><span class="plain">(</span><span class="identifier">leaf</span><span class="plain">, </span><span class="identifier">fn</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::get_first_char</span><span class="plain">(</span><span class="identifier">ext</span><span class="plain">) == </span><span class="character">'.'</span><span class="plain">) {</span>
|
|
<span class="identifier">aux</span><span class="plain">-</span><span class="element">>full_filename</span><span class="plain"> = </span><span class="functiontext">Filenames::from_text</span><span class="plain">(</span><span class="identifier">fn</span><span class="plain">);</span>
|
|
<span class="identifier">aux</span><span class="plain">-</span><span class="element">>format</span><span class="plain"> = </span><span class="functiontext">Str::duplicate</span><span class="plain">(</span><span class="identifier">ext</span><span class="plain">);</span>
|
|
<span class="functiontext">Str::delete_first_character</span><span class="plain">(</span><span class="identifier">aux</span><span class="plain">-</span><span class="element">>format</span><span class="plain">);</span>
|
|
<span class="identifier">LOOP_THROUGH_TEXT</span><span class="plain">(</span><span class="identifier">pos</span><span class="plain">, </span><span class="identifier">aux</span><span class="plain">-</span><span class="element">>format</span><span class="plain">)</span>
|
|
<span class="functiontext">Str::put</span><span class="plain">(</span><span class="identifier">pos</span><span class="plain">, </span><span class="functiontext">Characters::tolower</span><span class="plain">(</span><span class="functiontext">Str::get</span><span class="plain">(</span><span class="identifier">pos</span><span class="plain">)));</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
|
<span class="identifier">aux</span><span class="plain">-</span><span class="element">>full_filename</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
|
<span class="identifier">aux</span><span class="plain">-</span><span class="element">>format</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"link"</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="identifier">aux</span><span class="plain">-</span><span class="element">>aux_leafname</span><span class="plain"> = </span><span class="functiontext">Str::duplicate</span><span class="plain">(</span><span class="identifier">leaf</span><span class="plain">);</span>
|
|
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">ext</span><span class="plain">);</span>
|
|
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">leaf</span><span class="plain">);</span>
|
|
|
|
<span class="identifier">PRINT</span><span class="plain">(</span><span class="string">"! Auxiliary file: <%S> = <%S>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">fn</span><span class="plain">, </span><span class="identifier">description</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Links::get_extension_from_textual_filename</span><span class="plain">(</span><span class="constant">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="reserved">filename</span><span class="plain">) {</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain"> = </span><span class="functiontext">Str::len</span><span class="plain">(</span><span class="reserved">filename</span><span class="plain">) - 1;</span>
|
|
<span class="reserved">while</span><span class="plain"> ((</span><span class="identifier">i</span><span class="plain">>=0) && ((</span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="reserved">filename</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">) == </span><span class="character">'.'</span><span class="plain">) || (</span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="reserved">filename</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">) == </span><span class="character">' '</span><span class="plain">))) </span><span class="identifier">i</span><span class="plain">--;</span>
|
|
<span class="reserved">while</span><span class="plain"> ((</span><span class="identifier">i</span><span class="plain">>=0) && (</span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="reserved">filename</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">) != </span><span class="character">'.'</span><span class="plain">) && (</span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="reserved">filename</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">) != </span><span class="constant">FOLDER_SEPARATOR</span><span class="plain">)) </span><span class="identifier">i</span><span class="plain">--;</span>
|
|
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">i</span><span class="plain"><0) || (</span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="reserved">filename</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">) == </span><span class="constant">FOLDER_SEPARATOR</span><span class="plain">)) </span><span class="reserved">return</span><span class="plain">;</span>
|
|
<span class="functiontext">Str::copy_tail</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">filename</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function Links::create_auxiliary_file is used in 1/bp (<a href="1-bp.html#SP7_2">§7.2</a>).</p>
|
|
|
|
<p class="endnote">The function Links::get_extension_from_textual_filename appears nowhere else.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP3"></a><b>§3. </b></p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Links::get_leafname_from_textual_filename</span><span class="plain">(</span><span class="constant">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="reserved">filename</span><span class="plain">) {</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain"> = </span><span class="functiontext">Str::len</span><span class="plain">(</span><span class="reserved">filename</span><span class="plain">) - 1;</span>
|
|
<span class="reserved">while</span><span class="plain"> ((</span><span class="identifier">i</span><span class="plain">>=0) && (</span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="reserved">filename</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">) != </span><span class="constant">FOLDER_SEPARATOR</span><span class="plain">)) </span><span class="identifier">i</span><span class="plain">--;</span>
|
|
<span class="functiontext">Str::copy_tail</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">filename</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">+1);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function Links::get_leafname_from_textual_filename is used in <a href="#SP2">§2</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP4"></a><b>§4. Linking. </b>The list of links to auxiliary resources is written using <code class="display"><span class="extract"><li>...</li></span></code>
|
|
list entry tags, for convenience of CSS styling.
|
|
</p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Links::expand_AUXILIARY_variable</span><span class="plain">(</span><span class="constant">OUTPUT_STREAM</span><span class="plain">) {</span>
|
|
<span class="reserved">auxiliary_file</span><span class="plain"> *</span><span class="identifier">aux</span><span class="plain">;</span>
|
|
<span class="identifier">LOOP_OVER</span><span class="plain">(</span><span class="identifier">aux</span><span class="plain">, </span><span class="reserved">auxiliary_file</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::eq_wide_string</span><span class="plain">(</span><span class="identifier">aux</span><span class="plain">-</span><span class="element">>description</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"--"</span><span class="plain">) == </span><span class="constant">FALSE</span><span class="plain">) {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<li>"</span><span class="plain">);</span>
|
|
<span class="functiontext">Links::download_link</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">,</span>
|
|
<span class="identifier">aux</span><span class="plain">-</span><span class="element">>description</span><span class="plain">, </span><span class="identifier">aux</span><span class="plain">-</span><span class="element">>full_filename</span><span class="plain">, </span><span class="identifier">aux</span><span class="plain">-</span><span class="element">>aux_leafname</span><span class="plain">, </span><span class="identifier">aux</span><span class="plain">-</span><span class="element">>format</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"</li>"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
<span class="functiontext">Requests::add_links_to_requested_resources</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function Links::expand_AUXILIARY_variable is used in 3/plc (<a href="3-plc.html#SP7">§7</a>).</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP5"></a><b>§5. </b>On some of the pages produced by Inblorb the story file itself looks like
|
|
another auxiliary resource, but it's produced thus:
|
|
</p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Links::expand_DOWNLOAD_variable</span><span class="plain">(</span><span class="constant">OUTPUT_STREAM</span><span class="plain">) {</span>
|
|
<span class="reserved">filename</span><span class="plain"> *</span><span class="identifier">eventual_Blorb_location</span><span class="plain"> =</span>
|
|
<span class="functiontext">Filenames::in_folder</span><span class="plain">(</span><span class="identifier">release_folder</span><span class="plain">, </span><span class="functiontext">Placeholders::read</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"STORYFILE"</span><span class="plain">));</span>
|
|
<span class="functiontext">Links::download_link</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Story File"</span><span class="plain">, </span><span class="identifier">eventual_Blorb_location</span><span class="plain">,</span>
|
|
<span class="functiontext">Placeholders::read</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"STORYFILE"</span><span class="plain">), </span><span class="identifier">I</span><span class="string">"Blorb"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function Links::expand_DOWNLOAD_variable is used in 3/plc (<a href="3-plc.html#SP7">§7</a>).</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP6"></a><b>§6. Links. </b>This routine, then, handles either kind of link.
|
|
</p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Links::download_link</span><span class="plain">(</span><span class="constant">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">desc</span><span class="plain">, </span><span class="reserved">filename</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">relative_url</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">form</span><span class="plain">) {</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">size_up</span><span class="plain"> = </span><span class="constant">TRUE</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::eq_wide_string</span><span class="plain">(</span><span class="identifier">form</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"link"</span><span class="plain">)) </span><span class="identifier">size_up</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">;</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<a href=\</span><span class="plain">"</span><span class="string">%S\</span><span class="plain">"</span><span class="string">>%S</a> "</span><span class="plain">, </span><span class="identifier">relative_url</span><span class="plain">, </span><span class="identifier">desc</span><span class="plain">);</span>
|
|
<span class="functiontext">Websites::open_style</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="string">"filetype"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"(%S"</span><span class="plain">, </span><span class="identifier">form</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">size_up</span><span class="plain">) {</span>
|
|
<span class="reserved">long</span><span class="plain"> </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">size</span><span class="plain"> = -1</span><span class="identifier">L</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::eq_wide_string</span><span class="plain">(</span><span class="identifier">desc</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"Story File"</span><span class="plain">)) </span><span class="identifier">size</span><span class="plain"> = (</span><span class="reserved">long</span><span class="plain"> </span><span class="reserved">int</span><span class="plain">) </span><span class="identifier">blorb_file_size</span><span class="plain">;</span>
|
|
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">size</span><span class="plain"> = </span><span class="functiontext">BinaryFiles::size</span><span class="plain">(</span><span class="identifier">F</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">size</span><span class="plain"> != -1</span><span class="identifier">L</span><span class="plain">) </span><<span class="cwebmacro">Write a description of the rough file size</span> <span class="cwebmacronumber">6.1</span>>
|
|
<span class="plain">}</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">")"</span><span class="plain">);</span>
|
|
<span class="functiontext">Websites::close_style</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="string">"filetype"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function Links::download_link is used in <a href="#SP4">§4</a>, <a href="#SP5">§5</a>, 3/rls (<a href="3-rls.html#SP10">§10</a>).</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP6_1"></a><b>§6.1. </b>We round down to the nearest KB, MB, GB, TB or byte, as appropriate. Although
|
|
this will describe a 1-byte auxiliary file as "1 bytes", the contingency seems
|
|
remote.
|
|
</p>
|
|
|
|
|
|
<p class="macrodefinition"><code class="display">
|
|
<<span class="cwebmacrodefn">Write a description of the rough file size</span> <span class="cwebmacronumber">6.1</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">units</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"&nbsp;bytes"</span><span class="plain">;</span>
|
|
<span class="reserved">long</span><span class="plain"> </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">remainder</span><span class="plain"> = 0;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">size</span><span class="plain"> > 1024</span><span class="identifier">L</span><span class="plain">) { </span><span class="identifier">remainder</span><span class="plain"> = </span><span class="identifier">size</span><span class="plain"> % 1024</span><span class="identifier">L</span><span class="plain">; </span><span class="identifier">size</span><span class="plain"> /= 1024</span><span class="identifier">L</span><span class="plain">; </span><span class="identifier">units</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"KB"</span><span class="plain">; }</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">size</span><span class="plain"> > 1024</span><span class="identifier">L</span><span class="plain">) { </span><span class="identifier">remainder</span><span class="plain"> = </span><span class="identifier">size</span><span class="plain"> % 1024</span><span class="identifier">L</span><span class="plain">; </span><span class="identifier">size</span><span class="plain"> /= 1024</span><span class="identifier">L</span><span class="plain">; </span><span class="identifier">units</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"MB"</span><span class="plain">; }</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">size</span><span class="plain"> > 1024</span><span class="identifier">L</span><span class="plain">) { </span><span class="identifier">remainder</span><span class="plain"> = </span><span class="identifier">size</span><span class="plain"> % 1024</span><span class="identifier">L</span><span class="plain">; </span><span class="identifier">size</span><span class="plain"> /= 1024</span><span class="identifier">L</span><span class="plain">; </span><span class="identifier">units</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"GB"</span><span class="plain">; }</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">size</span><span class="plain"> > 1024</span><span class="identifier">L</span><span class="plain">) { </span><span class="identifier">remainder</span><span class="plain"> = </span><span class="identifier">size</span><span class="plain"> % 1024</span><span class="identifier">L</span><span class="plain">; </span><span class="identifier">size</span><span class="plain"> /= 1024</span><span class="identifier">L</span><span class="plain">; </span><span class="identifier">units</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"TB"</span><span class="plain">; }</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">",&nbsp;%d"</span><span class="plain">, (</span><span class="reserved">int</span><span class="plain">) </span><span class="identifier">size</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">size</span><span class="plain"> < 100</span><span class="identifier">L</span><span class="plain">) && (</span><span class="identifier">remainder</span><span class="plain"> >= 103</span><span class="identifier">L</span><span class="plain">)) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">".%d"</span><span class="plain">, (</span><span class="reserved">int</span><span class="plain">) (</span><span class="identifier">remainder</span><span class="plain">/103</span><span class="identifier">L</span><span class="plain">));</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">units</span><span class="plain">);</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP6">§6</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP7"></a><b>§7. Cover image. </b>Note that if the large cover image is a PNG, so is the small (thumbnail)
|
|
version, and vice versa — supplying "Cover.jpg" and "Small Cover.png"
|
|
will not work.
|
|
</p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Links::expand_COVER_variable</span><span class="plain">(</span><span class="constant">OUTPUT_STREAM</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">cover_exists</span><span class="plain">) {</span>
|
|
<span class="reserved">char</span><span class="plain"> *</span><span class="identifier">format</span><span class="plain"> = </span><span class="string">"png"</span><span class="plain">; </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">cover_is_in_JPEG_format</span><span class="plain">) </span><span class="identifier">format</span><span class="plain"> = </span><span class="string">"jpg"</span><span class="plain">;</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<a href=\</span><span class="plain">"</span><span class="string">Cover.%s\</span><span class="plain">"</span><span class="string">><img src=\</span><span class="plain">"</span><span class="string">Small Cover.%s\</span><span class="plain">"</span><span class="string"> border=\</span><span class="plain">"</span><span class="string">1\</span><span class="plain">"</span><span class="string">></a>"</span><span class="plain">,</span>
|
|
<span class="identifier">format</span><span class="plain">, </span><span class="identifier">format</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function Links::expand_COVER_variable is used in 3/plc (<a href="3-plc.html#SP7">§7</a>).</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP8"></a><b>§8. Releasing. </b>When we generate a website, we need to copy the auxiliary files into it
|
|
(though not mini-websites: the user will have to do that).
|
|
</p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Links::request_copy_of_auxiliaries</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
|
|
<span class="reserved">auxiliary_file</span><span class="plain"> *</span><span class="identifier">aux</span><span class="plain">;</span>
|
|
<span class="identifier">LOOP_OVER</span><span class="plain">(</span><span class="identifier">aux</span><span class="plain">, </span><span class="reserved">auxiliary_file</span><span class="plain">)</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::eq</span><span class="plain">(</span><span class="identifier">aux</span><span class="plain">-</span><span class="element">>format</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"link"</span><span class="plain">)) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">verbose_mode</span><span class="plain">)</span>
|
|
<span class="identifier">PRINT</span><span class="plain">(</span><span class="string">"! COPY <%f> as <%S>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">aux</span><span class="plain">-</span><span class="element">>full_filename</span><span class="plain">, </span><span class="identifier">aux</span><span class="plain">-</span><span class="element">>aux_leafname</span><span class="plain">);</span>
|
|
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">as_text</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">as_text</span><span class="plain">, </span><span class="string">"%f"</span><span class="plain">, </span><span class="identifier">aux</span><span class="plain">-</span><span class="element">>full_filename</span><span class="plain">);</span>
|
|
<span class="functiontext">Requests::request_copy</span><span class="plain">(</span><span class="identifier">as_text</span><span class="plain">, </span><span class="identifier">aux</span><span class="plain">-</span><span class="element">>aux_leafname</span><span class="plain">, </span><span class="identifier">aux</span><span class="plain">-</span><span class="element">>aux_subfolder</span><span class="plain">);</span>
|
|
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">as_text</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function Links::request_copy_of_auxiliaries is used in 3/rls (<a href="3-rls.html#SP5">§5</a>).</p>
|
|
|
|
<hr class="tocbar">
|
|
<ul class="toc"><li><a href="3-sd.html">Back to 'Solution Deviser'</a></li><li><a href="3-plc.html">Continue with 'Placeholders'</a></li></ul><hr class="tocbar">
|
|
<!--End of weave-->
|
|
</body>
|
|
</html>
|
|
|