</p>
<p class="p">
There are two major groups of specifications, the <a href="fll/specifications.html#fss" class="link">Featureless Settings Specifications</a> and the <a href="fll/specifications.html#iki" class="link">IKI Specifications</a>.
- Individual program projects may also have their own specifications. Each pogram has a specifications page that describes the specifications, if any, that are defined by that project. The <strong>Featureless Make</strong> is <a href="documentation/fake/specifications.html" class="link">a good example of program specific specifications</a>.
+ Individual program projects may also have their own specifications. Each pogram has a specifications page that describes the specifications, if any, that are defined by that project. The <strong class="strong">Featureless Make</strong> is <a href="documentation/fake/specifications.html" class="link">a good example of program specific specifications</a>.
</p>
<p class="p">
Many of these specifications may also be found in the source code repositories:
<div class="article-content">
<p class="p">
- One of the biggest problems with an <abbr title="Application Programming Interface">API</abbr> is the mis-use or misunderstanding of the meaning and purpose of one. The term itself is not the most accurate and is also not ideal. A more appropriate term would be a <strong>Library Interface</strong> or a <strong>Software Interface</strong>.
+ One of the biggest problems with an <abbr title="Application Programming Interface">API</abbr> is the mis-use or misunderstanding of the meaning and purpose of one. The term itself is not the most accurate and is also not ideal. A more appropriate term would be a <strong class="strong">Library Interface</strong> or a <strong class="strong">Software Interface</strong>.
</p>
<section class="section">
<div class="main-content">
<p class="p">
- The <strong>byte_dump</strong> program is a tool for parsing and printing the bytes of all data within one or more files.
+ The <strong class="strong">byte_dump</strong> program is a tool for parsing and printing the bytes of all data within one or more files.
</p>
<p class="p">
- This tool operates similar to the classic <strong>hexdump</strong> program and provides similar functionality. However, the <strong>byte_dump</strong> program is not intended to be a complete replacemenet. Unlike the <strong>hexdump</strong> program, the <strong>byte_dump</strong> program is fully <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> aware and even validates the Unicode sequences.
+ This tool operates similar to the classic <strong class="strong">hexdump</strong> program and provides similar functionality. However, the <strong class="strong">byte_dump</strong> program is not intended to be a complete replacemenet. Unlike the <strong class="strong">hexdump</strong> program, the <strong class="strong">byte_dump</strong> program is fully <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> aware and even validates the Unicode sequences.
</p>
<p class="p">
This tool is designed to be scriptable and accepts piped input, treating the piped input as a file being read.
</table>
</div>
<p class="p">
- The <code class="code">+Q/++quiet</code> parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the <strong>utf8</strong> program is to print the Unicode code point or the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte code. The <code class="code">+Q/++quiet</code> will not suppress this output. The new line printed at the end of the program, is however, not printed. The <code class="code">+Q/++quiet</code> is ideal for using in scripting to help guarantee more consistent and controlled output.
+ The <code class="code">+Q/++quiet</code> parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the <strong class="strong">utf8</strong> program is to print the Unicode code point or the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte code. The <code class="code">+Q/++quiet</code> will not suppress this output. The new line printed at the end of the program, is however, not printed. The <code class="code">+Q/++quiet</code> is ideal for using in scripting to help guarantee more consistent and controlled output.
</p>
<p class="p">
The <code class="code">+N/++no_color</code> simplifies the output to avoid the special color character codes. The special color character codes tend to take up a lot of extra space and may slow down printing performance.
<div class="main-content">
<p class="p">
The <abbr title="Featureless Linux Library">FLL</abbr> project provides several <a href="fll/specifications.html" class="link">specifications</a>.
- The <strong>Byte Dump</strong> does not directly use or provide any of these specifications.
+ The <strong class="strong">Byte Dump</strong> does not directly use or provide any of these specifications.
</p>
</div>
</main>
<div class="main-content">
<p class="p">
- The <strong>control</strong> program is a tool for sending commands to the <strong>controller</strong> program.
+ The <strong class="strong">control</strong> program is a tool for sending commands to the <strong class="strong">controller</strong> program.
</p>
<p class="p">
- This tools is currently incomplete and is not guaranteed to work with the <strong>controller</strong> program. Further development will be made on this once the <strong>controller</strong> program is updated. The next development series is planned to focus on networking, which will include support for this.
+ This tools is currently incomplete and is not guaranteed to work with the <strong class="strong">controller</strong> program. Further development will be made on this once the <strong class="strong">controller</strong> program is updated. The next development series is planned to focus on networking, which will include support for this.
</p>
</div>
</table>
</div>
<p class="p">
- The <code class="code">+Q/++quiet</code> parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the <strong>utf8</strong> program is to print the Unicode code point or the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte code. The <code class="code">+Q/++quiet</code> will not suppress this output. The new line printed at the end of the program, is however, not printed. The <code class="code">+Q/++quiet</code> is ideal for using in scripting to help guarantee more consistent and controlled output.
+ The <code class="code">+Q/++quiet</code> parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the <strong class="strong">utf8</strong> program is to print the Unicode code point or the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte code. The <code class="code">+Q/++quiet</code> will not suppress this output. The new line printed at the end of the program, is however, not printed. The <code class="code">+Q/++quiet</code> is ideal for using in scripting to help guarantee more consistent and controlled output.
</p>
<p class="p">
The <code class="code">+N/++no_color</code> simplifies the output to avoid the special color character codes. The special color character codes tend to take up a lot of extra space and may slow down printing performance.
The <abbr title="Featureless Linux Library">FLL</abbr> project provides several <a href="fll/specifications.html" class="link">specifications</a>.
</p>
<p class="p">
- The <strong>Control</strong> follows the following specifications:
+ The <strong class="strong">Control</strong> follows the following specifications:
</p>
<ul>
<li><a href="fll/specifications/fss/fss-000f.html" class="link">FSS-000F (Simple Packet)</a></li>
</ul>
<p class="p">
- The <strong>Control</strong> defines the following specifications:
+ The <strong class="strong">Control</strong> defines the following specifications:
</p>
<ul>
<li><a href="documentation/control/specifications/settings.html" class="link">Settings</a></li>
<div class="main-content">
<p class="p">
- The <strong>Control</strong> follows a <em>Packet Request Specification</em>.
+ The <strong class="strong">Control</strong> follows a <em class="em">Packet Request Specification</em>.
This specification is incomplete at this time as the functionality is not yet written.
- This specification is intended to be shared with the <strong>Controller</strong> program.
+ This specification is intended to be shared with the <strong class="strong">Controller</strong> program.
</p>
</div>
<div class="section-content">
<p class="p">
- The <strong>Control</strong> program sends packets and receives packet responses from the <strong>Controller</strong> program over the <strong>Controller</strong> program's control socket.
+ The <strong class="strong">Control</strong> program sends packets and receives packet responses from the <strong class="strong">Controller</strong> program over the <strong class="strong">Controller</strong> program's control socket.
This documentation describes the request packets sent by this program.
</p>
<p class="p">
- The purpose of these request packets are to ask the <strong>Controller</strong> program to perform a requested action.
+ The purpose of these request packets are to ask the <strong class="strong">Controller</strong> program to perform a requested action.
</p>
<p class="p">
- The communications to/from the <strong>Controller</strong> program utilize the <code class="code">FSS-000F (Simple Packet)</code>.
+ The communications to/from the <strong class="strong">Controller</strong> program utilize the <code class="code">FSS-000F (Simple Packet)</code>.
This Simple Packet is expected to contain within it the <code class="code">FSS-000E (Payload)</code> format.
</p>
<p class="p">
The Payload contains within it a Header and a Payload.
Note the potential confusion here between the Payload when referring to the Packet format and the Payload referring to the Content within the Payload Packet.
- To avoid this, henceforth "<em>Payload Packet</em>" refers to the <code class="code">FSS-000E (Payload)</code> used within the <code class="code">FSS-000F (Simple Packet)</code>.
- The "<em>Payload Header</em>" refers to either the Object (<code class="code">header:</code>) or Content within the Payload Packet representing the header.
- The "<em>Payload Object</em>" refers to the Object within the Payload Packet (ie: <code class="code">payload:</code>).
- The "<em>Payload Content</em>" refers to the Content within the Payload Packet.
+ To avoid this, henceforth "<em class="em">Payload Packet</em>" refers to the <code class="code">FSS-000E (Payload)</code> used within the <code class="code">FSS-000F (Simple Packet)</code>.
+ The "<em class="em">Payload Header</em>" refers to either the Object (<code class="code">header:</code>) or Content within the Payload Packet representing the header.
+ The "<em class="em">Payload Object</em>" refers to the Object within the Payload Packet (ie: <code class="code">payload:</code>).
+ The "<em class="em">Payload Content</em>" refers to the Content within the Payload Packet.
</p>
<p class="p">
The <code class="code">FSS-000E (Payload)</code> is very flexible in what it allows within the Header of the Payload Packet.
- The <strong>Control</strong> program is more restrictive and supports only a subset of the possibilities (which this is explicitly allowed by the Specification).
+ The <strong class="strong">Control</strong> program is more restrictive and supports only a subset of the possibilities (which this is explicitly allowed by the Specification).
</p>
<p class="p">
- The <strong>Control</strong> program only supports the following Payload Packet header Objects for the request:
+ The <strong class="strong">Control</strong> program only supports the following Payload Packet header Objects for the request:
</p>
<ul>
<li><code class="code">type</code>: Allows only a single type header Object and may only be one of: <code class="code">controller</code>, <code class="code">error</code>, or <code class="code">init</code>.</li>
<div class="main-content">
<p class="p">
- The <strong>Control</strong> follows a <em>Packet Response Specification</em>.
+ The <strong class="strong">Control</strong> follows a <em class="em">Packet Response Specification</em>.
This specification is incomplete at this time as the functionality is not yet written.
- This specification is intended to be shared with the <strong>Controller</strong> program.
+ This specification is intended to be shared with the <strong class="strong">Controller</strong> program.
</p>
</div>
<div class="section-content">
<p class="p">
- The <strong>Control</strong> program sends packets and receives packet responses from the <strong>Controller</strong> program over the <strong>Controller</strong> program's control socket.
+ The <strong class="strong">Control</strong> program sends packets and receives packet responses from the <strong class="strong">Controller</strong> program over the <strong class="strong">Controller</strong> program's control socket.
This documentation describes the expected response packets and how these response packets are handled.
</p>
<p class="p">
- The communications to/from the <strong>Controller</strong> program utilize the <code class="code">FSS-000F (Simple Packet)</code>.
+ The communications to/from the <strong class="strong">Controller</strong> program utilize the <code class="code">FSS-000F (Simple Packet)</code>.
This Simple Packet is expected to contain within it the <code class="code">FSS-000E (Payload)</code> format.
</p>
<p class="p">
The Payload contains within it a Header and a Payload.
Note the potential confusion here between the Payload when referring to the Packet format and the Payload referring to the Content within the Payload Packet.
- The "<em>Payload Header</em>" refers to either the Object (<code class="code">header:</code>) or Content within the Payload Packet representing the header.
- The "<em>Payload Object</em>" refers to the Object within the Payload Packet (ie: <code class="code">payload:</code>).
- The "<em>Payload Content</em>" refers to the Content within the Payload Packet.
+ The "<em class="em">Payload Header</em>" refers to either the Object (<code class="code">header:</code>) or Content within the Payload Packet representing the header.
+ The "<em class="em">Payload Object</em>" refers to the Object within the Payload Packet (ie: <code class="code">payload:</code>).
+ The "<em class="em">Payload Content</em>" refers to the Content within the Payload Packet.
</p>
<p class="p">
The <code class="code">FSS-000E (Payload)</code> is very flexible in what it allows within the Header of the Payload Packet.
- The <strong>Control</strong> program is more restrictive and supports only a subset of the possibilities (which this is explicitly allowed by the Specification).
+ The <strong class="strong">Control</strong> program is more restrictive and supports only a subset of the possibilities (which this is explicitly allowed by the Specification).
</p>
<p class="p">
- The <strong>Control</strong> program only supports the following Payload Packet header Objects for the response:
+ The <strong class="strong">Control</strong> program only supports the following Payload Packet header Objects for the response:
</p>
<ul>
<li>
</li>
</ul>
<p class="p">
- When the <strong>Control</strong> program fails to function due to some error, there will be no specially formatted message printed.
- When the <strong>Controller</strong> program fails before it can perform the requested action, then a <code class="code">response error [action] [status]</code> formatted message is printed.
- When the <strong>Controller</strong> program successfully performs the action but the result of that action is an error, then a <code class="code">response controller [action] F_failure</code> formatted message is printed.
+ When the <strong class="strong">Control</strong> program fails to function due to some error, there will be no specially formatted message printed.
+ When the <strong class="strong">Controller</strong> program fails before it can perform the requested action, then a <code class="code">response error [action] [status]</code> formatted message is printed.
+ When the <strong class="strong">Controller</strong> program successfully performs the action but the result of that action is an error, then a <code class="code">response controller [action] F_failure</code> formatted message is printed.
</p>
</div>
</section>
<div class="main-content">
<p class="p">
- The <strong>Control</strong> defines the <em>Settings Specification</em>.
- This specification describes how the settings file is used by the <strong>Control</strong> program.
+ The <strong class="strong">Control</strong> defines the <em class="em">Settings Specification</em>.
+ This specification describes how the settings file is used by the <strong class="strong">Control</strong> program.
</p>
<p class="p">
- The control settings "<em>settings</em>" file follows the <code class="code">FSS-0001 (Extended)</code> format.
+ The control settings "<em class="em">settings</em>" file follows the <code class="code">FSS-0001 (Extended)</code> format.
</p>
<p class="p">
Each Object represents a settings property name.
<p class="p">
The settings file provides default or system-wide settings.
The system-wide settings file is loaded by default but a custom settings file may be alternatively specified.
- Using this avoids the need to add additional paramters to the command line when calling the <strong>Control</strong> program.
+ Using this avoids the need to add additional paramters to the command line when calling the <strong class="strong">Control</strong> program.
</p>
<p class="p">
When this file is not specified any hardcoded defaults compiled into the program are used.
A full socket path might look something like <code class="code">/var/run/controller/controller-default.socket</code>.
</p>
<p class="p">
- It is common for the <strong>Controller</strong> program to be compiled as an init program.
+ It is common for the <strong class="strong">Controller</strong> program to be compiled as an init program.
In this case it may be common for the full socket path to instead be something more like <code class="code">/var/run/init/init-default.socket</code>.
</p>
</li>
<div class="main-content">
<p class="p">
- The <strong>controller</strong> program is a tool for controller other programs.
+ The <strong class="strong">controller</strong> program is a tool for controller other programs.
</p>
<p class="p">
- This tool is designed to configured to perform and execute any tasks given across multiple languages and it also has support for operating as an <strong>init</strong> program. There are special compile-time configurations needed to make this properly operate as an <strong>init</strong> program.
+ This tool is designed to configured to perform and execute any tasks given across multiple languages and it also has support for operating as an <strong class="strong">init</strong> program. There are special compile-time configurations needed to make this properly operate as an <strong class="strong">init</strong> program.
</p>
<p class="p">
- This tool operates similar to the <strong>fake</strong> program and can even be seen as an evolution to the <strong>fake</strong> program. The <strong>controller</strong> program, however is not a replacement to the <strong>fake</strong> program as it is more generalized.
+ This tool operates similar to the <strong class="strong">fake</strong> program and can even be seen as an evolution to the <strong class="strong">fake</strong> program. The <strong class="strong">controller</strong> program, however is not a replacement to the <strong class="strong">fake</strong> program as it is more generalized.
</p>
<p class="p">
This tool also provides additional features for making it easierr to test and write controller instructions. These features include partial simulation and validation modes.
</p>
<p class="p">
- In partial simulation mode, anything that the <strong>controller</strong> program has full control over and can simulate is simulated. Actual programs and scripts themselves, therefore, cannot be simulated. However, it may be possible to use an environment variables or similar and pass settings to the called program or script if the called program or script is simulation and testing aware.
+ In partial simulation mode, anything that the <strong class="strong">controller</strong> program has full control over and can simulate is simulated. Actual programs and scripts themselves, therefore, cannot be simulated. However, it may be possible to use an environment variables or similar and pass settings to the called program or script if the called program or script is simulation and testing aware.
</p>
<p class="p">
The validation mode is for making this tool more scriptable. By providing validation, the controller instructions can be validated, in which case a success or failure result is returned and any problems or warnings may be printed to the caller of this tool.
</p>
<p class="p">
- This tool is not currently fully functional as an <strong>init</strong> program replacement because the networking aspects are not yet written or fully hashed out. The <strong>contol</strong> program is also another key part to the <strong>contoller</strong> program in getting this to work as an <strong>init</strong> program. Ideally, once this support is complete, it should be possible to replace init programs, such as <strong>SystemD</strong>, with the <strong>controller</strong> program.
+ This tool is not currently fully functional as an <strong class="strong">init</strong> program replacement because the networking aspects are not yet written or fully hashed out. The <strong class="strong">contol</strong> program is also another key part to the <strong class="strong">contoller</strong> program in getting this to work as an <strong class="strong">init</strong> program. Ideally, once this support is complete, it should be possible to replace init programs, such as <strong class="strong">SystemD</strong>, with the <strong class="strong">controller</strong> program.
</p>
<p class="p">
- Further development will be made on this once the <strong>controller</strong> program is updated. The next development series is planned to focus on networking, which will include support for this.
+ Further development will be made on this once the <strong class="strong">controller</strong> program is updated. The next development series is planned to focus on networking, which will include support for this.
</p>
</div>
</table>
</div>
<p class="p">
- The <code class="code">+Q/++quiet</code> parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the <strong>utf8</strong> program is to print the Unicode code point or the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte code. The <code class="code">+Q/++quiet</code> will not suppress this output. The new line printed at the end of the program, is however, not printed. The <code class="code">+Q/++quiet</code> is ideal for using in scripting to help guarantee more consistent and controlled output.
+ The <code class="code">+Q/++quiet</code> parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the <strong class="strong">utf8</strong> program is to print the Unicode code point or the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte code. The <code class="code">+Q/++quiet</code> will not suppress this output. The new line printed at the end of the program, is however, not printed. The <code class="code">+Q/++quiet</code> is ideal for using in scripting to help guarantee more consistent and controlled output.
</p>
<p class="p">
The <code class="code">+N/++no_color</code> simplifies the output to avoid the special color character codes. The special color character codes tend to take up a lot of extra space and may slow down printing performance.
This describes the intent and purpose of the simulation and validation parameters.
</p>
<p class="p">
- The <strong>controller</strong> program is designed to support being run as an alternative to an <code class="code">init</code> program (such as <code class="code">Sysvinit</code> or <code class="code">SystemD</code>).
+ The <strong class="strong">controller</strong> program is designed to support being run as an alternative to an <code class="code">init</code> program (such as <code class="code">Sysvinit</code> or <code class="code">SystemD</code>).
To help prevent problems, simulation and validation functionality is provided.
</p>
<ul>
The <code class="code">validate</code> functionality:
</p>
<p class="p">
- By itself will simply check the syntax of the <strong>Entry</strong> and Rule files (for Rule files specified in the <strong>Entry</strong> or <strong>Exit</strong> file).
+ By itself will simply check the syntax of the <strong class="strong">Entry</strong> and Rule files (for Rule files specified in the <strong class="strong">Entry</strong> or <strong class="strong">Exit</strong> file).
Errors are reported and nothing is executed.
- The <strong>controller</strong> program will return 0 on validation success and 1 on validation failure.
+ The <strong class="strong">controller</strong> program will return 0 on validation success and 1 on validation failure.
</p>
</li>
The <code class="code">simulate</code> functionality:
</p>
<p class="p">
- By itself will perform a simulated execution of all Rules designated by an <strong>Entry</strong> or <strong>Exit</strong> file.
+ By itself will perform a simulated execution of all Rules designated by an <strong class="strong">Entry</strong> or <strong class="strong">Exit</strong> file.
The simulation is not a true simulation in that no program is ever called to perform any operations.
Furthermore, any <code class="code">script</code> specified inside a Rule is only simulated as a whole and not its individual parts.
- Once the <strong>Entry</strong> file is finished executing, the <code class="code">simulate</code> will continue to run waiting on <strong>control</strong> commands.
+ Once the <strong class="strong">Entry</strong> file is finished executing, the <code class="code">simulate</code> will continue to run waiting on <strong class="strong">control</strong> commands.
</p>
</li>
<div class="section-content">
<p class="p">
- The <strong>controller</strong> program utilizes the unit of measurement called a <em>Time</em>, represented with uppercase <em>T</em>.
- For comparison, a unit of <em>Time</em> is equivalent to a nanosecond, or 10^-9 seconds.
- A <em>MegaTime</em> (MT) is therefore equivalent to a millisecond such that a millisecond is 10^-3 seconds.
+ The <strong class="strong">controller</strong> program utilizes the unit of measurement called a <em class="em">Time</em>, represented with uppercase <em class="em">T</em>.
+ For comparison, a unit of <em class="em">Time</em> is equivalent to a nanosecond, or 10^-9 seconds.
+ A <em class="em">MegaTime</em> (MT) is therefore equivalent to a millisecond such that a millisecond is 10^-3 seconds.
</p>
<p class="p">
- A unit of <em>Time</em> is intended to represent some unit of <em>Time</em> such that a single 64-bit integer may hold all units of <em>Time</em> for a single calendar year.
- This unit of <em>Time</em> does not and must not include Years (unlike <em>Unixtime</em>).
- To convert from <em>Time</em> to <em>Unixtime</em>, one must have a year (which could be assumed to be the current year) and then calculate all of those calendar oddities.
+ A unit of <em class="em">Time</em> is intended to represent some unit of <em class="em">Time</em> such that a single 64-bit integer may hold all units of <em class="em">Time</em> for a single calendar year.
+ This unit of <em class="em">Time</em> does not and must not include Years (unlike <em class="em">Unixtime</em>).
+ To convert from <em class="em">Time</em> to <em class="em">Unixtime</em>, one must have a year (which could be assumed to be the current year) and then calculate all of those calendar oddities.
</p>
<p class="p">
- A unit of <em>Time</em> by default is assumed to be in <abbr title="Coordinated Universal Time">UTC</abbr>.
+ A unit of <em class="em">Time</em> by default is assumed to be in <abbr title="Coordinated Universal Time">UTC</abbr>.
</p>
<ul>
<li>1 (Earth) year ~= <code class="code">31536000000000000 Time</code> or <code class="code">31536000 GT (GigaTime)</code>.</li>
<li>1 (Earth) second = <code class="code">1000000000 Time</code> or <code class="code">1 GT (GigaTime)</code>.</li>
</ul>
<p class="p">
- Consequentially, 1 day in units of <em>Time</em> is easily represented as <code class="code">86.4 TT</code> (<em>TeraTime</em>).
+ Consequentially, 1 day in units of <em class="em">Time</em> is easily represented as <code class="code">86.4 TT</code> (<em class="em">TeraTime</em>).
</p>
<p class="p">
- The <em>Time</em> may be stored in its <code class="code">year string format</code>.
- In this format, a Year may be prepended to the <em>Time</em> followed by a single colon ':' to associate a year with the <em>Time</em>.
+ The <em class="em">Time</em> may be stored in its <code class="code">year string format</code>.
+ In this format, a Year may be prepended to the <em class="em">Time</em> followed by a single colon ':' to associate a year with the <em class="em">Time</em>.
This Year has no minimum or maximum but may not have decimals.
For example, <code class="code">2020:86400000000000</code> would represent: January 02, 2020 0:00 <abbr title="Coordinated Universal Time">UTC</abbr>.
For example, <code class="code">2020:86.4 TT</code> would represent: January 02, 2020 0:00 <abbr title="Coordinated Universal Time">UTC</abbr>.
</p>
<p class="p">
- A second unit of <em>Time</em>, called <em>EpochTime</em>, works the same way as <em>Time</em> except it represents seconds.
+ A second unit of <em class="em">Time</em>, called <em class="em">EpochTime</em>, works the same way as <em class="em">Time</em> except it represents seconds.
This unit is designated <code class="code">E</code>.
- The format is similar to <em>Time</em>, except there are two colons: <code class="code">1970::1620874738</code> would represent: May 13, 2021 2:58:58 <abbr title="Coordinated Universal Time">UTC</abbr>.
+ The format is similar to <em class="em">Time</em>, except there are two colons: <code class="code">1970::1620874738</code> would represent: May 13, 2021 2:58:58 <abbr title="Coordinated Universal Time">UTC</abbr>.
When the year is not specified, then this is identical to UNIX Epoch.
</p>
<p class="p">
- A unit of <em>EpochTime</em> by default is assumed to be in <abbr title="Coordinated Universal Time">UTC</abbr>.
+ A unit of <em class="em">EpochTime</em> by default is assumed to be in <abbr title="Coordinated Universal Time">UTC</abbr>.
</p>
<ul>
- <li>1 (Earth) year ~= <code class="code">31536000 EpochTime</code> or <code class="code">31.536 GE</code> (<em>GigaEpochTime</em>).</li>
+ <li>1 (Earth) year ~= <code class="code">31536000 EpochTime</code> or <code class="code">31.536 GE</code> (<em class="em">GigaEpochTime</em>).</li>
<li>1 (Earth) day = <code class="code">86400 EpochTime</code></li>
<li>1 (Earth) hour = <code class="code">3600 EpochTime</code></li>
<li>1 (Earth) minute = <code class="code">60 EpochTime</code></li>
<li>1 GT (GigaTime) = <code class="code">1 EpochTime</code></li>
</ul>
<p class="p">
- Consequentially, 1 day in units of <em>EpochTime</em> is easily represented as <code class="code">86.4 KE</code> (<em>KiloEpochTime</em>).
+ Consequentially, 1 day in units of <em class="em">EpochTime</em> is easily represented as <code class="code">86.4 KE</code> (<em class="em">KiloEpochTime</em>).
</p>
</div>
</section>
The <abbr title="Featureless Linux Library">FLL</abbr> project provides several <a href="fll/specifications.html" class="link">specifications</a>.
</p>
<p class="p">
- The <strong>Controller</strong> follows the following specifications:
+ The <strong class="strong">Controller</strong> follows the following specifications:
</p>
<ul>
<li><a href="fll/specifications/fss/fss-0005.html" class="link">FSS-0005 (Somewhat Basic List)</a></li>
<li><a href="fll/specifications/fss/fss-000f.html" class="link">FSS-000F (Simple Packet)</a></li>
</ul>
<p class="p">
- The <strong>Controller</strong> defines the following specifications:
+ The <strong class="strong">Controller</strong> defines the following specifications:
</p>
<ul>
<li><a href="documentation/controller/specifications/action.html" class="link">Action</a></li>
<div class="main-content">
<p class="p">
- The <strong>Entry</strong>, <strong>Exit</strong>, and <strong>Rule</strong> files each utilize an <strong>Action</strong>.
+ The <strong class="strong">Entry</strong>, <strong class="strong">Exit</strong>, and <strong class="strong">Rule</strong> files each utilize an <strong class="strong">Action</strong>.
</p>
</div>
Should any <code class="code">control</code> or <code class="code">controller</code> program implementation not support any particular Action for any reason, one should report that the Action is unsupported.
</p>
<p class="p">
- <strong>Freeze Action</strong>:
+ <strong class="strong">Freeze Action</strong>:
</p>
<ul>
<li>The Freeze Action is an extension of a Control Group.</li>
<li>This is the complement of the Thaw Action.</li>
<li>This designates that a processes Control Group is to be frozen.</li>
<li>All Rules (or any process not controlled by the <code class="code">controller</code>) that is within the same Control Group will be frozen.</li>
- <li><em>(@todo consider instead designing this around the Control Groups instead of a <code class="code">rule</code>.)</em></li>
- <li><em>(This documentation will likely change with consideration to the above @todo once this gets implemented.)</em></li>
+ <li><em class="em">(@todo consider instead designing this around the Control Groups instead of a <code class="code">rule</code>.)</em></li>
+ <li><em class="em">(This documentation will likely change with consideration to the above @todo once this gets implemented.)</em></li>
<li>This must not attempt to freeze (or unfreeze) the Control Group that the <code class="code">controller</code> belongs to.</li>
<li>Therefore, if a Rule does not specify a Control Group, then it is likely that the Freeze Action will be unsupported for that Rule/Control Group.</li>
</ul>
<p class="p">
- <strong>Kill Action</strong>:
+ <strong class="strong">Kill Action</strong>:
</p>
<ul>
<li>Forcefully terminate some process controlled by the <code class="code">controller</code>.</li>
<li>This action cannot be blocked and it is recommended to use a Stop Action instead for a more proper termination.</li>
</ul>
<p class="p">
- <strong>Pause Action</strong>:
+ <strong class="strong">Pause Action</strong>:
</p>
<ul>
<li>The Pause Action will pause (or freeze) the process controlled by the Rule.</li>
<li>This is complemented by the Resume Action.</li>
</ul>
<p class="p">
- <strong>Restart Action</strong>:
+ <strong class="strong">Restart Action</strong>:
</p>
<ul>
<li>The Restart Action will either perform a Stop Action and then a Restart Action or it will perform the Restart Action designated in some Rule file.</li>
<li>Ideally this should inform some process to perform its own restart routines.</li>
</ul>
<p class="p">
- <strong>Resume Action</strong>:
+ <strong class="strong">Resume Action</strong>:
</p>
<ul>
<li>The Resume Action will unpause (or unfreeze) the process controlled by the Rule.</li>
<li>This is complemented by the Pause Action.</li>
</ul>
<p class="p">
- <strong>Reload Action</strong>:
+ <strong class="strong">Reload Action</strong>:
</p>
<ul>
<li>The Reload Action will perform the Reload Action designated in some Rule file.</li>
<li>Many programs often differentiate the concept <code class="code">reload</code> from the concept <code class="code">restart</code> in that the program remains running during a <code class="code">reload</code>.</li>
</ul>
<p class="p">
- <strong>Start Action</strong>:
+ <strong class="strong">Start Action</strong>:
</p>
<ul>
<li>The Start Action will perform the Start Action designated in some Rule file.</li>
<li>This is complemented by the Stop Action.</li>
</ul>
<p class="p">
- <strong>Stop Action</strong>:
+ <strong class="strong">Stop Action</strong>:
</p>
<ul>
<li>The Stop Action will perform the Stop Action designated in some Rule file.</li>
<li>This is complemented by the Start Action.</li>
</ul>
<p class="p">
- <strong>Thaw Action</strong>:
+ <strong class="strong">Thaw Action</strong>:
</p>
<ul>
<li>The Thaw Action is an extension of a Control Group.</li>
<li>This is the complement of the Freeze Action.</li>
<li>This designates that a processes Control Group is to be unfrozen.</li>
<li>All Rules (or any process not controlled by the <code class="code">controller</code>) that is within the same Control Group will be frozen.</li>
- <li><em>(@todo consider instead designing this around the Control Groups instead of a <code class="code">rule</code>.)</em></li>
- <li><em>(This documentation will likely change with consideration to the above @todo once this gets implemented.)</em></li>
+ <li><em class="em">(@todo consider instead designing this around the Control Groups instead of a <code class="code">rule</code>.)</em></li>
+ <li><em class="em">(This documentation will likely change with consideration to the above @todo once this gets implemented.)</em></li>
<li>This must not attempt to thaw (or unthaw) the Control Group that the <code class="code">controller</code> belongs to.</li>
<li>Therefore, if a Rule does not specify a Control Group, then it is likely that the Thaw Action will be unsupported for that Rule/Control Group.</li>
</ul>
<div class="main-content">
<p class="p">
- The <strong>Entry</strong> files follow the <code class="code">FSS-0005 (Somewhat Basic List)</code> format.
+ The <strong class="strong">Entry</strong> files follow the <code class="code">FSS-0005 (Somewhat Basic List)</code> format.
</p>
<p class="p">
- An <strong>Entry</strong> file name is expected to have the file extension <code class="code">.entry</code>.
+ An <strong class="strong">Entry</strong> file name is expected to have the file extension <code class="code">.entry</code>.
</p>
<p class="p">
- For each <strong>Entry</strong> file:
+ For each <strong class="strong">Entry</strong> file:
</p>
<ul>
<li>The outer most part is a <code class="code">FSS-0002 (Basic List)</code>.</li>
- <li>The <em>Basic List Object</em> is considered the <code class="code">Item</code>.</li>
- <li>The <em>Basic List Content</em> are considered the <code class="code">Actions</code>.</li>
- <li>The <em>Actions</em> are <code class="code">FSS-0001 (Extended)</code>.</li>
- <li>Each <em>Action Object</em> is the <code class="code">Action Name</code>.</li>
- <li>Each <em>Action Content</em> are the <code class="code">Action Parameters</code>.</li>
+ <li>The <em class="em">Basic List Object</em> is considered the <code class="code">Item</code>.</li>
+ <li>The <em class="em">Basic List Content</em> are considered the <code class="code">Actions</code>.</li>
+ <li>The <em class="em">Actions</em> are <code class="code">FSS-0001 (Extended)</code>.</li>
+ <li>Each <em class="em">Action Object</em> is the <code class="code">Action Name</code>.</li>
+ <li>Each <em class="em">Action Content</em> are the <code class="code">Action Parameters</code>.</li>
</ul>
<p class="p">
- The <strong>Items</strong>:
+ The <strong class="strong">Items</strong>:
</p>
<ul>
<li><code class="code">main</code>: required.</li>
</li>
</ul>
<p class="p">
- The <strong>Entry</strong> file may have any other valid Item Objects, but only the above are reserved.
+ The <strong class="strong">Entry</strong> file may have any other valid Item Objects, but only the above are reserved.
</p>
<p class="p">
The Actions:
<div class="section-content">
<p class="p">
- This describes the intent and purpose of an <strong>Entry</strong> file.
+ This describes the intent and purpose of an <strong class="strong">Entry</strong> file.
</p>
<p class="p">
- An <strong>Entry</strong> file, such as <code class="code">default.entry</code>, is intended to store a set of rules in which the controller will process on execution.
+ An <strong class="strong">Entry</strong> file, such as <code class="code">default.entry</code>, is intended to store a set of rules in which the controller will process on execution.
These are used to run some set of commands, such as booting a system.
</p>
<p class="p">
The <code class="code">settings</code> item Object:
</p>
<ul>
- <li>Represents <strong>Entry</strong> settings and is not an <code class="code">item</code> that can be executed.</li>
+ <li>Represents <strong class="strong">Entry</strong> settings and is not an <code class="code">item</code> that can be executed.</li>
<li>A number of settings are supported, but if this Item Object is not specified, then defaults are used.</li>
<li>
<div>
<li>Example IKI variable substitution: for <code class="code">define PATH /bin:/sbin</code>, the associated IKI variable would look like: <code class="code">define:"PATH"</code>.</li>
<li>All environment variables, including those defined using this, must be in the <code class="code">environment</code> list in any given Rule to be exported to the executed process.</li>
<li>Environment variables added here that are not added to the environment are still exposed as an IKI variable.</li>
- <li>This is only expanded within any Rule operated on by this <strong>Entry</strong>.</li>
+ <li>This is only expanded within any Rule operated on by this <strong class="strong">Entry</strong>.</li>
</ul>
<p class="p">
The <code class="code">mode</code> setting:
</p>
<ul>
- <li>Represents the mode in which the <strong>Entry</strong> is operating in.</li>
+ <li>Represents the mode in which the <strong class="strong">Entry</strong> is operating in.</li>
<li>
<div>The following modes are supported: <code class="code">program</code> and <code class="code">service</code>.</div>
<p class="p">
The <code class="code">program</code> mode:
</p>
<ul>
- <li>Designates that the <strong>Entry</strong> operates as a program and exits when complete.</li>
- <li>Will call the <code class="code">exit</code> with the same name as this <strong>Entry</strong>, but with the extension <code class="code">exit</code>, such as <code class="code">default.exit</code>.</li>
+ <li>Designates that the <strong class="strong">Entry</strong> operates as a program and exits when complete.</li>
+ <li>Will call the <code class="code">exit</code> with the same name as this <strong class="strong">Entry</strong>, but with the extension <code class="code">exit</code>, such as <code class="code">default.exit</code>.</li>
<li>Supports the Item Action <code class="code">execute</code> to execute a program (switching the <code class="code">controller</code> program entirely with the executed process).</li>
</ul>
<p class="p">
The <code class="code">service</code> mode:
</p>
<ul>
- <li>Designates that the <strong>Entry</strong> operates as a service and will sit and wait for control commands when complete.</li>
- <li>Will call the <code class="code">exit</code> with the same name as this <strong>Entry</strong>, but with the extension <code class="code">exit</code>, such as <code class="code">default.exit</code>.</li>
+ <li>Designates that the <strong class="strong">Entry</strong> operates as a service and will sit and wait for control commands when complete.</li>
+ <li>Will call the <code class="code">exit</code> with the same name as this <strong class="strong">Entry</strong>, but with the extension <code class="code">exit</code>, such as <code class="code">default.exit</code>.</li>
<li>Does not support the Item Action <code class="code">execute</code>.</li>
<li>This is the default mode.</li>
</ul>
<li>Use this to define an IKI variable name and value.</li>
<li>These do not conflict with environment variables and are not exposed as environment variables.</li>
<li>Example IKI variable substitution: for <code class="code">parameter hello world</code>, the associated IKI variable would look like: <code class="code">parameter:"hello"</code>.</li>
- <li>This is only expanded within any Rule operated on by this <strong>Entry</strong>.</li>
+ <li>This is only expanded within any Rule operated on by this <strong class="strong">Entry</strong>.</li>
</ul>
<p class="p">
The <code class="code">pid</code> setting:
</p>
<ul>
- <li>Represents how the <strong>Entry</strong> <abbr title="Process Identifier">PID</abbr> file is generated or not.</li>
+ <li>Represents how the <strong class="strong">Entry</strong> <abbr title="Process Identifier">PID</abbr> file is generated or not.</li>
<li>The following modes are supported: <code class="code">disable</code>, <code class="code">require</code>, and <code class="code">ready</code>.</li>
- <li>For <code class="code">disable</code>, not <abbr title="Process Identifier">PID</abbr> file representing the <strong>Entry</strong> is created.</li>
- <li>For <code class="code">require</code>, check to see if the <abbr title="Process Identifier">PID</abbr> file exists for an <strong>Entry</strong> at startup and then when <code class="code">ready</code> create a <abbr title="Process Identifier">PID</abbr> file, display error on <abbr title="Process Identifier">PID</abbr> file already exists or on failure and then fail.</li>
+ <li>For <code class="code">disable</code>, not <abbr title="Process Identifier">PID</abbr> file representing the <strong class="strong">Entry</strong> is created.</li>
+ <li>For <code class="code">require</code>, check to see if the <abbr title="Process Identifier">PID</abbr> file exists for an <strong class="strong">Entry</strong> at startup and then when <code class="code">ready</code> create a <abbr title="Process Identifier">PID</abbr> file, display error on <abbr title="Process Identifier">PID</abbr> file already exists or on failure and then fail.</li>
<li>For <code class="code">ready</code>, when <code class="code">ready</code> create a <abbr title="Process Identifier">PID</abbr> file, display error on failure and then fail (does not check if <abbr title="Process Identifier">PID</abbr> file exists).</li>
</ul>
<p class="p">
The <code class="code">show</code> setting:
</p>
<ul>
- <li>Represents the way <strong>Entry</strong> processing presents information to the screen.</li>
- <li>This applies only to the <strong>Entry</strong> and Rule processing itself and does not handle the output of programs and scripts being executed by some <strong>Entry</strong> or Rule.</li>
+ <li>Represents the way <strong class="strong">Entry</strong> processing presents information to the screen.</li>
+ <li>This applies only to the <strong class="strong">Entry</strong> and Rule processing itself and does not handle the output of programs and scripts being executed by some <strong class="strong">Entry</strong> or Rule.</li>
<li>The following show options are supported: <code class="code">normal</code> and <code class="code">init</code>.</li>
- <li>For <code class="code">normal</code>, will not report the start or stop of some <strong>Entry</strong> or Rule execution but will report any errors or warnings as appropriate.</li>
+ <li>For <code class="code">normal</code>, will not report the start or stop of some <strong class="strong">Entry</strong> or Rule execution but will report any errors or warnings as appropriate.</li>
<li>For <code class="code">init</code>, will report when starting programs and may include reporting success and failure status.</li>
</ul>
<p class="p">
The <code class="code">timeout</code> setting:
</p>
<ul>
- <li>Represents the default timeouts for the <strong>Entry</strong>.</li>
+ <li>Represents the default timeouts for the <strong class="strong">Entry</strong>.</li>
<li>See the <code class="code">timeout</code> Action below for details.</li>
</ul>
</li>
<li>For example, the controller program may be used as a full blown <code class="code">init</code> replacement and therefore may need to mount the <code class="code">/var/run/</code> directory.</li>
<li>If the <abbr title="Process Identifier">PID</abbr> file is created at program start, then the <code class="code">/var/run/</code>controller.pid would be written before the <code class="code">/var/run/</code> directory is ready.</li>
<li>This could be a problem, such as on a read-only file system the <abbr title="Process Identifier">PID</abbr> creation fails and controller bails out on error.</li>
- <li>Adding <code class="code">ready</code> essentially specifies a point in time in the <strong>Entry</strong> in which things are expected to be safe for such basic operations.</li>
+ <li>Adding <code class="code">ready</code> essentially specifies a point in time in the <strong class="strong">Entry</strong> in which things are expected to be safe for such basic operations.</li>
<li>When the optional <code class="code">wait</code> is provided, then <code class="code">ready</code> will wait for all currently started asynchronous processes to complete before operating.</li>
</ul>
<p class="p">
<li>Provides default global settings for each of the four special situations: <code class="code">exit</code>, <code class="code">kill</code>, <code class="code">start</code>, and <code class="code">stop</code>.</li>
<li>Each of these may only have a single one exist at a time (one <code class="code">exit</code>, one <code class="code">kill</code>, one <code class="code">start</code>, and one <code class="code">stop</code>).</li>
<li>Each successive <code class="code">timeout</code> Item Action, specific to each Action Name (such as <code class="code">start</code>), specified replaces the previously defined <code class="code">timeout</code> Action (in a top-down manner).</li>
- <li>The second Content for each of these, when specified, may be a 0 or greater whole number representing the number of <em>MegaTime</em> (MT) (equivalent to milliseconds).</li>
- <li>For <code class="code">kill</code>, this represents the number of <em>MegaTime</em> to wait after stopping some Rule and that Rule has not yet stopped to forcefully stop the Rule (aka kill the Rule).</li>
- <li>For <code class="code">start</code>, this represents the number of <em>MegaTime</em> to wait after starting some Rule before assuming something went wrong and the Rule is returned as failed.</li>
- <li>For <code class="code">stop</code>, this represents the number of <em>MegaTime</em> to wait after stopping some Rule before assuming something went wrong and the Rule is returned as failed.</li>
+ <li>The second Content for each of these, when specified, may be a 0 or greater whole number representing the number of <em class="em">MegaTime</em> (MT) (equivalent to milliseconds).</li>
+ <li>For <code class="code">kill</code>, this represents the number of <em class="em">MegaTime</em> to wait after stopping some Rule and that Rule has not yet stopped to forcefully stop the Rule (aka kill the Rule).</li>
+ <li>For <code class="code">start</code>, this represents the number of <em class="em">MegaTime</em> to wait after starting some Rule before assuming something went wrong and the Rule is returned as failed.</li>
+ <li>For <code class="code">stop</code>, this represents the number of <em class="em">MegaTime</em> to wait after stopping some Rule before assuming something went wrong and the Rule is returned as failed.</li>
<li>If the second Content is not specified, then this disables the type (prevents the specified timeout action).</li>
- <li>For <code class="code">exit</code>, this represents the number of <em>MegaTime</em> to wait when the Controller program is exiting (such as having received a terminate signal).</li>
+ <li>For <code class="code">exit</code>, this represents the number of <em class="em">MegaTime</em> to wait when the Controller program is exiting (such as having received a terminate signal).</li>
<li>In this case, a terminate signal is sent to all child processes.</li>
<li>The <code class="code">exit</code> timeout represents the amount of time to wait after sending the terminate signal before sending a kill signal to each child process still running.</li>
<li>When disabled, the program will not send a kill signal will continue running until all child processes to terminate.</li>
<div role="document" class="main-block">
<main class="main">
<header class="section-header header">
- <h1 class="section-title h h1">Controller <strong>Exit</strong> Specifications</h1>
+ <h1 class="section-title h h1">Controller <strong class="strong">Exit</strong> Specifications</h1>
</header>
<div class="main-content">
<p class="p">
- The <strong>Exit</strong> files follow the <code class="code">FSS-0005 (Somewhat Basic List)</code> format.
+ The <strong class="strong">Exit</strong> files follow the <code class="code">FSS-0005 (Somewhat Basic List)</code> format.
</p>
<p class="p">
- An <strong>Exit</strong> file name is expected to have the file extension <code class="code">.exit</code>.
+ An <strong class="strong">Exit</strong> file name is expected to have the file extension <code class="code">.exit</code>.
</p>
<p class="p">
- For each <strong>Exit</strong> file:
+ For each <strong class="strong">Exit</strong> file:
</p>
<ul>
<li>The outer most part is a <code class="code">FSS-0002 (Basic List)</code>.</li>
- <li>The <em>Basic List Object</em> is considered the <code class="code">Item</code>.</li>
- <li>The <em>Basic List Content</em> are considered the <code class="code">Actions</code>.</li>
- <li>The <em>Actions</em> are <code class="code">FSS-0001 (Extended)</code>.</li>
- <li>Each <em>Action Object</em> is the <code class="code">Action Name</code>.</li>
- <li>Each <em>Action Content</em> are the <code class="code">Action Parameters</code>.</li>
+ <li>The <em class="em">Basic List Object</em> is considered the <code class="code">Item</code>.</li>
+ <li>The <em class="em">Basic List Content</em> are considered the <code class="code">Actions</code>.</li>
+ <li>The <em class="em">Actions</em> are <code class="code">FSS-0001 (Extended)</code>.</li>
+ <li>Each <em class="em">Action Object</em> is the <code class="code">Action Name</code>.</li>
+ <li>Each <em class="em">Action Content</em> are the <code class="code">Action Parameters</code>.</li>
</ul>
<p class="p">
- The <strong>Items</strong>:
+ The <strong class="strong">Items</strong>:
</p>
<ul>
<li><code class="code">main</code>: required.</li>
</li>
</ul>
<p class="p">
- The <strong>Exit</strong> file may have any other valid Item Objects, but only the above are reserved.
+ The <strong class="strong">Exit</strong> file may have any other valid Item Objects, but only the above are reserved.
</p>
<p class="p">
The Actions:
<div class="section-content">
<p class="p">
- This describes the intent and purpose of an <strong>Exit</strong> file.
+ This describes the intent and purpose of an <strong class="strong">Exit</strong> file.
</p>
<p class="p">
- An <strong>Exit</strong> file, such as <code class="code">default.exit</code>, is intended to store a set of rules in which the controller will process on execution.
+ An <strong class="strong">Exit</strong> file, such as <code class="code">default.exit</code>, is intended to store a set of rules in which the controller will process on execution.
These are used to run some set of commands, such as shutting down a system.
</p>
<p class="p">
- An <strong>Exit</strong> is a special variation or subset of an <strong>Entry</strong>.
+ An <strong class="strong">Exit</strong> is a special variation or subset of an <strong class="strong">Entry</strong>.
</p>
<p class="p">
The <code class="code">settings</code> item Object:
</p>
<ul>
- <li>Represents <strong>Exit</strong> settings and is not an <code class="code">item</code> that can be executed.</li>
+ <li>Represents <strong class="strong">Exit</strong> settings and is not an <code class="code">item</code> that can be executed.</li>
<li>A number of settings are supported, but if this Item Object is not specified, then defaults are used.</li>
<li>
<div>
<li>Example IKI variable substitution: for <code class="code">define PATH /bin:/sbin</code>, the associated IKI variable would look like: <code class="code">define:"PATH"</code>.</li>
<li>All environment variables, including those defined using this, must be in the <code class="code">environment</code> list in any given Rule to be exported to the executed process.</li>
<li>Environment variables added here that are not added to the environment are still exposed as an IKI variable.</li>
- <li>This is only expanded within any Rule operated on by this <strong>Exit</strong>.</li>
+ <li>This is only expanded within any Rule operated on by this <strong class="strong">Exit</strong>.</li>
</ul>
<p class="p">
The <code class="code">mode</code> setting:
</p>
<ul>
- <li>Represents the mode in which the <strong>Exit</strong> is operating in.</li>
+ <li>Represents the mode in which the <strong class="strong">Exit</strong> is operating in.</li>
<li>
<div>The following modes are supported: <code class="code">program</code> and <code class="code">service</code>.</div>
<p class="p">
The <code class="code">program</code> mode:
</p>
<ul>
- <li>Designates that the <strong>Exit</strong> operates as a program and exits when complete.</li>
- <li>Will call the <code class="code">exit</code> with the same name as this <strong>Exit</strong>, but with the extension <code class="code">exit</code>, such as <code class="code">default.exit</code>.</li>
+ <li>Designates that the <strong class="strong">Exit</strong> operates as a program and exits when complete.</li>
+ <li>Will call the <code class="code">exit</code> with the same name as this <strong class="strong">Exit</strong>, but with the extension <code class="code">exit</code>, such as <code class="code">default.exit</code>.</li>
<li>Supports the Item Action <code class="code">execute</code> to execute a program (switching the <code class="code">controller</code> program entirely with the executed process).</li>
</ul>
<p class="p">
The <code class="code">service</code> mode:
</p>
<ul>
- <li>Designates that the <strong>Exit</strong> operates as a service and will sit and wait for control commands when complete.</li>
- <li>Will call the <code class="code">exit</code> with the same name as this <strong>Exit</strong>, but with the extension <code class="code">exit</code>, such as <code class="code">default.exit</code>.</li>
+ <li>Designates that the <strong class="strong">Exit</strong> operates as a service and will sit and wait for control commands when complete.</li>
+ <li>Will call the <code class="code">exit</code> with the same name as this <strong class="strong">Exit</strong>, but with the extension <code class="code">exit</code>, such as <code class="code">default.exit</code>.</li>
<li>Does not support the Item Action <code class="code">execute</code>.</li>
<li>This is the default mode.</li>
</ul>
<li>Use this to define an IKI variable name and value.</li>
<li>These do not conflict with environment variables and are not exposed as environment variables.</li>
<li>Example IKI variable substitution: for <code class="code">parameter hello world</code>, the associated IKI variable would look like: <code class="code">parameter:"hello"</code>.</li>
- <li>This is only expanded within any Rule operated on by this <strong>Exit</strong>.</li>
+ <li>This is only expanded within any Rule operated on by this <strong class="strong">Exit</strong>.</li>
</ul>
<p class="p">
The <code class="code">pid</code> setting:
</p>
<ul>
- <li>Represents how the <strong>Exit</strong> <abbr title="Process Identifier">PID</abbr> file is generated or not.</li>
+ <li>Represents how the <strong class="strong">Exit</strong> <abbr title="Process Identifier">PID</abbr> file is generated or not.</li>
<li>The following modes are supported: <code class="code">disable</code>, <code class="code">require</code>, and <code class="code">ready</code>.</li>
- <li>For <code class="code">disable</code>, not <abbr title="Process Identifier">PID</abbr> file representing the <strong>Exit</strong> is created.</li>
- <li>For <code class="code">require</code>, check to see if the <abbr title="Process Identifier">PID</abbr> file exists for an <strong>Exit</strong> at startup and then when <code class="code">ready</code> create a <abbr title="Process Identifier">PID</abbr> file, display error on <abbr title="Process Identifier">PID</abbr> file already exists or on failure and then fail.</li>
+ <li>For <code class="code">disable</code>, not <abbr title="Process Identifier">PID</abbr> file representing the <strong class="strong">Exit</strong> is created.</li>
+ <li>For <code class="code">require</code>, check to see if the <abbr title="Process Identifier">PID</abbr> file exists for an <strong class="strong">Exit</strong> at startup and then when <code class="code">ready</code> create a <abbr title="Process Identifier">PID</abbr> file, display error on <abbr title="Process Identifier">PID</abbr> file already exists or on failure and then fail.</li>
<li>For <code class="code">ready</code>, when <code class="code">ready</code> create a <abbr title="Process Identifier">PID</abbr> file, display error on failure and then fail (does not check if <abbr title="Process Identifier">PID</abbr> file exists).</li>
</ul>
<p class="p">
The <code class="code">show</code> setting:
</p>
<ul>
- <li>Represents the way <strong>Exit</strong> processing presents information to the screen.</li>
- <li>This applies only to the <strong>Exit</strong> and Rule processing itself and does not handle the output of programs and scripts being executed by some <strong>Exit</strong> or Rule.</li>
+ <li>Represents the way <strong class="strong">Exit</strong> processing presents information to the screen.</li>
+ <li>This applies only to the <strong class="strong">Exit</strong> and Rule processing itself and does not handle the output of programs and scripts being executed by some <strong class="strong">Exit</strong> or Rule.</li>
<li>The following show options are supported: <code class="code">normal</code> and <code class="code">init</code>.</li>
- <li>For <code class="code">normal</code>, will not report the start or stop of some <strong>Exit</strong> or Rule execution but will report any errors or warnings as appropriate.</li>
+ <li>For <code class="code">normal</code>, will not report the start or stop of some <strong class="strong">Exit</strong> or Rule execution but will report any errors or warnings as appropriate.</li>
<li>For <code class="code">init</code>, will report when starting programs and may include reporting success and failure status.</li>
</ul>
<p class="p">
The <code class="code">timeout</code> setting:
</p>
<ul>
- <li>Represents the default timeouts for the <strong>Exit</strong>.</li>
+ <li>Represents the default timeouts for the <strong class="strong">Exit</strong>.</li>
<li>See the <code class="code">timeout</code> Action below for details.</li>
</ul>
</li>
<li>For example, the controller program may be used as a full blown <code class="code">init</code> replacement and therefore may need to mount the <code class="code">/var/run/</code> directory.</li>
<li>If the <abbr title="Process Identifier">PID</abbr> file is created at program start, then the <code class="code">/var/run/</code>controller.pid would be written before the <code class="code">/var/run/</code> directory is ready.</li>
<li>This could be a problem, such as on a read-only file system the <abbr title="Process Identifier">PID</abbr> creation fails and controller bails out on error.</li>
- <li>Adding <code class="code">ready</code> essentially specifies a point in time in the <strong>Exit</strong> in which things are expected to be safe for such basic operations.</li>
+ <li>Adding <code class="code">ready</code> essentially specifies a point in time in the <strong class="strong">Exit</strong> in which things are expected to be safe for such basic operations.</li>
<li>When the optional <code class="code">wait</code> is provided, then <code class="code">ready</code> will wait for all currently started asynchronous processes to complete before operating.</li>
</ul>
<p class="p">
<li>Provides default global settings for each of the four special situations: <code class="code">exit</code>, <code class="code">kill</code>, <code class="code">start</code>, and <code class="code">stop</code>.</li>
<li>Each of these may only have a single one exist at a time (one <code class="code">exit</code>, one <code class="code">kill</code>, one <code class="code">start</code>, and one <code class="code">stop</code>).</li>
<li>Each successive <code class="code">timeout</code> Item Action, specific to each Action Name (such as <code class="code">start</code>), specified replaces the previously defined <code class="code">timeout</code> Action (in a top-down manner).</li>
- <li>The second Content for each of these, when specified, may be a 0 or greater whole number representing the number of <em>MegaTime</em> (MT) (equivalent to milliseconds).</li>
- <li>For <code class="code">kill</code>, this represents the number of <em>MegaTime</em> to wait after stopping some Rule and that Rule has not yet stopped to forcefully stop the Rule (aka kill the Rule).</li>
- <li>For <code class="code">start</code>, this represents the number of <em>MegaTime</em> to wait after starting some Rule before assuming something went wrong and the Rule is returned as failed.</li>
- <li>For <code class="code">stop</code>, this represents the number of <em>MegaTime</em> to wait after stopping some Rule before assuming something went wrong and the Rule is returned as failed.</li>
+ <li>The second Content for each of these, when specified, may be a 0 or greater whole number representing the number of <em class="em">MegaTime</em> (MT) (equivalent to milliseconds).</li>
+ <li>For <code class="code">kill</code>, this represents the number of <em class="em">MegaTime</em> to wait after stopping some Rule and that Rule has not yet stopped to forcefully stop the Rule (aka kill the Rule).</li>
+ <li>For <code class="code">start</code>, this represents the number of <em class="em">MegaTime</em> to wait after starting some Rule before assuming something went wrong and the Rule is returned as failed.</li>
+ <li>For <code class="code">stop</code>, this represents the number of <em class="em">MegaTime</em> to wait after stopping some Rule before assuming something went wrong and the Rule is returned as failed.</li>
<li>If the second Content is not specified, then this disables the type (prevents the specified timeout action).</li>
- <li>For <code class="code">exit</code>, this represents the number of <em>MegaTime</em> to wait when the Controller program is exiting (such as having received a terminate signal).</li>
+ <li>For <code class="code">exit</code>, this represents the number of <em class="em">MegaTime</em> to wait when the Controller program is exiting (such as having received a terminate signal).</li>
<li>In this case, a terminate signal is sent to all child processes.</li>
<li>The <code class="code">exit</code> timeout represents the amount of time to wait after sending the terminate signal before sending a kill signal to each child process still running.</li>
<li>When disabled, the program will not send a kill signal will continue running until all child processes to terminate.</li>
<div class="main-content">
<p class="p">
- The <strong>controller</strong> program communicates use the <code class="code">FSS-000F (Packet)</code>.
+ The <strong class="strong">controller</strong> program communicates use the <code class="code">FSS-000F (Packet)</code>.
</p>
<p class="p">
This specification declares how the Payload Block, which is in <code class="code">FSS-000E (Payload)</code> format, is required to be used.
</li>
</ul>
<p class="p">
- The <strong>controller</strong> payload:
+ The <strong class="strong">controller</strong> payload:
</p>
<ul>
- <li>Commands being sent to the <strong>controller</strong> and their respective responses utilize a <strong>controller</strong> payload.</li>
- <li>These are pre-defined commands to rules or the <strong>controller</strong> program itself.</li>
+ <li>Commands being sent to the <strong class="strong">controller</strong> and their respective responses utilize a <strong class="strong">controller</strong> payload.</li>
+ <li>These are pre-defined commands to rules or the <strong class="strong">controller</strong> program itself.</li>
<li>Commands such as starting or stopping some rule, for example.</li>
<li>
- <div>A <strong>controller</strong> payload is also sent in response to a <strong>controller</strong> payload request to represent a success.</div>
+ <div>A <strong class="strong">controller</strong> payload is also sent in response to a <strong class="strong">controller</strong> payload request to represent a success.</div>
<ul>
<li>The <code class="code">now</code> condition designates that the kexec, reboot, or shutdown is to begin immediately.</li>
<li>The <code class="code">at</code> condition designates that the kexec, reboot, or shutdown is to begin once a specific date and time is reached by the system clock.</li>
Multiple <code class="code">message</code> may exist in the response so long as they each match an <code class="code">action</code> in the request.
</p>
<p class="p">
- The <strong>error</strong> payload:
+ The <strong class="strong">error</strong> payload:
</p>
<ul>
<li>The error payload is intended to communicate some sort of failure.</li>
<li>The <code class="code">payload</code> will contain a NULL terminated string representing the message used to describe the error.</li>
</ul>
<p class="p">
- The <strong>init</strong> payload:
+ The <strong class="strong">init</strong> payload:
</p>
<ul>
<li>The init payload is intended exclusively for the <code class="code">init</code> operation mode and is expected to only be available when running as <code class="code">init</code>.</li>
<ul>
<li>The outer most part is a <code class="code">FSS-0002 (Basic List)</code>.</li>
<li>The outer most part is a <code class="code">FSS-0002 (Basic List)</code>.</li>
- <li>The Basic List Object is considered the <em>Rule Type</em>.</li>
- <li>The Basic List Content is determined by the specific <em>Rule Type</em>.</li>
- <li>The Content for each <em>Rule Type</em> is called the <em>Item</em>.</li>
- <li>Each Item Object is the <em>Item Name</em>.</li>
- <li>Each Item Content is either the <em>Action</em> or the <em>Setting</em>.</li>
- <li>Each Action Object is the <em>Action Name</em>.</li>
- <li>Each Action Content are the <em>Action Parameters</em>.</li>
- <li>Each Setting Object is the <em>Setting Name</em>.</li>
- <li>Each Setting Content are the <em>Setting Values</em>.</li>
+ <li>The Basic List Object is considered the <em class="em">Rule Type</em>.</li>
+ <li>The Basic List Content is determined by the specific <em class="em">Rule Type</em>.</li>
+ <li>The Content for each <em class="em">Rule Type</em> is called the <em class="em">Item</em>.</li>
+ <li>Each Item Object is the <em class="em">Item Name</em>.</li>
+ <li>Each Item Content is either the <em class="em">Action</em> or the <em class="em">Setting</em>.</li>
+ <li>Each Action Object is the <em class="em">Action Name</em>.</li>
+ <li>Each Action Content are the <em class="em">Action Parameters</em>.</li>
+ <li>Each Setting Object is the <em class="em">Setting Name</em>.</li>
+ <li>Each Setting Content are the <em class="em">Setting Values</em>.</li>
</ul>
<p class="p">
The Rule Types:
<li><code class="code">group</code>: One or more Content representing group names or group ids.</li>
<li><code class="code">limit</code>: Three Content, with the first representing a valid resource type and the second and third being a valid resource limit number (positive whole number or 0).</li>
<li><code class="code">name</code>: One Content, must have at least 1 graph character (non white space printing character) (leading and trailing white space are trimmed off).</li>
- <li><code class="code">nice</code>: One Content, must be a valid number for process <em>niceness</em> (Any whole number inclusively between -20 to 19).</li>
+ <li><code class="code">nice</code>: One Content, must be a valid number for process <em class="em">niceness</em> (Any whole number inclusively between -20 to 19).</li>
<li><code class="code">on</code>: Four Content, the first being a Rule Action, the second being <code class="code">need</code>, <code class="code">want</code>, or <code class="code">wish</code>, the third being a partial path, and the fourth being a Rule file name without <code class="code">.rule</code> extension.</li>
<li><code class="code">parameter</code>: Two Content, the first Content must be a case-sensitive valid IKI name and the second being an IKI value.</li>
<li><code class="code">path</code>: One Content representing a valid PATH environment string (such as <code class="code">/bin:/sbin:/usr/bin</code>).</li>
<li>Provides settings for each of the three special situations: <code class="code">kill</code>, <code class="code">start</code>, and <code class="code">stop</code>.</li>
<li>Each of these may only have a single one exist at a time (one <code class="code">kill</code>, one <code class="code">start</code>, and one <code class="code">stop</code>).</li>
<li>Each successive <code class="code">timeout</code> Item Action, specific to each Action Name (such as <code class="code">start</code>), specified replaces the previously defined <code class="code">timeout</code> Action (in a top-down manner).</li>
- <li>The second Content for each of these, when specified, may be a 0 or greater whole number representing the number of <em>MegaTime</em> (MT) (equivalent to milliseconds).</li>
- <li>For <code class="code">kill</code>, this represents the number of <em>MegaTime</em> to wait after stopping some Rule and that Rule has not yet stopped to forcefully stop the Rule (aka kill the Rule).</li>
- <li>For <code class="code">start</code>, this represents the number of <em>MegaTime</em> to wait after starting some Rule before assuming something went wrong and the Rule is returned as failed.</li>
- <li>For <code class="code">stop</code>, this represents the number of <em>MegaTime</em> to wait after stopping some Rule before assuming something went wrong and the Rule is returned as failed.</li>
+ <li>The second Content for each of these, when specified, may be a 0 or greater whole number representing the number of <em class="em">MegaTime</em> (MT) (equivalent to milliseconds).</li>
+ <li>For <code class="code">kill</code>, this represents the number of <em class="em">MegaTime</em> to wait after stopping some Rule and that Rule has not yet stopped to forcefully stop the Rule (aka kill the Rule).</li>
+ <li>For <code class="code">start</code>, this represents the number of <em class="em">MegaTime</em> to wait after starting some Rule before assuming something went wrong and the Rule is returned as failed.</li>
+ <li>For <code class="code">stop</code>, this represents the number of <em class="em">MegaTime</em> to wait after stopping some Rule before assuming something went wrong and the Rule is returned as failed.</li>
<li>If the second Content is not specified, then this disables the type (prevents the specified timeout action).</li>
</ul>
<p class="p">
<li>
<div>The third Content and more represent additional options for fine tuning how the re-run is Performed:</div>
<ul>
- <li>When <code class="code">delay</code>, followed by a number of <em>MegaTime</em> (MT) (equivalent to milliseconds) in which to wait before attempting the re-run.</li>
+ <li>When <code class="code">delay</code>, followed by a number of <em class="em">MegaTime</em> (MT) (equivalent to milliseconds) in which to wait before attempting the re-run.</li>
<li>When <code class="code">max</code>, followed by a positive number or the number 0 designating the maximum number of re-runs to perform.</li>
<li>
<div>When <code class="code">reset</code>, the <code class="code">max</code> re-run counter is reset for the opposite re-run when this re-run is triggered, such as:</div>
<div class="main-content">
<p class="p">
- The <strong>fake</strong> program, also called <strong>Featureless Make</strong> is the flagship program of the <abbr title="Featureless Linux Library">FLL</abbr> project and provides the ability to compile source code and perform various actions not unlike how the <strong>GNU Make</strong> program operates.
+ The <strong class="strong">fake</strong> program, also called <strong class="strong">Featureless Make</strong> is the flagship program of the <abbr title="Featureless Linux Library">FLL</abbr> project and provides the ability to compile source code and perform various actions not unlike how the <strong class="strong">GNU Make</strong> program operates.
</p>
<p class="p">
- This tools is directly intended to be a replacement to the <strong>GNU Make</strong> program but not as a replacement for all of the <strong>GNU Make</strong> functionality. Instead, the <strong>fake</strong> program follows the ideology that a build program should not involve itself with system-specific behavior, such as installing to a system.
+ This tools is directly intended to be a replacement to the <strong class="strong">GNU Make</strong> program but not as a replacement for all of the <strong class="strong">GNU Make</strong> functionality. Instead, the <strong class="strong">fake</strong> program follows the ideology that a build program should not involve itself with system-specific behavior, such as installing to a system.
</p>
<p class="p">
- Despite this non-standard ideology, the <strong>fake</strong> program is flexible enough to be used as an installer. In fact, this tool is used to not only build the entire <abbr title="Featureless Linux Library">FLL</abbr> but it can also compile and run unit tests for the project.
+ Despite this non-standard ideology, the <strong class="strong">fake</strong> program is flexible enough to be used as an installer. In fact, this tool is used to not only build the entire <abbr title="Featureless Linux Library">FLL</abbr> but it can also compile and run unit tests for the project.
</p>
<p class="p">
A bootstrap script is provided in all <abbr title="Featureless Linux Library">FLL</abbr> projects that operates with almost complete one-to-one functionality to this tool to allow for the system to build itself. A great example of this is the test script used to run unit tests on services like Github where this project must compile itself and then use itself to run unit tests against itself.
</p>
<p class="p">
- While most of the programs provided with the <abbr title="Featureless Linux Library">FLL</abbr> are young and not well tested, the <strong>fake</strong> program is considered mature.
+ While most of the programs provided with the <abbr title="Featureless Linux Library">FLL</abbr> are young and not well tested, the <strong class="strong">fake</strong> program is considered mature.
</p>
<p class="p">
There are two primary operations in which this tool executes:
</p>
<ol>
- <li>The <strong>build</strong> operation.</li>
- <li>The <strong>make</strong> operation.</li>
+ <li>The <strong class="strong">build</strong> operation.</li>
+ <li>The <strong class="strong">make</strong> operation.</li>
</ol>
<p class="p">
- The <strong>build</strong> mode is derived from the idea that most of the compilation process is redundant and can be simplified to a pre-define set of configuration settings. This reduces the amount of efforted needed to write and mainting a build system at the cost of flexibility.
+ The <strong class="strong">build</strong> mode is derived from the idea that most of the compilation process is redundant and can be simplified to a pre-define set of configuration settings. This reduces the amount of efforted needed to write and mainting a build system at the cost of flexibility.
</p>
<p class="p">
- The <strong>make</strong> mode is the mode for operating as a replacement to the <strong>GNU Make</strong> program. This provides scriptable ways to perform just about any task needed when building a system. Many of the <strong>build</strong> mode settings are available (but are not required) and this mode can even call the <strong>build</strong> mode itself.
+ The <strong class="strong">make</strong> mode is the mode for operating as a replacement to the <strong class="strong">GNU Make</strong> program. This provides scriptable ways to perform just about any task needed when building a system. Many of the <strong class="strong">build</strong> mode settings are available (but are not required) and this mode can even call the <strong class="strong">build</strong> mode itself.
</p>
</div>
</table>
</div>
<p class="p">
- The <code class="code">+Q/++quiet</code> parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the <strong>utf8</strong> program is to print the Unicode code point or the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte code. The <code class="code">+Q/++quiet</code> will not suppress this output. The new line printed at the end of the program, is however, not printed. The <code class="code">+Q/++quiet</code> is ideal for using in scripting to help guarantee more consistent and controlled output.
+ The <code class="code">+Q/++quiet</code> parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the <strong class="strong">utf8</strong> program is to print the Unicode code point or the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte code. The <code class="code">+Q/++quiet</code> will not suppress this output. The new line printed at the end of the program, is however, not printed. The <code class="code">+Q/++quiet</code> is ideal for using in scripting to help guarantee more consistent and controlled output.
</p>
<p class="p">
The <code class="code">+N/++no_color</code> simplifies the output to avoid the special color character codes. The special color character codes tend to take up a lot of extra space and may slow down printing performance.
When using the <code class="code">-d/--define</code> parameter the define structure must be passed as-is and may even need to be quoted if there is whitespace.
</p>
<p class="p">
- For example, in the <strong>C</strong> programming, passing a macro to the compiler might look like '<code class="code">-DMY_MACRO=1</code>'. To do this using <code class="code">-d/--define</code>, there would be two parameters passed like this: '<code class="code">-d -DMY_MACRO=1</code>'. This works because the parameter after the <code class="code">-d/--define</code> is not interpreted and is treated exactly as is without interpreting it as a parameter to the <strong>fake</strong> program.
+ For example, in the <strong class="strong">C</strong> programming, passing a macro to the compiler might look like '<code class="code">-DMY_MACRO=1</code>'. To do this using <code class="code">-d/--define</code>, there would be two parameters passed like this: '<code class="code">-d -DMY_MACRO=1</code>'. This works because the parameter after the <code class="code">-d/--define</code> is not interpreted and is treated exactly as is without interpreting it as a parameter to the <strong class="strong">fake</strong> program.
</p>
<p class="p">
Because of this, passing '<code class="code">-d -h</code>' would not print the program help because the '<code class="code">-h</code>' is considered a value associated with the '<code class="code">-d</code>' parameter rather than a parameter itself.
When piping data to this program, the piped data is treated as a <code class="code">fakefile</code>.
</p>
<p class="p">
- Only the <strong>make</strong> operation is supported when using piped data.
+ Only the <strong class="strong">make</strong> operation is supported when using piped data.
</p>
</div>
</section>
The <abbr title="Featureless Linux Library">FLL</abbr> project provides several <a href="fll/specifications.html" class="link">specifications</a>.
</p>
<p class="p">
- The <strong>Featureless Make</strong> follows the following specifications:
+ The <strong class="strong">Featureless Make</strong> follows the following specifications:
</p>
<ul>
<li><a href="fll/specifications/fss/fss-0000.html" class="link">FSS-0000 (Basic)</a></li>
<li><a href="fll/specifications/iki/iki-0002.html" class="link">IKI-0002 (Simple Script)</a></li>
</ul>
<p class="p">
- The <strong>Featureless Make</strong> defines the following specifications:
+ The <strong class="strong">Featureless Make</strong> defines the following specifications:
</p>
<ul>
<li><a href="documentation/fake/specifications/defines.html" class="link">Defines</a></li>
<div class="main-content">
<p class="p">
- The build settings <strong>defines</strong> file follows the <code class="code">FSS-0000 (Basic)</code> format.
+ The build settings <strong class="strong">defines</strong> file follows the <code class="code">FSS-0000 (Basic)</code> format.
</p>
<p class="p">
Each Object represents a specific a macro name to be defined during compilation.
<div class="main-content">
<p class="p">
- The build settings <strong>dependencies</strong> file follows the <code class="code">FSS-0001 (Extended)</code> format.
+ The build settings <strong class="strong">dependencies</strong> file follows the <code class="code">FSS-0001 (Extended)</code> format.
</p>
<p class="p">
Each Object represents a specific project name as it would be linked against.
<div class="main-content">
<p class="p">
- The <strong>fakefile</strong> file follows the <code class="code">FSS-0005 (Somewhat Basic List)</code> format with a sub-format of <code class="code">IKI-0002 (Simple Script)</code>.
+ The <strong class="strong">fakefile</strong> file follows the <code class="code">FSS-0005 (Somewhat Basic List)</code> format with a sub-format of <code class="code">IKI-0002 (Simple Script)</code>.
</p>
<p class="p">
- A <strong>fakefile</strong> is broken up into multiple Basic Lists, referred to as Sections, with two special purpose reserved Sections.
+ A <strong class="strong">fakefile</strong> is broken up into multiple Basic Lists, referred to as Sections, with two special purpose reserved Sections.
</p>
<p class="p">
The Sections are broken up into multiple Extended Objects and their respective Contents, referred to as Section Operations.
<div class="section-content">
<p class="p">
- This describes intent and purposes of the <strong>fakefile</strong> file settings.
+ This describes intent and purposes of the <strong class="strong">fakefile</strong> file settings.
</p>
<p class="p">
All files specified are relative to the project root.
<li>
<div><code class="code">settings</code>:</div>
<p class="p">
- Any configuration specific to this <strong>fakefile</strong> is stored here.
+ Any configuration specific to this <strong class="strong">fakefile</strong> is stored here.
</p>
<p class="p">
This includes the declaration of define and parameter IKI variable substitution values.
<li>
<div><code class="code">main</code>:</div>
<p class="p">
- This is the main entry point when processing the <strong>fakefile</strong>.
+ This is the main entry point when processing the <strong class="strong">fakefile</strong>.
</p>
<p class="p">
This is processed top-down until the end of the list is reached.
<li>
<div><code class="code">parameter</code>:</div>
<p class="p">
- This represents a variable defined within the scope of the <strong>fakefile</strong>.
+ This represents a variable defined within the scope of the <strong class="strong">fakefile</strong>.
</p>
<p class="p">
This is not exported as an environment variable and is therefore not visible to any executed programs or scripts.
<div class="main-content">
<p class="p">
- The build settings <strong>settings</strong> file follows the <code class="code">FSS-0001 (Extended)</code> format.
+ The build settings <strong class="strong">settings</strong> file follows the <code class="code">FSS-0001 (Extended)</code> format.
</p>
<p class="p">
Each Object represents a settings property name.
<div class="section-content">
<p class="p">
- This describes intent and purposes of the build <strong>settings</strong> file settings.
+ This describes intent and purposes of the build <strong class="strong">settings</strong> file settings.
</p>
<p class="p">
- The <strong>settings</strong> file is designed for very simple compilations that represent a single named program and/or a single named library.
+ The <strong class="strong">settings</strong> file is designed for very simple compilations that represent a single named program and/or a single named library.
</p>
<p class="p">
For specific details on the allowed formatting, see the settings.txt under the specifications folder.
The programs <code class="code">gcc</code> and <code class="code">clang</code> are known to work.
</p>
<p class="p">
- Many of the parameters in the <strong>settings</strong> file can be changed if using a non-GCC, but there may be certain hard-coded functionality that may need to be changed.
+ Many of the parameters in the <strong class="strong">settings</strong> file can be changed if using a non-GCC, but there may be certain hard-coded functionality that may need to be changed.
</p>
</li>
<li>
<div class="main-content">
<p class="p">
- The <strong>firewall</strong> program is a tool for simplifying and automating the <strong>iptables</strong> program.
+ The <strong class="strong">firewall</strong> program is a tool for simplifying and automating the <strong class="strong">iptables</strong> program.
</p>
<p class="p">
- This tool is set to be replaced now that both the <strong>firewall</strong> and the <strong>iptables</strong> programs are outdated. The latest <strong>iptables</strong> program replacement (the <strong>nftables</strong> program) is superior and the <strong>firewall</strong> will need major rewrites to utilize the replacement.
+ This tool is set to be replaced now that both the <strong class="strong">firewall</strong> and the <strong class="strong">iptables</strong> programs are outdated. The latest <strong class="strong">iptables</strong> program replacement (the <strong class="strong">nftables</strong> program) is superior and the <strong class="strong">firewall</strong> will need major rewrites to utilize the replacement.
</p>
<p class="p">
This tools is one of the original two programs of the <abbr title="Featureless Linux Library">FLL</abbr> project and is designed to be a fully functional proof of concept for the <abbr title="Featureless Linux Library">FLL</abbr> project.
</table>
</div>
<p class="p">
- The <code class="code">+Q/++quiet</code> parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the <strong>utf8</strong> program is to print the Unicode code point or the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte code. The <code class="code">+Q/++quiet</code> will not suppress this output. The new line printed at the end of the program, is however, not printed. The <code class="code">+Q/++quiet</code> is ideal for using in scripting to help guarantee more consistent and controlled output.
+ The <code class="code">+Q/++quiet</code> parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the <strong class="strong">utf8</strong> program is to print the Unicode code point or the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte code. The <code class="code">+Q/++quiet</code> will not suppress this output. The new line printed at the end of the program, is however, not printed. The <code class="code">+Q/++quiet</code> is ideal for using in scripting to help guarantee more consistent and controlled output.
</p>
<p class="p">
The <code class="code">+N/++no_color</code> simplifies the output to avoid the special color character codes. The special color character codes tend to take up a lot of extra space and may slow down printing performance.
<div class="main-content">
<p class="p">
The <abbr title="Featureless Linux Library">FLL</abbr> project provides several <a href="fll/specifications.html" class="link">specifications</a>.
- The <strong>Firewall</strong> does not directly use or provide any of these specifications.
+ The <strong class="strong">Firewall</strong> does not directly use or provide any of these specifications.
</p>
</div>
</main>
<div class="main-content">
<p class="p">
- The <strong>fss_basic_list_read</strong> program is a tool for reading and processing strings that follow the <code class="code">FSS-0002 (Basic List)</code> standard.
+ The <strong class="strong">fss_basic_list_read</strong> program is a tool for reading and processing strings that follow the <code class="code">FSS-0002 (Basic List)</code> standard.
</p>
<p class="p">
This tool is designed to be scriptable and accepts piped input, treating the piped input as a file being read.
</table>
</div>
<p class="p">
- The <code class="code">+Q/++quiet</code> parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the <strong>utf8</strong> program is to print the Unicode code point or the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte code. The <code class="code">+Q/++quiet</code> will not suppress this output. The new line printed at the end of the program, is however, not printed. The <code class="code">+Q/++quiet</code> is ideal for using in scripting to help guarantee more consistent and controlled output.
+ The <code class="code">+Q/++quiet</code> parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the <strong class="strong">utf8</strong> program is to print the Unicode code point or the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte code. The <code class="code">+Q/++quiet</code> will not suppress this output. The new line printed at the end of the program, is however, not printed. The <code class="code">+Q/++quiet</code> is ideal for using in scripting to help guarantee more consistent and controlled output.
</p>
<p class="p">
The <code class="code">+N/++no_color</code> simplifies the output to avoid the special color character codes. The special color character codes tend to take up a lot of extra space and may slow down printing performance.
The parameters <code class="code">--columns</code> and <code class="code">--select</code> refer to a Content column.
</p>
<p class="p">
- The word "<em>column</em>" is being loosely defined to refer to a specific Content.
+ The word "<em class="em">column</em>" is being loosely defined to refer to a specific Content.
</p>
<p class="p">
This is not to be confused with a depth.
<div class="main-content">
<p class="p">
The <abbr title="Featureless Linux Library">FLL</abbr> project provides several <a href="fll/specifications.html" class="link">specifications</a>.
- The <strong>FSS Basic List Read</strong> does not directly use or provide any of these specifications.
+ The <strong class="strong">FSS Basic List Read</strong> does not directly use or provide any of these specifications.
</p>
</div>
</main>
<div class="main-content">
<p class="p">
- The <strong>fss_basic_list_write</strong> program is a tool for generating strings that follow the <code class="code">FSS-0002 (Basic List)</code> standard.
+ The <strong class="strong">fss_basic_list_write</strong> program is a tool for generating strings that follow the <code class="code">FSS-0002 (Basic List)</code> standard.
</p>
<p class="p">
This tool is designed to be scriptable and accepts piped input using a special format.
</table>
</div>
<p class="p">
- The <code class="code">+Q/++quiet</code> parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the <strong>utf8</strong> program is to print the Unicode code point or the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte code. The <code class="code">+Q/++quiet</code> will not suppress this output. The new line printed at the end of the program, is however, not printed. The <code class="code">+Q/++quiet</code> is ideal for using in scripting to help guarantee more consistent and controlled output.
+ The <code class="code">+Q/++quiet</code> parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the <strong class="strong">utf8</strong> program is to print the Unicode code point or the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte code. The <code class="code">+Q/++quiet</code> will not suppress this output. The new line printed at the end of the program, is however, not printed. The <code class="code">+Q/++quiet</code> is ideal for using in scripting to help guarantee more consistent and controlled output.
</p>
<p class="p">
The <code class="code">+N/++no_color</code> simplifies the output to avoid the special color character codes. The special color character codes tend to take up a lot of extra space and may slow down printing performance.
<div class="main-content">
<p class="p">
The <abbr title="Featureless Linux Library">FLL</abbr> project provides several <a href="fll/specifications.html" class="link">specifications</a>.
- The <strong>FSS Basic List Write</strong> does not directly use or provide any of these specifications.
+ The <strong class="strong">FSS Basic List Write</strong> does not directly use or provide any of these specifications.
</p>
</div>
</main>
<div class="main-content">
<p class="p">
- The <strong>fss_basic_read</strong> program is a tool for reading and processing strings that follow the <code class="code">FSS-0000 (Basic)</code> standard.
+ The <strong class="strong">fss_basic_read</strong> program is a tool for reading and processing strings that follow the <code class="code">FSS-0000 (Basic)</code> standard.
</p>
<p class="p">
This tool is designed to be scriptable and accepts piped input, treating the piped input as a file being read.
</table>
</div>
<p class="p">
- The <code class="code">+Q/++quiet</code> parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the <strong>utf8</strong> program is to print the Unicode code point or the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte code. The <code class="code">+Q/++quiet</code> will not suppress this output. The new line printed at the end of the program, is however, not printed. The <code class="code">+Q/++quiet</code> is ideal for using in scripting to help guarantee more consistent and controlled output.
+ The <code class="code">+Q/++quiet</code> parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the <strong class="strong">utf8</strong> program is to print the Unicode code point or the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte code. The <code class="code">+Q/++quiet</code> will not suppress this output. The new line printed at the end of the program, is however, not printed. The <code class="code">+Q/++quiet</code> is ideal for using in scripting to help guarantee more consistent and controlled output.
</p>
<p class="p">
The <code class="code">+N/++no_color</code> simplifies the output to avoid the special color character codes. The special color character codes tend to take up a lot of extra space and may slow down printing performance.
The parameters <code class="code">--columns</code> and <code class="code">--select</code> refer to a Content column.
</p>
<p class="p">
- The word "<em>column</em>" is being loosely defined to refer to a specific Content.
+ The word "<em class="em">column</em>" is being loosely defined to refer to a specific Content.
</p>
<p class="p">
This is not to be confused with a depth.
<div class="main-content">
<p class="p">
The <abbr title="Featureless Linux Library">FLL</abbr> project provides several <a href="fll/specifications.html" class="link">specifications</a>.
- The <strong>FSS Basic Read</strong> does not directly use or provide any of these specifications.
+ The <strong class="strong">FSS Basic Read</strong> does not directly use or provide any of these specifications.
</p>
</div>
</main>
<div class="main-content">
<p class="p">
- The <strong>fss_basic_write</strong> program is a tool for generating strings that follow the <code class="code">FSS-0000 (Basic)</code> standard.
+ The <strong class="strong">fss_basic_write</strong> program is a tool for generating strings that follow the <code class="code">FSS-0000 (Basic)</code> standard.
</p>
<p class="p">
This tool is designed to be scriptable and accepts piped input using a special format.
</table>
</div>
<p class="p">
- The <code class="code">+Q/++quiet</code> parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the <strong>utf8</strong> program is to print the Unicode code point or the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte code. The <code class="code">+Q/++quiet</code> will not suppress this output. The new line printed at the end of the program, is however, not printed. The <code class="code">+Q/++quiet</code> is ideal for using in scripting to help guarantee more consistent and controlled output.
+ The <code class="code">+Q/++quiet</code> parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the <strong class="strong">utf8</strong> program is to print the Unicode code point or the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte code. The <code class="code">+Q/++quiet</code> will not suppress this output. The new line printed at the end of the program, is however, not printed. The <code class="code">+Q/++quiet</code> is ideal for using in scripting to help guarantee more consistent and controlled output.
</p>
<p class="p">
The <code class="code">+N/++no_color</code> simplifies the output to avoid the special color character codes. The special color character codes tend to take up a lot of extra space and may slow down printing performance.
<div class="main-content">
<p class="p">
The <abbr title="Featureless Linux Library">FLL</abbr> project provides several <a href="fll/specifications.html" class="link">specifications</a>.
- The <strong>FSS Basic Write</strong> does not directly use or provide any of these specifications.
+ The <strong class="strong">FSS Basic Write</strong> does not directly use or provide any of these specifications.
</p>
</div>
</main>
<div class="main-content">
<p class="p">
- The <strong>fss_embedded_list_read</strong> program is a tool for reading and processing strings that follow the <code class="code">FSS-0008 (Embedded List)</code> standard.
+ The <strong class="strong">fss_embedded_list_read</strong> program is a tool for reading and processing strings that follow the <code class="code">FSS-0008 (Embedded List)</code> standard.
</p>
<p class="p">
This tool is designed to be scriptable and accepts piped input, treating the piped input as a file being read.
</table>
</div>
<p class="p">
- The <code class="code">+Q/++quiet</code> parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the <strong>utf8</strong> program is to print the Unicode code point or the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte code. The <code class="code">+Q/++quiet</code> will not suppress this output. The new line printed at the end of the program, is however, not printed. The <code class="code">+Q/++quiet</code> is ideal for using in scripting to help guarantee more consistent and controlled output.
+ The <code class="code">+Q/++quiet</code> parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the <strong class="strong">utf8</strong> program is to print the Unicode code point or the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte code. The <code class="code">+Q/++quiet</code> will not suppress this output. The new line printed at the end of the program, is however, not printed. The <code class="code">+Q/++quiet</code> is ideal for using in scripting to help guarantee more consistent and controlled output.
</p>
<p class="p">
The <code class="code">+N/++no_color</code> simplifies the output to avoid the special color character codes. The special color character codes tend to take up a lot of extra space and may slow down printing performance.
The parameters <code class="code">--columns</code> and <code class="code">--select</code> refer to a Content column.
</p>
<p class="p">
- The word "<em>column</em>" is being loosely defined to refer to a specific Content.
+ The word "<em class="em">column</em>" is being loosely defined to refer to a specific Content.
</p>
<p class="p">
This is not to be confused with a depth.
<div class="main-content">
<p class="p">
The <abbr title="Featureless Linux Library">FLL</abbr> project provides several <a href="fll/specifications.html" class="link">specifications</a>.
- The <strong>FSS Embedded List Read</strong> does not directly use or provide any of these specifications.
+ The <strong class="strong">FSS Embedded List Read</strong> does not directly use or provide any of these specifications.
</p>
</div>
</main>
<div class="main-content">
<p class="p">
- The <strong>fss_embedded_list_write</strong> program is a tool for generating strings that follow the <code class="code">FSS-0008 (Embedded List)</code> standard.
+ The <strong class="strong">fss_embedded_list_write</strong> program is a tool for generating strings that follow the <code class="code">FSS-0008 (Embedded List)</code> standard.
</p>
<p class="p">
This tool is designed to be scriptable and accepts piped input using a special format.
</table>
</div>
<p class="p">
- The <code class="code">+Q/++quiet</code> parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the <strong>utf8</strong> program is to print the Unicode code point or the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte code. The <code class="code">+Q/++quiet</code> will not suppress this output. The new line printed at the end of the program, is however, not printed. The <code class="code">+Q/++quiet</code> is ideal for using in scripting to help guarantee more consistent and controlled output.
+ The <code class="code">+Q/++quiet</code> parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the <strong class="strong">utf8</strong> program is to print the Unicode code point or the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte code. The <code class="code">+Q/++quiet</code> will not suppress this output. The new line printed at the end of the program, is however, not printed. The <code class="code">+Q/++quiet</code> is ideal for using in scripting to help guarantee more consistent and controlled output.
</p>
<p class="p">
The <code class="code">+N/++no_color</code> simplifies the output to avoid the special color character codes. The special color character codes tend to take up a lot of extra space and may slow down printing performance.
<div class="main-content">
<p class="p">
The <abbr title="Featureless Linux Library">FLL</abbr> project provides several <a href="fll/specifications.html" class="link">specifications</a>.
- The <strong>FSS Embedded List Write</strong> does not directly use or provide any of these specifications.
+ The <strong class="strong">FSS Embedded List Write</strong> does not directly use or provide any of these specifications.
</p>
</div>
</main>
<div class="main-content">
<p class="p">
- The <strong>fss_extended_list_read</strong> program is a tool for reading and processing strings that follow the <code class="code">FSS-0003 (Extended List)</code> standard.
+ The <strong class="strong">fss_extended_list_read</strong> program is a tool for reading and processing strings that follow the <code class="code">FSS-0003 (Extended List)</code> standard.
</p>
<p class="p">
This tool is designed to be scriptable and accepts piped input, treating the piped input as a file being read.
</table>
</div>
<p class="p">
- The <code class="code">+Q/++quiet</code> parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the <strong>utf8</strong> program is to print the Unicode code point or the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte code. The <code class="code">+Q/++quiet</code> will not suppress this output. The new line printed at the end of the program, is however, not printed. The <code class="code">+Q/++quiet</code> is ideal for using in scripting to help guarantee more consistent and controlled output.
+ The <code class="code">+Q/++quiet</code> parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the <strong class="strong">utf8</strong> program is to print the Unicode code point or the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte code. The <code class="code">+Q/++quiet</code> will not suppress this output. The new line printed at the end of the program, is however, not printed. The <code class="code">+Q/++quiet</code> is ideal for using in scripting to help guarantee more consistent and controlled output.
</p>
<p class="p">
The <code class="code">+N/++no_color</code> simplifies the output to avoid the special color character codes. The special color character codes tend to take up a lot of extra space and may slow down printing performance.
The parameters <code class="code">--columns</code> and <code class="code">--select</code> refer to a Content column.
</p>
<p class="p">
- The word "<em>column</em>" is being loosely defined to refer to a specific Content.
+ The word "<em class="em">column</em>" is being loosely defined to refer to a specific Content.
</p>
<p class="p">
This is not to be confused with a depth.
<div class="main-content">
<p class="p">
The <abbr title="Featureless Linux Library">FLL</abbr> project provides several <a href="fll/specifications.html" class="link">specifications</a>.
- The <strong>FSS Extended List Read</strong> does not directly use or provide any of these specifications.
+ The <strong class="strong">FSS Extended List Read</strong> does not directly use or provide any of these specifications.
</p>
</div>
</main>
<div class="main-content">
<p class="p">
- The <strong>fss_extended_list_write</strong> program is a tool for generating strings that follow the <code class="code">FSS-0003 (Extended List)</code> standard.
+ The <strong class="strong">fss_extended_list_write</strong> program is a tool for generating strings that follow the <code class="code">FSS-0003 (Extended List)</code> standard.
</p>
<p class="p">
This tool is designed to be scriptable and accepts piped input using a special format.
</table>
</div>
<p class="p">
- The <code class="code">+Q/++quiet</code> parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the <strong>utf8</strong> program is to print the Unicode code point or the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte code. The <code class="code">+Q/++quiet</code> will not suppress this output. The new line printed at the end of the program, is however, not printed. The <code class="code">+Q/++quiet</code> is ideal for using in scripting to help guarantee more consistent and controlled output.
+ The <code class="code">+Q/++quiet</code> parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the <strong class="strong">utf8</strong> program is to print the Unicode code point or the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte code. The <code class="code">+Q/++quiet</code> will not suppress this output. The new line printed at the end of the program, is however, not printed. The <code class="code">+Q/++quiet</code> is ideal for using in scripting to help guarantee more consistent and controlled output.
</p>
<p class="p">
The <code class="code">+N/++no_color</code> simplifies the output to avoid the special color character codes. The special color character codes tend to take up a lot of extra space and may slow down printing performance.
<div class="main-content">
<p class="p">
The <abbr title="Featureless Linux Library">FLL</abbr> project provides several <a href="fll/specifications.html" class="link">specifications</a>.
- The <strong>FSS Extended List Write</strong> does not directly use or provide any of these specifications.
+ The <strong class="strong">FSS Extended List Write</strong> does not directly use or provide any of these specifications.
</p>
</div>
</main>
<div class="main-content">
<p class="p">
- The <strong>fss_extended_read</strong> program is a tool for reading and processing strings that follow the <code class="code">FSS-0001 (Extended)</code> standard.
+ The <strong class="strong">fss_extended_read</strong> program is a tool for reading and processing strings that follow the <code class="code">FSS-0001 (Extended)</code> standard.
</p>
<p class="p">
This tool is designed to be scriptable and accepts piped input, treating the piped input as a file being read.
</table>
</div>
<p class="p">
- The <code class="code">+Q/++quiet</code> parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the <strong>utf8</strong> program is to print the Unicode code point or the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte code. The <code class="code">+Q/++quiet</code> will not suppress this output. The new line printed at the end of the program, is however, not printed. The <code class="code">+Q/++quiet</code> is ideal for using in scripting to help guarantee more consistent and controlled output.
+ The <code class="code">+Q/++quiet</code> parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the <strong class="strong">utf8</strong> program is to print the Unicode code point or the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte code. The <code class="code">+Q/++quiet</code> will not suppress this output. The new line printed at the end of the program, is however, not printed. The <code class="code">+Q/++quiet</code> is ideal for using in scripting to help guarantee more consistent and controlled output.
</p>
<p class="p">
The <code class="code">+N/++no_color</code> simplifies the output to avoid the special color character codes. The special color character codes tend to take up a lot of extra space and may slow down printing performance.
The parameters <code class="code">--columns</code> and <code class="code">--select</code> refer to a Content column.
</p>
<p class="p">
- The word "<em>column</em>" is being loosely defined to refer to a specific Content.
+ The word "<em class="em">column</em>" is being loosely defined to refer to a specific Content.
</p>
<p class="p">
This is not to be confused with a depth.
<div class="main-content">
<p class="p">
The <abbr title="Featureless Linux Library">FLL</abbr> project provides several <a href="fll/specifications.html" class="link">specifications</a>.
- The <strong>FSS Extended Read</strong> does not directly use or provide any of these specifications.
+ The <strong class="strong">FSS Extended Read</strong> does not directly use or provide any of these specifications.
</p>
</div>
</main>
<div class="main-content">
<p class="p">
- The <strong>fss_extended_write</strong> program is a tool for generating strings that follow the <code class="code">FSS-0001 (Extended)</code> standard.
+ The <strong class="strong">fss_extended_write</strong> program is a tool for generating strings that follow the <code class="code">FSS-0001 (Extended)</code> standard.
</p>
<p class="p">
This tool is designed to be scriptable and accepts piped input using a special format.
</table>
</div>
<p class="p">
- The <code class="code">+Q/++quiet</code> parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the <strong>utf8</strong> program is to print the Unicode code point or the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte code. The <code class="code">+Q/++quiet</code> will not suppress this output. The new line printed at the end of the program, is however, not printed. The <code class="code">+Q/++quiet</code> is ideal for using in scripting to help guarantee more consistent and controlled output.
+ The <code class="code">+Q/++quiet</code> parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the <strong class="strong">utf8</strong> program is to print the Unicode code point or the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte code. The <code class="code">+Q/++quiet</code> will not suppress this output. The new line printed at the end of the program, is however, not printed. The <code class="code">+Q/++quiet</code> is ideal for using in scripting to help guarantee more consistent and controlled output.
</p>
<p class="p">
The <code class="code">+N/++no_color</code> simplifies the output to avoid the special color character codes. The special color character codes tend to take up a lot of extra space and may slow down printing performance.
<div class="main-content">
<p class="p">
The <abbr title="Featureless Linux Library">FLL</abbr> project provides several <a href="fll/specifications.html" class="link">specifications</a>.
- The <strong>FSS Extended Write</strong> does not directly use or provide any of these specifications.
+ The <strong class="strong">FSS Extended Write</strong> does not directly use or provide any of these specifications.
</p>
</div>
</main>
<div class="main-content">
<p class="p">
- The <strong>fss_identify</strong> program is a tool for processing strings in an attempt to identify the <abbr title="Featureless Settings Specification">FSS</abbr> file format based on <abbr title="Featureless Settings Specification">FSS</abbr> header comments.
+ The <strong class="strong">fss_identify</strong> program is a tool for processing strings in an attempt to identify the <abbr title="Featureless Settings Specification">FSS</abbr> file format based on <abbr title="Featureless Settings Specification">FSS</abbr> header comments.
</p>
<p class="p">
This program doesn't perforrm any special heuristic. It only checks for the special <abbr title="Featureless Settings Specification">FSS</abbr> header and reports what it finds.
</table>
</div>
<p class="p">
- The <code class="code">+Q/++quiet</code> parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the <strong>utf8</strong> program is to print the Unicode code point or the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte code. The <code class="code">+Q/++quiet</code> will not suppress this output. The new line printed at the end of the program, is however, not printed. The <code class="code">+Q/++quiet</code> is ideal for using in scripting to help guarantee more consistent and controlled output.
+ The <code class="code">+Q/++quiet</code> parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the <strong class="strong">utf8</strong> program is to print the Unicode code point or the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte code. The <code class="code">+Q/++quiet</code> will not suppress this output. The new line printed at the end of the program, is however, not printed. The <code class="code">+Q/++quiet</code> is ideal for using in scripting to help guarantee more consistent and controlled output.
</p>
<p class="p">
The <code class="code">+N/++no_color</code> simplifies the output to avoid the special color character codes. The special color character codes tend to take up a lot of extra space and may slow down printing performance.
<div class="main-content">
<p class="p">
The <abbr title="Featureless Linux Library">FLL</abbr> project provides several <a href="fll/specifications.html" class="link">specifications</a>.
- The <strong>FSS Identify</strong> does not directly use or provide any of these specifications.
+ The <strong class="strong">FSS Identify</strong> does not directly use or provide any of these specifications.
</p>
</div>
</main>
<div class="main-content">
<p class="p">
- The <strong>fss_payload_read</strong> program is a tool for reading and processing strings that follow the <code class="code">FSS-000E (Payload)</code> standard.
+ The <strong class="strong">fss_payload_read</strong> program is a tool for reading and processing strings that follow the <code class="code">FSS-000E (Payload)</code> standard.
</p>
<p class="p">
This tool is designed to be scriptable and accepts piped input, treating the piped input as a file being read.
</table>
</div>
<p class="p">
- The <code class="code">+Q/++quiet</code> parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the <strong>utf8</strong> program is to print the Unicode code point or the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte code. The <code class="code">+Q/++quiet</code> will not suppress this output. The new line printed at the end of the program, is however, not printed. The <code class="code">+Q/++quiet</code> is ideal for using in scripting to help guarantee more consistent and controlled output.
+ The <code class="code">+Q/++quiet</code> parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the <strong class="strong">utf8</strong> program is to print the Unicode code point or the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte code. The <code class="code">+Q/++quiet</code> will not suppress this output. The new line printed at the end of the program, is however, not printed. The <code class="code">+Q/++quiet</code> is ideal for using in scripting to help guarantee more consistent and controlled output.
</p>
<p class="p">
The <code class="code">+N/++no_color</code> simplifies the output to avoid the special color character codes. The special color character codes tend to take up a lot of extra space and may slow down printing performance.
The parameters <code class="code">--columns</code> and <code class="code">--select</code> refer to a Content column.
</p>
<p class="p">
- The word "<em>column</em>" is being loosely defined to refer to a specific Content.
+ The word "<em class="em">column</em>" is being loosely defined to refer to a specific Content.
</p>
<p class="p">
This is not to be confused with a depth.
</p>
<p class="p">
- As an exceptional case, a <code class="code">--depth</code> of 1 applies only to the explicit Object of "<em>header</em>".
+ As an exceptional case, a <code class="code">--depth</code> of 1 applies only to the explicit Object of "<em class="em">header</em>".
</p>
<p class="p">
Content at this depth is processed as <code class="code">FSS-0001 (Extended)</code>.
<div class="main-content">
<p class="p">
The <abbr title="Featureless Linux Library">FLL</abbr> project provides several <a href="fll/specifications.html" class="link">specifications</a>.
- The <strong>FSS Payload Read</strong> does not directly use or provide any of these specifications.
+ The <strong class="strong">FSS Payload Read</strong> does not directly use or provide any of these specifications.
</p>
</div>
</main>
<div class="main-content">
<p class="p">
- The <strong>fss_payload_write</strong> program is a tool for generating strings that follow the <code class="code">FSS-000E (Payload)</code> standard.
+ The <strong class="strong">fss_payload_write</strong> program is a tool for generating strings that follow the <code class="code">FSS-000E (Payload)</code> standard.
</p>
<p class="p">
This tool is designed to be scriptable and accepts piped input using a special format.
</table>
</div>
<p class="p">
- The <code class="code">+Q/++quiet</code> parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the <strong>utf8</strong> program is to print the Unicode code point or the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte code. The <code class="code">+Q/++quiet</code> will not suppress this output. The new line printed at the end of the program, is however, not printed. The <code class="code">+Q/++quiet</code> is ideal for using in scripting to help guarantee more consistent and controlled output.
+ The <code class="code">+Q/++quiet</code> parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the <strong class="strong">utf8</strong> program is to print the Unicode code point or the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte code. The <code class="code">+Q/++quiet</code> will not suppress this output. The new line printed at the end of the program, is however, not printed. The <code class="code">+Q/++quiet</code> is ideal for using in scripting to help guarantee more consistent and controlled output.
</p>
<p class="p">
The <code class="code">+N/++no_color</code> simplifies the output to avoid the special color character codes. The special color character codes tend to take up a lot of extra space and may slow down printing performance.
<div class="main-content">
<p class="p">
The <abbr title="Featureless Linux Library">FLL</abbr> project provides several <a href="fll/specifications.html" class="link">specifications</a>.
- The <strong>FSS Payload Write</strong> does not directly use or provide any of these specifications.
+ The <strong class="strong">FSS Payload Write</strong> does not directly use or provide any of these specifications.
</p>
</div>
</main>
<div class="main-content">
<p class="p">
- The <strong>fss_status_code</strong> program is a tool for interpretting and changing the status codes received from programs into code words or vice-versa. This is intended to be easily scriptable. The code words are still machine-friendly and scriptable.
+ The <strong class="strong">fss_status_code</strong> program is a tool for interpretting and changing the status codes received from programs into code words or vice-versa. This is intended to be easily scriptable. The code words are still machine-friendly and scriptable.
</p>
<p class="p">
This program handles standard <abbr title="Featureless Linux Library">FLL</abbr> status codes as well as <abbr title="Featureless Settings Specifications">FSS</abbr> status codes. The max status code supported is represented by the code words <code class="code">F_fss_status_code_last</code>.
</table>
</div>
<p class="p">
- The <code class="code">+Q/++quiet</code> parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the <strong>utf8</strong> program is to print the Unicode code point or the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte code. The <code class="code">+Q/++quiet</code> will not suppress this output. The new line printed at the end of the program, is however, not printed. The <code class="code">+Q/++quiet</code> is ideal for using in scripting to help guarantee more consistent and controlled output.
+ The <code class="code">+Q/++quiet</code> parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the <strong class="strong">utf8</strong> program is to print the Unicode code point or the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte code. The <code class="code">+Q/++quiet</code> will not suppress this output. The new line printed at the end of the program, is however, not printed. The <code class="code">+Q/++quiet</code> is ideal for using in scripting to help guarantee more consistent and controlled output.
</p>
<p class="p">
The <code class="code">+N/++no_color</code> simplifies the output to avoid the special color character codes. The special color character codes tend to take up a lot of extra space and may slow down printing performance.
<div class="main-content">
<p class="p">
The <abbr title="Featureless Linux Library">FLL</abbr> project provides several <a href="fll/specifications.html" class="link">specifications</a>.
- The <strong>FSS Status Code</strong> does not directly use or provide any of these specifications.
+ The <strong class="strong">FSS Status Code</strong> does not directly use or provide any of these specifications.
</p>
</div>
</main>
<div class="main-content">
<p class="p">
- The <strong>iki_read</strong> program is a tool for processing strings that follow the IKI standard, specifically IKI-0000 (Unrestricted).
+ The <strong class="strong">iki_read</strong> program is a tool for processing strings that follow the IKI standard, specifically IKI-0000 (Unrestricted).
</p>
<p class="p">
This tool is designed to be scriptable and accepts piped input.
</table>
</div>
<p class="p">
- The <code class="code">+Q/++quiet</code> parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the <strong>utf8</strong> program is to print the Unicode code point or the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte code. The <code class="code">+Q/++quiet</code> will not suppress this output. The new line printed at the end of the program, is however, not printed. The <code class="code">+Q/++quiet</code> is ideal for using in scripting to help guarantee more consistent and controlled output.
+ The <code class="code">+Q/++quiet</code> parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the <strong class="strong">utf8</strong> program is to print the Unicode code point or the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte code. The <code class="code">+Q/++quiet</code> will not suppress this output. The new line printed at the end of the program, is however, not printed. The <code class="code">+Q/++quiet</code> is ideal for using in scripting to help guarantee more consistent and controlled output.
</p>
<p class="p">
The <code class="code">+N/++no_color</code> simplifies the output to avoid the special color character codes. The special color character codes tend to take up a lot of extra space and may slow down printing performance.
</div>
</dl>
<p class="p">
- The <em>vocabulary</em> and <em>replacement</em> are case-sensitive and must exactly match.
+ The <em class="em">vocabulary</em> and <em class="em">replacement</em> are case-sensitive and must exactly match.
</p>
<p class="p">
The <code class="code">-W/--wrap</code> option requires 3 additional parameters: <code class="code"><vocabulary> <before> <after></code>.
<div class="main-content">
<p class="p">
The <abbr title="Featureless Linux Library">FLL</abbr> project provides several <a href="fll/specifications.html" class="link">specifications</a>.
- The <strong>IKI Read</strong> does not directly use or provide any of these specifications.
+ The <strong class="strong">IKI Read</strong> does not directly use or provide any of these specifications.
</p>
</div>
</main>
<div class="main-content">
<p class="p">
- The <strong>iki_write</strong> program is a tool for generating strings that follow the IKI standard, specifically the IKI-0000 (Unrestricted) standard.
+ The <strong class="strong">iki_write</strong> program is a tool for generating strings that follow the IKI standard, specifically the IKI-0000 (Unrestricted) standard.
</p>
<p class="p">
This tool is designed to be scriptable and accepts piped input using a special format.
</table>
</div>
<p class="p">
- The <code class="code">+Q/++quiet</code> parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the <strong>utf8</strong> program is to print the Unicode code point or the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte code. The <code class="code">+Q/++quiet</code> will not suppress this output. The new line printed at the end of the program, is however, not printed. The <code class="code">+Q/++quiet</code> is ideal for using in scripting to help guarantee more consistent and controlled output.
+ The <code class="code">+Q/++quiet</code> parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the <strong class="strong">utf8</strong> program is to print the Unicode code point or the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte code. The <code class="code">+Q/++quiet</code> will not suppress this output. The new line printed at the end of the program, is however, not printed. The <code class="code">+Q/++quiet</code> is ideal for using in scripting to help guarantee more consistent and controlled output.
</p>
<p class="p">
The <code class="code">+N/++no_color</code> simplifies the output to avoid the special color character codes. The special color character codes tend to take up a lot of extra space and may slow down printing performance.
<div class="main-content">
<p class="p">
The <abbr title="Featureless Linux Library">FLL</abbr> project provides several <a href="fll/specifications.html" class="link">specifications</a>.
- The <strong>IKI Write</strong> does not directly use or provide any of these specifications.
+ The <strong class="strong">IKI Write</strong> does not directly use or provide any of these specifications.
</p>
</div>
</main>
<div class="main-content">
<p class="p">
- The <strong>status_code</strong> program is a tool for interpretting and changing the status codes received from programs into code words or vice-versa. This is intended to be easily scriptable. The code words are still machine-friendly and scriptable.
+ The <strong class="strong">status_code</strong> program is a tool for interpretting and changing the status codes received from programs into code words or vice-versa. This is intended to be easily scriptable. The code words are still machine-friendly and scriptable.
</p>
<p class="p">
This tool only handles standard <abbr title="Featureless Linux Library">FLL</abbr> status codes. The max status code supported is represented by the code words <code class="code">F_status_code_last</code>.
</table>
</div>
<p class="p">
- The <code class="code">+Q/++quiet</code> parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the <strong>utf8</strong> program is to print the Unicode code point or the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte code. The <code class="code">+Q/++quiet</code> will not suppress this output. The new line printed at the end of the program, is however, not printed. The <code class="code">+Q/++quiet</code> is ideal for using in scripting to help guarantee more consistent and controlled output.
+ The <code class="code">+Q/++quiet</code> parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the <strong class="strong">utf8</strong> program is to print the Unicode code point or the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte code. The <code class="code">+Q/++quiet</code> will not suppress this output. The new line printed at the end of the program, is however, not printed. The <code class="code">+Q/++quiet</code> is ideal for using in scripting to help guarantee more consistent and controlled output.
</p>
<p class="p">
The <code class="code">+N/++no_color</code> simplifies the output to avoid the special color character codes. The special color character codes tend to take up a lot of extra space and may slow down printing performance.
<div class="main-content">
<p class="p">
The <abbr title="Featureless Linux Library">FLL</abbr> project provides several <a href="fll/specifications.html" class="link">specifications</a>.
- The <strong>Status Code</strong> does not directly use or provide any of these specifications.
+ The <strong class="strong">Status Code</strong> does not directly use or provide any of these specifications.
</p>
</div>
</main>
<div class="main-content">
<p class="p">
- The <strong>UTF8</strong> program is a tool for converting from a <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte sequence to the Unicode code point. The byte sequence can also be referred to as the binary representation of the code even though the byte sequence is considered text. The term <em>"byte sequence"</em> here is used to refer to a sequence of bytes intended to represent something, which in this case is a Unicode character. The Unicode code point is the Unicode designation uniquely identifying that particular sequence. The Unicode code point is not specific to <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> and persists across different encodings, such as <abbr title="Unicode Transformation Format 16-bit">UTF-16</abbr>.
+ The <strong class="strong">UTF8</strong> program is a tool for converting from a <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte sequence to the Unicode code point. The byte sequence can also be referred to as the binary representation of the code even though the byte sequence is considered text. The term <em class="em">"byte sequence"</em> here is used to refer to a sequence of bytes intended to represent something, which in this case is a Unicode character. The Unicode code point is the Unicode designation uniquely identifying that particular sequence. The Unicode code point is not specific to <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> and persists across different encodings, such as <abbr title="Unicode Transformation Format 16-bit">UTF-16</abbr>.
</p>
<p class="p">
- The idea behind the <strong>UTF8</strong> program is to provide the answer to the question of what some special <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> character is or to provide a way to create the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> character given the Unicode code point.
+ The idea behind the <strong class="strong">UTF8</strong> program is to provide the answer to the question of what some special <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> character is or to provide a way to create the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> character given the Unicode code point.
</p>
<p class="p">
This tool is intended to be scriptable, should handle both piped data and files, and can convert entire files.
</table>
</div>
<p class="p">
- The <code class="code">+Q/++quiet</code> parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the <strong>utf8</strong> program is to print the Unicode code point or the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte sequence. The <code class="code">+Q/++quiet</code> will not suppress this output. The new line printed at the end of the program, is however, not printed. The <code class="code">+Q/++quiet</code> is ideal for using in scripting to help guarantee more consistent and controlled output.
+ The <code class="code">+Q/++quiet</code> parameter silences all output that is not the intent and purpose of the program. For example, the purpose of the <strong class="strong">utf8</strong> program is to print the Unicode code point or the <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> byte sequence. The <code class="code">+Q/++quiet</code> will not suppress this output. The new line printed at the end of the program, is however, not printed. The <code class="code">+Q/++quiet</code> is ideal for using in scripting to help guarantee more consistent and controlled output.
</p>
<p class="p">
The <code class="code">+N/++no_color</code> simplifies the output to avoid the special color character codes. The special color character codes tend to take up a lot of extra space and may slow down printing performance.
</table>
</div>
<p class="p">
- This program establishes a pattern for some of the parameters. The parameters that represent a <em>"from"</em> use lower case short characters and the parameters that represent a <em>"to"</em> use upper case short characters. For short parameters that have both a <em>"from"</em> and a <em>"to"</em>, they use the same character with their case being different.
+ This program establishes a pattern for some of the parameters. The parameters that represent a <em class="em">"from"</em> use lower case short characters and the parameters that represent a <em class="em">"to"</em> use upper case short characters. For short parameters that have both a <em class="em">"from"</em> and a <em class="em">"to"</em>, they use the same character with their case being different.
</p>
<p class="p">
The default behavior is to assume the expected input is byte sequence from the command line to be output to the screen as codepoints.
<div class="main-content">
<p class="p">
The <abbr title="Featureless Linux Library">FLL</abbr> project provides several <a href="fll/specifications.html" class="link">specifications</a>.
- The <strong>UTF8</strong> does not directly use or provide any of these specifications.
+ The <strong class="strong">UTF8</strong> does not directly use or provide any of these specifications.
</p>
</div>
</main>
<div class="article-content">
<p class="p">
- The current stable release series of <abbr title="Featureless Linux Library">FLL</abbr> is <strong>0.6</strong>. The latest version of the stable release series is <strong>0.6.1</strong>.
+ The current stable release series of <abbr title="Featureless Linux Library">FLL</abbr> is <strong class="strong">0.6</strong>. The latest version of the stable release series is <strong class="strong">0.6.1</strong>.
</p>
<p class="p">
- There are two different ways in which the project is released. The <em>bare release</em> and the <em>pre-packaged release</em>.
+ There are two different ways in which the project is released. The <em class="em">bare release</em> and the <em class="em">pre-packaged release</em>.
</p>
<p class="p">
- A <em>bare release</em> is the original project structure exactly as it appears in the Git source code repositories. The project is designed and intended to be hacked. As a result, the project must be converted into a package. There are different default supported package structures like <em>monolithic</em>, <em>level</em>, and <em>individual</em>.
+ A <em class="em">bare release</em> is the original project structure exactly as it appears in the Git source code repositories. The project is designed and intended to be hacked. As a result, the project must be converted into a package. There are different default supported package structures like <em class="em">monolithic</em>, <em class="em">level</em>, and <em class="em">individual</em>.
</p>
<p class="p">
- A <em>pre-packaged release</em> is the project packaged into a <em>monolithic</em> structure. The programs are also pre-packaged to expect to link against a <em>monolithic</em> <abbr title="Featureless Linux Library">FLL</abbr> package.
+ A <em class="em">pre-packaged release</em> is the project packaged into a <em class="em">monolithic</em> structure. The programs are also pre-packaged to expect to link against a <em class="em">monolithic</em> <abbr title="Featureless Linux Library">FLL</abbr> package.
</p>
<div class="center">
<table class="table fll-release">
</table>
</div>
<p class="p">
- There are also <strong>stand alone</strong> sources and related files for some of the programs:
+ There are also <strong class="strong">stand alone</strong> sources and related files for some of the programs:
</p>
<div class="center">
<table class="table fll-release">
The pre-packaged releases may also be found on the following external websites:
</p>
<ul>
- <li><strong>Sourceforge, Monolithic</strong>: <a href="https://sourceforge.net/projects/fll/files/FLL-0.6/0.6.1/monolithic/" class="link external">https://sourceforge.net/projects/fll/files/FLL-0.6/0.6.1/monolithic/</a></li>
- <li><strong>Sourceforge, Programs</strong>: <a href="https://sourceforge.net/projects/fll/files/FLL-0.6/0.6.1/programs/" class="link external">https://sourceforge.net/projects/fll/files/FLL-0.6/0.6.1/programs/</a></li>
- <li><strong>Sourceforge, Stand Alone</strong>: <a href="https://sourceforge.net/projects/fll/files/FLL-0.6/0.6.1/stand_alone/" class="link external">https://sourceforge.net/projects/fll/files/FLL-0.6/0.6.1/stand_alone/</a></li>
+ <li><strong class="strong">Sourceforge, Monolithic</strong>: <a href="https://sourceforge.net/projects/fll/files/FLL-0.6/0.6.1/monolithic/" class="link external">https://sourceforge.net/projects/fll/files/FLL-0.6/0.6.1/monolithic/</a></li>
+ <li><strong class="strong">Sourceforge, Programs</strong>: <a href="https://sourceforge.net/projects/fll/files/FLL-0.6/0.6.1/programs/" class="link external">https://sourceforge.net/projects/fll/files/FLL-0.6/0.6.1/programs/</a></li>
+ <li><strong class="strong">Sourceforge, Stand Alone</strong>: <a href="https://sourceforge.net/projects/fll/files/FLL-0.6/0.6.1/stand_alone/" class="link external">https://sourceforge.net/projects/fll/files/FLL-0.6/0.6.1/stand_alone/</a></li>
</ul>
<p class="p">
The bare releases may be found on the following websites:
</p>
<ul>
- <li><strong>Github</strong>: <a href="https://github.com/thekevinday/fll/releases/tag/0.6.1" class="link external">https://github.com/thekevinday/fll/releases/tag/0.6.1</a></li>
- <li><strong>Gitlab</strong>: <a href="https://gitlab.com/kevuxer/fll/-/releases/0.6.1" class="link external">https://gitlab.com/kevuxer/fll/-/releases/0.6.1</a></li>
+ <li><strong class="strong">Github</strong>: <a href="https://github.com/thekevinday/fll/releases/tag/0.6.1" class="link external">https://github.com/thekevinday/fll/releases/tag/0.6.1</a></li>
+ <li><strong class="strong">Gitlab</strong>: <a href="https://gitlab.com/kevuxer/fll/-/releases/0.6.1" class="link external">https://gitlab.com/kevuxer/fll/-/releases/0.6.1</a></li>
</ul>
</div>
</article>
To better understand the core principles and even philosophy behind this <abbr title="Featureless Linux Library">FLL</abbr> project one must first understand some key terminology from the perspective of what the terms do or are for rather than what the direct meaning of the words are.
</p>
<p class="p">
- The term <em>software</em> is understood as thought. That is to say, if you have an idea in your mind then treat this idea as software. This perspective introduces a problem, a problem of ambiguity. <em>Software</em> is more than an idea when it is on a computer. The general definition of <em>software</em> can refer to source code, binaries, or data (data encompasses both source code and binaries but for the purposes here please ignore this fact). A <em>binary</em> is usually created from <em>source code</em>.
+ The term <em class="em">software</em> is understood as thought. That is to say, if you have an idea in your mind then treat this idea as software. This perspective introduces a problem, a problem of ambiguity. <em class="em">Software</em> is more than an idea when it is on a computer. The general definition of <em class="em">software</em> can refer to source code, binaries, or data (data encompasses both source code and binaries but for the purposes here please ignore this fact). A <em class="em">binary</em> is usually created from <em class="em">source code</em>.
</p>
<p class="p">
- The perspective on <em>source code</em> should be described first to address the problem. <em>Source Code</em> is an idea communicated through some <em>language</em>. A single idea may be expressed differently between two distinct languages and still be the same idea. However, the representation of that idea may be limited or otherwise influenced by the constraints or limitation of a language.
+ The perspective on <em class="em">source code</em> should be described first to address the problem. <em class="em">Source Code</em> is an idea communicated through some <em class="em">language</em>. A single idea may be expressed differently between two distinct languages and still be the same idea. However, the representation of that idea may be limited or otherwise influenced by the constraints or limitation of a language.
</p>
<p class="p">
- When the <em>source code</em> is compiled, interpreted, or otherwise converted into machine code, the idea behind the <em>source code</em> is now represented in a new language, the machine language. This resulting representation in the machine language is the <em>binary</em>.
+ When the <em class="em">source code</em> is compiled, interpreted, or otherwise converted into machine code, the idea behind the <em class="em">source code</em> is now represented in a new language, the machine language. This resulting representation in the machine language is the <em class="em">binary</em>.
</p>
<p class="p">
- At this point the <em>software</em>, be it the <em>source code</em> or the <em>binary</em> is synonymous with spoken words. There is no product, only just a spoken and recored idea constrained by the language it is spoken in.
+ At this point the <em class="em">software</em>, be it the <em class="em">source code</em> or the <em class="em">binary</em> is synonymous with spoken words. There is no product, only just a spoken and recored idea constrained by the language it is spoken in.
</p>
<p class="p">
- The magic happens when the machine computes. This computation of the communicated idea requires <em>hardware</em>. It is this <em>hardware</em> that manifests the idea into reality. A product, therefore, may only exist in conjunction with some <em>hardware</em>.
+ The magic happens when the machine computes. This computation of the communicated idea requires <em class="em">hardware</em>. It is this <em class="em">hardware</em> that manifests the idea into reality. A product, therefore, may only exist in conjunction with some <em class="em">hardware</em>.
</p>
<p class="p">
- The world as it currently exists is a world of restrictions and patents. Supposedly an idea is not patentable. Supposedly math cannot be patented. Yet with <em>software</em> effectively being a written or spoken idea, often represented in mathematical equations, is treated as patentable.
+ The world as it currently exists is a world of restrictions and patents. Supposedly an idea is not patentable. Supposedly math cannot be patented. Yet with <em class="em">software</em> effectively being a written or spoken idea, often represented in mathematical equations, is treated as patentable.
</p>
<p class="p">
- Associating, or otherwise linking, an idea is somehow treated as if the originator of the first spoken idea spoke the second idea. Take a conversation, for example. If the first person says "<em>I like cake.</em>" and the second person says "<em>I like candles on cake.</em>" then does that mean the first person is the one who originated the statement "<em>I like candles on cake.</em>"? Of course not. But the legal system in the United States of America, and perhaps the world, have decided otherwise. That is to say, linking one binary to another (somehow) creates a combined product. This appears to be some sort of magical fairy dust lawyers use to convince people that what you are smelling is actually a rose rather than something bovine herders have to shovel up from time to time.
+ Associating, or otherwise linking, an idea is somehow treated as if the originator of the first spoken idea spoke the second idea. Take a conversation, for example. If the first person says "<em class="em">I like cake.</em>" and the second person says "<em class="em">I like candles on cake.</em>" then does that mean the first person is the one who originated the statement "<em class="em">I like candles on cake.</em>"? Of course not. But the legal system in the United States of America, and perhaps the world, have decided otherwise. That is to say, linking one binary to another (somehow) creates a combined product. This appears to be some sort of magical fairy dust lawyers use to convince people that what you are smelling is actually a rose rather than something bovine herders have to shovel up from time to time.
</p>
<p class="p">
The core principle of this project is to use legal means to make such an absurdity illegal. Thus the copyrights, such as the <abbr title="GNU Lesser General Public License version 2.1 or greater">LGPLv2.1+</abbr> license, are utilized. The goal here is not to deny a person the ability to make a product and sell it. Instead, the goal here is so that a person who makes a product can actually make and sell it. Just because a bird house has nails in it doesn't mean the originator of the nails now owns all rights to the bird house. Just because an <abbr title="Advanced Micro Devices">AMD</abbr> motherboard has an Nvidia graphics card connected to it does not mean <abbr title="Advanced Micro Devices">AMD</abbr> now owns all rights to the Nvidia graphics card.
Long term stability is a flag ship goal of this project. To that extent, stable releases are to be maintained indefinitely. Ideally, this will hold true only for 1.0 releases and beyond but in practice pre-1.0 may also seek this goal. For long term stability, <abbr title="Application Programming Interface">API</abbr> breakage is not allowed with a stable release. For those people out there who blindly apply infinites to everything, stop it. If there is some major security issue or other such extreme problem then <abbr title="Application Programming Interface">API</abbr> breakage can be considered. This will, however, be strongly resisted to ensure only necessary breakage occurs. Strong resistence is not the same as never allowing.
</p>
<p class="p">
- The term "<em>featureless</em>" is loosely used in this project to describe the idea that a project should not constantly add features like a kid in a candy shop wanting to try every new piece of candy they find. The entire <abbr title="Featureless Linux Library">FLL</abbr> project is designed so that you can do as you will so long as you do not deny another person the same. This means that you are free to add as many features as you like. In your own project. Or in your own hacked variation. This project shall attempt to maintain a discrete set of functionality specific to each stable release and the goals of that release.
+ The term "<em class="em">featureless</em>" is loosely used in this project to describe the idea that a project should not constantly add features like a kid in a candy shop wanting to try every new piece of candy they find. The entire <abbr title="Featureless Linux Library">FLL</abbr> project is designed so that you can do as you will so long as you do not deny another person the same. This means that you are free to add as many features as you like. In your own project. Or in your own hacked variation. This project shall attempt to maintain a discrete set of functionality specific to each stable release and the goals of that release.
</p>
<p class="p">
Temporal constraints may result in a stable release being made without all of the intended features. These such cases should be treated on a per-situation basis. Changes to a stable release to add features that did not make it is still discouraged and should be avoided. Futhermore, there is an undescribed point in time in which if a stable release has not achieve a planned or intended feature then that feature should never be added. Time matters. For example, if version 1.0 was supposed to bake a cake and failed to get that functionality but then 10-years later (when 3d-printing evolved into 3d-baking) the version 1.0 must not have the "bake a cake" feature added. Too much time has passed. Just make a 1.2 release for baking cakes. The rule of thumb is flexibility for short term and rigidity for long term.
</p>
<p class="p">
- The <abbr title="Featureless Linux Library">FLL</abbr> project has the word "<em>library</em>" in the name. For good reason. The primary purpose of this project is to be used as a library. The original flag ship of this project is the <strong>Featureless Make</strong> program. Notice the word "<em>program</em>". The <abbr title="Featureless Linux Library">FLL</abbr> project does contain related programs but these are kept to a minimal. The purpose of the programs in this project are to have fully functional and usable example programs. They are not examples in the traditional sense but are instead full blown implementations.
+ The <abbr title="Featureless Linux Library">FLL</abbr> project has the word "<em class="em">library</em>" in the name. For good reason. The primary purpose of this project is to be used as a library. The original flag ship of this project is the <strong class="strong">Featureless Make</strong> program. Notice the word "<em class="em">program</em>". The <abbr title="Featureless Linux Library">FLL</abbr> project does contain related programs but these are kept to a minimal. The purpose of the programs in this project are to have fully functional and usable example programs. They are not examples in the traditional sense but are instead full blown implementations.
</p>
<p class="p">
- The <strong>Featureless Make</strong> is also an exception case. I wrote a thesis regarding the GNU make system and I proposed the <strong>Featureless Make</strong> as a solution that utilizes the <strong>Featureless Settings Specification</strong>. This is the foundation that birthed the <strong>Featureless Linux Library</strong>. For this reason, the <strong>Featureless Make</strong> will always be part of the <abbr title="Featureless Linux Library">FLL</abbr> project.
+ The <strong class="strong">Featureless Make</strong> is also an exception case. I wrote a thesis regarding the GNU make system and I proposed the <strong class="strong">Featureless Make</strong> as a solution that utilizes the <strong class="strong">Featureless Settings Specification</strong>. This is the foundation that birthed the <strong class="strong">Featureless Linux Library</strong>. For this reason, the <strong class="strong">Featureless Make</strong> will always be part of the <abbr title="Featureless Linux Library">FLL</abbr> project.
</p>
<p class="p">
- Many of the programs provided by the <abbr title="Featureless Linux Library">FLL</abbr> are a way of extending the library in such a way that a shell script, such as GNU Bash, can utilize the library. Programs like the <strong>FSS Basic Read</strong> are examples of this.
+ Many of the programs provided by the <abbr title="Featureless Linux Library">FLL</abbr> are a way of extending the library in such a way that a shell script, such as GNU Bash, can utilize the library. Programs like the <strong class="strong">FSS Basic Read</strong> are examples of this.
</p>
<p class="p">
- Other programs, namely the <strong>Controller</strong> program are not intended to be directly part of this project in the long term. They exist within this project for development convenience. Eventually they will budd off into their own separate project. These separate projects will still depend on and use the <abbr title="Featureless Linux Library">FLL</abbr>.
+ Other programs, namely the <strong class="strong">Controller</strong> program are not intended to be directly part of this project in the long term. They exist within this project for development convenience. Eventually they will budd off into their own separate project. These separate projects will still depend on and use the <abbr title="Featureless Linux Library">FLL</abbr>.
</p>
<p class="p">
The way in which data is stored, utilized, and communicated should also follow similar design and principles. The standards and their accompanying specifications are provided by the <abbr title="Featureless Linux Library">FLL</abbr> to achieve this.
</p>
<p class="p">
- Keep it simple is one of the goals of the project. But again, all of you people out there that love infinitives, stop it. This project follows "<em>keep it simple</em>" rather than "<em>keep it absolutely simple</em>". There are many situations where complexity is not only encouraged but also necessary.
+ Keep it simple is one of the goals of the project. But again, all of you people out there that love infinitives, stop it. This project follows "<em class="em">keep it simple</em>" rather than "<em class="em">keep it absolutely simple</em>". There are many situations where complexity is not only encouraged but also necessary.
</p>
</div>
</section>
<div class="section-content">
<p class="p">
- The Featureless Linux Library defines several standards for use in this project. Many of these standards are defined via the Featureless Settings Specifications. Most of these are focused on settings files (configuration files) but are written general enough to support a wide range of uses. The original project that the <abbr title="Featureless Linux Library">FLL</abbr> project is built around is the <em>Featureless Make</em> program, also called <strong>Fake</strong>. The <strong>Fake</strong> program is a great example on how the <abbr title="Featureless Settings Specifications">FSS</abbr> are intended to be used.
+ The Featureless Linux Library defines several standards for use in this project. Many of these standards are defined via the Featureless Settings Specifications. Most of these are focused on settings files (configuration files) but are written general enough to support a wide range of uses. The original project that the <abbr title="Featureless Linux Library">FLL</abbr> project is built around is the <em class="em">Featureless Make</em> program, also called <strong class="strong">Fake</strong>. The <strong class="strong">Fake</strong> program is a great example on how the <abbr title="Featureless Settings Specifications">FSS</abbr> are intended to be used.
</p>
<p class="p">
- The standards are not limited to those defined in the <abbr title="Featureless Settings Specifications">FSS</abbr>. There are the <em>IKI</em> standards (which is not an acronym). The term <em>IKI</em> plays off of the term <em>Wiki</em>. The <em>IKI</em> standard is intended to have simpler syntax than a <em>Wiki</em> syntax and is used in several <abbr title="Featureless Linux Library">FLL</abbr> projects and even inside standards defined by <abbr title="Featureless Settings Specifications">FSS</abbr>.
+ The standards are not limited to those defined in the <abbr title="Featureless Settings Specifications">FSS</abbr>. There are the <em class="em">IKI</em> standards (which is not an acronym). The term <em class="em">IKI</em> plays off of the term <em class="em">Wiki</em>. The <em class="em">IKI</em> standard is intended to have simpler syntax than a <em class="em">Wiki</em> syntax and is used in several <abbr title="Featureless Linux Library">FLL</abbr> projects and even inside standards defined by <abbr title="Featureless Settings Specifications">FSS</abbr>.
</p>
</div>
</section>
<div class="section-content">
<p class="p">
- The Featureless Settings Specifications describe a set of standards designed around the age-old design principle referred to as <em>Keep It Simple Stupid</em>, aka <abbr title="Keep It Simple Stupid">KISS</abbr>. The <abbr title="Featureless Settings Specifications">FSS</abbr> are primarily intended for settings files but are extensible enough to be used beyond that.
+ The Featureless Settings Specifications describe a set of standards designed around the age-old design principle referred to as <em class="em">Keep It Simple Stupid</em>, aka <abbr title="Keep It Simple Stupid">KISS</abbr>. The <abbr title="Featureless Settings Specifications">FSS</abbr> are primarily intended for settings files but are extensible enough to be used beyond that.
</p>
<p class="p">
The <abbr title="Featureless Settings Specifications">FSS</abbr> defines the following:
</p>
<ul>
<li>Will consist of numerous different kinds of specification files, depending on the type of information stored.</li>
- <li>As with the practice of "<code class="code">#!/bin/bash</code>", the setting files <em>should</em> have the following: "<code class="code"># fss-????" format, such as "# FSS-0001</code>".</li>
+ <li>As with the practice of "<code class="code">#!/bin/bash</code>", the setting files <em class="em">should</em> have the following: "<code class="code"># fss-????" format, such as "# FSS-0001</code>".</li>
<li>Multiple sub-standards may be appended to the FSS header, using the same format structure, such as supporting IKI: "# FSS-0000 iki-0000" or HTML5: "# FSS-0000 html-0005".</li>
<li>With the <code class="code">?</code> representing the (hexadecimal/base-16) number that represents the particular specification structure.</li>
- <li>All settings specifications <em>should</em> avoid any form of noise, relative to the data being stored.</li>
+ <li>All settings specifications <em class="em">should</em> avoid any form of noise, relative to the data being stored.</li>
<li><abbr title="Extensible Markup Language">XML</abbr> would be considered anti-<abbr title="Keep It Simple Stupid">KISS</abbr> due to the extreme level of noise generated by the <abbr title="Extensible Markup Language">XML</abbr> language (not easy to read).</li>
<li>The settings files are setup so that they should (reasonably) produce easy readability on both the console and in a GUI.</li>
<li>The specifications should strive for completeness (see the <a href="fll/specifications.html#completeness_theorem" class="link">Completeness Theorem</a>).</li>
</ul>
<p class="p">
- The most basic form of <abbr title="Featureless Settings Specifications">FSS</abbr> consists of two main parts: an <em>Object</em> and the <em>Content</em>.
+ The most basic form of <abbr title="Featureless Settings Specifications">FSS</abbr> consists of two main parts: an <em class="em">Object</em> and the <em class="em">Content</em>.
</p>
<dl class="dl">
<div class="di">
- <dt class="dt"><strong>Object</strong></dt>
- <dd class="dd">Considered the name or identifier of some property or data. Objects do not require an associated <em>Content</em>.</dd>
+ <dt class="dt"><strong class="strong">Object</strong></dt>
+ <dd class="dd">Considered the name or identifier of some property or data. Objects do not require an associated <em class="em">Content</em>.</dd>
</div>
<div class="di">
- <dt class="dt"><strong>Content</strong></dt>
- <dd class="dd">The data associated with a given Object; all Content <em>must</em> have an associated <em>Object</em>.</dd>
+ <dt class="dt"><strong class="strong">Content</strong></dt>
+ <dd class="dd">The data associated with a given Object; all Content <em class="em">must</em> have an associated <em class="em">Object</em>.</dd>
</div>
</dl>
<p class="p">
<p class="p">
Contents may be broken up into zero or more discrete sets of Content.
Each of these discrete sets of Content are referred to as a column.
- These columns do not need to be setup in a column structure, the word <em>column</em> is simply used as a grouping terminology.
+ These columns do not need to be setup in a column structure, the word <em class="em">column</em> is simply used as a grouping terminology.
While a Content refers to the entire set, a column (more specifically, a Content column) refers to the individual discrete sets within the Content.
For example, in <code class="code">fss-000 (Basic)</code> the entire Content may be further represented as a single column.
For example, in <code class="code">fss-001 (Extended)</code> the entire Content may be further represented as multiple columns.
<p class="p">
Unless otherwise specified, all specifications are newline sensitive (<code class="code">\n</code> only).
Newline characters are only <code class="code">\n</code> and are never anything else (<code class="code">\r</code> is not considered newline in any manner).
- These specifications refer to characters that have printable representation as <em>printable</em>.
- These specifications refer to characters that have no printable representation as <em>non-printable</em>.
+ These specifications refer to characters that have printable representation as <em class="em">printable</em>.
+ These specifications refer to characters that have no printable representation as <em class="em">non-printable</em>.
White spaces characters that are printable, such as tabs and spaces, must be considered the same type for the purposes of parsing.
Non-printing white spaces characters (zero-width characters) are ignored, are treated as placeholders for processing with the exception of combining characters.
<p class="p">
Unless otherwise specified, character/data delimits are performed only when required and not unilaterally.
In the case of Objects, delimits would only apply when that Object could be potentially identified as an Object.
- For example, <code class="code">FSS-0001 (Extended)</code> needs quotes to group parts that include spaces, if there is no initial quote, then a quote following the data <em>must not</em> be delimited.
+ For example, <code class="code">FSS-0001 (Extended)</code> needs quotes to group parts that include spaces, if there is no initial quote, then a quote following the data <em class="em">must not</em> be delimited.
</p>
<p class="p">
Such as these following three lines:
This means that if there is white space before the designation symbol (the pound <code class="code">#</code> character) then that white space is ignored.
</p>
<p class="p">
- Unless otherwise specified, all designation characters <em>must</em> represent <abbr title="American Standard Code for Information Interchange">ASCII</abbr> codes.
+ Unless otherwise specified, all designation characters <em class="em">must</em> represent <abbr title="American Standard Code for Information Interchange">ASCII</abbr> codes.
With designation characters being any character code used to designate how to identify an Object or Content (such as a colon <code class="code">:</code> at the end of a basic list).
This keeps the processing and logic simple and safe, for both <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> and <abbr title="American Standard Code for Information Interchange">ASCII</abbr>.
- White space used for designation characters <em>must</em> include support for <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> white space characters, unless otherwise specified.
+ White space used for designation characters <em class="em">must</em> include support for <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> white space characters, unless otherwise specified.
However, these white space used as a designation character, must be printing white space that are not combining white space characters.
Any visible/graph character that is considered a white space (such as <code class="code">U+1680</code> <code class="code"> </code>) is not to be considered a white space, unless otherwise specified.
</p>
<p class="p">
When used for syntax matching purposes, zero-width Unicode characters are only to be considered zero-width unless otherwise specified.
- For example, the <em>invisible plus</em> character (<code class="code">U+2064</code>) is not to be considered as a plus.
+ For example, the <em class="em">invisible plus</em> character (<code class="code">U+2064</code>) is not to be considered as a plus.
</p>
<p class="p">
The <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> <abbr title="Byte Order Mark">BOM</abbr> is not allowed as a Byte Order Mark; instead, it must always be treated as the character represented by its code (unless explicitly allowed to represent a <abbr title="Byte Order Mark">BOM</abbr> by a standard).
</p>
<p class="p">
- The only Unicode dash-like characters allowed as a <em>dash</em> are those intended to connect, such as the Unicode hyphens (<code class="code">U+2010</code> and <code class="code">U+2011</code>) (unless otherwise specified).
+ The only Unicode dash-like characters allowed as a <em class="em">dash</em> are those intended to connect, such as the Unicode hyphens (<code class="code">U+2010</code> and <code class="code">U+2011</code>) (unless otherwise specified).
</p>
<p class="p">
- In any specification where security is intended, if there exists a Unicode character that matches an <abbr title="American Standard Code for Information Interchange">ASCII</abbr> character, that Unicode character <em>may</em> be prohibited by that standard in favor of the <abbr title="American Standard Code for Information Interchange">ASCII</abbr> equivalent.
+ In any specification where security is intended, if there exists a Unicode character that matches an <abbr title="American Standard Code for Information Interchange">ASCII</abbr> character, that Unicode character <em class="em">may</em> be prohibited by that standard in favor of the <abbr title="American Standard Code for Information Interchange">ASCII</abbr> equivalent.
One such example is in the case of a <abbr title="Byte Order Mark">URL</abbr>, where the name could be used to trick a person (<code class="code">http://this-site.com/</code> vs <code class="code">http://this‐site.com/</code>).
This (potential insecure behavior) is allowed in general because a well written program would be able to detect and communicate the possible misunderstanding and thereby avoid mistakes without imposing any character restrictions.
</p>
<p class="p">
- This is a common behavior for security reasons, each character used for any special purposes must be visibly distinct, with white space and non-printing characters as the exception to the words <em>visibly distinct</em>.
+ This is a common behavior for security reasons, each character used for any special purposes must be visibly distinct, with white space and non-printing characters as the exception to the words <em class="em">visibly distinct</em>.
</p>
<p class="p">
The following are core specifications (each with a common name associated with the specification number):
<p class="p">
The IKI syntax provides a vocabulary name (with specific context associated with it) followed by quoted code that is associated with the given vocabulary name.
The vocabulary represents a list of allowed variable names that may also have specific contextual meaning defined by a given IKI specification.
- The variable name is considered the <em>Object</em>.
- The variable value is considered the <em>Content</em>.
+ The variable name is considered the <em class="em">Object</em>.
+ The variable value is considered the <em class="em">Content</em>.
</p>
<p class="p">
The IKI format will use <code class="code">iki-0000</code> to represent an IKI with no explicitly defined vocabulary.
<div class="section-content">
<p class="p">
- The <strong>Completeness Theorem</strong> represents an informal theory by Kevin Day focusing on how software should be complete. The theory has not been formalized and the following is a basic explanation. A formal definition may be provided in the future.
+ The <strong class="strong">Completeness Theorem</strong> represents an informal theory by Kevin Day focusing on how software should be complete. The theory has not been formalized and the following is a basic explanation. A formal definition may be provided in the future.
</p>
<p class="p">
When developing software, one should not program for the minimum requirements. Instead, one should consider the scope of the project and its intended design. Taking that into consideration all functionality needed to achieve this should be considered and implemented.
This does not conflict with <abbr title="Keep It Simple Stupid">KISS</abbr> but instead complements it.
</p>
<p class="p">
- If this is not clear, then consider thinking of things this way. The <abbr title="Keep It Simple Stupid">KISS</abbr> focuses on keeping the design and process simple. The <strong>Completeness Theorem</strong> focuses on making sure the design is complete.
+ If this is not clear, then consider thinking of things this way. The <abbr title="Keep It Simple Stupid">KISS</abbr> focuses on keeping the design and process simple. The <strong class="strong">Completeness Theorem</strong> focuses on making sure the design is complete.
</p>
<p class="p">
- Now if, say a car, is designed to follow <abbr title="Keep It Simple Stupid">KISS</abbr> but violates the <strong>Completeness Theorem</strong>, then that car could be built without doors. Not having doors simplifies the car. It is much simpler and easier to get in and out of.
+ Now if, say a car, is designed to follow <abbr title="Keep It Simple Stupid">KISS</abbr> but violates the <strong class="strong">Completeness Theorem</strong>, then that car could be built without doors. Not having doors simplifies the car. It is much simpler and easier to get in and out of.
</p>
<p class="p">
- Using that example, a car designed to follow both <abbr title="Keep It Simple Stupid">KISS</abbr> and the <strong>Completeness Theorem</strong> would have doors.
+ Using that example, a car designed to follow both <abbr title="Keep It Simple Stupid">KISS</abbr> and the <strong class="strong">Completeness Theorem</strong> would have doors.
</p>
<p class="p">
- To better understand the <strong>Completeness Theorem</strong>, again take the car example. If the car is intended to be used only in say photo shoots and is not in any way intended ever to be used, then as per the <strong>Completeness Theorem</strong>, the car would not need an engine. Whereas a car designed and intended to be used that does not have an engine would fail to follow the <strong>Completeness Theorem</strong>.
+ To better understand the <strong class="strong">Completeness Theorem</strong>, again take the car example. If the car is intended to be used only in say photo shoots and is not in any way intended ever to be used, then as per the <strong class="strong">Completeness Theorem</strong>, the car would not need an engine. Whereas a car designed and intended to be used that does not have an engine would fail to follow the <strong class="strong">Completeness Theorem</strong>.
</p>
<p class="p">
- The <strong>Completeness Theorem</strong> is subjective and is intended to be used as a guide.
+ The <strong class="strong">Completeness Theorem</strong> is subjective and is intended to be used as a guide.
</p>
<p class="p">
- The <strong>Completeness Theorem</strong> asserts that perfection is impossible and pointless and one must instead understand what is necessary to complete the project rather than to handle all possibilities. Simply because perfection isn't possible doesn't mean one must lower their standards or have no standards. Determine what is or is not needed to complete the project and meet that rather than meet less than that.
+ The <strong class="strong">Completeness Theorem</strong> asserts that perfection is impossible and pointless and one must instead understand what is necessary to complete the project rather than to handle all possibilities. Simply because perfection isn't possible doesn't mean one must lower their standards or have no standards. Determine what is or is not needed to complete the project and meet that rather than meet less than that.
</p>
</div>
</section>
<dl class="dl">
<div class="di">
<dt class="dt"><abbr title="Application Binary Interface">ABI</abbr></dt>
- <dd class="dd">An <em>Application Binary Interface</em> is a binary implementation of an <abbr title="Application Programming Interface">API</abbr> making it an implementation of a specification. An <abbr title="Application Binary Interface">ABI</abbr> is neither a specification nor a standard.</dd>
+ <dd class="dd">An <em class="em">Application Binary Interface</em> is a binary implementation of an <abbr title="Application Programming Interface">API</abbr> making it an implementation of a specification. An <abbr title="Application Binary Interface">ABI</abbr> is neither a specification nor a standard.</dd>
</div>
<div class="di">
<dt class="dt"><abbr title="Application Programming Interface">API</abbr></dt>
- <dd class="dd">An <em>Application Programming Interface</em> is a specification of some implementation of a standard be it a formally defined standard or an informally defined standard. This is in effect, documentation. Note that this is a specification of an implementation rather than a specification of a standard.</dd>
+ <dd class="dd">An <em class="em">Application Programming Interface</em> is a specification of some implementation of a standard be it a formally defined standard or an informally defined standard. This is in effect, documentation. Note that this is a specification of an implementation rather than a specification of a standard.</dd>
</div>
<div class="di">
<dt class="dt">Implementation</dt>
</div>
<div class="di">
<dt class="dt"><abbr title="Software Binary Interface">SBI</abbr></dt>
- <dd class="dd">A <em>Software Binary Interface</em> is a new term created so that this project can more appropriately communicate the concept of what is traditionally referred to as an <abbr title="Application Binary Interface">ABI</abbr>. A <em>Software Binary Interface</em> is a more semantically accurate term intended to fully replace the misnamed <abbr title="Application Binary Interface">ABI</abbr> term.</dd>
+ <dd class="dd">A <em class="em">Software Binary Interface</em> is a new term created so that this project can more appropriately communicate the concept of what is traditionally referred to as an <abbr title="Application Binary Interface">ABI</abbr>. A <em class="em">Software Binary Interface</em> is a more semantically accurate term intended to fully replace the misnamed <abbr title="Application Binary Interface">ABI</abbr> term.</dd>
</div>
<div class="di">
<dt class="dt">Service</dt>
- <dd class="dd">Any action or labor performed by one party for another party (such as one person helping another person). In regards to computers and networking a <em>service</em> is often used to represent a web service often provided by a website. It is common for people to misrepresent a web service by saying they are using an <abbr title="Application Programming Interface">API</abbr> when, in fact, they are using a web service.</dd>
+ <dd class="dd">Any action or labor performed by one party for another party (such as one person helping another person). In regards to computers and networking a <em class="em">service</em> is often used to represent a web service often provided by a website. It is common for people to misrepresent a web service by saying they are using an <abbr title="Application Programming Interface">API</abbr> when, in fact, they are using a web service.</dd>
</div>
<div class="di">
<dt class="dt">Specification</dt>
</div>
<div class="di">
<dt class="dt"><abbr title="Software Source Interface">SSI</abbr></dt>
- <dd class="dd">A <em>Software Source Interface</em> is a new term created so that this project can more appropriately communicate the concept of what is traditionally referred to as an <abbr title="Application Programming Interface">API</abbr>. A <em>Software Source Interface</em> is a more semantically accurate term intended to fully replace the misnamed <abbr title="Application Programming Interface">API</abbr> term.</dd>
+ <dd class="dd">A <em class="em">Software Source Interface</em> is a new term created so that this project can more appropriately communicate the concept of what is traditionally referred to as an <abbr title="Application Programming Interface">API</abbr>. A <em class="em">Software Source Interface</em> is a more semantically accurate term intended to fully replace the misnamed <abbr title="Application Programming Interface">API</abbr> term.</dd>
</div>
<div class="di">
<dt class="dt">Standard</dt>
</div>
<div class="di">
<dt class="dt"><abbr title="Web Service Interface">WSI</abbr></dt>
- <dd class="dd">A <em>Web Service Interface</em> is a new term created so that this project can more appropriately communicate the concept of a web service. A <em>Web Service Interface</em> describes the interface in which to communicate to and receive response from a web service and is described by or adheres to some web protocol.</dd>
+ <dd class="dd">A <em class="em">Web Service Interface</em> is a new term created so that this project can more appropriately communicate the concept of a web service. A <em class="em">Web Service Interface</em> describes the interface in which to communicate to and receive response from a web service and is described by or adheres to some web protocol.</dd>
</div>
</dl>
<p class="p">
- Based on this terminology, a standard is the representation of some set of rules and guidelines, however it is the specification that actually defines and describes those roles. The last '<em>S</em>' in <abbr title="Featureless Settings Specifications">FSS</abbr> can therefore be used to represent either "standard" or "specification" in casual speech. Given that an implementation is not a standard, an implementation can deviate from the standard (or the specification of some standard). Such deviations do not alter the standard nor do they alter the specification.
+ Based on this terminology, a standard is the representation of some set of rules and guidelines, however it is the specification that actually defines and describes those roles. The last '<em class="em">S</em>' in <abbr title="Featureless Settings Specifications">FSS</abbr> can therefore be used to represent either "standard" or "specification" in casual speech. Given that an implementation is not a standard, an implementation can deviate from the standard (or the specification of some standard). Such deviations do not alter the standard nor do they alter the specification.
</p>
<p class="p">
Good documentation practices suggest the documentation of an implementation. It is very easy to confuse the specification of an implementation of some standard with the specification of the standard itself. This has happened several times in history where some implementation violates the standard but despite being non-standard that implementation becomes popular. When the specification of that, now non-standard, implementation becomes popularized, those properly following the specification of the standard tend to suffer.
This is a <code class="code">fss-0002 (Basic List)</code> with two required objects:
</p>
<ol>
- <li><em>header</em>.</li>
- <li><em>payload</em>.</li>
+ <li><em class="em">header</em>.</li>
+ <li><em class="em">payload</em>.</li>
</ol>
<p>
- The <em>header</em>:
+ The <em class="em">header</em>:
</p>
<ul>
- <li>The <em>header</em>'s Content is of type <code class="code">fss-0001 (Extended)</code>.</li>
- <li>The <em>header</em> is recommended to have the Objects <em>length</em>, <em>status</em>, <em>part</em>, and <em>total</em>.</li>
- <li>The recommended <em>length</em> represents the size of the <em>payload</em>.</li>
- <li>The recommended <em>part</em> represents a single part of a set of packets for when the data being transmitted is split across multiple payloads.</li>
- <li>The recommended <em>total</em> represents the total number of parts representing a complete data transmitted across multiple payloads.</li>
- <li>The recommended <em>status</em> represents status codes (such as success or failure) and multiple.</li>
- <li>The Content for the recommended <em>length</em> and <em>status</em> are positive whole numbers (including zero) that may be in <em>binary</em>, <em>octal</em>, <em>decimal</em>, <em>duodecimal</em>, or <em>hexidecimal</em> numerical format.</li>
+ <li>The <em class="em">header</em>'s Content is of type <code class="code">fss-0001 (Extended)</code>.</li>
+ <li>The <em class="em">header</em> is recommended to have the Objects <em class="em">length</em>, <em class="em">status</em>, <em class="em">part</em>, and <em class="em">total</em>.</li>
+ <li>The recommended <em class="em">length</em> represents the size of the <em class="em">payload</em>.</li>
+ <li>The recommended <em class="em">part</em> represents a single part of a set of packets for when the data being transmitted is split across multiple payloads.</li>
+ <li>The recommended <em class="em">total</em> represents the total number of parts representing a complete data transmitted across multiple payloads.</li>
+ <li>The recommended <em class="em">status</em> represents status codes (such as success or failure) and multiple.</li>
+ <li>The Content for the recommended <em class="em">length</em> and <em class="em">status</em> are positive whole numbers (including zero) that may be in <em class="em">binary</em>, <em class="em">octal</em>, <em class="em">decimal</em>, <em class="em">duodecimal</em>, or <em class="em">hexidecimal</em> numerical format.</li>
</ul>
<p>
- The <em>payload</em>:
+ The <em class="em">payload</em>:
</p>
<ul>
- <li>The <em>payload</em>'s Content may contain anything, including raw binary data.</li>
- <li>The <em>payload</em> is <em>required</em> to be the last list Object in the file.</li>
- <li>The <em>payload</em> is recommended to have its size designated in some manner in the <em>header</em> (such as with the recommended <em>length</em>).</li>
- <li>The <em>payload</em> is terminated by the <abbr title="End of File">EOF</abbr> character or by the recommended <em>length</em> header.</li>
- <li>The <em>payload</em> may be empty (length may be zero), but the list Object <em>payload</em> must still exist.</li>
- <li>Nothing in the <em>payload</em> may be considered a valid list Object by the outer <code class="code">fss-0002 (Basic List)</code> and therefore escaping is unnecessary (No further processing by the outer <code class="code">fss-0002 (Basic List)</code> is allowed at this point).</li>
- <li>Comments in the <em>payload</em> are not considered comments and are instead considered part of the payload, as-is.</li>
- <li>Essentially, the <em>payload</em> should be treated as binary data embedded in a text file.</li>
+ <li>The <em class="em">payload</em>'s Content may contain anything, including raw binary data.</li>
+ <li>The <em class="em">payload</em> is <em class="em">required</em> to be the last list Object in the file.</li>
+ <li>The <em class="em">payload</em> is recommended to have its size designated in some manner in the <em class="em">header</em> (such as with the recommended <em class="em">length</em>).</li>
+ <li>The <em class="em">payload</em> is terminated by the <abbr title="End of File">EOF</abbr> character or by the recommended <em class="em">length</em> header.</li>
+ <li>The <em class="em">payload</em> may be empty (length may be zero), but the list Object <em class="em">payload</em> must still exist.</li>
+ <li>Nothing in the <em class="em">payload</em> may be considered a valid list Object by the outer <code class="code">fss-0002 (Basic List)</code> and therefore escaping is unnecessary (No further processing by the outer <code class="code">fss-0002 (Basic List)</code> is allowed at this point).</li>
+ <li>Comments in the <em class="em">payload</em> are not considered comments and are instead considered part of the payload, as-is.</li>
+ <li>Essentially, the <em class="em">payload</em> should be treated as binary data embedded in a text file.</li>
</ul>
<p>
- The recommended <em>length</em> <em>header</em> Object used to designate the <em>payload</em> size does not necessarily have to be defined in the <em>header</em>.
- That is to say, if the <em>payload</em> is expected to be of some pre-defined or static length then a length does not need to be provided in the <em>header</em>.
+ The recommended <em class="em">length</em> <em class="em">header</em> Object used to designate the <em class="em">payload</em> size does not necessarily have to be defined in the <em class="em">header</em>.
+ That is to say, if the <em class="em">payload</em> is expected to be of some pre-defined or static length then a length does not need to be provided in the <em class="em">header</em>.
</p>
<p>
- The recommended <em>status</em> <em>header</em> Object may be a string, such as <code class="code">F_none</code>, or a positive whole number.
+ The recommended <em class="em">status</em> <em class="em">header</em> Object may be a string, such as <code class="code">F_none</code>, or a positive whole number.
What the status code represents is application specific (or specific to a sub-standard) but may often be used to represent <abbr title="Featureless Linux Library">FLL</abbr> status code.
</p>
<ul>
- <li>The <abbr title="Featureless Linux Library">FLL</abbr> status code is a 16-bit digit whose first two high-order bits represent <em>error</em> and <em>warning</em> ( representing <em>signal</em>).</li>
+ <li>The <abbr title="Featureless Linux Library">FLL</abbr> status code is a 16-bit digit whose first two high-order bits represent <em class="em">error</em> and <em class="em">warning</em> ( representing <em class="em">signal</em>).</li>
<li>The <abbr title="Featureless Linux Library">FLL</abbr> status code as a number is binary sensitive and may not be portable across binaries or systems.</li>
<li>For best portability, consider using status as a name string to ensure cross-system or cross-binary compatibility.</li>
</ul>
<p>
The Control Block is the first block in the packet and is considered endianless.
There exists only a single byte within the Control Block.
- Regardless of the endianness of the packet, the leftmost bit is always the <em>string</em> or <em>binary</em> bit.
+ Regardless of the endianness of the packet, the leftmost bit is always the <em class="em">string</em> or <em class="em">binary</em> bit.
The second bit following that bit represents the endianness bit.
</p>
<p>
- The <em>string</em> or <em>binary</em> bit, a value of 0 designates that the packet is in string format and a value of 1 designates that the packet is in binary format.
+ The <em class="em">string</em> or <em class="em">binary</em> bit, a value of 0 designates that the packet is in string format and a value of 1 designates that the packet is in binary format.
While the packet might be considered to be in string format, it is technically always in binary format due to the Control Block and Size Block.
- This means that the bit designating the packet as a <em>string</em> packet or a <em>binary</em> packet is referring to whether or not the Payload Block is in <em>string</em> format or is in <em>binary</em> format.
+ This means that the bit designating the packet as a <em class="em">string</em> packet or a <em class="em">binary</em> packet is referring to whether or not the Payload Block is in <em class="em">string</em> format or is in <em class="em">binary</em> format.
</p>
<p>
The endianness bit designates whether or not the packet is in big endian or little endian format.
<p>
The Payload Block is not defined by this standard of that that it exists and should be in <code class="code">fss-000e (Payload)</code> format.
The <code class="code">fss-000e (Payload)</code> may be represented in either string format or binary format.
- The <code class="code">fss-000e (Payload)</code> may contain multiple <em>header</em>(s) but may only contain a single <em>payload</em>.
- With this in mind, it is recommended that only a single <em>header</em> be supported in the Payload Block.
+ The <code class="code">fss-000e (Payload)</code> may contain multiple <em class="em">header</em>(s) but may only contain a single <em class="em">payload</em>.
+ With this in mind, it is recommended that only a single <em class="em">header</em> be supported in the Payload Block.
</p>
<p>
See the <a href="fll/specifications/fss/fss-000e.html" class="link">fss-000e (Payload)</a> specification for details on the syntax rules for the Payload Block.
<p>
The IKI syntax provides a vocabulary name (with specific context associated with it) followed by quoted code that is associated with the given vocabulary name.
The vocabulary represents a list of allowed variable names that may also have specific contextual meaning defined by a given IKI specification.
- The variable name is considered the <em>Object</em>.
- The variable value is considered the <em>Content</em>.
+ The variable name is considered the <em class="em">Object</em>.
+ The variable value is considered the <em class="em">Content</em>.
</p>
<p>
The IKI format will use <code class="code">iki-0000</code> to represent an IKI with no explicitly defined vocabulary.
<p>
The IKI syntax provides a vocabulary name (with specific context associated with it) followed by quoted code that is associated with the given vocabulary name.
The vocabulary represents a list of allowed variable names that may also have specific contextual meaning defined by a given IKI specification.
- The variable name is considered the <em>Object</em>.
- The variable value is considered the <em>Content</em>.
+ The variable name is considered the <em class="em">Object</em>.
+ The variable value is considered the <em class="em">Content</em>.
</p>
<p>
The IKI format will use <code class="code">iki-0000</code> to represent an IKI with no explicitly defined vocabulary.
Flexibility on interpretation is intended so that the context can be more fine-tuned and customized.
</p>
<p>
- The taxonomy for the <em>context</em>, <em>define</em>, and <em>parameter</em> are intentionally not defined here and left open.
+ The taxonomy for the <em class="em">context</em>, <em class="em">define</em>, and <em class="em">parameter</em> are intentionally not defined here and left open.
One utilizing this should document the taxonomy for each of these as desired.
</p>
<p>
<p>
The IKI syntax provides a vocabulary name (with specific context associated with it) followed by quoted code that is associated with the given vocabulary name.
The vocabulary represents a list of allowed variable names that may also have specific contextual meaning defined by a given IKI specification.
- The variable name is considered the <em>Object</em>.
- The variable value is considered the <em>Content</em>.
+ The variable name is considered the <em class="em">Object</em>.
+ The variable value is considered the <em class="em">Content</em>.
</p>
<p>
The IKI format will use <code class="code">iki-0000</code> to represent an IKI with no explicitly defined vocabulary.
This release should be more portable and testable.
</p>
<p class="p">
- The <strong>BASH</strong> alternative <strong>ZSH</strong> is now supported by several scripts.
+ The <strong class="strong">BASH</strong> alternative <strong class="strong">ZSH</strong> is now supported by several scripts.
</p>
<p class="p">
Check out the project on the <a href="fll.html#release" class="link"><abbr title="Featureless Linux Library">FLL</abbr> release</a> page.
The Featureless Linux Library stable version 0.6.0 is released.
</p>
<p class="p">
- The <strong>controller</strong> program is a re-interpretation of the <strong>Featureless Make</strong> program written in a more generalized fashion that is focused on performing a set of tasks.
- This is very similar to a system initialize program such as <em>sysvinit</em>.
+ The <strong class="strong">controller</strong> program is a re-interpretation of the <strong class="strong">Featureless Make</strong> program written in a more generalized fashion that is focused on performing a set of tasks.
+ This is very similar to a system initialize program such as <em class="em">sysvinit</em>.
Support for running as a system initialize replacement is partially complete.
- There is currently no way to send messages to the <strong>controller</strong> program to start and stop anything.
- The <strong>control</strong> program, which is used to communicate to the <strong>controller</strong> program is also incomplete.
+ There is currently no way to send messages to the <strong class="strong">controller</strong> program to start and stop anything.
+ The <strong class="strong">control</strong> program, which is used to communicate to the <strong class="strong">controller</strong> program is also incomplete.
The next <abbr title="Featureless Linux Library">FLL</abbr> development version, the 0.7.0 series, will heavily focused on network protocols.
</p>
<p class="p">
- The <strong>utf8</strong> program is a handy tool to convert from <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> characters to their Unicode value or vice-versa.
+ The <strong class="strong">utf8</strong> program is a handy tool to convert from <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> characters to their Unicode value or vice-versa.
This can convert entire files.
</p>
<p class="p">
- <strong>Featureless Make</strong> has some major changes.
- The <strong>fake</strong> program now accepts piped data, which must be a valid <em>fakefile</em>.
+ <strong class="strong">Featureless Make</strong> has some major changes.
+ The <strong class="strong">fake</strong> program now accepts piped data, which must be a valid <em class="em">fakefile</em>.
There are new Objects available for the <a href="documentation/fake/specifications/settings.html" class="link">build settings</a> and the <a href="documentation/fake/specifications/fakefile.html" class="link">fakefile</a>.
</p>
<p class="p">
This release is a release canditate for the stable version 0.6.0.
</p>
<p class="p">
- Unit tests for all <em>level_0</em> projects now exists (except for f_type which is not planned to ever have unit tests).
+ Unit tests for all <em class="em">level_0</em> projects now exists (except for f_type which is not planned to ever have unit tests).
</p>
<p class="p">
Many problems and consistency issue have been identified by the written unit tests and fixed.
The unit tests, however, are neither complete nor thorough.
- There are almost no unit tests for <em>level_1</em>, <em>level_2</em>, or <em>level_3</em> projects.
+ There are almost no unit tests for <em class="em">level_1</em>, <em class="em">level_2</em>, or <em class="em">level_3</em> projects.
</p>
<p class="p">
I noticed that the Unicode processing code is incomplete as of the 0.5.9 release.
When I first discovered I could have a phone that respects my freedom, my privacy, and my liberty, I was ecstatic. I don't have to be weigh down by horrible interfaces, horrible software, and horrible flexibility that other people like or otherwise think is a good idea. I would have the opportunity to tweak and adjust the ideas as I see fit within my own personal tolerances and willingness to put the effort in.
</p>
<p class="p">
- I supported several phones over years, such as the <strong>OpenMoko Freerunner</strong>, an embarrassing failure in the community to the leap forward pioneered by the <strong>Unbuntu Aquaris</strong>. Many of these phones ultimately failed or faded into the night due to a hostile industry, market, and regulations. The <strong>Librem5</strong> from <a href="https://puri.sm/" class="link external">Purism</a> has now stepped up to the plate, learned from the past mistakes, and delivered a phone that, while not complete or ideal, lives up to their standards and has thus far survived numerous, and blatant, hostile industry actions and economic disasters.
+ I supported several phones over years, such as the <strong class="strong">OpenMoko Freerunner</strong>, an embarrassing failure in the community to the leap forward pioneered by the <strong class="strong">Unbuntu Aquaris</strong>. Many of these phones ultimately failed or faded into the night due to a hostile industry, market, and regulations. The <strong class="strong">Librem5</strong> from <a href="https://puri.sm/" class="link external">Purism</a> has now stepped up to the plate, learned from the past mistakes, and delivered a phone that, while not complete or ideal, lives up to their standards and has thus far survived numerous, and blatant, hostile industry actions and economic disasters.
</p>
<p class="p">
- I finally have my <strong>Librem5</strong>. I have had to quite painfully, if not patiently, wait for my phone to actually be shipped years late (due to global economic situations). This is my review after having used the phone with respect to the other open-source phones I have used, namely the <strong>Pinephone</strong> from <a href="https://www.pine64.org/" class="link external">Pine64</a>. I have discovered good things, bad things, horrible things, and great things about this phone.
+ I finally have my <strong class="strong">Librem5</strong>. I have had to quite painfully, if not patiently, wait for my phone to actually be shipped years late (due to global economic situations). This is my review after having used the phone with respect to the other open-source phones I have used, namely the <strong class="strong">Pinephone</strong> from <a href="https://www.pine64.org/" class="link external">Pine64</a>. I have discovered good things, bad things, horrible things, and great things about this phone.
</p>
<p class="p">
<a id="2022_06_04-librem_to_freedom-more" href="news/2022_06_04-librem_to_freedom.html" class="content link" aria-labelledby="2022_06_04-librem_to_freedom-more 2022_06_04-librem_to_freedom-title">Continue reading…</a>
Update the website, bringing in my initial pass at the documentation for each of the programs provided by the <abbr title="Featureless Linux Library">FLL</abbr> project. Most of this documentation is copied from the help of each program and any improvements or deviations are incidental.
</p>
<p class="p">
- While working on the documentation, I discovered and fixed random problems. In particular, the <strong>iki_read</strong> program in the release candidate has a major regression where it doesn't do anything. This is the result of a very minor mistake in passing the wrong size variable to the file read functions. Essentially, the <strong>iki_read</strong> program is only processing files of length 0 and as a result never produces any output. This is now fixed upstream and I am even happier with the practice of using release candidates.
+ While working on the documentation, I discovered and fixed random problems. In particular, the <strong class="strong">iki_read</strong> program in the release candidate has a major regression where it doesn't do anything. This is the result of a very minor mistake in passing the wrong size variable to the file read functions. Essentially, the <strong class="strong">iki_read</strong> program is only processing files of length 0 and as a result never produces any output. This is now fixed upstream and I am even happier with the practice of using release candidates.
</p>
<p class="p">
<a id="2022_05_06-basic_program_documentation-more" href="news/2022_05_06-basic_program_documentation.html" class="content link" aria-labelledby="2022_05_06-basic_program_documentation-more 2022_05_06-basic_program_documentation-title">Continue reading…</a>
I also plan on sending out more communications, but I have yet to figure out when and how often I shall do this.
<p class="p">
<p class="p">
- <strong>Kevin Day</strong>
+ <strong class="strong">Kevin Day</strong>
</p>
</div>
</main>
Update the website, bringing in my initial pass at the documentation for each of the programs provided by the <abbr title="Featureless Linux Library">FLL</abbr> project. Most of this documentation is copied from the help of each program and any improvements or deviations are incidental.
</p>
<p class="p">
- While working on the documentation, I discovered and fixed random problems. In particular, the <strong>iki_read</strong> program in the release candidate has a major regression where it doesn't do anything. This is the result of a very minor mistake in passing the wrong size variable to the file read functions. Essentially, the <strong>iki_read</strong> program is only processing files of length 0 and as a result never produces any output. This is now fixed upstream and I am even happier with the practice of using release candidates.
+ While working on the documentation, I discovered and fixed random problems. In particular, the <strong class="strong">iki_read</strong> program in the release candidate has a major regression where it doesn't do anything. This is the result of a very minor mistake in passing the wrong size variable to the file read functions. Essentially, the <strong class="strong">iki_read</strong> program is only processing files of length 0 and as a result never produces any output. This is now fixed upstream and I am even happier with the practice of using release candidates.
</p>
<p class="p">
The website has been updated with an appropriate <code class="code">.htaccess</code> file to better handle paths. I even decided to further emphasize the retro-internet feel by redirecting directory paths to html files, if they exist. I imagine this may annoy some of the people out there. Minor problems here and there have been addressed as I discovered them.
This website is also designed to be fully downloadable and readable locally (and even offline). Whenever I have notable changes on the website, I will update the downloadable tarball of this website.
</p>
<p class="p">
- A <em>Source Code</em> link has been added on the index page (the main news page) as a way for people who just want a fast way to get to the latest code.
+ A <em class="em">Source Code</em> link has been added on the index page (the main news page) as a way for people who just want a fast way to get to the latest code.
</p>
<p class="p">
- <strong>Kevin Day</strong>
+ <strong class="strong">Kevin Day</strong>
</p>
</div>
</main>
I have also added an informal definition of my <a href="fll/specifications.html#completeness_theorem" class="link">Completeness Theorem</a> that I always used for just about all of my personal work. This has been in use by the <abbr title="Featureless Linux Library">FLL</abbr> since I first started working on it. I believe that I just never formally (or informally) wrote down my theory (I believe that the concepts for this were touched on in my thesis).
</p>
<p class="p">
- <strong>Kevin Day</strong>
+ <strong class="strong">Kevin Day</strong>
</p>
</div>
</main>
When I first discovered I could have a phone that respects my freedom, my privacy, and my liberty, I was ecstatic. I don't have to be weigh down by horrible interfaces, horrible software, and horrible flexibility that other people like or otherwise think is a good idea. I would have the opportunity to tweak and adjust the ideas as I see fit within my own personal tolerances and willingness to put the effort in.
</p>
<p class="p">
- I supported several phones over years, such as the <strong>OpenMoko Freerunner</strong>, an embarrassing failure in the community to the leap forward pioneered by the <strong>Unbuntu Aquaris</strong>. Many of these phones ultimately failed or faded into the night due to a hostile industry, market, and regulations. The <strong>Librem5</strong> from <a href="https://puri.sm/" class="link external">Purism</a> has now stepped up to the plate, learned from the past mistakes, and delivered a phone that, while not complete or ideal, lives up to their standards and has thus far survived numerous, and blatant, hostile industry actions and economic disasters.
+ I supported several phones over years, such as the <strong class="strong">OpenMoko Freerunner</strong>, an embarrassing failure in the community to the leap forward pioneered by the <strong class="strong">Unbuntu Aquaris</strong>. Many of these phones ultimately failed or faded into the night due to a hostile industry, market, and regulations. The <strong class="strong">Librem5</strong> from <a href="https://puri.sm/" class="link external">Purism</a> has now stepped up to the plate, learned from the past mistakes, and delivered a phone that, while not complete or ideal, lives up to their standards and has thus far survived numerous, and blatant, hostile industry actions and economic disasters.
</p>
<p class="p">
- I finally have my <strong>Librem5</strong>. I have had to quite painfully, if not patiently, wait for my phone to actually be shipped years late (due to global economic situations). This is my review after having used the phone with respect to the other open-source phones I have used, namely the <strong>Pinephone</strong> from <a href="https://www.pine64.org/" class="link external">Pine64</a>. I have discovered good things, bad things, horrible things, and great things about this phone.
+ I finally have my <strong class="strong">Librem5</strong>. I have had to quite painfully, if not patiently, wait for my phone to actually be shipped years late (due to global economic situations). This is my review after having used the phone with respect to the other open-source phones I have used, namely the <strong class="strong">Pinephone</strong> from <a href="https://www.pine64.org/" class="link external">Pine64</a>. I have discovered good things, bad things, horrible things, and great things about this phone.
</p>
<p class="p">
- The <strong>Pinephone</strong> that I have uses mostly the same software as the <strong>Librem5</strong>. This offers a great comparison. However, much of this software is actually by the <a href="https://puri.sm/" class="link external">Purism</a>. The resulting differences are primarily, but not mostly, the hardware differences.
+ The <strong class="strong">Pinephone</strong> that I have uses mostly the same software as the <strong class="strong">Librem5</strong>. This offers a great comparison. However, much of this software is actually by the <a href="https://puri.sm/" class="link external">Purism</a>. The resulting differences are primarily, but not mostly, the hardware differences.
</p>
</div>
</section>
<div class="section-content">
<p class="p">
- I received the <strong>Librem5</strong> phone, charged it up, and then powered it on. The first thing I encountered was the disk encryption. The default password is easy to guess and I did not have to look up documentation to figure it out. I am already familiar with the interface thanks to having installed it onto the <strong>Pinephone</strong>. Most of the software looked the same, except for the camera. I will discuss more on the camera program later on in this document.
+ I received the <strong class="strong">Librem5</strong> phone, charged it up, and then powered it on. The first thing I encountered was the disk encryption. The default password is easy to guess and I did not have to look up documentation to figure it out. I am already familiar with the interface thanks to having installed it onto the <strong class="strong">Pinephone</strong>. Most of the software looked the same, except for the camera. I will discuss more on the camera program later on in this document.
</p>
<img src="images/news/2022_06_04/01-unboxed-400.png" alt="Librem5 phone, manual, and box." title="Unboxed phone." class="image content right margin-1rem">
<p class="p">
- First things first, I need to change the user name and the encryption keys. I've never bothered with this on the <strong>Pinephone</strong> and I do not know how different doing this on the <strong>Pinephone</strong> will be. As for the <strong>Librem5</strong> phone, I found changing the user name did not actually change the user name. The problem is that what I call the user name is the system account name. What the <strong>Librem5</strong> calls the user name is the displayed account name. Fair enough.
+ First things first, I need to change the user name and the encryption keys. I've never bothered with this on the <strong class="strong">Pinephone</strong> and I do not know how different doing this on the <strong class="strong">Pinephone</strong> will be. As for the <strong class="strong">Librem5</strong> phone, I found changing the user name did not actually change the user name. The problem is that what I call the user name is the system account name. What the <strong class="strong">Librem5</strong> calls the user name is the displayed account name. Fair enough.
</p>
<div class="tip">
- I recommend backing up your <code class="code">contacts.db</code> file. This file should appear after you first start and configure the <em>Contacts</em> program. The <code class="code">contacts.db</code> file can be located by using the following command on the command line from your home directory:
+ I recommend backing up your <code class="code">contacts.db</code> file. This file should appear after you first start and configure the <em class="em">Contacts</em> program. The <code class="code">contacts.db</code> file can be located by using the following command on the command line from your home directory:
<samp class="code terminal"># find -name contacts.db</samp>
</div>
<p class="p">
I rename the user, changing the home directory, updating the <code class="code">/etc/passwd</code>, <code class="code">/etc/group</code>, <code class="code">/etc/shadow</code>, and several other account related files.
</p>
<p class="p">
- I rebooted the <strong>Librem5</strong> phone and it failed to boot. Some part of the boot process is picky about the default name. I found that there is a <a href="https://github.com/dreemurrs-embedded/Jumpdrive" class="link external">Jumpdrive</a> program that allows me to boot the phone and expose the disk to another computer. <a href="https://puri.sm/" class="link external">Purism</a> actually provides their own special project, called <a href="https://source.puri.sm/Librem5/librem5-flash-image" class="link external">Librem5 Flash Image</a> for making this amazingly simple. These two tools when combined are amazing. I've never had an easier time accessing a phone over <abbr title="Universal Serial Bus">USB</abbr>. I could access all files on a different machine as if it were a local disk drive.
+ I rebooted the <strong class="strong">Librem5</strong> phone and it failed to boot. Some part of the boot process is picky about the default name. I found that there is a <a href="https://github.com/dreemurrs-embedded/Jumpdrive" class="link external">Jumpdrive</a> program that allows me to boot the phone and expose the disk to another computer. <a href="https://puri.sm/" class="link external">Purism</a> actually provides their own special project, called <a href="https://source.puri.sm/Librem5/librem5-flash-image" class="link external">Librem5 Flash Image</a> for making this amazingly simple. These two tools when combined are amazing. I've never had an easier time accessing a phone over <abbr title="Universal Serial Bus">USB</abbr>. I could access all files on a different machine as if it were a local disk drive.
</p>
<p class="p">
- The <a href="https://source.puri.sm/Librem5/librem5-flash-image" class="link external">Librem5 Flash Image</a> documentation could be improved because the default configuration installs without full disk encryption. I had to re-flash the <strong>Librem5</strong> phone again once I discovered it to be unencrypted. The partition also had to be resized but thanks to the amazingly well designed software (the <a href="https://github.com/dreemurrs-embedded/Jumpdrive" class="link external">Jumpdrive</a> program and the <a href="https://source.puri.sm/Librem5/librem5-flash-image" class="link external">Librem5 Flash Image</a>) I could just open up a graphical partition and easily fix this.
+ The <a href="https://source.puri.sm/Librem5/librem5-flash-image" class="link external">Librem5 Flash Image</a> documentation could be improved because the default configuration installs without full disk encryption. I had to re-flash the <strong class="strong">Librem5</strong> phone again once I discovered it to be unencrypted. The partition also had to be resized but thanks to the amazingly well designed software (the <a href="https://github.com/dreemurrs-embedded/Jumpdrive" class="link external">Jumpdrive</a> program and the <a href="https://source.puri.sm/Librem5/librem5-flash-image" class="link external">Librem5 Flash Image</a>) I could just open up a graphical partition and easily fix this.
</p>
<p class="p">
I now had easy access to all files on the disk. I found and fixed several of the situations related to the user name change. I also edited the <code class="code">/etc/fstab</code> file to ensure that the filesystem is mounted as <code class="code">noatime</code>.
<div class="section-content">
<p class="p">
- While waiting an excessively long time to get my phone I have been hearing things about the battery. In my personal experience the battery life is closely comparable to the <strong>Pinephone</strong>. Both the <strong>Librem5</strong> and the <strong>Pinephone</strong> have had problems with the batter life being short. These have both been fixed from a state of horrible to a state of acceptable by the use of software driver improvements. When I first received my <strong>Librem5</strong> phone, the batter life was short. This short life was solved by a simple software update and phone reboot.
+ While waiting an excessively long time to get my phone I have been hearing things about the battery. In my personal experience the battery life is closely comparable to the <strong class="strong">Pinephone</strong>. Both the <strong class="strong">Librem5</strong> and the <strong class="strong">Pinephone</strong> have had problems with the batter life being short. These have both been fixed from a state of horrible to a state of acceptable by the use of software driver improvements. When I first received my <strong class="strong">Librem5</strong> phone, the batter life was short. This short life was solved by a simple software update and phone reboot.
</p>
<p class="p">
- In physical terms, the <strong>Librem5</strong> is a lot easier to remove than the battery from the <strong>Pinephone</strong>. The batter in the <strong>Librem5</strong> is significantly larger than the battery in the <strong>Pinephone</strong>. I suspect they may last about the same amount of time but I have not bothered to test this.
+ In physical terms, the <strong class="strong">Librem5</strong> is a lot easier to remove than the battery from the <strong class="strong">Pinephone</strong>. The batter in the <strong class="strong">Librem5</strong> is significantly larger than the battery in the <strong class="strong">Pinephone</strong>. I suspect they may last about the same amount of time but I have not bothered to test this.
</p>
<p class="p">
- Both the <strong>Librem5</strong> and the <strong>Pinephone</strong> support suspend and it works well on both. The user interface could use some significant improvement by allowing me to specify when to suspend rather than use some pre-configured set. In fact, I want a program to call just to automatically suspend when I say rather than on some schedule.
+ Both the <strong class="strong">Librem5</strong> and the <strong class="strong">Pinephone</strong> support suspend and it works well on both. The user interface could use some significant improvement by allowing me to specify when to suspend rather than use some pre-configured set. In fact, I want a program to call just to automatically suspend when I say rather than on some schedule.
</p>
</div>
This deserves its own section separate from the battery. The provided charger seems cool. The charger looks cool. It is horrible, at least for American standard outlets. The flip switch is nice except that it wobbles and the connectors seem a little short. This results in sparks flying out of the socket. This charger is a fire hazard. The best position is with the part that collapsed opposite to gravity and it seems to work. If you accidentally touch or move the cable you can set off sparks and cause the connection to repeatedly disconnect and connect.
</p>
<p class="p">
- To make matters worse, the <strong>Librem5</strong> documentation states that you must only use the charger provided by <strong>Librem5</strong>. You know, the fire hazard charger. Not going to happen. I went to a local store and got a 25 Watt power adapter that supports <abbr title="Programmable Power Supply">PPS</abbr> (the <strong>Librem5</strong> uses <abbr title="Programmable Power Supply">PPS</abbr>).
+ To make matters worse, the <strong class="strong">Librem5</strong> documentation states that you must only use the charger provided by <strong class="strong">Librem5</strong>. You know, the fire hazard charger. Not going to happen. I went to a local store and got a 25 Watt power adapter that supports <abbr title="Programmable Power Supply">PPS</abbr> (the <strong class="strong">Librem5</strong> uses <abbr title="Programmable Power Supply">PPS</abbr>).
</p>
<p class="p">
- Unlike the <strong>Pinephone</strong>, I have found the <strong>Librem5</strong> requires more power to charge. A higher end power adapter like the ones marketed for high Wattage are recommended. I found that I can charge the <strong>Librem5</strong> using a cheap low Amperage (low Wattage) adapter only when the phone is off.
+ Unlike the <strong class="strong">Pinephone</strong>, I have found the <strong class="strong">Librem5</strong> requires more power to charge. A higher end power adapter like the ones marketed for high Wattage are recommended. I found that I can charge the <strong class="strong">Librem5</strong> using a cheap low Amperage (low Wattage) adapter only when the phone is off.
</p>
<p class="p">
- The <strong>Librem5</strong> only gets hot from charger when using one of these high powered chargers. I tested the <strong>Pinephone</strong> with the same adapter and found it also gets hot. I suspect the heating is more of a matter of the physics of the speed of the charge rather than a matter of the physics of the heat diffusion. I tested the <strong>Librem5</strong> with a cheap low Amperage (low Wattage) adapter and found that the phone did not get significantly or otherwise noticeably hot.
+ The <strong class="strong">Librem5</strong> only gets hot from charger when using one of these high powered chargers. I tested the <strong class="strong">Pinephone</strong> with the same adapter and found it also gets hot. I suspect the heating is more of a matter of the physics of the speed of the charge rather than a matter of the physics of the heat diffusion. I tested the <strong class="strong">Librem5</strong> with a cheap low Amperage (low Wattage) adapter and found that the phone did not get significantly or otherwise noticeably hot.
</p>
</div>
</section>
I consider the camera embarrassing. The light sensitivity does not work properly. The camera program is clearly marked as developmental. I have to have a spotlight in on the target for the phone to get enough light to render anything on the screen. I believe the problem is a software problem. This is good news. Either a driver or a software update will fix the problem.
</p>
<p class="p">
- The <strong>Pinephone</strong> camera works reasonably well. Early on, the <strong>Pinephone</strong> had pathetic camera support as well and with software improvements the camera became usable. The <strong>Librem5</strong> uses a modified version of the <code class="code">megapixels</code> program. I attempted to install the original, unmodified version of <code class="code">megapixels</code> and very quickly realized doing so is a bad idea. I did not go past the <em>"Are you Sure?"</em> part.
+ The <strong class="strong">Pinephone</strong> camera works reasonably well. Early on, the <strong class="strong">Pinephone</strong> had pathetic camera support as well and with software improvements the camera became usable. The <strong class="strong">Librem5</strong> uses a modified version of the <code class="code">megapixels</code> program. I attempted to install the original, unmodified version of <code class="code">megapixels</code> and very quickly realized doing so is a bad idea. I did not go past the <em class="em">"Are you Sure?"</em> part.
</p>
<div class="tip">
- I recommend never attempting to install the original <code class="code">megapixels</code> program on the <strong>Librem5</strong>. The entire set of <strong>Librem5</strong> specific software is a knot of required dependencies. This would likely uninstall everything custom tailored to make the <strong>Librem5</strong> work well. Most package managers lack the necessary logic to have real custom installs. I believe these package mangers should all abandon hard dependencies and instead use soft dependencies. If you still decide to go ahead with installing the <code class="code">megapixels</code> program, then good luck and be prepared to completely re-install your phone.
+ I recommend never attempting to install the original <code class="code">megapixels</code> program on the <strong class="strong">Librem5</strong>. The entire set of <strong class="strong">Librem5</strong> specific software is a knot of required dependencies. This would likely uninstall everything custom tailored to make the <strong class="strong">Librem5</strong> work well. Most package managers lack the necessary logic to have real custom installs. I believe these package mangers should all abandon hard dependencies and instead use soft dependencies. If you still decide to go ahead with installing the <code class="code">megapixels</code> program, then good luck and be prepared to completely re-install your phone.
</div>
<p class="p">
- Maybe in a few months from now an update will result in a fully working <strong>Librem5</strong> camera. Until then, the <strong>Pinephone</strong> wins hands down when it comes to the camera.
+ Maybe in a few months from now an update will result in a fully working <strong class="strong">Librem5</strong> camera. Until then, the <strong class="strong">Pinephone</strong> wins hands down when it comes to the camera.
</p>
</div>
<div class="subsection-content">
<p class="p">
- I have discovered that the camera has buttons that simple do not appear as buttons to me. I am able to use these buttons to change the settings and make the camera picture usable. Changing these settings is not preserved. There is still some room for improvement but this is still great news. The camera is not as bad as I initially thought. Check out <a href="https://social.librem.one/tags/shotonlibrem5" class="link external">the "Shot on Librem" Librem Social board</a> for pictures taken by numerous owners of the <strong>Librem5</strong> phone. There is also <a href="https://forums.puri.sm/t/using-megapixels-to-make-photographs/14842" class="link external">a forum page about using Megapixels to make photographs</a>.
+ I have discovered that the camera has buttons that simple do not appear as buttons to me. I am able to use these buttons to change the settings and make the camera picture usable. Changing these settings is not preserved. There is still some room for improvement but this is still great news. The camera is not as bad as I initially thought. Check out <a href="https://social.librem.one/tags/shotonlibrem5" class="link external">the "Shot on Librem" Librem Social board</a> for pictures taken by numerous owners of the <strong class="strong">Librem5</strong> phone. There is also <a href="https://forums.puri.sm/t/using-megapixels-to-make-photographs/14842" class="link external">a forum page about using Megapixels to make photographs</a>.
</p>
</div>
</section>
<div class="section-content">
<p class="p">
- This is a specialty of the <strong>Librem5</strong> that I have not notice in other phones. The card works great, you just push it in and then go. Follow the instructions to install the correct software, and the card should work.
+ This is a specialty of the <strong class="strong">Librem5</strong> that I have not notice in other phones. The card works great, you just push it in and then go. Follow the instructions to install the correct software, and the card should work.
</p>
<p class="p">
- If you play with the card, like I do, however, you may run into some problems. I decided to change the <em>admin PIN</em> using the <code class="code">gpg</code> program. I select the change <abbr title="Personal Identification Number">PIN</abbr>. As I was typing the old <abbr title="Personal Identification Number">PIN</abbr> it suddenly went to another prompt before I hit enter. I thought maybe I accidentally hit enter. I then entered in the new <abbr title="Personal Identification Number">PIN</abbr>. The program then asked for confirmation and I re-entered the <abbr title="Personal Identification Number">PIN</abbr>. This gave me the impression that the <abbr title="Personal Identification Number">PIN</abbr> was properly changed. The <code class="code">gpg</code> did something wrong. I typed in the <abbr title="Personal Identification Number">PIN</abbr> and it had a problem. I again figured I hit a wrong key on this atrocious keyboard and tried again. Come to find out they have an insanely short permanent lock out after three tries. I bricked the card.
+ If you play with the card, like I do, however, you may run into some problems. I decided to change the <em class="em">admin PIN</em> using the <code class="code">gpg</code> program. I select the change <abbr title="Personal Identification Number">PIN</abbr>. As I was typing the old <abbr title="Personal Identification Number">PIN</abbr> it suddenly went to another prompt before I hit enter. I thought maybe I accidentally hit enter. I then entered in the new <abbr title="Personal Identification Number">PIN</abbr>. The program then asked for confirmation and I re-entered the <abbr title="Personal Identification Number">PIN</abbr>. This gave me the impression that the <abbr title="Personal Identification Number">PIN</abbr> was properly changed. The <code class="code">gpg</code> did something wrong. I typed in the <abbr title="Personal Identification Number">PIN</abbr> and it had a problem. I again figured I hit a wrong key on this atrocious keyboard and tried again. Come to find out they have an insanely short permanent lock out after three tries. I bricked the card.
</p>
<p class="p">
Not all is lost. There is a factory reset the destroys everything on the card. I found a way to perform the factory reset thanks to <a href="https://www.florian-wolters.de/posts/resetting-openpgp-smartcard/" class="link external">Florian Wolters</a>. With this factory reset code, you can never truly brick your card. The worst is that you lose the encryption keys. There are ways to back up the keys by creating them outside of the card and importing them but this is not to be discussed in this document.
<div class="section-content">
<p class="p">
- Phone calls work out of the box and I have had very few problems. In very rare occasions I have had the modem refuse to work. Rebooting the machine does not solve the problem where the modem refuses to work. I had to power off the mode and then power it back on to fix this problem. This is exceptionally easy thanks to the <strong>Librem5</strong> design.
+ Phone calls work out of the box and I have had very few problems. In very rare occasions I have had the modem refuse to work. Rebooting the machine does not solve the problem where the modem refuses to work. I had to power off the mode and then power it back on to fix this problem. This is exceptionally easy thanks to the <strong class="strong">Librem5</strong> design.
</p>
<p class="p">
There appears to be built in <abbr title="Voice Over Internet Protocol">VoIP</abbr> support. I have not tried this but it should be interesting to see it work.
Normal text messages work fine out of the box. Sending a picture does not.
</p>
<p class="p">
- When I tried sending a picture as a test it appeared to work but the other end did not received the picture. The other end happens to be a <strong>Pinephone</strong>. The <strong>Pinephone</strong> has massive problems with sending and receiving pictures over text messages as well. That means that I do not have a reliable way to test this without bothering some third-party. And asking some less-tech savvy person to spend some time calling me back and forth to confirm or deny that they received or did not receive a text is not a good idea.
+ When I tried sending a picture as a test it appeared to work but the other end did not received the picture. The other end happens to be a <strong class="strong">Pinephone</strong>. The <strong class="strong">Pinephone</strong> has massive problems with sending and receiving pictures over text messages as well. That means that I do not have a reliable way to test this without bothering some third-party. And asking some less-tech savvy person to spend some time calling me back and forth to confirm or deny that they received or did not receive a text is not a good idea.
</p>
<p class="p">
I didn't test further because of a big problem this exposed. Infinite messages! No matter how many times I delete the test messages they keep re-appearing. I checked the modem using the <code class="code">mmcli</code> program. This program does not make it easy to use the modem but as far as I can tell the message is not there. I checked the file-system and found chatty file database (I feel the strong urge to rant on the stupidity of an <abbr title="Structured Query Language">SQL</abbr> database for local file settings here). Deleting this database file deletes every text message except the one I want to get rid off.
<div class="section-content">
<p class="p">
- The <strong>Librem5</strong> phone properly handles call and text message notification when the screen is off. This appears to work when the phone is in suspend as well. This is about the same as with the <strong>Pinephone</strong>.
+ The <strong class="strong">Librem5</strong> phone properly handles call and text message notification when the screen is off. This appears to work when the phone is in suspend as well. This is about the same as with the <strong class="strong">Pinephone</strong>.
</p>
<p class="p">
- The power notification light on the <strong>Librem5</strong> is superior to that on the <strong>Pinephone</strong>. The light better communicates the state of the power and even will turn off after fully charged.
+ The power notification light on the <strong class="strong">Librem5</strong> is superior to that on the <strong class="strong">Pinephone</strong>. The light better communicates the state of the power and even will turn off after fully charged.
</p>
</div>
</section>
<div class="section-content">
<p class="p">
- The keyboard on the <strong>Librem5</strong> is horrible. I get the impression that the programmers, owners, or managers behind the <strong>Librem5</strong> are more akin to the new age phone scroll users rather than the more old school keyboard users. The <strong>Pinephone</strong> uses the same software and has the same horrible keyboard.
+ The keyboard on the <strong class="strong">Librem5</strong> is horrible. I get the impression that the programmers, owners, or managers behind the <strong class="strong">Librem5</strong> are more akin to the new age phone scroll users rather than the more old school keyboard users. The <strong class="strong">Pinephone</strong> uses the same software and has the same horrible keyboard.
</p>
</div>
</section>
<div class="section-content">
<p class="p">
- I have the fancy version of the original <strong>Pinephone</strong>. This version comes with a dock. The dock works well on the <strong>Librem5</strong> but only after I did a system update. I think there is more work to do because the Ethernet port is giving that special slow blink that indicates a hardware fault. More than likely a driver update is needed to fix this. If there is not some special souce code driver hack needed that the <strong>Pinephone</strong> uses then an eventual kernel update will get this working.
+ I have the fancy version of the original <strong class="strong">Pinephone</strong>. This version comes with a dock. The dock works well on the <strong class="strong">Librem5</strong> but only after I did a system update. I think there is more work to do because the Ethernet port is giving that special slow blink that indicates a hardware fault. More than likely a driver update is needed to fix this. If there is not some special souce code driver hack needed that the <strong class="strong">Pinephone</strong> uses then an eventual kernel update will get this working.
</p>
</div>
</section>
<div class="section-content">
<p class="p">
- The <strong>Librem5</strong> is in a bit of an awkward position. The <a href="https://puri.sm/" class="link external">Purism</a> company, from how things appear to me, are marketing towards a security towards an average person using software and tools from a highly technical field.
+ The <strong class="strong">Librem5</strong> is in a bit of an awkward position. The <a href="https://puri.sm/" class="link external">Purism</a> company, from how things appear to me, are marketing towards a security towards an average person using software and tools from a highly technical field.
</p>
<p class="p">
The current day less-technical person compared to the traditional more-technical person have very different use cases. I have never owned one of these proprietary Android or Apple phones. Having said that, I believe that the interface is focused towards such an audience. I find such an interface tolerable but not very user-friendly.
</p>
<p class="p">
- I believe what the <strong>Librem5</strong> provides achieves this with the exception of pictures. This exception is so big, that I might better word this as calling it the rule rather than the exception. Taking, sending, and receiving pictures is the bread and butter of the average user out in the wild. The <strong>Librem5</strong> (and also the <strong>Pinephone</strong> for that matter) drops the ball on this. This is a major downside and I would argue is a requirement that should be immediately addressed, two years ago.
+ I believe what the <strong class="strong">Librem5</strong> provides achieves this with the exception of pictures. This exception is so big, that I might better word this as calling it the rule rather than the exception. Taking, sending, and receiving pictures is the bread and butter of the average user out in the wild. The <strong class="strong">Librem5</strong> (and also the <strong class="strong">Pinephone</strong> for that matter) drops the ball on this. This is a major downside and I would argue is a requirement that should be immediately addressed, two years ago.
</p>
</div>
</section>
<div class="section-content">
<p class="p">
- The switches. The <strong>Librem5</strong> has switches on the side of the phone to physically disconnect the modem, the wireless and Bluetooth, and the camera and microphone. This is a major selling point of this phone and the <strong>Librem5</strong> fully achieves this. The <strong>Pinephone</strong> of the falls short like comparing dust devil to a category 5 hurricane.
+ The switches. The <strong class="strong">Librem5</strong> has switches on the side of the phone to physically disconnect the modem, the wireless and Bluetooth, and the camera and microphone. This is a major selling point of this phone and the <strong class="strong">Librem5</strong> fully achieves this. The <strong class="strong">Pinephone</strong> of the falls short like comparing dust devil to a category 5 hurricane.
</p>
<p class="p">
The switches are easy. They are also not easy to accidentally press. This is the product that I expected to get and I got it.
<div class="section-content">
<p class="p">
- The one biggest advantage of the <strong>Librem5</strong> phone is the open-source design. I can install and I have installed numerous programs on the system. I have even installed my <abbr title="Featureless Linux Library">FLL</abbr> project and related programs onto it. No special or unusual action is needed. This is where the Ubuntu Aquaris fell short.
+ The one biggest advantage of the <strong class="strong">Librem5</strong> phone is the open-source design. I can install and I have installed numerous programs on the system. I have even installed my <abbr title="Featureless Linux Library">FLL</abbr> project and related programs onto it. No special or unusual action is needed. This is where the Ubuntu Aquaris fell short.
</p>
<p class="p">
- I should not need a system with large amounts of <abbr title="Random Access Memory">RAM</abbr> (Gigabytes) to compile a single Megabyte program. The whole software design behind Ubuntu Aquaris, Android, and the Apple phones is not just embarrassingly bad, it is pathetic. Both the <strong>Librem5</strong> and the <strong>Pinephone</strong> don't suffer from the digital mental disorder.
+ I should not need a system with large amounts of <abbr title="Random Access Memory">RAM</abbr> (Gigabytes) to compile a single Megabyte program. The whole software design behind Ubuntu Aquaris, Android, and the Apple phones is not just embarrassingly bad, it is pathetic. Both the <strong class="strong">Librem5</strong> and the <strong class="strong">Pinephone</strong> don't suffer from the digital mental disorder.
</p>
<p class="p">
- The open-firmware provided by the <strong>Librem5</strong> and the security it offers is truly a hidden gem. This is not something easily shown. Good security is often an unsung hero. Undoubtedly the <strong>Librem5</strong> will never truly get the good credit it deserves for the work and effort put into getting an open-firmware design up and running. The way this world currently is, this is an amazing feat. Truly amazing.
+ The open-firmware provided by the <strong class="strong">Librem5</strong> and the security it offers is truly a hidden gem. This is not something easily shown. Good security is often an unsung hero. Undoubtedly the <strong class="strong">Librem5</strong> will never truly get the good credit it deserves for the work and effort put into getting an open-firmware design up and running. The way this world currently is, this is an amazing feat. Truly amazing.
</p>
</div>
</section>
<div class="section-content">
<img src="images/news/2022_06_04/03-librem_pinephone-200.png" alt="A Librem5 phone lying against a Pinephone." title="Librem5 phone and Pinephone." class="image content right margin-1rem">
<p class="p">
- There are bad things about the <strong>Librem5</strong> phone. Things have fallen short. Some are the fault of the company. Some are the fault of the current state of the world. Others are the fault of an industry that does not want to sell to customers willing to pay.
+ There are bad things about the <strong class="strong">Librem5</strong> phone. Things have fallen short. Some are the fault of the company. Some are the fault of the current state of the world. Others are the fault of an industry that does not want to sell to customers willing to pay.
</p>
<p class="p">
- I argue that <strong>Librem5</strong> has successfully navigated this mess and has thus far survived where all others failed. The Ubuntu Aquaris was defeated by both their Android-like development stack and the industry refusing to sell what Ubuntu needed.
+ I argue that <strong class="strong">Librem5</strong> has successfully navigated this mess and has thus far survived where all others failed. The Ubuntu Aquaris was defeated by both their Android-like development stack and the industry refusing to sell what Ubuntu needed.
</p>
<p class="p">
The choice <a href="https://puri.sm/" class="link external">Purism</a> made to design their own hardware has been a gamble. I would argue that this gamble has been worth it. Yes, there are growing pains. I am not happy about some of these pains and I do fault them for their failures in this regard (especially in regards to pictures).
</p>
<p class="p">
- The <strong>Librem5</strong> phone is not ready for a regular user. Of course, none of the Linux phones have ever been in my experience. The <strong>Librem5</strong> is so close to being ready for a regular user that I can almost taste it (metaphorically of course). Give them a few months. Give them a year. By then I hope to see many of these problems I have described here to be resolved. Give them a few years and I expect they will be able to get a better hardware form factor to be more portable and sleek.
+ The <strong class="strong">Librem5</strong> phone is not ready for a regular user. Of course, none of the Linux phones have ever been in my experience. The <strong class="strong">Librem5</strong> is so close to being ready for a regular user that I can almost taste it (metaphorically of course). Give them a few months. Give them a year. By then I hope to see many of these problems I have described here to be resolved. Give them a few years and I expect they will be able to get a better hardware form factor to be more portable and sleek.
</p>
<p class="p">
I can get just about any software on this phone. I can use this phone a desktop machine. I can use this phone as a portable radio or satellite communication device. I have only scratched the surface of what is already possible with the current design of this phone. No jails. No hacking. Just using.
</p>
<p class="p">
- I think <strong>Librem5</strong> has a chance to win. So long as they do not drop the ball. We are heading into a crazy future where the manufacturing and chipset is in a dire and bleak situation. If <a href="https://puri.sm/" class="link external">Purism</a> can withstand these trials then they will likely have the best phone on the market, despite these growing pains.
+ I think <strong class="strong">Librem5</strong> has a chance to win. So long as they do not drop the ball. We are heading into a crazy future where the manufacturing and chipset is in a dire and bleak situation. If <a href="https://puri.sm/" class="link external">Purism</a> can withstand these trials then they will likely have the best phone on the market, despite these growing pains.
</p>
<p class="p">
- I have used several open-source phones. Phones like the <strong>OpenMoko Freerunner</strong>, I did not get want I wanted. Phones like the <strong>Aquaris Ubuntu</strong>, I almost got what I wanted and I accepted the situation. Phones like the <strong>Pinephone</strong>, I got a phone that provides no software and accepted that. With the <strong>Librem5</strong>, I got the phone that I wanted and expected.
+ I have used several open-source phones. Phones like the <strong class="strong">OpenMoko Freerunner</strong>, I did not get want I wanted. Phones like the <strong class="strong">Aquaris Ubuntu</strong>, I almost got what I wanted and I accepted the situation. Phones like the <strong class="strong">Pinephone</strong>, I got a phone that provides no software and accepted that. With the <strong class="strong">Librem5</strong>, I got the phone that I wanted and expected.
</p>
</div>
</section>
<p class="p">
- <strong>Kevin Day</strong>
+ <strong class="strong">Kevin Day</strong>
</p>
</div>
</main>
The primary focus of the 0.5.10 release is for releasing the 0.6.0 stable release.
</p>
<p class="p">
- Unit tests for all <em>level_0</em> projects now exists (except for f_type which is not planned to ever have unit tests).
+ Unit tests for all <em class="em">level_0</em> projects now exists (except for f_type which is not planned to ever have unit tests).
</p>
<p class="p">
Many problems and consistency issue have been identified by the written unit tests and fixed.
The unit tests, however, are neither complete nor thorough.
- There are almost no unit tests for <em>level_1</em>, <em>level_2</em>, or <em>level_3</em> projects.
+ There are almost no unit tests for <em class="em">level_1</em>, <em class="em">level_2</em>, or <em class="em">level_3</em> projects.
</p>
<p class="p">
I noticed that the Unicode processing code is incomplete as of the 0.5.9 release.
There are now over 3000 unit tests for all code in this repository.
</p>
<p class="p">
- <strong>Security Fixes:</strong>
+ <strong class="strong">Security Fixes:</strong>
</p>
<ul>
- <li><strong>FLL</strong>: Floating point exception due to incorrect number type used in conversion function.</li>
- <li><strong>FLL</strong>: The realpath() calls malloc() and free() is not called (memory leak).</li>
- <li><strong>FLL</strong>: Incorrect pointers result in incomplete memory deallocation in f_directory.</li>
- <li><strong>Fake</strong>: Add missing NULL at the end of string.</li>
- <li><strong>Fake</strong>: Add missing parameter checks and rename "data" to "custom".</li>
- <li><strong>Fake</strong>: Wrong variable passed resulting in invalid read and writes in Fake.</li>
+ <li><strong class="strong">FLL</strong>: Floating point exception due to incorrect number type used in conversion function.</li>
+ <li><strong class="strong">FLL</strong>: The realpath() calls malloc() and free() is not called (memory leak).</li>
+ <li><strong class="strong">FLL</strong>: Incorrect pointers result in incomplete memory deallocation in f_directory.</li>
+ <li><strong class="strong">Fake</strong>: Add missing NULL at the end of string.</li>
+ <li><strong class="strong">Fake</strong>: Add missing parameter checks and rename "data" to "custom".</li>
+ <li><strong class="strong">Fake</strong>: Wrong variable passed resulting in invalid read and writes in Fake.</li>
</ul>
<p class="p">
- <strong>Regression Fixes:</strong>
+ <strong class="strong">Regression Fixes:</strong>
</p>
<ul>
- <li><strong>Controller</strong>: Remove invalid validation block.</li>
+ <li><strong class="strong">Controller</strong>: Remove invalid validation block.</li>
</ul>
<p class="p">
- <strong>Features:</strong>
+ <strong class="strong">Features:</strong>
</p>
<ul>
- <li><strong>FLL</strong>: Provide simple script for assisting in the mass generation of Unicode handling code.</li>
- <li><strong>FLL</strong>: Provide rebuild option in package script.</li>
- <li><strong>IKI Read</strong>: The iki_read program should support wrapping a variable value.</li>
- <li><strong>IKI Read</strong>: The iki_read program should support a more generalized substitution process called "replace".</li>
- <li><strong>UTF8</strong>: Add missing functionality allowing the utf8 program to convert back to binary data with invalid codepoints.</li>
+ <li><strong class="strong">FLL</strong>: Provide simple script for assisting in the mass generation of Unicode handling code.</li>
+ <li><strong class="strong">FLL</strong>: Provide rebuild option in package script.</li>
+ <li><strong class="strong">IKI Read</strong>: The iki_read program should support wrapping a variable value.</li>
+ <li><strong class="strong">IKI Read</strong>: The iki_read program should support a more generalized substitution process called "replace".</li>
+ <li><strong class="strong">UTF8</strong>: Add missing functionality allowing the utf8 program to convert back to binary data with invalid codepoints.</li>
</ul>
<p class="p">
- <strong>Bug Fixes:</strong>
+ <strong class="strong">Bug Fixes:</strong>
</p>
<ul>
- <li><strong>FLL</strong>: Signal code is not being set when accepted signal is received.</li>
- <li><strong>FLL</strong>: Problems and clean ups exposed when writing f_thread unit tests.</li>
- <li><strong>FLL</strong>: The < 0xc2 test is supposed to be against the first byte rather than the second.</li>
- <li><strong>FLL</strong>: A typo resulting in treating < 0xc3 as invalid UTF-8 when it is instead < 0xc2.</li>
- <li><strong>FLL</strong>: Add missing endianness check to f_convesion.</li>
- <li><strong>FLL</strong>: Uppercase 'T' needs to be supported (fl_conversion).</li>
- <li><strong>FLL</strong>: Problems exposed by unit tests in f_utf.</li>
- <li><strong>FLL</strong>: Incorrect 4-width characters are generated.</li>
- <li><strong>FLL</strong>: Problems exposed by unit tests for f_signal.</li>
- <li><strong>FLL</strong>: Problems exposed by unit tests in f_file.</li>
- <li><strong>FLL</strong>: Problems exposed by unit tests in f_conversion.</li>
- <li><strong>FLL</strong>: When any of -c, -p, or -s is the last parameter in test.sh no error is thrown.</li>
- <li><strong>FLL</strong>: Package building test failures do not properly fail.</li>
- <li><strong>FLL</strong>: Fix problems exposed by unit tests in f_status.</li>
- <li><strong>FLL</strong>: Incorrect variable used results in F_parameter error.</li>
- <li><strong>FLL</strong>: The print functions are not printing the last letter in certain cases.</li>
- <li><strong>FLL</strong>: Trimmed printing is not working as expected.</li>
- <li><strong>FLL</strong>: Fix problems exposed by unit tests in f_print.</li>
- <li><strong>FLL</strong>: The quotes are always being defined even when there are no quotes in the FSS read functions.</li>
- <li><strong>FLL</strong>: Problems exposed by unit tests (f_socket).</li>
- <li><strong>FLL</strong>: Remove extra zero from hex-digit (f_utf).</li>
- <li><strong>FLL</strong>: Fix problems exposed by unit tests (fll_status_string).</li>
- <li><strong>FLL</strong>: Problems exposed by unit tests and do some relevant code style clean up (f_execute).</li>
- <li><strong>FLL</strong>: Add missing return value handling in f_fss.</li>
- <li><strong>FLL</strong>: Incorrect and missing initializer macros in f_fss.</li>
- <li><strong>FLL</strong>: The FSS object write functions don't handle all newlines.</li>
- <li><strong>FLL</strong>: Fixes to f_path of problems exposed by unit tests.</li>
- <li><strong>FLL</strong>: Invalid read in f_file_stream_read_until().</li>
- <li><strong>FLL</strong>: NULL is a valid character, causing utf8 not to properly print NULL characters.</li>
- <li><strong>FLL</strong>: The FILE type may not have a known storage size and use F_type_output_d.</li>
- <li><strong>FLL</strong>: Problems in f_file functions exposed by unit tests.</li>
- <li><strong>FLL</strong>: Problems in f_file regarding file mode exposed by unit tests.</li>
- <li><strong>FLL</strong>: The f_file_is_at() function is not properly comparing the file type.</li>
- <li><strong>FLL</strong>: Three-width UTF-8 characters are improperly being detected as unassigned.</li>
- <li><strong>FLL</strong>: Unicode characters are not printing correctly.</li>
- <li><strong>FLL</strong>: Fix problems exposed by f_file project tests.</li>
- <li><strong>FLL</strong>: Memory handling related to or exposed by f_directory unit tests.</li>
- <li><strong>FLL</strong>: Invalid memory deletion.</li>
- <li><strong>FLL</strong>: For f_file, use off_t, pre-test for EOF or error, use sizeof(f_char_t), and use size_t rather than ssize_t.</li>
- <li><strong>FLL</strong>: The f_capability should accept f_string_constant_t rather than f_string_static_t.</li>
- <li><strong>Byte Dump</strong>: The byte_dump --first and --last are not always working as expected.</li>
- <li><strong>Byte Dump</strong>: Trailing Unicode sequences that get cut off before the encoding is completed improperly display.</li>
- <li><strong>Controller</strong>: Entry file not found when --settings is used.</li>
- <li><strong>Controller</strong>: Incorrect rule name for controller boot settings file.</li>
- <li><strong>Controller</strong>: When compiled as "init" the controller program does not use the correct paths.</li>
- <li><strong>Fake</strong>: IKI variable substitution in fake doesn't always expand properly.</li>
- <li><strong>Fake</strong>: Use '%Q' rather than '%S' when printing error.prefix and add missing error.prefix.</li>
- <li><strong>Fake</strong>: Environment variables in fake are not being expanded.</li>
- <li><strong>Fake</strong>: The fake program should not require the data directory when explicit fakefile or settings files are specified.</li>
- <li><strong>Fake</strong>: Defaults should not be applied when an empty Object is specified.</li>
- <li><strong>FSS Identify</strong>: The fss_identify needs the latest version of f_utf_is_digit().</li>
- <li><strong>UTF8</strong>: Last character of file after conversion from code point is not printed by utf8 program.</li>
- <li><strong>UTF8</strong>: Combining and Width detection for utf8 are not properly printing.</li>
+ <li><strong class="strong">FLL</strong>: Signal code is not being set when accepted signal is received.</li>
+ <li><strong class="strong">FLL</strong>: Problems and clean ups exposed when writing f_thread unit tests.</li>
+ <li><strong class="strong">FLL</strong>: The < 0xc2 test is supposed to be against the first byte rather than the second.</li>
+ <li><strong class="strong">FLL</strong>: A typo resulting in treating < 0xc3 as invalid UTF-8 when it is instead < 0xc2.</li>
+ <li><strong class="strong">FLL</strong>: Add missing endianness check to f_convesion.</li>
+ <li><strong class="strong">FLL</strong>: Uppercase 'T' needs to be supported (fl_conversion).</li>
+ <li><strong class="strong">FLL</strong>: Problems exposed by unit tests in f_utf.</li>
+ <li><strong class="strong">FLL</strong>: Incorrect 4-width characters are generated.</li>
+ <li><strong class="strong">FLL</strong>: Problems exposed by unit tests for f_signal.</li>
+ <li><strong class="strong">FLL</strong>: Problems exposed by unit tests in f_file.</li>
+ <li><strong class="strong">FLL</strong>: Problems exposed by unit tests in f_conversion.</li>
+ <li><strong class="strong">FLL</strong>: When any of -c, -p, or -s is the last parameter in test.sh no error is thrown.</li>
+ <li><strong class="strong">FLL</strong>: Package building test failures do not properly fail.</li>
+ <li><strong class="strong">FLL</strong>: Fix problems exposed by unit tests in f_status.</li>
+ <li><strong class="strong">FLL</strong>: Incorrect variable used results in F_parameter error.</li>
+ <li><strong class="strong">FLL</strong>: The print functions are not printing the last letter in certain cases.</li>
+ <li><strong class="strong">FLL</strong>: Trimmed printing is not working as expected.</li>
+ <li><strong class="strong">FLL</strong>: Fix problems exposed by unit tests in f_print.</li>
+ <li><strong class="strong">FLL</strong>: The quotes are always being defined even when there are no quotes in the FSS read functions.</li>
+ <li><strong class="strong">FLL</strong>: Problems exposed by unit tests (f_socket).</li>
+ <li><strong class="strong">FLL</strong>: Remove extra zero from hex-digit (f_utf).</li>
+ <li><strong class="strong">FLL</strong>: Fix problems exposed by unit tests (fll_status_string).</li>
+ <li><strong class="strong">FLL</strong>: Problems exposed by unit tests and do some relevant code style clean up (f_execute).</li>
+ <li><strong class="strong">FLL</strong>: Add missing return value handling in f_fss.</li>
+ <li><strong class="strong">FLL</strong>: Incorrect and missing initializer macros in f_fss.</li>
+ <li><strong class="strong">FLL</strong>: The FSS object write functions don't handle all newlines.</li>
+ <li><strong class="strong">FLL</strong>: Fixes to f_path of problems exposed by unit tests.</li>
+ <li><strong class="strong">FLL</strong>: Invalid read in f_file_stream_read_until().</li>
+ <li><strong class="strong">FLL</strong>: NULL is a valid character, causing utf8 not to properly print NULL characters.</li>
+ <li><strong class="strong">FLL</strong>: The FILE type may not have a known storage size and use F_type_output_d.</li>
+ <li><strong class="strong">FLL</strong>: Problems in f_file functions exposed by unit tests.</li>
+ <li><strong class="strong">FLL</strong>: Problems in f_file regarding file mode exposed by unit tests.</li>
+ <li><strong class="strong">FLL</strong>: The f_file_is_at() function is not properly comparing the file type.</li>
+ <li><strong class="strong">FLL</strong>: Three-width UTF-8 characters are improperly being detected as unassigned.</li>
+ <li><strong class="strong">FLL</strong>: Unicode characters are not printing correctly.</li>
+ <li><strong class="strong">FLL</strong>: Fix problems exposed by f_file project tests.</li>
+ <li><strong class="strong">FLL</strong>: Memory handling related to or exposed by f_directory unit tests.</li>
+ <li><strong class="strong">FLL</strong>: Invalid memory deletion.</li>
+ <li><strong class="strong">FLL</strong>: For f_file, use off_t, pre-test for EOF or error, use sizeof(f_char_t), and use size_t rather than ssize_t.</li>
+ <li><strong class="strong">FLL</strong>: The f_capability should accept f_string_constant_t rather than f_string_static_t.</li>
+ <li><strong class="strong">Byte Dump</strong>: The byte_dump --first and --last are not always working as expected.</li>
+ <li><strong class="strong">Byte Dump</strong>: Trailing Unicode sequences that get cut off before the encoding is completed improperly display.</li>
+ <li><strong class="strong">Controller</strong>: Entry file not found when --settings is used.</li>
+ <li><strong class="strong">Controller</strong>: Incorrect rule name for controller boot settings file.</li>
+ <li><strong class="strong">Controller</strong>: When compiled as "init" the controller program does not use the correct paths.</li>
+ <li><strong class="strong">Fake</strong>: IKI variable substitution in fake doesn't always expand properly.</li>
+ <li><strong class="strong">Fake</strong>: Use '%Q' rather than '%S' when printing error.prefix and add missing error.prefix.</li>
+ <li><strong class="strong">Fake</strong>: Environment variables in fake are not being expanded.</li>
+ <li><strong class="strong">Fake</strong>: The fake program should not require the data directory when explicit fakefile or settings files are specified.</li>
+ <li><strong class="strong">Fake</strong>: Defaults should not be applied when an empty Object is specified.</li>
+ <li><strong class="strong">FSS Identify</strong>: The fss_identify needs the latest version of f_utf_is_digit().</li>
+ <li><strong class="strong">UTF8</strong>: Last character of file after conversion from code point is not printed by utf8 program.</li>
+ <li><strong class="strong">UTF8</strong>: Combining and Width detection for utf8 are not properly printing.</li>
</ul>
<p class="p">
- <strong>Updates:</strong>
+ <strong class="strong">Updates:</strong>
</p>
<ul>
- <li><strong>FLL</strong>: Improve design in f_conversion to be safer when handling variables allowed to be replaced.</li>
- <li><strong>FLL</strong>: Example bootstrap script now supports building all programs.</li>
- <li><strong>FLL</strong>: White space function changes.</li>
- <li><strong>FLL</strong>: Use "decimal" instead of "digit" (f_conversion).</li>
- <li><strong>FLL</strong>: The f_utf project regarding digits and perform other clean ups.</li>
- <li><strong>FLL</strong>: Use a regular int instead of uint8_t for counting digit in conversion function.</li>
- <li><strong>FLL</strong>: Add script for generating Unicode Codepoints from integers.</li>
- <li><strong>FLL</strong>: Generate Unicode script to support generating test data.</li>
- <li><strong>FLL</strong>: Finish adding Unicode symbol handling code.</li>
- <li><strong>FLL</strong>: Rename f_thread_signal() to f_thread_signal_write().</li>
- <li><strong>FLL</strong>: Implement Math Symbol Category.</li>
- <li><strong>FLL</strong>: Handle more cases of combining characters following white space.</li>
- <li><strong>FLL</strong>: Add Unicode Symbols for currency and modifiers and minor comment clean ups.</li>
- <li><strong>FLL</strong>: The f_utf punctuation codes.</li>
- <li><strong>FLL</strong>: Tweak endiannes for f_utf_char_t.</li>
- <li><strong>FLL</strong>: Use F_utf_not instead of F_utf and other resulting changes.</li>
- <li><strong>FLL</strong>: Rewrite the f_serialize functions.</li>
- <li><strong>FLL</strong>: The f_limit project is out of date.</li>
- <li><strong>FLL</strong>: Add missing state.flag assignment in f_state_t_clear macro and fix syntax practice in initializer.</li>
- <li><strong>FLL</strong>: Add missing function f_path_is_absolute() and fix existing f_path_is_*() functions.</li>
- <li><strong>FLL</strong>: Utilize the state.flag to allow for fss read to not fail out on invalid UTF-8 code sequence and fix naming problems.</li>
- <li><strong>FLL</strong>: Utilize the state.flag to allow for iki read to not fail out on invalid UTF-8 code sequence.</li>
- <li><strong>FLL</strong>: The f_utf_is_* functions should be more specific on return state for F_failure.</li>
- <li><strong>FLL</strong>: Add pictures of the Kohlrabi that I have decided to use to represent the FLL project.</li>
- <li><strong>FLL</strong>: Remove unused code, cast (char) to (unsigned int) for array indexes, and fix bitwise problem.</li>
- <li><strong>FLL</strong>: Add licenses to text files and clarify OSL text.</li>
- <li><strong>FLL</strong>: Redesign f_file functions to not need struct stat passed and other improvements.</li>
- <li><strong>FLL</strong>: Improve the logic for the read link f_file functions.</li>
- <li><strong>FLL</strong>: Add missing checks to f_file_link_hard_at() and use F_file_descriptor.</li>
- <li><strong>FLL</strong>: Implement file statistics flag enumeration, dereferencing/no-dereferencing, and also use F_stream_not.</li>
- <li><strong>FLL</strong>: Simplify build settings files.</li>
- <li><strong>All FSS Read Programs</strong>: Improve read program logic to allow for catching interrupts during file read.</li>
- <li><strong>Controller</strong>: Add note about ulimit privileges potentially causes failure of example controller rules.</li>
- <li><strong>Fake</strong>: Add additional checks just in case execution is attempted with both program name and arguments have no data.</li>
- <li><strong>Fake</strong>: The featureless make should default to 'make' mode.</li>
- <li><strong>Fake</strong>: The fake program should check file existence when clean is combined with another command like build or make.</li>
- <li><strong>Fake</strong>: The fake "build" fakefile Object needs to support modes and fix a related bug.</li>
- <li><strong>Fake</strong>: Use off_t instead of f_array_length_t to match uses in functions like f_file_size().</li>
- <li><strong>Fake</strong>: The fake program should show the fakefile or setting being used when building.</li>
- <li><strong>Fake</strong>: The example project build settings and fakefiles.</li>
- <li><strong>FSS Embedded List Read</strong>: Remove extra error print in fss_embedded_list_read.</li>
- <li><strong>IKI Write</strong>: Have iki_write use form-feed rather than end of line character for pipe input.</li>
+ <li><strong class="strong">FLL</strong>: Improve design in f_conversion to be safer when handling variables allowed to be replaced.</li>
+ <li><strong class="strong">FLL</strong>: Example bootstrap script now supports building all programs.</li>
+ <li><strong class="strong">FLL</strong>: White space function changes.</li>
+ <li><strong class="strong">FLL</strong>: Use "decimal" instead of "digit" (f_conversion).</li>
+ <li><strong class="strong">FLL</strong>: The f_utf project regarding digits and perform other clean ups.</li>
+ <li><strong class="strong">FLL</strong>: Use a regular int instead of uint8_t for counting digit in conversion function.</li>
+ <li><strong class="strong">FLL</strong>: Add script for generating Unicode Codepoints from integers.</li>
+ <li><strong class="strong">FLL</strong>: Generate Unicode script to support generating test data.</li>
+ <li><strong class="strong">FLL</strong>: Finish adding Unicode symbol handling code.</li>
+ <li><strong class="strong">FLL</strong>: Rename f_thread_signal() to f_thread_signal_write().</li>
+ <li><strong class="strong">FLL</strong>: Implement Math Symbol Category.</li>
+ <li><strong class="strong">FLL</strong>: Handle more cases of combining characters following white space.</li>
+ <li><strong class="strong">FLL</strong>: Add Unicode Symbols for currency and modifiers and minor comment clean ups.</li>
+ <li><strong class="strong">FLL</strong>: The f_utf punctuation codes.</li>
+ <li><strong class="strong">FLL</strong>: Tweak endiannes for f_utf_char_t.</li>
+ <li><strong class="strong">FLL</strong>: Use F_utf_not instead of F_utf and other resulting changes.</li>
+ <li><strong class="strong">FLL</strong>: Rewrite the f_serialize functions.</li>
+ <li><strong class="strong">FLL</strong>: The f_limit project is out of date.</li>
+ <li><strong class="strong">FLL</strong>: Add missing state.flag assignment in f_state_t_clear macro and fix syntax practice in initializer.</li>
+ <li><strong class="strong">FLL</strong>: Add missing function f_path_is_absolute() and fix existing f_path_is_*() functions.</li>
+ <li><strong class="strong">FLL</strong>: Utilize the state.flag to allow for fss read to not fail out on invalid UTF-8 code sequence and fix naming problems.</li>
+ <li><strong class="strong">FLL</strong>: Utilize the state.flag to allow for iki read to not fail out on invalid UTF-8 code sequence.</li>
+ <li><strong class="strong">FLL</strong>: The f_utf_is_* functions should be more specific on return state for F_failure.</li>
+ <li><strong class="strong">FLL</strong>: Add pictures of the Kohlrabi that I have decided to use to represent the FLL project.</li>
+ <li><strong class="strong">FLL</strong>: Remove unused code, cast (char) to (unsigned int) for array indexes, and fix bitwise problem.</li>
+ <li><strong class="strong">FLL</strong>: Add licenses to text files and clarify OSL text.</li>
+ <li><strong class="strong">FLL</strong>: Redesign f_file functions to not need struct stat passed and other improvements.</li>
+ <li><strong class="strong">FLL</strong>: Improve the logic for the read link f_file functions.</li>
+ <li><strong class="strong">FLL</strong>: Add missing checks to f_file_link_hard_at() and use F_file_descriptor.</li>
+ <li><strong class="strong">FLL</strong>: Implement file statistics flag enumeration, dereferencing/no-dereferencing, and also use F_stream_not.</li>
+ <li><strong class="strong">FLL</strong>: Simplify build settings files.</li>
+ <li><strong class="strong">All FSS Read Programs</strong>: Improve read program logic to allow for catching interrupts during file read.</li>
+ <li><strong class="strong">Controller</strong>: Add note about ulimit privileges potentially causes failure of example controller rules.</li>
+ <li><strong class="strong">Fake</strong>: Add additional checks just in case execution is attempted with both program name and arguments have no data.</li>
+ <li><strong class="strong">Fake</strong>: The featureless make should default to 'make' mode.</li>
+ <li><strong class="strong">Fake</strong>: The fake program should check file existence when clean is combined with another command like build or make.</li>
+ <li><strong class="strong">Fake</strong>: The fake "build" fakefile Object needs to support modes and fix a related bug.</li>
+ <li><strong class="strong">Fake</strong>: Use off_t instead of f_array_length_t to match uses in functions like f_file_size().</li>
+ <li><strong class="strong">Fake</strong>: The fake program should show the fakefile or setting being used when building.</li>
+ <li><strong class="strong">Fake</strong>: The example project build settings and fakefiles.</li>
+ <li><strong class="strong">FSS Embedded List Read</strong>: Remove extra error print in fss_embedded_list_read.</li>
+ <li><strong class="strong">IKI Write</strong>: Have iki_write use form-feed rather than end of line character for pipe input.</li>
</ul>
<p class="p">
Check out the project on the <a href="fll.html#release" class="link"><abbr title="Featureless Linux Library">FLL</abbr> release</a> page.
</p>
<p class="p">
- <strong>Kevin Day</strong>
+ <strong class="strong">Kevin Day</strong>
</p>
</div>
</main>
<li>utf8</li>
</ul>
<p class="p">
- Most notable of these programs are the <strong>controller</strong> program and the <strong>utf8</strong> program.
+ Most notable of these programs are the <strong class="strong">controller</strong> program and the <strong class="strong">utf8</strong> program.
</p>
<p class="p">
- The <strong>controller</strong> program is a re-interpretation of the <strong>Featureless Make</strong> program written in a more generalized fashion that is focused on performing a set of tasks.
- This is very similar to a system initialize program such as <em>sysvinit</em>.
+ The <strong class="strong">controller</strong> program is a re-interpretation of the <strong class="strong">Featureless Make</strong> program written in a more generalized fashion that is focused on performing a set of tasks.
+ This is very similar to a system initialize program such as <em class="em">sysvinit</em>.
Support for running as a system initialize replacement is partially complete.
- There is currently no way to send messages to the <strong>controller</strong> program to start and stop anything.
- The <strong>control</strong> program, which is used to communicate to the <strong>controller</strong> program is also incomplete.
+ There is currently no way to send messages to the <strong class="strong">controller</strong> program to start and stop anything.
+ The <strong class="strong">control</strong> program, which is used to communicate to the <strong class="strong">controller</strong> program is also incomplete.
The next <abbr title="Featureless Linux Library">FLL</abbr> development verrsion, the 0.7.0 series, will heavily focused on network protocols.
</p>
<p class="p">
- The <strong>utf8</strong> program is a handy tool to convert from <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> characters to their Unicode value or vice-versa.
+ The <strong class="strong">utf8</strong> program is a handy tool to convert from <abbr title="Unicode Transformation Format 8-bit">UTF-8</abbr> characters to their Unicode value or vice-versa.
This can convert entire files.
</p>
<p class="p">
- <strong>Featureless Make</strong> has some major changes.
- The <strong>fake</strong> program now accepts piped data, which must be a valid <em>fakefile</em>.
+ <strong class="strong">Featureless Make</strong> has some major changes.
+ The <strong class="strong">fake</strong> program now accepts piped data, which must be a valid <em class="em">fakefile</em>.
There are new Objects available for the <a href="documentation/fake/specifications/settings.html" class="link">build settings</a> and the <a href="documentation/fake/specifications/fakefile.html" class="link">fakefile</a>.
</p>
<p class="p">
- The default behavior of <strong>Featureless Make</strong> is now more similar to the <em>GNU make</em> program.
+ The default behavior of <strong class="strong">Featureless Make</strong> is now more similar to the <em class="em">GNU make</em> program.
When running <code class="code">fake</code> with no parameters, it will first search for a <code class="code">fakefile</code> in the current directory before checking for one at <code class="code">data/build/fakefile</code>.
This is analogous to how running <code class="code">make</code> with no parameters will search for a <code class="code">Makefile</code> in the current directory.
</p>
<p class="p">
A major improvement of this release is safer and more stable code.
This is thanks to a massive amount of time and effort spent into writing unit tests.
- The unit tests process is performed using the <strong>Featureless Make</strong> program.
+ The unit tests process is performed using the <strong class="strong">Featureless Make</strong> program.
In addition to the unit tests, the static analyzer from GCC has been used to better identify and resolve problems.
</p>
<p class="p">
The following are changes since the 0.5.10 development release.
</p>
<p class="p">
- <strong>Security Fixes:</strong>
+ <strong class="strong">Security Fixes:</strong>
</p>
<ul>
- <li><strong>FLL</strong>: Environment value has invalid read in f_environment_set().</li>
- <li><strong>FLL</strong>: Invalid read for formatted printing using partial ranges on a string.</li>
- <li><strong>FLL</strong>: Invalid reads on NULL terminated strings with a max width greater than 1.</li>
- <li><strong>Featureless Make</strong>: Invalid read when using -s/--settings.</li>
- <li><strong>Featureless Make</strong>: Invalid read when processing not condition minimum value.</li>
- <li><strong>Featureless Make</strong>: Invalid read when processing an empty fakefile.</li>
+ <li><strong class="strong">FLL</strong>: Environment value has invalid read in f_environment_set().</li>
+ <li><strong class="strong">FLL</strong>: Invalid read for formatted printing using partial ranges on a string.</li>
+ <li><strong class="strong">FLL</strong>: Invalid reads on NULL terminated strings with a max width greater than 1.</li>
+ <li><strong class="strong">Featureless Make</strong>: Invalid read when using -s/--settings.</li>
+ <li><strong class="strong">Featureless Make</strong>: Invalid read when processing not condition minimum value.</li>
+ <li><strong class="strong">Featureless Make</strong>: Invalid read when processing an empty fakefile.</li>
</ul>
<p class="p">
- <strong>Features:</strong>
+ <strong class="strong">Features:</strong>
</p>
<ul>
- <li><strong>FLL</strong>: Add missing function f_environment_get_all().</li>
- <li><strong>FLL</strong>: Add missing signal functions f_signal_action(), f_signal_pause(), and f_signal_suspend().</li>
- <li><strong>FLL</strong>: Add support for +E/++error and change '+q' to '+Q'.</li>
- <li><strong>Controller</strong>: Expose the "define" and "parameter" at the Entry and Exit level.</li>
- <li><strong>Featureless Make</strong>: Now supports a piped fakefile.</li>
- <li><strong>Featureless Make</strong>: Now supports the "write" operation.</li>
- <li><strong>Featureless Make</strong>: Now supports to the "print" operation for escape sequences just like the "write" operation has.</li>
- <li><strong>Featureless Make</strong>: Now supports the "top" parameter.</li>
- <li><strong>Featureless Make</strong>: Now supports the "current" parameter.</li>
- <li><strong>Featureless Make</strong>: Improve user experience by defaulting specified fakefile and build settings file to present working directory.</li>
+ <li><strong class="strong">FLL</strong>: Add missing function f_environment_get_all().</li>
+ <li><strong class="strong">FLL</strong>: Add missing signal functions f_signal_action(), f_signal_pause(), and f_signal_suspend().</li>
+ <li><strong class="strong">FLL</strong>: Add support for +E/++error and change '+q' to '+Q'.</li>
+ <li><strong class="strong">Controller</strong>: Expose the "define" and "parameter" at the Entry and Exit level.</li>
+ <li><strong class="strong">Featureless Make</strong>: Now supports a piped fakefile.</li>
+ <li><strong class="strong">Featureless Make</strong>: Now supports the "write" operation.</li>
+ <li><strong class="strong">Featureless Make</strong>: Now supports to the "print" operation for escape sequences just like the "write" operation has.</li>
+ <li><strong class="strong">Featureless Make</strong>: Now supports the "top" parameter.</li>
+ <li><strong class="strong">Featureless Make</strong>: Now supports the "current" parameter.</li>
+ <li><strong class="strong">Featureless Make</strong>: Improve user experience by defaulting specified fakefile and build settings file to present working directory.</li>
</ul>
<p class="p">
- <strong>Bug Fixes:</strong>
+ <strong class="strong">Bug Fixes:</strong>
</p>
<ul>
- <li><strong>FLL</strong>: IKI variables are incorrectly being processed when there is a non-IKI IKI-like string.</li>
- <li><strong>FLL</strong>: Single quotes are not being properly detected in FSS Extended Read functions.</li>
- <li><strong>FLL</strong>: private_f_file_open_at() has an incomplete set if ifdef conditions.</li>
- <li><strong>Byte Dump</strong>: Parameter after either the -N or -W is being processed when it should not be.</li>
- <li><strong>Controller</strong>: Incorrect information is printed on certain errors.</li>
- <li><strong>Controller</strong>: Delimits are not being applied for IKI variables.</li>
- <li><strong>Controller</strong>: "State is now ..." should not be printed when quiet is passed.</li>
- <li><strong>Controller</strong>: Guarantee that the child processes are terminated.</li>
- <li><strong>Controller</strong>: IKI substitution is incorrectly applied.</li>
- <li><strong>Featureless Make</strong>: Condition blocks are still being processed when they should be skipped.</li>
- <li><strong>Featureless Make</strong>: Empty strings improperly pass validation checks.</li>
- <li><strong>Featureless Make</strong>: IKI variable substitution results in incorrect parameter structure.</li>
- <li><strong>Featureless Make</strong>: Error verbosity is not being preserved.</li>
- <li><strong>Featureless Make</strong>: Text is being incorrectly stripped out.</li>
- <li><strong>Featureless Make</strong>: The copy operation doesn't work properly with trailing slashes.</li>
- <li><strong>Featureless Make</strong>: Copy should destination should be the base name rather than the entire path.</li>
- <li><strong>Featureless Make</strong>: Link operation is incorrect, support new link arguments, and clone, copy, and move operations failure problems.</li>
- <li><strong>Featureless Make</strong>: Block is incorrectly being reset when an else condition precedes an if condition.</li>
+ <li><strong class="strong">FLL</strong>: IKI variables are incorrectly being processed when there is a non-IKI IKI-like string.</li>
+ <li><strong class="strong">FLL</strong>: Single quotes are not being properly detected in FSS Extended Read functions.</li>
+ <li><strong class="strong">FLL</strong>: private_f_file_open_at() has an incomplete set if ifdef conditions.</li>
+ <li><strong class="strong">Byte Dump</strong>: Parameter after either the -N or -W is being processed when it should not be.</li>
+ <li><strong class="strong">Controller</strong>: Incorrect information is printed on certain errors.</li>
+ <li><strong class="strong">Controller</strong>: Delimits are not being applied for IKI variables.</li>
+ <li><strong class="strong">Controller</strong>: "State is now ..." should not be printed when quiet is passed.</li>
+ <li><strong class="strong">Controller</strong>: Guarantee that the child processes are terminated.</li>
+ <li><strong class="strong">Controller</strong>: IKI substitution is incorrectly applied.</li>
+ <li><strong class="strong">Featureless Make</strong>: Condition blocks are still being processed when they should be skipped.</li>
+ <li><strong class="strong">Featureless Make</strong>: Empty strings improperly pass validation checks.</li>
+ <li><strong class="strong">Featureless Make</strong>: IKI variable substitution results in incorrect parameter structure.</li>
+ <li><strong class="strong">Featureless Make</strong>: Error verbosity is not being preserved.</li>
+ <li><strong class="strong">Featureless Make</strong>: Text is being incorrectly stripped out.</li>
+ <li><strong class="strong">Featureless Make</strong>: The copy operation doesn't work properly with trailing slashes.</li>
+ <li><strong class="strong">Featureless Make</strong>: Copy should destination should be the base name rather than the entire path.</li>
+ <li><strong class="strong">Featureless Make</strong>: Link operation is incorrect, support new link arguments, and clone, copy, and move operations failure problems.</li>
+ <li><strong class="strong">Featureless Make</strong>: Block is incorrectly being reset when an else condition precedes an if condition.</li>
</ul>
<p class="p">
- <strong>Refactors:</strong>
+ <strong class="strong">Refactors:</strong>
</p>
<ul>
- <li><strong>Controller</strong>: Use "settings" instead of "setting" for better consistency between fake program and controller program.</li>
- <li><strong>Featureless Make</strong>: Rename "script" to "engine" to avoid possible confusion with the different uses of "script".</li>
- <li><strong>Featureless Make</strong>: "if defined parameter" and similar are simplified into something more like "if define" and "if parameter".</li>
- <li><strong>Featureless Make</strong>: Rename "exists" to "exist".</li>
+ <li><strong class="strong">Controller</strong>: Use "settings" instead of "setting" for better consistency between fake program and controller program.</li>
+ <li><strong class="strong">Featureless Make</strong>: Rename "script" to "engine" to avoid possible confusion with the different uses of "script".</li>
+ <li><strong class="strong">Featureless Make</strong>: "if defined parameter" and similar are simplified into something more like "if define" and "if parameter".</li>
+ <li><strong class="strong">Featureless Make</strong>: Rename "exists" to "exist".</li>
</ul>
<p class="p">
- <strong>Updates:</strong>
+ <strong class="strong">Updates:</strong>
</p>
<ul>
- <li><strong>FLL</strong>: Change execute error code handling to better accommodate standard GNU Bash return codes.</li>
- <li><strong>FLL</strong>: Further reduce memory allocation pressure by increasing default small allocation.</li>
- <li><strong>FLL</strong>: Restrict environment to PATH and LD_LIBRARY_PATH by default in all FLL build settings files.</li>
- <li><strong>FLL</strong>: The standard program setup should explicitly unblock all signals other than the default</li>
- <li><strong>FLL</strong>: Clarify IKI standard in regards to delimits and improve specification file.</li>
- <li><strong>FLL</strong>: Improve specification files.</li>
- <li><strong>FLL</strong>: The f_color needs to follow latest practices with private functions.</li>
- <li><strong>Controller</strong>: Change default controller settings path to './'.</li>
- <li><strong>Controller</strong>: Strip out NULL characters after applying delimits.</li>
- <li><strong>Controller</strong>: Timeout changes.</li>
- <li><strong>Featureless Make</strong>: Make environment variable handling design consistent between fake and controller programs.</li>
- <li><strong>Featureless Make</strong>: Ensure first if block is initialized to operate.</li>
- <li><strong>Featureless Make</strong>: Replace Unicode Terminate escape sequence with Non-printing escape sequence.</li>
- <li><strong>Featureless Make</strong>: Reduce number of allocations by pre-determining size when easily possible.</li>
- <li><strong>Featureless Make</strong>: Organize the validate operation into separate type functions and improve error handling logic.</li>
- <li><strong>Featureless Make</strong>: The example bzip2 now supports running the tests.</li>
+ <li><strong class="strong">FLL</strong>: Change execute error code handling to better accommodate standard GNU Bash return codes.</li>
+ <li><strong class="strong">FLL</strong>: Further reduce memory allocation pressure by increasing default small allocation.</li>
+ <li><strong class="strong">FLL</strong>: Restrict environment to PATH and LD_LIBRARY_PATH by default in all FLL build settings files.</li>
+ <li><strong class="strong">FLL</strong>: The standard program setup should explicitly unblock all signals other than the default</li>
+ <li><strong class="strong">FLL</strong>: Clarify IKI standard in regards to delimits and improve specification file.</li>
+ <li><strong class="strong">FLL</strong>: Improve specification files.</li>
+ <li><strong class="strong">FLL</strong>: The f_color needs to follow latest practices with private functions.</li>
+ <li><strong class="strong">Controller</strong>: Change default controller settings path to './'.</li>
+ <li><strong class="strong">Controller</strong>: Strip out NULL characters after applying delimits.</li>
+ <li><strong class="strong">Controller</strong>: Timeout changes.</li>
+ <li><strong class="strong">Featureless Make</strong>: Make environment variable handling design consistent between fake and controller programs.</li>
+ <li><strong class="strong">Featureless Make</strong>: Ensure first if block is initialized to operate.</li>
+ <li><strong class="strong">Featureless Make</strong>: Replace Unicode Terminate escape sequence with Non-printing escape sequence.</li>
+ <li><strong class="strong">Featureless Make</strong>: Reduce number of allocations by pre-determining size when easily possible.</li>
+ <li><strong class="strong">Featureless Make</strong>: Organize the validate operation into separate type functions and improve error handling logic.</li>
+ <li><strong class="strong">Featureless Make</strong>: The example bzip2 now supports running the tests.</li>
</ul>
<p class="p">
Check out the project on the <a href="fll.html#release" class="link"><abbr title="Featureless Linux Library">FLL</abbr> release</a> page.
These <a href="https://sourceforge.net/projects/fll/files/FLL-0.5/0.6.0/programs/" class="link external">programs</a>, by default, are designed to build against a library built using the monolithic source tree.
</p>
<p class="p">
- <strong>Kevin Day</strong>
+ <strong class="strong">Kevin Day</strong>
</p>
</div>
<div class="article-content">
<p class="p">
- <strong>Bzip2</strong> has a simple <code class="code">Makefile</code> that is used here as an example of the differences between a <code class="code">Makefile</code> and a <code class="code">fakefile</code>.
+ <strong class="strong">Bzip2</strong> has a simple <code class="code">Makefile</code> that is used here as an example of the differences between a <code class="code">Makefile</code> and a <code class="code">fakefile</code>.
</p>
<p class="p">
- This is taken straight out of the <strong>Bzip2</strong>, version 1.0.8, source code and is under its own separate copyright.
- This is file has a copyright of: <em>Copyright (C) 1996-2019 Julian Seward</em>.
- The use here as an example should be technically under the <em>Fair Use</em> laws.
+ This is taken straight out of the <strong class="strong">Bzip2</strong>, version 1.0.8, source code and is under its own separate copyright.
+ This is file has a copyright of: <em class="em">Copyright (C) 1996-2019 Julian Seward</em>.
+ The use here as an example should be technically under the <em class="em">Fair Use</em> laws.
Just in case, the entire file is provided with the copyright comments with it.
The Bzip2 source code may be found at <a href="https://www.sourceware.org/bzip2/" class="link external">https://www.sourceware.org/bzip2/</a>.
</p><pre class="preserve">
<div class="article-content">
<p class="p">
- <strong>Featureless Make</strong> has a different design ideology that the <em>GNU Make</em> project.
- The file should, <em>relatively speaking</em>, be easy to read within consideration of the technical field and the complexity of the tasks at hand.
+ <strong class="strong">Featureless Make</strong> has a different design ideology that the <em class="em">GNU Make</em> project.
+ The file should, <em class="em">relatively speaking</em>, be easy to read within consideration of the technical field and the complexity of the tasks at hand.
The build system should not be involved with installing to the system.
Installation should be a distribution level task.
- This does not mean that <strong>Featureless Make</strong> cannot do that.
+ This does not mean that <strong class="strong">Featureless Make</strong> cannot do that.
All this means is that the project is optimized to compile or build the files.
</p>
<p class="p">
What this means is that there is not a one to one relationship between a typical <code class="code">Makefile</code> and typical <code class="code">fakefile</code>.
This example focuses on how a <code class="code">fakefile</code> should be designed.
- This is also a proof of concept design that intentionally goes out of its way to use both build systems offered by <strong>Featureless Make</strong>.
+ This is also a proof of concept design that intentionally goes out of its way to use both build systems offered by <strong class="strong">Featureless Make</strong>.
</p>
<p class="p">
There are three files used for this example to create a <code class="code">bzip2</code> and a <code class="code">bzip2recover</code> binary.
<div class="article-content">
<p class="p">
- The <strong>Controller</strong> program has a similar design ideology to that of the <strong>Featureless Make</strong> program.
- A key difference is that the <strong>Controller</strong> program operates more like a service, a program, or a <em>sysvinit</em> alternative rather than as a build system.
+ The <strong class="strong">Controller</strong> program has a similar design ideology to that of the <strong class="strong">Featureless Make</strong> program.
+ A key difference is that the <strong class="strong">Controller</strong> program operates more like a service, a program, or a <em class="em">sysvinit</em> alternative rather than as a build system.
</p>
<p class="p">
An example usage would be to start the <code class="code">htop</code> program.
In this example, when the <code class="code">htop</code> program quits, the controller program will restart after a delay for a max of 3 times.
The controller command using these files would be executed using the command <code class="code">controller htop-command</code>.
Only two files are necessary to accomplish this task.
- The first file is the <em>Entry</em> file, called <code class="code">entries/htop-command.entry</code>.
+ The first file is the <em class="em">Entry</em> file, called <code class="code">entries/htop-command.entry</code>.
</p><pre class="preserve">
# fss-0005
start command htop
</pre>
<p class="p">
- The second file is is the <em>Rule</em> file, called <code class="code">rules/command/htop.rule</code>.
+ The second file is is the <em class="em">Rule</em> file, called <code class="code">rules/command/htop.rule</code>.
</p><pre class="preserve">
# fss-000d
This release should be more portable and testable.
</p>
<p class="p">
- The <strong>BASH</strong> alternative <strong>ZSH</strong> is now supported for the following scripts:
+ The <strong class="strong">BASH</strong> alternative <strong class="strong">ZSH</strong> is now supported for the following scripts:
</p>
<ul>
<li>bootstrap-example.sh</li>
<li>test.sh</li>
</ul>
<p class="p">
- In order to run these scripts under <strong>ZSH</strong>, one must defined the <strong>SHELL_ENGINE</strong> environment variable with the value <code class="code">zsh</code>.
- Compatibility of <strong>ZSH</strong> is not well tested and there may be bugs.
+ In order to run these scripts under <strong class="strong">ZSH</strong>, one must defined the <strong class="strong">SHELL_ENGINE</strong> environment variable with the value <code class="code">zsh</code>.
+ Compatibility of <strong class="strong">ZSH</strong> is not well tested and there may be bugs.
</p>
<p class="p">
Changes in the <code class="code">iki_read</code> program involving the <code class="code">--substitute</code> and the <code class="code">--wrap</code> parameters.
The following are changes since the 0.6.0 stable release.
</p>
<p class="p">
- <strong>Security Fixes:</strong>
+ <strong class="strong">Security Fixes:</strong>
</p>
<ul>
<li>None.</li>
</ul>
<p class="p">
- <strong>Features:</strong>
+ <strong class="strong">Features:</strong>
</p>
<ul>
- <li><strong>FLL</strong>: Add support for <code class="code">stand_alone</code> builds in the package script.</li>
- <li><strong>FLL</strong>: Add support for <strong>ZSH</strong> in addition to <strong>BASH</strong>.</li>
- <li><strong>IKI Read</strong>: The <code class="code">iki_read</code> should still support the older <code class="code">--substitute</code> behavior.</li>
+ <li><strong class="strong">FLL</strong>: Add support for <code class="code">stand_alone</code> builds in the package script.</li>
+ <li><strong class="strong">FLL</strong>: Add support for <strong class="strong">ZSH</strong> in addition to <strong class="strong">BASH</strong>.</li>
+ <li><strong class="strong">IKI Read</strong>: The <code class="code">iki_read</code> should still support the older <code class="code">--substitute</code> behavior.</li>
</ul>
<p class="p">
- <strong>Bug Fixes:</strong>
+ <strong class="strong">Bug Fixes:</strong>
</p>
<ul>
- <li><strong>FLL</strong>: Mistakes in disable macros and remove redundant check.</li>
- <li><strong>FLL</strong>: Functions <code class="code">private_f_file_flush()</code> and <code class="code">private_f_print_safely_get()</code> are not being included when needed.</li>
- <li><strong>FLL</strong>: The <code class="code">fll_program_standard_signal_received()</code> needs a private implementation.</li>
- <li><strong>FLL</strong>: <code class="code">private_f_memory_structure_resize()</code> is not returning the error status codes.</li>
- <li><strong>Featureless Make</strong>: Content is incorrectly attempted to be processed even though it does not exist.</li>
- <li><strong>Featureless Make</strong>: Featureless Make dependencies are not accurately communicated.</li>
- <li><strong>IKI Read</strong>: The <code class="code">iki_read</code> should apply the <code class="code">--wrap</code> when using <code class="code">--substitute</code>.</li>
- <li><strong>FSS Read Programs</strong>: Two zeros are printed when <code class="code">--total</code> is used and there are no matching Objects.</li>
+ <li><strong class="strong">FLL</strong>: Mistakes in disable macros and remove redundant check.</li>
+ <li><strong class="strong">FLL</strong>: Functions <code class="code">private_f_file_flush()</code> and <code class="code">private_f_print_safely_get()</code> are not being included when needed.</li>
+ <li><strong class="strong">FLL</strong>: The <code class="code">fll_program_standard_signal_received()</code> needs a private implementation.</li>
+ <li><strong class="strong">FLL</strong>: <code class="code">private_f_memory_structure_resize()</code> is not returning the error status codes.</li>
+ <li><strong class="strong">Featureless Make</strong>: Content is incorrectly attempted to be processed even though it does not exist.</li>
+ <li><strong class="strong">Featureless Make</strong>: Featureless Make dependencies are not accurately communicated.</li>
+ <li><strong class="strong">IKI Read</strong>: The <code class="code">iki_read</code> should apply the <code class="code">--wrap</code> when using <code class="code">--substitute</code>.</li>
+ <li><strong class="strong">FSS Read Programs</strong>: Two zeros are printed when <code class="code">--total</code> is used and there are no matching Objects.</li>
</ul>
<p class="p">
- <strong>Refactors:</strong>
+ <strong class="strong">Refactors:</strong>
</p>
<ul>
<li>None.</li>
</ul>
<p class="p">
- <strong>Updates:</strong>
+ <strong class="strong">Updates:</strong>
</p>
<ul>
- <li><strong>FLL</strong>: Enable Gitlab test support.</li>
- <li><strong>FLL</strong>: Always ensure content size is zero when content is not found.</li>
- <li><strong>FLL</strong>: Change logic to avoid potential negative numbers.</li>
- <li><strong>FLL</strong>: Use resize functions rather than adjust functions for <code class="code">append</code> and <code class="code">append_all</code> functions.</li>
- <li><strong>FLL</strong>: Add medium logos.</li>
- <li><strong>FLL</strong>: <code class="code">f_memory_structure_increase_by()</code> shouldn't do anything if amount is zero.</li>
- <li><strong>FLL</strong>: Cygwin documentation.</li>
- <li><strong>FLL</strong>: Support Unicode 15.0.</li>
- <li><strong>FLL</strong>: Slight improvement in UTF unassigned detection and add or correct some ranges.</li>
- <li><strong>Featureless Make</strong>: Redesign behavior of pipe, allowing it to run properly inside software like Gitlab's CI or Github's CI.</li>
- <li><strong>Featureless Make</strong>: Implement stand alone build for Featureless Make.</li>
- <li><strong>Featureless Make</strong>: Describe modes being used when performing build or make.</li>
- <li><strong>Featureless Make</strong>: Stand alone Featureless Make custom <code class="code">config.h</code> header.</li>
- <li><strong>Utf8</strong>: The <code class="code">utf8</code> program should be using the stream read functions.</li>
- <li><strong>Utf8</strong>: Implement stand alone build for <code class="code">utf8</code> program.</li>
+ <li><strong class="strong">FLL</strong>: Enable Gitlab test support.</li>
+ <li><strong class="strong">FLL</strong>: Always ensure content size is zero when content is not found.</li>
+ <li><strong class="strong">FLL</strong>: Change logic to avoid potential negative numbers.</li>
+ <li><strong class="strong">FLL</strong>: Use resize functions rather than adjust functions for <code class="code">append</code> and <code class="code">append_all</code> functions.</li>
+ <li><strong class="strong">FLL</strong>: Add medium logos.</li>
+ <li><strong class="strong">FLL</strong>: <code class="code">f_memory_structure_increase_by()</code> shouldn't do anything if amount is zero.</li>
+ <li><strong class="strong">FLL</strong>: Cygwin documentation.</li>
+ <li><strong class="strong">FLL</strong>: Support Unicode 15.0.</li>
+ <li><strong class="strong">FLL</strong>: Slight improvement in UTF unassigned detection and add or correct some ranges.</li>
+ <li><strong class="strong">Featureless Make</strong>: Redesign behavior of pipe, allowing it to run properly inside software like Gitlab's CI or Github's CI.</li>
+ <li><strong class="strong">Featureless Make</strong>: Implement stand alone build for Featureless Make.</li>
+ <li><strong class="strong">Featureless Make</strong>: Describe modes being used when performing build or make.</li>
+ <li><strong class="strong">Featureless Make</strong>: Stand alone Featureless Make custom <code class="code">config.h</code> header.</li>
+ <li><strong class="strong">Utf8</strong>: The <code class="code">utf8</code> program should be using the stream read functions.</li>
+ <li><strong class="strong">Utf8</strong>: Implement stand alone build for <code class="code">utf8</code> program.</li>
</ul>
<p class="p">
Check out the project on the <a href="fll.html#release" class="link"><abbr title="Featureless Linux Library">FLL</abbr> release</a> page.
These <a href="https://sourceforge.net/projects/fll/files/FLL-0.5/0.6.1/programs/" class="link external">programs</a>, by default, are designed to build against a library built using the monolithic source tree.
</p>
<p class="p">
- The <strong>stand alone</strong> sources for the Featureless Make and UTF8 programs can be found <a href="https://sourceforge.net/projects/fll/files/FLL-0.6/0.6.1/stand_alone/" class="link external">pre-packaged at Sourceforge</a>.
+ The <strong class="strong">stand alone</strong> sources for the Featureless Make and UTF8 programs can be found <a href="https://sourceforge.net/projects/fll/files/FLL-0.6/0.6.1/stand_alone/" class="link external">pre-packaged at Sourceforge</a>.
</p>
<p class="p">
- <strong>Kevin Day</strong>
+ <strong class="strong">Kevin Day</strong>
</p>
</div>
</main>
</p>
<p class="p">
This program specifically handles only the core status codes provided by the <abbr title="Featureless Linux Library">FLL</abbr>.<br>
- Other programs that utilize custom status codes should provide their own implementation of this program, such as is done with the <strong>FSS Status Code</strong> program.
+ Other programs that utilize custom status codes should provide their own implementation of this program, such as is done with the <strong class="strong">FSS Status Code</strong> program.
</p>
</div>
</article>
</header>
<div class="article-content">
<p class="p">
- The source code for the <strong>Featureless Linux Library</strong> is released in several locations.
+ The source code for the <strong class="strong">Featureless Linux Library</strong> is released in several locations.
The <a href="fll.html" class="link">Featureless Linux Library</a> page contains the full range of links regarding the source code.
</p>
<p class="p">
<div class="article-content">
<p class="p">
- The source code for the <strong>Turtle Kevux Distribution</strong> is provided in the DVD-ROM for each individual release. There currently is no recent release available. The legacy releases may be found on the <a href="distributions.html" class="link">distributions</a> page.
+ The source code for the <strong class="strong">Turtle Kevux Distribution</strong> is provided in the DVD-ROM for each individual release. There currently is no recent release available. The legacy releases may be found on the <a href="distributions.html" class="link">distributions</a> page.
</p>
<p class="p">
The following represents the most recently available release:
<div class="article-content">
<p class="p">
- The source code for the <strong>Turtle Kevux Installation Scripts</strong> is provided both as separate downloads and in the DVD-ROM for each individual Turtle Kevux release. There currently is no recent release available. The legacy releases may be found on the <a href="distributions.html" class="link">distributions</a> page.
+ The source code for the <strong class="strong">Turtle Kevux Installation Scripts</strong> is provided both as separate downloads and in the DVD-ROM for each individual Turtle Kevux release. There currently is no recent release available. The legacy releases may be found on the <a href="distributions.html" class="link">distributions</a> page.
</p>
<p class="p">
The following represents the most recently available release:
<div class="article-content">
<p class="p">
- The <strong>Kevux Website</strong> source code is also available for download. This website is designed to function even when downloaded, extracted, and viewed locally (without a web server hosting it). The downloaded version of this website will not contain the non-website related files nor will it contain the download website file itself. Such links will be broken on the downloaded website source. Check out the <a href="licenses.html" class="link">licenses</a> page for the license of the source code of this website.
+ The <strong class="strong">Kevux Website</strong> source code is also available for download. This website is designed to function even when downloaded, extracted, and viewed locally (without a web server hosting it). The downloaded version of this website will not contain the non-website related files nor will it contain the download website file itself. Such links will be broken on the downloaded website source. Check out the <a href="licenses.html" class="link">licenses</a> page for the license of the source code of this website.
</p>
<p class="p">
The following is the link:
<div class="article-content">
<p class="p">
- One of the biggest problems with an <abbr title="Application Programming Interface">API</abbr> is the mis-use or misunderstanding of the meaning and purpose of one. The term itself is not the most accurate and is also not ideal. A more appropriate term would be a <strong>Library Interface</strong> or a <strong>Software Interface</strong>.
+ One of the biggest problems with an <abbr title="Application Programming Interface">API</abbr> is the mis-use or misunderstanding of the meaning and purpose of one. The term itself is not the most accurate and is also not ideal. A more appropriate term would be a <strong class="strong">Library Interface</strong> or a <strong class="strong">Software Interface</strong>.
</p>
<section class="section">
<p class="p">
The old internet at one point had many websites linking to other websites.
This linking process is a pre-search engine error idea.
- This <em>webbing</em> page brings back the old concept of finding websites without a search engine.
+ This <em class="em">webbing</em> page brings back the old concept of finding websites without a search engine.
</p>
<p class="p">
The purpose of this page is to provide links to external websites that are not directly related to this website.
This page page will be slowly populated over time.
</p>
<p class="p">
- These websites do not represent the <em>Kevux</em> website and neither does the <em>Kevux</em> website represent these sites.
+ These websites do not represent the <em class="em">Kevux</em> website and neither does the <em class="em">Kevux</em> website represent these sites.
At no point should you consider or assume that these websites or their authors share common beliefs.
The links to these websites could, at any point in time, become unavailable.
</p>
<div class="article-content">
<p class="p">
- <strong><abbr title="Uniform Resource Locator">URL</abbr></strong>: <a href="https://kernel.org/" class="link external">https://kernel.org/</a>.
+ <strong class="strong"><abbr title="Uniform Resource Locator">URL</abbr></strong>: <a href="https://kernel.org/" class="link external">https://kernel.org/</a>.
</p>
<p class="p">
- <strong>Linux</strong> is an Operating System.
+ <strong class="strong">Linux</strong> is an Operating System.
This Operating System should not need any introduction here.
</p>
<p class="p">
- <em>Kevux</em> runs off of and utilizes <strong>Linux</strong>.
+ <em class="em">Kevux</em> runs off of and utilizes <strong class="strong">Linux</strong>.
</p>
</div>
</article>
<div class="article-content">
<p class="p">
- <strong><abbr title="Uniform Resource Locator">URL</abbr></strong>: <a href="https://linuxfromscratch.org/" class="link external">https://linuxfromscratch.org/</a>.
+ <strong class="strong"><abbr title="Uniform Resource Locator">URL</abbr></strong>: <a href="https://linuxfromscratch.org/" class="link external">https://linuxfromscratch.org/</a>.
</p>
<p class="p">
Provides a set of instructions to, from the ground up, learn how to build and install a basic Linux distribution using only the source code.
</p>
<p class="p">
- <strong>Linux From Scratch</strong> is Kevin Day's first experience with diving deep into Linux.
- This is want ultimately inspired the <em>Kevux Operating Systems</em> design.
+ <strong class="strong">Linux From Scratch</strong> is Kevin Day's first experience with diving deep into Linux.
+ This is want ultimately inspired the <em class="em">Kevux Operating Systems</em> design.
</p>
</div>
</article>
<div class="article-content">
<p class="p">
- <strong><abbr title="Uniform Resource Locator">URL</abbr></strong>: <a href="https://suckless.org/" class="link external">https://suckless.org/</a>.
+ <strong class="strong"><abbr title="Uniform Resource Locator">URL</abbr></strong>: <a href="https://suckless.org/" class="link external">https://suckless.org/</a>.
</p>
<p class="p">
Provides a collection of projects designed around the idea of simplicity, clarity, and frugality in software.
</p>
<p class="p">
- The ideas behind <strong>Software that Sucks Less</strong> are very similar to the <em>Kevux Software</em>, such as the <em>Featureless Linux Library</em>.
+ The ideas behind <strong class="strong">Software that Sucks Less</strong> are very similar to the <em class="em">Kevux Software</em>, such as the <em class="em">Featureless Linux Library</em>.
There are slight, but significant differences.
- Expect the <em>Kevux Software</em> to be slightly more complex.
+ Expect the <em class="em">Kevux Software</em> to be slightly more complex.
</p>
</div>
</article>
<div class="article-content">
<p class="p">
- <strong><abbr title="Uniform Resource Locator">URL</abbr></strong>: <a href="https://musl.libc.org/" class="link external">https://musl.libc.org/</a>.
+ <strong class="strong"><abbr title="Uniform Resource Locator">URL</abbr></strong>: <a href="https://musl.libc.org/" class="link external">https://musl.libc.org/</a>.
</p>
<p class="p">
- Provides an implementation of the standard <em>libc</em>.
- This is considered, by Kevin Day, to be one of the better designed <em>libc</em> implementations out there.
+ Provides an implementation of the standard <em class="em">libc</em>.
+ This is considered, by Kevin Day, to be one of the better designed <em class="em">libc</em> implementations out there.
</p>
<p class="p">
- Consider using this <strong>Musl Libc</strong> over the more popular <em>GNU C Library</em> found at <a href="https://www.gnu.org/software/libc/" class="link external">https://www.gnu.org/software/libc/</a>.
+ Consider using this <strong class="strong">Musl Libc</strong> over the more popular <em class="em">GNU C Library</em> found at <a href="https://www.gnu.org/software/libc/" class="link external">https://www.gnu.org/software/libc/</a>.
</p>
</div>
</article>