mirror of
https://github.com/ganelson/inform.git
synced 2024-05-17 00:18:39 +03:00
Fixed cblorb bug (retrospectively) which manifested only in 64-bit C library
This commit is contained in:
parent
1a783023e2
commit
a3fc704ee4
|
@ -389,10 +389,6 @@ useful for built-in meanings.
|
|||
|
||||
<span class="plain">The verb to substitute for means the built-in rule-substitutes-for meaning.</span>
|
||||
|
||||
<span class="plain">The verb to begin when means the built-in scene-begins-when meaning.</span>
|
||||
<span class="plain">The verb to end when means the built-in scene-ends-when meaning.</span>
|
||||
<span class="plain">The verb to end + when means the built-in scene-ends-when meaning.</span>
|
||||
|
||||
<span class="plain">The verb to do means the built-in rule-does-nothing meaning.</span>
|
||||
<span class="plain">The verb to do + if means the built-in rule-does-nothing-if meaning.</span>
|
||||
<span class="plain">The verb to do + when means the built-in rule-does-nothing-if meaning.</span>
|
||||
|
@ -412,11 +408,7 @@ useful for built-in meanings.
|
|||
|
||||
|
||||
<pre class="display">
|
||||
<span class="plain">The verb to test + with in the imperative means the built-in test-with meaning.</span>
|
||||
<span class="plain">The verb to understand + as in the imperative means the built-in understand-as meaning.</span>
|
||||
<span class="plain">The verb to use in the imperative means the built-in use meaning.</span>
|
||||
<span class="plain">The verb to release along with in the imperative means the built-in release-along-with meaning.</span>
|
||||
<span class="plain">The verb to index map with in the imperative means the built-in index-map-with meaning.</span>
|
||||
<span class="plain">The verb to include + in in the imperative means the built-in include-in meaning.</span>
|
||||
<span class="plain">The verb to omit + from in the imperative means the built-in omit-from meaning.</span>
|
||||
<span class="plain">The verb to document + at in the imperative means the built-in document-at meaning.</span>
|
||||
|
@ -445,17 +437,10 @@ how they have effect.)
|
|||
<pre class="display">
|
||||
<span class="plain">Use American dialect translates as (- Constant DIALECT_US; -).</span>
|
||||
<span class="plain">Use the serial comma translates as (- Constant SERIAL_COMMA; -).</span>
|
||||
<span class="plain">Use full-length room descriptions translates as (- #IFNDEF I7_LOOKMODE; Constant I7_LOOKMODE = 2; #ENDIF; -).</span>
|
||||
<span class="plain">Use abbreviated room descriptions translates as (- #IFNDEF I7_LOOKMODE; Constant I7_LOOKMODE = 3; #ENDIF; -).</span>
|
||||
<span class="plain">Use memory economy translates as (- Constant MEMORY_ECONOMY; -).</span>
|
||||
<span class="plain">Use authorial modesty translates as (- Constant AUTHORIAL_MODESTY; -).</span>
|
||||
<span class="plain">Use scoring translates as (- #IFNDEF USE_SCORING; Constant USE_SCORING = 1; #ENDIF; -).</span>
|
||||
<span class="plain">Use no scoring translates as (- #IFNDEF USE_SCORING; Constant USE_SCORING = 0; #ENDIF; -).</span>
|
||||
<span class="plain">Use engineering notation translates as (- Constant USE_E_NOTATION = 0; -).</span>
|
||||
<span class="plain">Use unabbreviated object names translates as (- Constant UNABBREVIATED_OBJECT_NAMES = 0; -).</span>
|
||||
<span class="plain">Use command line echoing translates as (- Constant ECHO_COMMANDS; -).</span>
|
||||
<span class="plain">Use manual pronouns translates as (- Constant MANUAL_PRONOUNS; -).</span>
|
||||
<span class="plain">Use undo prevention translates as (- Constant PREVENT_UNDO; -).</span>
|
||||
<span class="plain">Use predictable randomisation translates as (- Constant FIX_RNG; -).</span>
|
||||
<span class="plain">Use fast route-finding translates as (- Constant FAST_ROUTE_FINDING; -).</span>
|
||||
<span class="plain">Use slow route-finding translates as (- Constant SLOW_ROUTE_FINDING; -).</span>
|
||||
|
@ -463,9 +448,6 @@ how they have effect.)
|
|||
<span class="plain">Use telemetry recordings translates as (- Constant TELEMETRY_ON; -).</span>
|
||||
<span class="plain">Use no deprecated features translates as (- Constant NO_DEPRECATED_FEATURES; -).</span>
|
||||
<span class="plain">Use gn testing version translates as (- Constant GN_TESTING_VERSION; -).</span>
|
||||
<span class="plain">Use VERBOSE room descriptions translates as (- Constant DEFAULT_VERBOSE_DESCRIPTIONS; -).</span>
|
||||
<span class="plain">Use BRIEF room descriptions translates as (- Constant DEFAULT_BRIEF_DESCRIPTIONS; -).</span>
|
||||
<span class="plain">Use SUPERBRIEF room descriptions translates as (- Constant DEFAULT_SUPERBRIEF_DESCRIPTIONS; -).</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
<span class="definitionkeyword">enum</span> <span class="constant">bibliographic_datum_MT</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">heading_MT</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">phrase_MT</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">inference_array_MT</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">inference_MT</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">property_MT</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">property_permission_MT</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">extension_file_MT</span>
|
||||
|
@ -143,6 +143,7 @@
|
|||
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">i6_inclusion_matter</span><span class="plain">)</span>
|
||||
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">i6_memory_setting</span><span class="plain">)</span>
|
||||
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">implication</span><span class="plain">)</span>
|
||||
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">inference</span><span class="plain">)</span>
|
||||
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">inference_subject</span><span class="plain">)</span>
|
||||
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">instance</span><span class="plain">)</span>
|
||||
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">internal_test_case</span><span class="plain">)</span>
|
||||
|
@ -201,7 +202,6 @@
|
|||
<span class="identifier">ALLOCATE_IN_ARRAYS</span><span class="plain">(</span><span class="reserved">application</span><span class="plain">, 100)</span>
|
||||
<span class="identifier">ALLOCATE_IN_ARRAYS</span><span class="plain">(</span><span class="reserved">extension_identifier_database_entry</span><span class="plain">, 100)</span>
|
||||
<span class="identifier">ALLOCATE_IN_ARRAYS</span><span class="plain">(</span><span class="reserved">i6_schema</span><span class="plain">, 100)</span>
|
||||
<span class="identifier">ALLOCATE_IN_ARRAYS</span><span class="plain">(</span><span class="reserved">inference</span><span class="plain">, 100)</span>
|
||||
<span class="identifier">ALLOCATE_IN_ARRAYS</span><span class="plain">(</span><span class="reserved">instance_usage</span><span class="plain">, 200)</span>
|
||||
<span class="identifier">ALLOCATE_IN_ARRAYS</span><span class="plain">(</span><span class="reserved">invocation_options</span><span class="plain">, 100)</span>
|
||||
<span class="identifier">ALLOCATE_IN_ARRAYS</span><span class="plain">(</span><span class="reserved">local_variable</span><span class="plain">, 100)</span>
|
||||
|
|
|
@ -95,6 +95,7 @@ organised as linked lists; hence the <code class="display"><span class="extract"
|
|||
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">inferred_property_value</span><span class="plain">; </span> <span class="comment">and its value, if any</span>
|
||||
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inference</span><span class="plain"> *</span><span class="identifier">next</span><span class="plain">; </span> <span class="comment">next in list of inferences on same subject</span>
|
||||
<span class="identifier">MEMORY_MANAGEMENT</span>
|
||||
<span class="plain">} </span><span class="reserved">inference</span><span class="plain">;</span>
|
||||
</pre>
|
||||
|
||||
|
@ -673,19 +674,30 @@ same property but with different values.
|
|||
<span class="definitionkeyword">define</span> <span class="constant">CI_DIFFER_IN_COPY_ONLY</span><span class="plain"> 7</span>
|
||||
<span class="definitionkeyword">define</span> <span class="constant">CI_IDENTICAL</span><span class="plain"> 0</span>
|
||||
</pre>
|
||||
<p class="inwebparagraph"><a id="SP19"></a><b>§19. </b>There's a lot of crude conversion of pointers to integers here, but it doesn't
|
||||
much matter what ordering is used so long as a definite and unchanging ordering
|
||||
is used.
|
||||
<p class="inwebparagraph"><a id="SP19"></a><b>§19. </b>Funny story: until 2019, this routine ran by using pointer subtraction when
|
||||
comparing, for example, the INFS references in the inferences, on the principle
|
||||
that the ordering doesn't really matter so long as it is definite and stable
|
||||
during a run. But in the late 2010s, desktop operating systems such as MacOS
|
||||
Mojave began to randomize the address space of all executables, to make it
|
||||
harder for attackers to exploit buffer overflow bugs. As a result, although
|
||||
the following routine continued to make definite orderings, they would be
|
||||
randomly different from one run to another. Inform's output remained
|
||||
functionally correct, but the generated I6 code would subtly differ from
|
||||
run to run. And so we instead now incur the cost of looking up allocation IDs,
|
||||
and indeed of storing those for inference structures.
|
||||
</p>
|
||||
|
||||
<p class="inwebparagraph">Pointer subtraction is, in any case, frowned on in all the best houses, so this
|
||||
was probably a good thing.
|
||||
</p>
|
||||
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">World::Inferences::compare_inferences</span><span class="plain">(</span><span class="reserved">inference</span><span class="plain"> *</span><span class="identifier">i1</span><span class="plain">, </span><span class="reserved">inference</span><span class="plain"> *</span><span class="identifier">i2</span><span class="plain">) {</span>
|
||||
<span class="identifier">pointer_sized_int</span><span class="plain"> </span><span class="identifier">c</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">i1</span><span class="plain"> == </span><span class="identifier">i2</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="constant">CI_IDENTICAL</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">i1</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="constant">CI_DIFFER_IN_EXISTENCE</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">i2</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> -</span><span class="constant">CI_DIFFER_IN_EXISTENCE</span><span class="plain">;</span>
|
||||
<span class="identifier">c</span><span class="plain"> = </span><span class="identifier">i1</span><span class="plain">-</span><span class="element">>inference_type</span><span class="plain"> - </span><span class="identifier">i2</span><span class="plain">-</span><span class="element">>inference_type</span><span class="plain">;</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">c</span><span class="plain"> = </span><span class="identifier">i1</span><span class="plain">-</span><span class="element">>inference_type</span><span class="plain"> - </span><span class="identifier">i2</span><span class="plain">-</span><span class="element">>inference_type</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">c</span><span class="plain"> > 0) </span><span class="reserved">return</span><span class="plain"> </span><span class="constant">CI_DIFFER_IN_TYPE</span><span class="plain">; </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">c</span><span class="plain"> < 0) </span><span class="reserved">return</span><span class="plain"> -</span><span class="constant">CI_DIFFER_IN_TYPE</span><span class="plain">;</span>
|
||||
<span class="reserved">property</span><span class="plain"> *</span><span class="identifier">pr1</span><span class="plain"> = </span><span class="identifier">i1</span><span class="plain">-</span><span class="element">>inferred_property</span><span class="plain">;</span>
|
||||
<span class="reserved">property</span><span class="plain"> *</span><span class="identifier">pr2</span><span class="plain"> = </span><span class="identifier">i2</span><span class="plain">-</span><span class="element">>inferred_property</span><span class="plain">;</span>
|
||||
|
@ -693,17 +705,17 @@ is used.
|
|||
<span class="plain">(</span><span class="identifier">pr2</span><span class="plain">) && (</span><span class="functiontext">Properties::is_either_or</span><span class="plain">(</span><span class="identifier">pr2</span><span class="plain">)) &&</span>
|
||||
<span class="plain">((</span><span class="identifier">pr1</span><span class="plain"> == </span><span class="functiontext">Properties::EitherOr::get_negation</span><span class="plain">(</span><span class="identifier">pr2</span><span class="plain">)) ||</span>
|
||||
<span class="plain">(</span><span class="identifier">pr2</span><span class="plain"> == </span><span class="functiontext">Properties::EitherOr::get_negation</span><span class="plain">(</span><span class="identifier">pr1</span><span class="plain">)))) </span><span class="identifier">pr2</span><span class="plain"> = </span><span class="identifier">pr1</span><span class="plain">;</span>
|
||||
<span class="identifier">c</span><span class="plain"> = ((</span><span class="identifier">pointer_sized_int</span><span class="plain">) </span><span class="identifier">pr1</span><span class="plain">) - ((</span><span class="identifier">pointer_sized_int</span><span class="plain">) </span><span class="identifier">pr2</span><span class="plain">);</span>
|
||||
<span class="identifier">c</span><span class="plain"> = </span><span class="functiontext">World::Inferences::measure_property</span><span class="plain">(</span><span class="identifier">pr1</span><span class="plain">) - </span><span class="functiontext">World::Inferences::measure_property</span><span class="plain">(</span><span class="identifier">pr2</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">c</span><span class="plain"> > 0) </span><span class="reserved">return</span><span class="plain"> </span><span class="constant">CI_DIFFER_IN_PROPERTY</span><span class="plain">; </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">c</span><span class="plain"> < 0) </span><span class="reserved">return</span><span class="plain"> -</span><span class="constant">CI_DIFFER_IN_PROPERTY</span><span class="plain">;</span>
|
||||
<span class="identifier">c</span><span class="plain"> = ((</span><span class="identifier">pointer_sized_int</span><span class="plain">) </span><span class="identifier">i1</span><span class="plain">-</span><span class="element">>infs_ref2</span><span class="plain">) - ((</span><span class="identifier">pointer_sized_int</span><span class="plain">) </span><span class="identifier">i2</span><span class="plain">-</span><span class="element">>infs_ref2</span><span class="plain">);</span>
|
||||
<span class="identifier">c</span><span class="plain"> = </span><span class="functiontext">World::Inferences::measure_infs</span><span class="plain">(</span><span class="identifier">i1</span><span class="plain">-</span><span class="element">>infs_ref2</span><span class="plain">) - </span><span class="functiontext">World::Inferences::measure_infs</span><span class="plain">(</span><span class="identifier">i2</span><span class="plain">-</span><span class="element">>infs_ref2</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">c</span><span class="plain"> > 0) </span><span class="reserved">return</span><span class="plain"> </span><span class="constant">CI_DIFFER_IN_INFS2</span><span class="plain">; </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">c</span><span class="plain"> < 0) </span><span class="reserved">return</span><span class="plain"> -</span><span class="constant">CI_DIFFER_IN_INFS2</span><span class="plain">;</span>
|
||||
<span class="identifier">c</span><span class="plain"> = ((</span><span class="identifier">pointer_sized_int</span><span class="plain">) </span><span class="identifier">i1</span><span class="plain">-</span><span class="element">>infs_ref1</span><span class="plain">) - ((</span><span class="identifier">pointer_sized_int</span><span class="plain">) </span><span class="identifier">i2</span><span class="plain">-</span><span class="element">>infs_ref1</span><span class="plain">);</span>
|
||||
<span class="identifier">c</span><span class="plain"> = </span><span class="functiontext">World::Inferences::measure_infs</span><span class="plain">(</span><span class="identifier">i1</span><span class="plain">-</span><span class="element">>infs_ref1</span><span class="plain">) - </span><span class="functiontext">World::Inferences::measure_infs</span><span class="plain">(</span><span class="identifier">i2</span><span class="plain">-</span><span class="element">>infs_ref1</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">c</span><span class="plain"> > 0) </span><span class="reserved">return</span><span class="plain"> </span><span class="constant">CI_DIFFER_IN_INFS1</span><span class="plain">; </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">c</span><span class="plain"> < 0) </span><span class="reserved">return</span><span class="plain"> -</span><span class="constant">CI_DIFFER_IN_INFS1</span><span class="plain">;</span>
|
||||
<span class="identifier">c</span><span class="plain"> = ((</span><span class="identifier">pointer_sized_int</span><span class="plain">) </span><span class="identifier">i1</span><span class="plain">-</span><span class="element">>spec_ref2</span><span class="plain">) - ((</span><span class="identifier">pointer_sized_int</span><span class="plain">) </span><span class="identifier">i2</span><span class="plain">-</span><span class="element">>spec_ref2</span><span class="plain">);</span>
|
||||
<span class="identifier">c</span><span class="plain"> = </span><span class="functiontext">World::Inferences::measure_pn</span><span class="plain">(</span><span class="identifier">i1</span><span class="plain">-</span><span class="element">>spec_ref2</span><span class="plain">) - </span><span class="functiontext">World::Inferences::measure_pn</span><span class="plain">(</span><span class="identifier">i2</span><span class="plain">-</span><span class="element">>spec_ref2</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">c</span><span class="plain"> > 0) </span><span class="reserved">return</span><span class="plain"> </span><span class="constant">CI_DIFFER_IN_INFS2</span><span class="plain">; </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">c</span><span class="plain"> < 0) </span><span class="reserved">return</span><span class="plain"> -</span><span class="constant">CI_DIFFER_IN_INFS2</span><span class="plain">;</span>
|
||||
<span class="identifier">c</span><span class="plain"> = ((</span><span class="identifier">pointer_sized_int</span><span class="plain">) </span><span class="identifier">i1</span><span class="plain">-</span><span class="element">>spec_ref1</span><span class="plain">) - ((</span><span class="identifier">pointer_sized_int</span><span class="plain">) </span><span class="identifier">i2</span><span class="plain">-</span><span class="element">>spec_ref1</span><span class="plain">);</span>
|
||||
<span class="identifier">c</span><span class="plain"> = </span><span class="functiontext">World::Inferences::measure_pn</span><span class="plain">(</span><span class="identifier">i1</span><span class="plain">-</span><span class="element">>spec_ref1</span><span class="plain">) - </span><span class="functiontext">World::Inferences::measure_pn</span><span class="plain">(</span><span class="identifier">i2</span><span class="plain">-</span><span class="element">>spec_ref1</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">c</span><span class="plain"> > 0) </span><span class="reserved">return</span><span class="plain"> </span><span class="constant">CI_DIFFER_IN_INFS1</span><span class="plain">; </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">c</span><span class="plain"> < 0) </span><span class="reserved">return</span><span class="plain"> -</span><span class="constant">CI_DIFFER_IN_INFS1</span><span class="plain">;</span>
|
||||
<span class="identifier">c</span><span class="plain"> = ((</span><span class="identifier">pointer_sized_int</span><span class="plain">) </span><span class="identifier">i1</span><span class="plain">) - ((</span><span class="identifier">pointer_sized_int</span><span class="plain">) </span><span class="identifier">i2</span><span class="plain">);</span>
|
||||
<span class="identifier">c</span><span class="plain"> = </span><span class="functiontext">World::Inferences::measure_inf</span><span class="plain">(</span><span class="identifier">i1</span><span class="plain">) - </span><span class="functiontext">World::Inferences::measure_inf</span><span class="plain">(</span><span class="identifier">i2</span><span class="plain">);</span>
|
||||
<span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">val1</span><span class="plain"> = </span><span class="identifier">i1</span><span class="plain">-</span><span class="element">>inferred_property_value</span><span class="plain">;</span>
|
||||
<span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">val2</span><span class="plain"> = </span><span class="identifier">i2</span><span class="plain">-</span><span class="element">>inferred_property_value</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">i1</span><span class="plain">-</span><span class="element">>inferred_property</span><span class="plain"> != </span><span class="identifier">i2</span><span class="plain">-</span><span class="element">>inferred_property</span><span class="plain">) ||</span>
|
||||
|
@ -715,6 +727,23 @@ is used.
|
|||
<span class="reserved">return</span><span class="plain"> </span><span class="constant">CI_IDENTICAL</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">World::Inferences::measure_property</span><span class="plain">(</span><span class="reserved">property</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">P</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> 1 + </span><span class="identifier">P</span><span class="plain">-></span><span class="identifier">allocation_id</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> 0;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">World::Inferences::measure_inf</span><span class="plain">(</span><span class="reserved">inference</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">) </span><span class="reserved">return</span><span class="plain"> 1 + </span><span class="identifier">I</span><span class="plain">-></span><span class="identifier">allocation_id</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> 0;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">World::Inferences::measure_infs</span><span class="plain">(</span><span class="reserved">inference_subject</span><span class="plain"> *</span><span class="identifier">IS</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">IS</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> 1 + </span><span class="identifier">IS</span><span class="plain">-></span><span class="identifier">allocation_id</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> 0;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">World::Inferences::measure_pn</span><span class="plain">(</span><span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">N</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> 1 + </span><span class="identifier">N</span><span class="plain">-></span><span class="identifier">allocation_id</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> 0;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">infs_diversion</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">World::Inferences::diversion_on</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
|
||||
<span class="identifier">infs_diversion</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
|
@ -741,6 +770,14 @@ is used.
|
|||
|
||||
<p class="endnote">The function World::Inferences::compare_inferences is used in <a href="#SP20">§20</a>.</p>
|
||||
|
||||
<p class="endnote">The function World::Inferences::measure_property appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function World::Inferences::measure_inf appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function World::Inferences::measure_infs appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function World::Inferences::measure_pn appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function World::Inferences::diversion_on appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function World::Inferences::diversion_off is used in 26/pc (<a href="26-pc.html#SP6">§6</a>).</p>
|
||||
|
|
|
@ -352,9 +352,10 @@ copied in <code class="display"><span class="extract">text1</span></code>, <code
|
|||
<span class="reserved">case</span><span class="plain"> </span><span class="constant">release_file_COMMAND</span><span class="plain">: {</span>
|
||||
<span class="reserved">filename</span><span class="plain"> *</span><span class="identifier">to_release</span><span class="plain"> = </span><span class="functiontext">Filenames::from_text</span><span class="plain">(</span><span class="identifier">text1</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="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">leaf</span><span class="plain">, </span><span class="string">"%f"</span><span class="plain">, </span><span class="functiontext">Filenames::get_leafname</span><span class="plain">(</span><span class="identifier">to_release</span><span class="plain">));</span>
|
||||
<span class="functiontext">Requests::request_3</span><span class="plain">(</span><span class="constant">COPY_REQ</span><span class="plain">, </span><span class="identifier">text1</span><span class="plain">, </span><span class="identifier">leaf</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"--"</span><span class="plain">, </span><span class="constant">FALSE</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">leaf</span><span class="plain">, </span><span class="string">"%S"</span><span class="plain">, </span><span class="functiontext">Filenames::get_leafname</span><span class="plain">(</span><span class="identifier">to_release</span><span class="plain">));</span>
|
||||
<span class="functiontext">Requests::request_3</span><span class="plain">(</span><span class="constant">COPY_REQ</span><span class="plain">, </span><span class="identifier">text1</span><span class="plain">, </span><span class="identifier">leaf</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"--"</span><span class="plain">, </span><span class="constant">FALSE</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="reserved">break</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="constant">release_file_from_COMMAND</span><span class="plain">:</span>
|
||||
<span class="functiontext">Requests::request_2</span><span class="plain">(</span><span class="constant">RELEASE_FILE_REQ</span><span class="plain">, </span><span class="identifier">text1</span><span class="plain">, </span><span class="identifier">text2</span><span class="plain">, </span><span class="constant">FALSE</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
|
||||
|
|
|
@ -180,12 +180,12 @@ remote.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="reserved">char</span><span class="plain"> *</span><span class="identifier">units</span><span class="plain"> = </span><span class="string">"&nbsp;bytes"</span><span class="plain">;</span>
|
||||
<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="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="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="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="string">"TB"</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">"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>
|
||||
|
|
|
@ -346,6 +346,7 @@ the template to add more if it wants to.
|
|||
<pre class="displaydefn">
|
||||
<span class="functiontext">Placeholders::set_to</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"TEMPLATE"</span><span class="plain">, </span><span class="identifier">req</span><span class="plain">-</span><span class="element">>details1</span><span class="plain">, 0);</span>
|
||||
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">t</span><span class="plain"> = </span><span class="functiontext">Placeholders::read</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"TEMPLATE"</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="constant">STDERR</span><span class="plain">, </span><span class="string">"TEMPLATE is %S\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">t</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">use_css_code_styles</span><span class="plain">) {</span>
|
||||
<span class="reserved">filename</span><span class="plain"> *</span><span class="identifier">from</span><span class="plain"> = </span><span class="functiontext">Templates::find_file_in_specific_template</span><span class="plain">(</span><span class="identifier">t</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"style.css"</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">from</span><span class="plain">) {</span>
|
||||
|
@ -354,6 +355,7 @@ the template to add more if it wants to.
|
|||
<span class="plain">}</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="functiontext">Requests::release_file_into_website</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"index.html"</span><span class="plain">, </span><span class="identifier">t</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="constant">STDERR</span><span class="plain">, </span><span class="string">"TEMPLATE is %S\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">t</span><span class="plain">);</span>
|
||||
<span class="reserved">request</span><span class="plain"> *</span><span class="identifier">req</span><span class="plain">;</span>
|
||||
<span class="identifier">LOOP_OVER</span><span class="plain">(</span><span class="identifier">req</span><span class="plain">, </span><span class="reserved">request</span><span class="plain">)</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">req</span><span class="plain">-</span><span class="element">>private</span><span class="plain"> == </span><span class="constant">FALSE</span><span class="plain">)</span>
|
||||
|
@ -370,6 +372,7 @@ the template to add more if it wants to.
|
|||
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">source_text</span><span class="plain">);</span>
|
||||
<span class="functiontext">Requests::release_file_into_website</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"source.html"</span><span class="plain">, </span><span class="identifier">t</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="constant">STDERR</span><span class="plain">, </span><span class="string">"TEMPLATE is %S\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">t</span><span class="plain">);</span>
|
||||
<<span class="cwebmacro">Add further material as requested by the template</span> <span class="cwebmacronumber">6.9.1</span>><span class="plain">;</span>
|
||||
</pre>
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
<!--Weave of 'S/prm' generated by 7-->
|
||||
<ul class="crumbs"><li><a href="../webs.html">★</a></li><li><a href="index.html">srules 5/190315</a></li><li><b>Preamble</b></li></ul><p class="purpose">The titling line and rubric, use options and a few other technicalities before the Standard Rules get properly started.</p>
|
||||
|
||||
<ul class="toc"><li><a href="#SP1">§1. Title</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="#SP1">§1. Title</a></li><li><a href="#SP2">§2. Verbs</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="inwebparagraph"><a id="SP1"></a><b>§1. Title. </b>Every Inform 7 extension begins with a standard titling line and a
|
||||
rubric text, and the Standard Rules are no exception:
|
||||
|
@ -27,7 +27,56 @@ rubric text, and the Standard Rules are no exception:
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP2"></a><b>§2. </b>This setting is to do with the Inform parser's handling of multiple objects.
|
||||
<p class="inwebparagraph"><a id="SP2"></a><b>§2. Verbs. </b>And now miscellaneous other important verbs. Note the plus notation, new
|
||||
in May 2016, which marks for a second object phrase, and is thus only
|
||||
useful for built-in meanings.
|
||||
</p>
|
||||
|
||||
|
||||
<pre class="display">
|
||||
<span class="plain">The verb to begin when means the built-in scene-begins-when meaning.</span>
|
||||
<span class="plain">The verb to end when means the built-in scene-ends-when meaning.</span>
|
||||
<span class="plain">The verb to end + when means the built-in scene-ends-when meaning.</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP3"></a><b>§3. </b>Verbs used as imperatives: "Test ... with ...", for example.
|
||||
</p>
|
||||
|
||||
|
||||
<pre class="display">
|
||||
<span class="plain">The verb to test + with in the imperative means the built-in test-with meaning.</span>
|
||||
<span class="plain">The verb to understand + as in the imperative means the built-in understand-as meaning.</span>
|
||||
<span class="plain">The verb to release along with in the imperative means the built-in release-along-with meaning.</span>
|
||||
<span class="plain">The verb to index map with in the imperative means the built-in index-map-with meaning.</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP4"></a><b>§4. </b>We can now make definitions of miscellaneous options: none are used by default,
|
||||
but all translate into I6 constant definitions if used. (These are constants
|
||||
whose values are used in the I6 library or in the template layer, which is
|
||||
how they have effect.)
|
||||
</p>
|
||||
|
||||
|
||||
<pre class="display">
|
||||
<span class="plain">Use full-length room descriptions translates as (- #IFNDEF I7_LOOKMODE; Constant I7_LOOKMODE = 2; #ENDIF; -).</span>
|
||||
<span class="plain">Use abbreviated room descriptions translates as (- #IFNDEF I7_LOOKMODE; Constant I7_LOOKMODE = 3; #ENDIF; -).</span>
|
||||
<span class="plain">Use authorial modesty translates as (- Constant AUTHORIAL_MODESTY; -).</span>
|
||||
<span class="plain">Use scoring translates as (- #IFNDEF USE_SCORING; Constant USE_SCORING = 1; #ENDIF; -).</span>
|
||||
<span class="plain">Use no scoring translates as (- #IFNDEF USE_SCORING; Constant USE_SCORING = 0; #ENDIF; -).</span>
|
||||
<span class="plain">Use manual pronouns translates as (- Constant MANUAL_PRONOUNS; -).</span>
|
||||
<span class="plain">Use undo prevention translates as (- Constant PREVENT_UNDO; -).</span>
|
||||
<span class="plain">Use VERBOSE room descriptions translates as (- Constant DEFAULT_VERBOSE_DESCRIPTIONS; -).</span>
|
||||
<span class="plain">Use BRIEF room descriptions translates as (- Constant DEFAULT_BRIEF_DESCRIPTIONS; -).</span>
|
||||
<span class="plain">Use SUPERBRIEF room descriptions translates as (- Constant DEFAULT_SUPERBRIEF_DESCRIPTIONS; -).</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP5"></a><b>§5. </b>This setting is to do with the Inform parser's handling of multiple objects.
|
||||
</p>
|
||||
|
||||
|
||||
|
@ -40,7 +89,7 @@ rubric text, and the Standard Rules are no exception:
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP3"></a><b>§3. </b>That's it for the verbs with special internal meanings.
|
||||
<p class="inwebparagraph"><a id="SP6"></a><b>§6. </b>That's it for the verbs with special internal meanings.
|
||||
</p>
|
||||
|
||||
|
||||
|
@ -50,7 +99,7 @@ rubric text, and the Standard Rules are no exception:
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP4"></a><b>§4. </b>The following block of declarations is actually written by <code class="display"><span class="extract">indoc</span></code> and
|
||||
<p class="inwebparagraph"><a id="SP7"></a><b>§7. </b>The following block of declarations is actually written by <code class="display"><span class="extract">indoc</span></code> and
|
||||
modified each time we alter the documentation. It's a dictionary of symbolic
|
||||
names like <code class="display"><span class="extract">HEADINGS</span></code> to HTML page leafnames like <code class="display"><span class="extract">doc71</span></code>.
|
||||
</p>
|
||||
|
|
|
@ -285,9 +285,10 @@ copied in |text1|, |num1|, ..., accordingly.
|
|||
case release_file_COMMAND: {
|
||||
filename *to_release = Filenames::from_text(text1);
|
||||
TEMPORARY_TEXT(leaf);
|
||||
WRITE_TO(leaf, "%f", Filenames::get_leafname(to_release));
|
||||
Requests::request_3(COPY_REQ, text1, leaf, I"--", FALSE); break;
|
||||
WRITE_TO(leaf, "%S", Filenames::get_leafname(to_release));
|
||||
Requests::request_3(COPY_REQ, text1, leaf, I"--", FALSE);
|
||||
DISCARD_TEXT(leaf);
|
||||
break;
|
||||
}
|
||||
case release_file_from_COMMAND:
|
||||
Requests::request_2(RELEASE_FILE_REQ, text1, text2, FALSE); break;
|
||||
|
|
|
@ -120,12 +120,12 @@ this will describe a 1-byte auxiliary file as "1 bytes", the contingency seems
|
|||
remote.
|
||||
|
||||
@<Write a description of the rough file size@> =
|
||||
char *units = " bytes";
|
||||
text_stream *units = I" bytes";
|
||||
long int remainder = 0;
|
||||
if (size > 1024L) { remainder = size % 1024L; size /= 1024L; units = "KB"; }
|
||||
if (size > 1024L) { remainder = size % 1024L; size /= 1024L; units = "MB"; }
|
||||
if (size > 1024L) { remainder = size % 1024L; size /= 1024L; units = "GB"; }
|
||||
if (size > 1024L) { remainder = size % 1024L; size /= 1024L; units = "TB"; }
|
||||
if (size > 1024L) { remainder = size % 1024L; size /= 1024L; units = I"KB"; }
|
||||
if (size > 1024L) { remainder = size % 1024L; size /= 1024L; units = I"MB"; }
|
||||
if (size > 1024L) { remainder = size % 1024L; size /= 1024L; units = I"GB"; }
|
||||
if (size > 1024L) { remainder = size % 1024L; size /= 1024L; units = I"TB"; }
|
||||
WRITE(", %d", (int) size);
|
||||
if ((size < 100L) && (remainder >= 103L)) WRITE(".%d", (int) (remainder/103L));
|
||||
WRITE("%S", units);
|
||||
|
|
|
@ -202,6 +202,7 @@ the template to add more if it wants to.
|
|||
@<Create a website@> =
|
||||
Placeholders::set_to(I"TEMPLATE", req->details1, 0);
|
||||
text_stream *t = Placeholders::read(I"TEMPLATE");
|
||||
WRITE_TO(STDERR, "TEMPLATE is %S\n", t);
|
||||
if (use_css_code_styles) {
|
||||
filename *from = Templates::find_file_in_specific_template(t, I"style.css");
|
||||
if (from) {
|
||||
|
@ -210,6 +211,7 @@ the template to add more if it wants to.
|
|||
}
|
||||
}
|
||||
Requests::release_file_into_website(I"index.html", t, NULL);
|
||||
WRITE_TO(STDERR, "TEMPLATE is %S\n", t);
|
||||
request *req;
|
||||
LOOP_OVER(req, request)
|
||||
if (req->private == FALSE)
|
||||
|
@ -226,6 +228,7 @@ the template to add more if it wants to.
|
|||
DISCARD_TEXT(source_text);
|
||||
Requests::release_file_into_website(I"source.html", t, NULL); break;
|
||||
}
|
||||
WRITE_TO(STDERR, "TEMPLATE is %S\n", t);
|
||||
@<Add further material as requested by the template@>;
|
||||
|
||||
@ Most templates do not request extra files, but they have the option by
|
||||
|
|
|
@ -3228,8 +3228,10 @@ void set_placeholder_to_inner(char *var, char *text, int reservation, int extend
|
|||
if (extend) L += cblorb_strlen(wv->pl_contents);
|
||||
if (L >= MAX_FILENAME_LENGTH) { error("placeholder text too long"); return; }
|
||||
|
||||
if (extend) strcat(wv->pl_contents, text);
|
||||
else strcpy(wv->pl_contents, text);
|
||||
if (wv->pl_contents != text) {
|
||||
if (extend) strcat(wv->pl_contents, text);
|
||||
else strcpy(wv->pl_contents, text);
|
||||
}
|
||||
}
|
||||
|
||||
#line 146 "cBlorb/Chapter 3/Placeholders.w"
|
||||
|
|
|
@ -3228,8 +3228,10 @@ void set_placeholder_to_inner(char *var, char *text, int reservation, int extend
|
|||
if (extend) L += cblorb_strlen(wv->pl_contents);
|
||||
if (L >= MAX_FILENAME_LENGTH) { error("placeholder text too long"); return; }
|
||||
|
||||
if (extend) strcat(wv->pl_contents, text);
|
||||
else strcpy(wv->pl_contents, text);
|
||||
if (wv->pl_contents != text) {
|
||||
if (extend) strcat(wv->pl_contents, text);
|
||||
else strcpy(wv->pl_contents, text);
|
||||
}
|
||||
}
|
||||
|
||||
#line 146 "cBlorb/Chapter 3/Placeholders.w"
|
||||
|
|
|
@ -3268,9 +3268,10 @@ void set_placeholder_to_inner(char *var, char *text, int reservation, int extend
|
|||
int L = cblorb_strlen(text) + 1;
|
||||
if (extend) L += cblorb_strlen(wv->pl_contents);
|
||||
if (L >= MAX_FILENAME_LENGTH) { error("placeholder text too long"); return; }
|
||||
|
||||
if (extend) strcat(wv->pl_contents, text);
|
||||
else strcpy(wv->pl_contents, text);
|
||||
if (wv->pl_contents != text) {
|
||||
if (extend) strcat(wv->pl_contents, text);
|
||||
else strcpy(wv->pl_contents, text);
|
||||
}
|
||||
}
|
||||
|
||||
#line 146 "cBlorb/Chapter 3/Placeholders.w"
|
||||
|
|
Loading…
Reference in a new issue