- The code:"mode" setting\:
Represents the mode in which the Entry is operating in.
- The following modes are supported: code:"program" and code:"service".
+ The following modes are supported: code:"helper", code:"program", and code:"service".
+
+ - The code:"helper" mode\:
+ Designates that the Entry operates as a helper for starting programs or performing actions and exits when complete.
+ On exit, any background (asynchronous) processes are not cancelled.
+ If terminated, the foreground (synchronous) process is cancelled.
+ Will call the code:"exit" with the same name as this Entry, but with the extension code:"exit", such as code:"default.exit".
+ Supports the Item Action code:"execute" to execute a program (switching the code:"controller" program entirely with the executed process).
- The code:"program" mode\:
Designates that the Entry operates as a program and exits when complete.
+ On exit, any background (asynchronous) processes are also cancelled.
+ If terminated, the foreground (synchronous) process is cancelled.
Will call the code:"exit" with the same name as this Entry, but with the extension code:"exit", such as code:"default.exit".
Supports the Item Action code:"execute" to execute a program (switching the code:"controller" program entirely with the executed process).
- code:"control_mode": Exactly one Content that is a valid file mode.
- code:"control_user": Exactly one Content that is a user name or user id.
- code:"define": Two Content, the first Content must be a case-sensitive valid environment variable name (alpha-numeric or underscore, but no leading digits).
- - code:"mode": Exactly one Content that is one of code:"program" or code:"service".
+ - code:"mode": Exactly one Content that is one of code:"helper", code:"program", or code:"service".
- code:"parameter": Two Content, the first Content must be a case-sensitive valid IKI name and the second being an IKI value.
- code:"pid": Exactly one Content that is one of code:"disable", code:"require", or code:"ready".
- code:"pid_file": Exactly one Content that is a relative or absolute path to a pid file.
The code:"header" Object contains the following code:"FSS-0001 (Extended)" Objects (depending on code:"type")\:
- code:"action": A valid action type: code:"freeze", code:"kexec", code:"kill", code:"pause", code:"reboot", code:"reload", code:"rerun", code:"restart", code:"resume", code:"shutdown", code:"start", code:"stop", or code:"thaw".
- code:"length": A positive whole number inclusively between 0 and 4294965248 representing the length of the code:"payload" (may be in binary, octal, decimal, duodecimal, or hexidecimal).
- - code:"status": The status code name or number representing an FSS status code, such as F_none, F_failure, or 200 (where a number may have error and warning bits and may be in binary, octal, decimal, duodecimal, or hexidecimal).
+ - code:"status": The status code name or number representing an FSS status code, such as F_okay, F_failure, or 200 (where a number may have error and warning bits and may be in binary, octal, decimal, duodecimal, or hexidecimal).
- code:"type": The packet type that is one of code:"controller", code:"error", or code:"init".
When there are multiple Objects of the same name inside the code:"header"\:
- code:"action": The order represents the order in which the actions are performed.
- code:"length": There may only be one length Object, all others after the first are ignored (may be in binary, octal, decimal, duodecimal, or hexidecimal).
- - code:"status": A status for each action, in the same order as the order of the action, such as F_none, F_failure, or 200 (where a number may have error and warning bits and may be in binary, octal, decimal, duodecimal, or hexidecimal).
+ - code:"status": A status for each action, in the same order as the order of the action, such as F_okay, F_failure, or 200 (where a number may have error and warning bits and may be in binary, octal, decimal, duodecimal, or hexidecimal).
- code:"type": The first represent the type and all others represents a sub-type.
There are different headers and payload properties based on the code:"type".
# fss-0002 iki-0000
#
# license: open-standard-license-1.0
+# version 2024/03/23
#
# This file (assumed to be named fakefile.txt) can be more easily read using the following iki_read commands:
# iki_read fakefile.txt +Q -w -rrr ASCII ASCII GCC GCC HTML HTML -WW character "'" "'" code '"' '"'
Any configuration specific to this file:"fakefile" is stored here.
This includes the declaration of define and parameter IKI variable substitution values.
+ If multiple bold:"Objects" of the same name exist and that bold:"Object" only supports a single value, then only the bold:"Content" from the last same named bold:"Object" is used.
+
The build settings may also be specified in the bold:"Settings Section".
The following settings are available (in addition to the build settings)\:
Absolute paths that start with code:"./" are relative to the project root rather than the importing file.
Absolute paths that start with code:"/" are treated normally.
- This is neither implemented nor supported by Featureless Make 0.6.x and earlier.
-
- code:"indexer"\:
This represents the name of the indexer program to use, such as code:"ar".
An indexer is often called a linker.
For all conditions that rely on numbers, only whole numbers are (currently) supported.
conditions\:
- - code:"== \"left\" \"right\""\:
+ - code:"== 'left' 'right'"\:
Compare all parameters to be equal.
Requires 2 or more after the code:"==".
For example, code:"if == 'a' 'b' 'c' 'd'" would test: code:"'a' == 'b' && 'b' == 'c' && 'c' == 'd'".
This performs only string-based comparisons.
- - code:"> \"left string\" \"right string\""\:
+ - code:"> 'left string' 'right string'"\:
Compare code:"left" to code:"right" for greater than.
Requires 2 or more after the code:">".
For example, code:"if > 0 1 2 3" would test: code:"0 > 1 && 1 > 2 && 2 > 3".
This performs only number-based comparisons.
- - code:"< \"left string\" \"right string\""\:
+ - code:"< 'left string' 'right string'"\:
Compare code:"left" to code:"right" for less than.
Requires 2 or more after the code:">".
For example, code:"if < 0 1 2 3" would test: code:"0 < 1 && 1 < 2 && 2 < 3".
This performs only number-based comparisons.
- - code:">= \"left string\" \"right string\""\:
+ - code:">= 'left string' 'right string'"\:
Compare code:"left" to code:"right" for greater than or equal to.
Requires 2 or more after the code:">=".
For example, code:"if >= 0 1 2 3" would test: code:"0 >= 1 && 1 >= 2 && 2 >= 3".
This performs only number-based comparisons.
- - code:"<= \"left string\" \"right string\""\:
+ - code:"<= 'left string' 'right string'"\:
Compare code:"left" to code:"right" for less than or equal to.
Requires 2 or more after the code:">=".
For example, code:"if <= 0 1 2 3" would test: code:"0 <= 1 && 1 <= 2 && 2 <= 3".
This performs only number-based comparisons.
- - code:"<> \"left\" \"right\""\:
+ - code:"<> 'left' 'right'"\:
Compare all parameters to be not equal.
Requires 2 or more after the code:"==".
For example, code:"if <> 'a' 'b' 'c'" would test: code:"'a' <> 'b' && 'b' <> 'c' && 'a' <> 'c'".
This performs only string-based comparisons.
- - code:"define \"some define name\""\:
+ - code:"define 'some define name'"\:
Test if one or more names are defined as an environment variable.
For example, code:"if define PWD SHELL" would test if both the code:"PWD" and the code:"SHELL" variables are defined via the environment variables.
- - code:"exist \"file path\""\:
+ - code:"exist 'file path'"\:
Test if file exists.
- For example, code:"if exist \"a.txt\" \"b.txt\"" would test if both the file code:"a.txt" and code:"b.txt" exist.
+ For example, code:"if exist 'a.txt' 'b.txt'" would test if both the file code:"a.txt" and code:"b.txt" exist.
- code:"failure"\:
Test if the previous section operation failed.
- - code:"group \"some mode\" \"some file\""\:
+ - code:"group 'some mode' 'some file'"\:
For example, code:"if group friends a.txt b.txt" would test if both file code:"a.txt" and code:"b.txt" have a group named code:"we".
- - code:"is block character directory fifo link regular socket for \"file path\""\:
+ - code:"is block character directory fifo link regular socket for 'file path'"\:
Test if one or more files exist and if each file is any of the given types.
The given types must be followed by code:"for" to designate where the the file paths begin.
- For example, code:"if is regular directory for \"a.txt\" \"b.txt\"" would test if both the file code:"a.txt" and code:"b.txt" exist and are either of type code:"regular" or type code:"directory".
+ For example, code:"if is regular directory for 'a.txt' 'b.txt'" would test if both the file code:"a.txt" and code:"b.txt" exist and are either of type code:"regular" or type code:"directory".
- - code:"mode is/has \"some mode\" \"some file\""\:
+ - code:"mode is/has 'some mode' 'some file'"\:
Test if one or more files has the exact mode (code:"is") or has at least the given modes (code:"has").
For example, code:"if mode is u+r a.txt b.txt" would test if both file code:"a.txt" and code:"b.txt" only have owner set to read.
For example, code:"if mode has u+r a.txt b.txt" would test if both file code:"a.txt" and code:"b.txt" has owner set to read, and all other modes can be anything.
- code:"if not parameter work"
- code:"if not exist documentation.txt"
- - code:"owner \"some mode\" \"some file\""\:
+ - code:"owner 'some mode' 'some file'"\:
Test if one or more files has the given owner.
For example, code:"if owner me a.txt b.txt" would test if both file code:"a.txt" and code:"b.txt" have an owner named code:"me".
- - code:"parameter \"some parameter name\""\:
+ - code:"parameter 'some parameter name'"\:
Test if one or more names are defined as a code:"parameter" variable.
For example, code:"if parameter verbose silent" would test if both the code:"verbose" and the code:"silent" variables are defined via the code:"parameter" setting.
- code:"current": The absolute path to the current working directory (present working directory) (Always has a trailing forward slash).
- code:"data": Associated with code:"-D/--data" parameter.
- code:"define": Associated with code:"-d/--define" parameter.
+ - code:"documents": Associated with code:"-O/--documents" parameter.
- code:"fakefile": Associated with code:"-f/--fakefile" parameter.
+ - code:"licenses": Associated with code:"-l/--licenses" parameter.
- code:"mode": Associated with code:"-m/--mode" parameter and possibly with the build settings default mode code:"modes_default".
- code:"process": Associated with code:"-p/--process" parameter.
- code:"return": Contains the return value of a previous operation that produces a return code.
- code:"settings": Associated with code:"-s/--settings" parameter.
- code:"sources": Associated with code:"-S/--sources" parameter.
- code:"top": The absolute path to the code:"top" directory, which is the base project directory (Always has a trailing forward slash).
+ - code:"under": Associated with code:"-U/--under" parameter.
- code:"verbosity": Associated with code:"+Q/++quiet", code:"+E/++error", code:"+N/++normal", code:"+V/++verbose", and code:"+D/++debug" parameters.
- code:"work": Associated with code:"-w/--work" parameter.
- code:"context"\:
The context Object represents a name representing simple context or complex combination of context.
Context should wrap some text such that if some text begins with some context, the context should be reset at the end.
- The most basic context is color context, such as: code:"context:\"notice\" This is emphasized text context:\"reset\"".
+ The most basic context is color context, such as: code:"context\:'notice' This is emphasized text context\:'reset'".
The use of IKI in this way is acceptable but it is not perfect.
IKI is not designed to be a replacement to markup.
- The markup code:"<strong>Example</strong>" vs the IKI code:"context:\"notable\" Example context:\"notable\"" has obvious differences in the spaces.
- The IKI by design cannot be used like this: code:"context:\"notable\"Examplecontext:\"notable\"" because the word code:"Example" and the word code:"context" collide.
+ The markup code:"<strong>Example</strong>" vs the IKI code:"context\:'notable' Example context\:'notable'" has obvious differences in the spaces.
+ The IKI by design cannot be used like this: code:"context\:'notable'Examplecontext\:'notable'" because the word code:"Example" and the word code:"context" collide.
This context will respect the programs code:"++light", code:"++dark", and code:"++no_color" parameters.
This supports both code:":option" and code:":value".
- code:"define"\:
- This variable holds the code:"data" program parameters, such as code:"-d define/".
+ This variable holds the code:"define" program parameters, such as code:"-d define/".
+ This supports both code:":option" and code:":value".
+
+ - code:"documents"\:
+ This variable holds the code:"documents" program parameters, such as code:"-O documents/".
This supports both code:":option" and code:":value".
- code:"fakefile"\:
This variable holds the code:"fakefile" program parameters, such as code:"-f fakefile".
This supports both code:":option" and code:":value".
+ - code:"licenses"\:
+ This variable holds the code:"licenses" program parameters, such as code:"-l licenses/".
+ This supports both code:":option" and code:":value".
+
- code:"mode"\:
This variable holds the code:"fakefile" program parameters, such as code:"-m monolithic".
This supports both code:":option" and code:":value".
This supports both code:":option" and code:":value".
- code:"sources"\:
- This variable holds the code:"data" program parameters, such as code:"-S sources/".
+ This variable holds the code:"sources" program parameters, such as code:"-S sources/".
+ This supports both code:":option" and code:":value".
+
+ - code:"under"\:
+ This variable holds the code:"under" program parameters, such as code:"-U under/".
This supports both code:":option" and code:":value".
- code:"verbosity"\:
# fss-0002 iki-0000
#
# license: open-standard-license-1.0
+# version 2024/03/23
#
# This file (assumed to be named settings.txt) can be more easily read using the following iki_read commands:
# iki_read settings.txt +Q -w -rrr ASCII ASCII FLL FLL GCC GCC -WW character "'" "'" code '"' '"'
- code:"build_script"\:
When code:"yes", the build process will build any scripts, such as a Bash script.
-
- This is neither implemented nor supported by Featureless Make 0.6.x and earlier.
+ This is currently not implemented.
- code:"build_shared"\:
When code:"yes", the build process will compile any source code for any supported language that supports shared library linking.
These are applied to only static builds.
- code:"build_sources_object"\:
- A single source file used for generating an object file.
- The source file is located within the path designated by code:"path_sources_object".
- The built object does not get linked and therefore no linker arguments apply.
- The built object file is named using the code:"build_name" with the code:".o" extension.
- May include a relative sub-path to each individual source file (such as: code:"level_0/a.c").
+ A collection of source files used for generating an object file with the same name as each source file.
+ The source files are located within the path designated by code:"path_sources_object".
+ The built objects do not get linked and therefore no linker arguments apply.
+ The built object files are named using the same name as the file with the file extension changed to the code:".o" extension.
+ May include a relative sub-path to each individual source file (such as: code:"level_0/a.c level_0/b.c").
+ This is different from code:"build_sources_object" in that multiple files are supported and multiple object files are created.
- code:"build_sources_object_shared"\:
- A single source file used for generating an object file.
- The source file is located within the path designated by code:"path_sources_object".
- The built object does not get linked and therefore no linker arguments apply.
- The built object file is named using the code:"build_name" with the code:".o" extension.
- May include a relative sub-path to each individual source file (such as: code:"level_0/a.c").
+ A collection of source files used for generating an object file with the same name as each source file.
+ The source files are located within the path designated by code:"path_sources_object".
+ The built objects do not get linked and therefore no linker arguments apply.
+ The built object files are named using the same name as the file with the file extension changed to the code:".o" extension.
+ May include a relative sub-path to each individual source file (such as: code:"level_0/a.c level_0/b.c").
+ This is different from code:"build_sources_object" in that multiple files are supported and multiple object files are created.
These are applied to only shared builds.
- code:"build_sources_object_static"\:
- A single source file used for generating an object file.
- The source file is located within the path designated by code:"path_sources_object".
- The built object does not get linked and therefore no linker arguments apply.
- The built object file is named using the code:"build_name" with the code:".o" extension.
- May include a relative sub-path to each individual source file (such as: code:"level_0/a.c").
+ A collection of source files used for generating an object file with the same name as each source file.
+ The source files are located within the path designated by code:"path_sources_object".
+ The built objects do not get linked and therefore no linker arguments apply.
+ The built object files are named using the same name as the file with the file extension changed to the code:".o" extension.
+ May include a relative sub-path to each individual source file (such as: code:"level_0/a.c level_0/b.c").
+ This is different from code:"build_sources_object" in that multiple files are supported and multiple object files are created.
These are applied to only static builds.
- code:"build_sources_program"\:
Absolute paths that start with "./" are relative to the project root rather than the importing file.
Absolute paths that start with "/" are treated normally.
- This is neither implemented nor supported by Featureless Make 0.6.x and earlier.
-
- code:"modes"\:
A collection of available build modes.
Build modes provide custom variants of the build process where certain bold:"settings" are appended onto others.
A sub-path representing the destination where the built library script files are placed.
This defaults to code:"script".
-
- This is neither implemented nor supported by Featureless Make 0.6.x and earlier.
+ This is currently not implemented.
- code:"path_library_shared"\:
A sub-path representing the destination where the built shared library files are placed.
A sub-path representing the destination where the built object script files are placed.
This defaults to code:"script".
-
- This is neither implemented nor supported by Featureless Make 0.6.x and earlier.
+ This is currently not implemented.
- code:"path_object_shared"\:
A sub-path representing the destination where the built object library files are placed.
A sub-path representing the destination where the built program script files are placed.
This defaults to code:"script".
-
- This is neither implemented nor supported by Featureless Make 0.6.x and earlier.
+ This is currently not implemented.
- code:"path_program_shared"\:
A sub-path representing the destination where the built shared program files are placed.
This defaults to code:"sources".
+ - code:"path_sources_headers"\:
+ A sub-path representing where the header source files are found.
+ This is used by code:"build_sources_headers".
+
+ This defaults to code:"sources".
+
+ - code:"path_sources_library"\:
+ A sub-path representing where the library source files are found.
+ This is used by code:"build_sources_library".
+
+ This defaults to code:"sources".
+
- code:"path_sources_object"\:
A sub-path representing where the object source files are found.
This is used by code:"build_sources_object".
This defaults to code:"sources".
+ - code:"path_sources_program"\:
+ A sub-path representing where the program source files are found.
+ This is used by code:"build_sources_program".
+
+ This defaults to code:"sources".
+
+ - code:"path_sources_script"\:
+ A sub-path representing where the script source files are found.
+ This is used by code:"build_sources_script".
+
+ This defaults to code:"sources".
+
- code:"preserve_path_headers"\:
When this is code:"yes", then the relative directory structure in the source (as defined in code:"build_sources_headers") is preserved.
If the code:"build_sources_headers" has the header files code:"xxx/a.h yyy/zzz/b.h" and this is code:"yes", then the directories code:"xxx/" and code:"yyy/zzz/" are created and the files are stored within them.
# fss-0002 iki-0000
#
# license: open-standard-license-1.0
+# version 2024/03/23
#
# This file (assumed to be named defines.txt) can be more easily read using the following iki_read commands:
# iki_read defines.txt +Q -w -WW code '"' '"' bold '"' '"'
# fss-0002 iki-0000
#
# license: open-standard-license-1.0
+# version 2024/03/23
#
# This file (assumed to be named dependencies.txt) can be more easily read using the following iki_read commands:
# iki_read dependencies.txt +Q -w -r FLL FLL -WW code '"' '"' bold '"' '"'
# fss-0002 iki-0000
#
# license: open-standard-license-1.0
+# version 2024/03/23
#
# This file (assumed to be named fakefile.txt) can be more easily read using the following iki_read commands:
# iki_read fakefile.txt +Q -w -WW character "'" "'" code '"' '"'
- code:"<="
The code:"if" bold:"Section Operation" condition code:"parameter"\:
- The following reserved words are available for parameter names: code:"build", code:"color", code:"current", code:"data", code:"define", code:"fakefile", code:"mode", code:"process", code:"return", code:"settings", code:"sources", code:"top", code:"verbosity", and code:"work".
+ The following reserved words are available for parameter names: code:"build", code:"color", code:"current", code:"data", code:"documents", code:"define", code:"fakefile", code:"licenses", code:"mode", code:"process", code:"return", code:"settings", code:"sources", code:"top", code:"under", code:"verbosity", and code:"work".
Each of the reserved words supports having code:":option" and code:":value" appended, such as: code:"work:value".
# fss-0002 iki-0000
#
# license: open-standard-license-1.0
+# version 2024/03/23
#
# This file (assumed to be named settings.txt) can be more easily read using the following iki_read commands:
# iki_read settings.txt +Q -w -WW character "'" "'" code '"' '"'
- code:"path_program_shared": Must be a single valid path.
- code:"path_program_static": Must be a single valid path.
- code:"path_sources": Must only be a valid directory path or not specified.
+ - code:"path_sources_headers": Must only be a valid directory path or not specified.
+ - code:"path_sources_library": Must only be a valid directory path or not specified.
- code:"path_sources_object": Must only be a valid directory path or not specified.
+ - code:"path_sources_program": Must only be a valid directory path or not specified.
+ - code:"path_sources_script": Must only be a valid directory path or not specified.
- code:"preserve_path_headers": Must only be one of code:"yes" or code:"no".
- code:"process_post": Only one bold:"Content", which must only be a valid filename.
- code:"process_pre": Only one bold:"Content", which must only be a valid filename.
# fss-0002 iki-0000
#
-# license: open-standard-license-1.0
+# license open-standard-license-1.0
+# version 2024/01/15
#
# This file (assumed to be named fss-0000.txt) can be more easily read using the following iki_read commands:
# iki_read fss-0000.txt +Q -w -WW character "'" "'" code '"' '"'
Featureless Settings Specification: 0000 - Basic:
Each Object starts at the beginning of a line and white space to the left of the Object is not treated as part of the object.
White space separates an Object from the Content.
- An Object may be preceded by a newline, in which case means that the Object has no Content.
+ An Object may be preceded by a new line character, in which case means that the Object has no Content.
If only printing white spaces or non-printable characters follow a valid Object, then that Object is considered to have no Content.
- An Object may be quoted to include whitespace where a single quote character:"'" (unicode:"U+0027"), a double quote character:'"' (unicode:"U+0022"), or a backtick character:'`' (unicode:"U+0060") are used to quote.
+ An Object may be quoted to include white space where a single quote character:"'" (unicode:"U+0027"), a double quote character:'"' (unicode:"U+0022"), or a grave character:'`' (unicode:"U+0060") are used to quote.
+ An Object is only considered quoted if the first and last character of the Object are the same quote.
+ Any quote characters in a non-quoted Object are treated as part of the Object rather than as a quote.
+ An Object that properly starts with a quote character but is not properly terminated before the new line is reached is considered to be an Object terminating at the end of the line.
+ A quoted Objected terminating at the new line in this way preserves the quotes as part of the Object.
Content exists on the same line as the Object.
- Content is represented as a single Content column terminated by a newline.
- Content column consists of everything following the first non-white space character until the newline.
- Content column includes trailing white space before newline is reached.
+ Content is represented as a single Content column terminated by a new line.
+ Content column consists of everything following the first non-white space character until the new line.
+ Content column includes trailing white space before new line is reached.
Content column does not include any of the leading white space.
No delimits are supported in the Content.
Key\:
- code:"\s" = White space, except newline.
- code:"\b" = Either white space or printable, except newline.
- code:"\q" = Non-white space or quoted white space (and non-whitespace) with no white space outside of the quotes.
- code:"\n" = Newline.
+ code:"\s" = White space, except new line.
+ code:"\b" = Either white space or printable, except new line.
+ code:"\q" = Non-white space or quoted white space (and non-white space) with no white space outside of the quotes.
+ code:"\n" = New line.
code:"*" = Zero or more occurrences.
code:"+" = One or more occurrences.
Example\:
# fss-0000
# valid comments are ignored.
- "The Object" Content until newline.
+ "The Object" Content until new line.
Second object set.
Object would be\:
2) Second
Content would be\:
- 1.1) Content until newline.
+ 1.1) Content until new line.
2.1) object set.
# fss-0002 iki-0000
#
-# license: open-standard-license-1.0
+# license open-standard-license-1.0
+# version 2024/01/15
#
# This file (assumed to be named fss-0001.txt) can be more easily read using the following iki_read commands:
# iki_read fss-0001.txt +Q -w -WW character "'" "'" code '"' '"'
Featureless Settings Specification: 0001 - Extended:
Each Object starts at the beginning of a line and white space to the left of the Object is not treated as an object.
White space separates an Object from the Content.
- An Object may be followed by a newline, in which case means that the Object has no Content.
+ An Object may be followed by a new line, in which case means that the Object has no Content.
If only printing white spaces or non-printable characters follow a valid Object, then that Object is considered to have no Content.
- An Object may be quoted to include whitespace where a single quote character:"'" (unicode:"U+0027"), a double quote character:'"' (unicode:"U+0022"), or a backtick character:'`' (unicode:"U+0060") are used to quote.
+ An Object may be quoted to include white space where a single quote character:"'" (unicode:"U+0027"), a double quote character:'"' (unicode:"U+0022"), or a grave character:'`' (unicode:"U+0060") are used to quote.
+ An Object is only considered quoted if the first and last character of the Object are the same quote.
+ Any quote characters in a non-quoted Object are treated as part of the Object rather than as a quote.
+ An Object that properly starts with a quote character but is not properly terminated before the new line is reached is considered to be an Object terminating at the end of the line.
+ A quoted Objected terminating at the new line in this way preserves the quotes as part of the Object.
Content exists on the same line as the Object.
Content is represented as multiple Content columns.
- Content columns are white space separated parts within the Content and terminated by a newline.
- Any number of Content columns may exist in the Content until the newline is reached.
+ Content columns are white space separated parts within the Content and terminated by a new line.
+ Any number of Content columns may exist in the Content until the new line is reached.
+ Content follows the same quoting rules as an Object.
Key\:
- code:"\s" = White space, except newline.
- code:"\b" = Either white space or printable, except newline.
- code:"\q" = Non-white space or quoted white space (and non-whitespace) with no white space outside of the quotes.
- code:"\n" = Newline.
+ code:"\s" = White space, except new line.
+ code:"\b" = Either white space or printable, except new line.
+ code:"\q" = Non-white space or quoted white space (and non-white space) with no white space outside of the quotes.
+ code:"\n" = New line.
code:"*" = Zero or more occurrences.
code:"+" = One or more occurrences.
code:"()*" = Grouping that repeats zero or more times.
# fss-0002 iki-0000
#
-# license: open-standard-license-1.0
+# license open-standard-license-1.0
+# version 2024/01/15
#
# This file (assumed to be named fss-0002.txt) can be more easily read using the following iki_read commands:
# iki_read fss-0002.txt +Q -w -WW character "'" "'" code '"' '"'
Featureless Settings Specification: 0002 - Basic List:
Each Object starts at the beginning of a line and white space to the left of the Object is not treated as an object.
- A colon character:":" (unicode:"U+003A") followed by any white space until a newline terminates a valid Object.
+ A colon character:":" (unicode:"U+003A") followed by any white space until a new line terminates a valid Object.
Non-white space printable characters may not follow the colon of a valid Object.
Content is represented as a single Content column of every line following a valid object until the end of file (or string) or until the next valid Object is found.
Any Content that could be interpreted as a valid Object must have the colon delimited.
- There is no single-quote, double-quote, or backtick delimitation in this specification.
+ There is no single-quote (unicode:"U+0027"), double-quote (unicode:"U+0022"), or grave (unicode:"U+0060") delimitation in this specification.
Only a colon character:":" (unicode:"U+003A") that would result in a valid Object can be delimited.
Empty Objects are allowed, that is, the length of the object may be zero.
Key\:
- code:"\s" = White space, except newline.
+ code:"\s" = White space, except new line.
code:"\o" = Any printable character, except unescaped character:":" (unicode:"U+003A").
code:"\l" = Any printable character or white space, except unescaped character:":" (unicode:"U+003A").
- code:"\c" = Either white space or printable, including newline, that not interpretable as an Object.
- code:"\n" = Newline.
+ code:"\c" = Either white space or printable, including new line, that not interpretable as an Object.
+ code:"\n" = New line.
code:"*" = Zero or more occurrences.
Before Structure\:
This Does\\\:
Second\:
Continues until EOS/EOF.
- All white space, including newline (and leading white space) is "part of content."
+ All white space, including new line (and leading white space) is "part of content."
# Valid comments are still ignored.
Objects would be\:
This: does not need to be delimited.
This Does\:
2.1) Continues until EOS/EOF.
- All white space, including newline (and leading white space) is "part of content."
+ All white space, including new line (and leading white space) is "part of content."
# fss-0002 iki-0000
#
-# license: open-standard-license-1.0
+# license open-standard-license-1.0
+# version 2024/01/15
#
# This file (assumed to be named fss-0003.txt) can be more easily read using the following iki_read commands:
# iki_read fss-0003.txt +Q -w -WW character "'" "'" code '"' '"'
Featureless Settings Specification: 0003 - Extended List:
Each Object starts at the beginning of a line and white space to the left of the Object is not treated as an object.
- An open-brace character:"{" (unicode:"U+007B") followed by any white space until a newline terminates a possible valid Object.
+ An open-brace character:"{" (unicode:"U+007B") followed by any white space until a new line terminates a possible valid Object.
An Object is not considered fully valid until a valid close-brace character:"}" (unicode:"U+007D") is found, designating the end of the Content.
Non-white space printable characters may not follow the open-brace character:"{" (unicode:"U+007B") of a valid Object.
Content is represented as a single Content column of every line following a valid object until the end of file (or string) or until a non-delimited close-brace character:"}" (unicode:"U+007D").
Any Content column that could be interpreted as an end of Content must be delimited if it should be part of the Content.
- White space may follow a valid close-brace character:"}" (unicode:"U+007D") but a terminating newline must be present to designate a valid end of Content.
+ White space may follow a valid close-brace character:"}" (unicode:"U+007D") but a terminating new line must be present to designate a valid end of Content.
- There is no single-quote, double-quote, or backtick delimitation in this specification.
+ There is no single-quote (unicode:"U+0027"), double-quote (unicode:"U+0022"), or grave (unicode:"U+0060") delimitation in this specification.
Only an open-brace character:"{" (unicode:"U+007B") that would result in a valid Object or the close-brace character:"}" (unicode:"U+007D") that would terminate valid Content can be delimited.
When inside potentially valid Content (which follows a valid Object) the open-brace character:"{" (unicode:"U+007B") cannot be delimited because this standard is not-recursive.
When not inside any potentially valid Content (that is, there is no previous unclosed Object), then the Object may be delimited.
Empty Objects are allowed, that is, the length of the object may be zero.
Key\:
- code:"\s" = White space, except newline.
+ code:"\s" = White space, except new line.
code:"\o" = Any printable character, except unescaped character:"{" (unicode:"U+007B").
code:"\l" = Any printable character or white space, except unescaped character:"}" (unicode:"U+007D").
- code:"\c" = Either white space or printable, including newline, that is not interpretable as an Object.
+ code:"\c" = Either white space or printable, including new line, that is not interpretable as an Object.
code:"\n" = Newline.
code:"*" = Zero or more occurrences.
Second {
Continues until EOS/EOF.
- All white space, including newline (and leading white space) is "part of content."
+ All white space, including new line (and leading white space) is "part of content."
# Valid comments are still ignored.
}
This: does not need to be delimited.
}
2.1) Continues until EOS/EOF.
- All white space, including newline (and leading white space) is "part of content."
+ All white space, including new line (and leading white space) is "part of content."
# fss-0002 iki-0000
#
-# license: open-standard-license-1.0
+# license open-standard-license-1.0
+# version 2023/07/14
#
# This file (assumed to be named fss-0004.txt) can be more easily read using the following iki_read commands:
# iki_read fss-0004.txt +Q -w -WW character "'" "'" code '"' '"'
This Does\\\:
Second\:
Continues until EOS/EOF.
- All white space, including newline (and leading white space) is "part of content."
+ All white space, including new line (and leading white space) is "part of content."
# Valid comments are still ignored.
Outer Objects would be\:
1.3.1) Does\:
2.1.1) until EOS/EOF.
- 2.2.1) white space, including newline (and leading white space) is "part of content."
+ 2.2.1) white space, including new line (and leading white space) is "part of content."
# fss-0002 iki-0000
#
-# license: open-standard-license-1.0
+# license open-standard-license-1.0
+# version 2023/07/14
#
# This file (assumed to be named fss-0005.txt) can be more easily read using the following iki_read commands:
# iki_read fss-0005.txt +Q -w -WW character "'" "'" code '"' '"'
#
Featureless Settings Specification: 0005 - Somewhat Basic List:
- This is a code"fss-0002 (Basic List)" whose Content is then processed as code:"FSS-0001 (Extended)".
+ This is a code:"FSS-0002 (Basic List)" whose Content is then processed as code:"FSS-0001 (Extended)".
All code:"FSS-0002 (Basic List)" escapes are applied before any code:"FSS-0001 (Extended)" is identified.
This Does\\\:
Second\:
Continues until EOS/EOF.
- All white space, including newline (and leading white space) is "part of content."
+ All white space, including new line (and leading white space) is "part of content."
# Valid comments are still ignored.
Outer Objects would be\:
2.1.1) until
2.1.2) EOS/EOF.
- 2.2.1) white space,
- 2.2.2) including
- 2.2.3) newline
- 2.2.4) (and
- 2.2.5) leading
- 2.2.6) white space)
- 2.2.7) is
- 2.2.8) part of content.
+ 2.2.1) white
+ 2.2.2) space,
+ 2.2.3) including
+ 2.2.4) new
+ 2.2.5) line
+ 2.2.6) (and
+ 2.2.7) leading
+ 2.2.8) white space)
+ 2.2.9) is
+ 2.2.10) part of content.
# fss-0002 iki-0000
#
-# license: open-standard-license-1.0
+# license open-standard-license-1.0
+# version 2023/07/14
#
# This file (assumed to be named fss-0006.txt) can be more easily read using the following iki_read commands:
# iki_read fss-0006.txt +Q -w -WW character "'" "'" code '"' '"'
Second {
Continues until EOS/EOF.
- All white space, including newline (and leading white space) is "part of content."
+ All white space, including new line (and leading white space) is "part of content."
# Valid comments are still ignored.
}
1.3.1)
2.1.1) until EOS/EOF.
- 2.2.1) white space, including newline (and leading white space) is "part of content."
+ 2.2.1) white space, including new line (and leading white space) is "part of content."
# fss-0002 iki-0000
#
-# license: open-standard-license-1.0
+# license open-standard-license-1.0
+# version 2023/07/14
#
# This file (assumed to be named fss-0007.txt) can be more easily read using the following iki_read commands:
# iki_read fss-0007.txt +Q -w -WW character "'" "'" code '"' '"'
Second {
Continues until EOS/EOF.
- All white space, including newline (and leading white space) is "part of content."
+ All white space, including new line (and leading white space) is "part of content."
# Valid comments are still ignored.
}
2.1.1) until
2.1.2) EOS/EOF.
- 2.2.1) white space,
- 2.2.2) including
- 2.2.3) newline
- 2.2.4) (and
- 2.2.5) leading
- 2.2.6) white space)
- 2.2.7) is
- 2.2.8) part of content.
+ 2.2.1) white
+ 2.2.2) space,
+ 2.2.3) including
+ 2.2.4) new
+ 2.2.5) line
+ 2.2.6) (and
+ 2.2.7) leading
+ 2.2.8) white space)
+ 2.2.9) is
+ 2.2.10) part of content.
# fss-0002 iki-0000
#
-# license: open-standard-license-1.0
+# license open-standard-license-1.0
+# version 2023/07/14
#
# This file (assumed to be named fss-0008.txt) can be more easily read using the following iki_read commands:
# iki_read fss-0008.txt +Q -w -WW character "'" "'" code '"' '"'
# fss-0002 iki-0000
#
-# license: open-standard-license-1.0
+# license open-standard-license-1.0
+# version 2023/07/14
#
# This file (assumed to be named fss-0009.txt) can be more easily read using the following iki_read commands:
# iki_read fss-0009.txt +Q -w -WW character "'" "'" code '"' '"'
Each Object starts at the end of a line and white space to the left of the Object is not treated as part of the object.
White space separates an Object from the Content.
- An Object may be preceded by a newline, in which case means that the Object has no Content.
+ An Object may be preceded by a new line, in which case means that the Object has no Content.
If only printing white spaces or non-printable characters precedes a valid Object, then that Object is considered to have no Content.
- An Object may be quoted to include whitespace where a single quote character:"'" (unicode:"U+0027"), a double quote character:'"' (unicode:"U+0022"), or a backtick character:'`' (unicode:"U+0060") are used to quote.
+ An Object may be quoted to include white space where a single quote character:"'" (unicode:"U+0027"), a double quote character:'"' (unicode:"U+0022"), or a backtick character:'`' (unicode:"U+0060") are used to quote.
+ An Object is only considered quoted if the first and last character of the Object are the same quote.
+ Any quote characters in a non-quoted Object are treated as part of the Object rather than as a quote.
+ An Object that properly starts with a quote character but is not properly terminated before the new line is reached is considered to be an Object terminating at the end of the line.
+ A quoted Objected terminating at the new line in this way preserves the quotes as part of the Object.
Content exists on the same line as the Object.
- Content is represented as a single Content column that begins at a newline.
+ Content is represented as a single Content column that begins at a new line.
Content column consists of everything following the first non-white space character at the start of the line until the Object is reached.
- Content column includes trailing white space before newline is reached.
+ Content column includes trailing white space before new line is reached.
Content column does not include any of the white space between the last non-white space character and the start of the Object.
No delimits are supported in the Content.
Key\:
- code:"\s" = White space, except newline.
- code:"\b" = Either white space or printable, except newline.
- code:"\q" = Non-white space or quoted white space (and non-whitespace) with no white space outside of the quotes.
- code:"\n" = Newline.
+ code:"\s" = White space, except new line.
+ code:"\b" = Either white space or printable, except new line.
+ code:"\q" = Non-white space or quoted white space (and non-white space) with no white space outside of the quotes.
+ code:"\n" = New line.
code:"*" = Zero or more occurrences.
code:"+" = One or more occurrences.
Example\:
# fss-0009
# valid comments are ignored.
- Content from newline. "The Object"
+ Content from new line. "The Object"
object set. Second
Object would be\:
2) Second
Content would be\:
- 1.1) Content from newline.
+ 1.1) Content from new line.
2.1) object set.
# fss-0002 iki-0000
#
-# license: open-standard-license-1.0
+# license open-standard-license-1.0
+# version 2023/07/14
#
# This file (assumed to be named fss-000a.txt) can be more easily read using the following iki_read commands:
# iki_read fss-000a.txt +Q -w -WW character "'" "'" code '"' '"'
Each Object starts at the end of a line and white space to the left of the Object is not treated as an object.
White space separates an Object from the Content.
- An Object may be followed by a newline, in which case means that the Object has no Content.
+ An Object may be followed by a new line, in which case means that the Object has no Content.
If only printing white spaces or non-printable characters follow a valid Object, then that Object is considered to have no Content.
- An Object may be quoted to include whitespace where a single quote character:"'" (unicode:"U+0027"), a double quote character:'"' (unicode:"U+0022"), or a backtick character:'`' (unicode:"U+0060") are used to quote.
+ An Object may be quoted to include white space where a single quote character:"'" (unicode:"U+0027"), a double quote character:'"' (unicode:"U+0022"), or a backtick character:'`' (unicode:"U+0060") are used to quote.
+ An Object is only considered quoted if the first and last character of the Object are the same quote.
+ Any quote characters in a non-quoted Object are treated as part of the Object rather than as a quote.
+ An Object that properly starts with a quote character but is not properly terminated before the new line is reached is considered to be an Object terminating at the end of the line.
+ A quoted Objected terminating at the new line in this way preserves the quotes as part of the Object.
Content exists on the same line as the Object.
Content is represented as multiple Content columns.
Content columns are white space separated parts within the Content is terminated by the start of the Object.
Any number of Content columns may exist in the Content until the Object is reached.
+ Content follows the same quoting rules as an Object.
Key\:
- code:"\s" = White space, except newline.
- code:"\b" = Either white space or printable, except newline.
- code:"\q" = Non-white space or quoted white space (and non-whitespace) with no white space outside of the quotes.
- code:"\n" = Newline.
+ code:"\s" = White space, except new line.
+ code:"\b" = Either white space or printable, except new line.
+ code:"\q" = Non-white space or quoted white space (and non-white space) with no white space outside of the quotes.
+ code:"\n" = New line.
code:"*" = Zero or more occurrences.
code:"+" = One or more occurrences.
code:"()*" = Grouping that repeats zero or more times.
# fss-0002 iki-0000
#
-# license: open-standard-license-1.0
+# license open-standard-license-1.0
+# version 2023/07/14
#
# This file (assumed to be named fss-000b.txt) can be more easily read using the following iki_read commands:
# iki_read fss-000b.txt +Q -w -WW character "'" "'" code '"' '"'
# fss-0002 iki-0000
#
-# license: open-standard-license-1.0
+# license open-standard-license-1.0
+# version 2023/07/14
#
# This file (assumed to be named fss-000c.txt) can be more easily read using the following iki_read commands:
-# iki_read fss-000c.txt +Q -w -r FSS FSS -WWW character "'" "'" code '"' '"' emphasis '"' '"'
+# iki_read fss-000c.txt +Q -w -r FSS FSS -WWW character "'" "'" code '"' '"' italic '"' '"'
#
# To read the "Featureless Settings Specification: 000C - IKI Text" section of this file, use this command sequence:
-# fss_basic_list_read fss-000c.txt +Q -cn "Featureless Settings Specification: 000C - IKI Text" | iki_read +Q -w -r FSS FSS -WWW character "'" "'" code '"' '"' emphasis '"' '"'
+# fss_basic_list_read fss-000c.txt +Q -cn "Featureless Settings Specification: 000C - IKI Text" | iki_read +Q -w -r FSS FSS -WWW character "'" "'" code '"' '"' italic '"' '"'
#
Featureless Settings Specification: 000C - IKI Text:
# fss-0002 iki-0000
#
-# license: open-standard-license-1.0
+# license open-standard-license-1.0
+# version 2023/07/14
#
# This file (assumed to be named fss-000d.txt) can be more easily read using the following iki_read commands:
# iki_read fss-000d.txt +Q -w -r FSS FSS -WW character "'" "'" code '"' '"'
# fss-0002 iki-0000
#
-# license: open-standard-license-1.0
+# license open-standard-license-1.0
+# version 2024/03/12
#
# This file (assumed to be named fss-000e.txt) can be more easily read using the following iki_read commands:
-# iki_read fss-000e.txt +Q -w -rr EOF EOF FLL FLL -WWW character "'" "'" code '"' '"' emphasis '"' '"'
+# iki_read fss-000e.txt +Q -w -rr EOF EOF FLL FLL -WWW character "'" "'" code '"' '"' italic '"' '"'
#
# To read the "Featureless Settings Specification: 000e - Payload" section of this file, use this command sequence:
-# fss_basic_list_read fss-000e.txt +Q -cn "Featureless Settings Specification: 000e - Payload" | iki_read +Q -w -r EOF EOF FLL FLL -WWW character "'" "'" code '"' '"' emphasis '"' '"'
+# fss_basic_list_read fss-000e.txt +Q -cn "Featureless Settings Specification: 000e - Payload" | iki_read +Q -w -r EOF EOF FLL FLL -WWW character "'" "'" code '"' '"' italic '"' '"'
#
Featureless Settings Specification: 000e - Payload:
- This is a code:"FSS-0002 (Basic List)" with two required objects\:
+ This is a code:"FSS-0002 (Basic List)" with one required object and two optional objects\:
1) italic:"header".
- 2) italic:"payload".
+ 2) italic:"signature" (optional).
+ 3) italic:"payload" (optional).
The italic:"header"\:
- The italic:"header"'s Content is of type code:"FSS-0001 (Extended)".
- - The italic:"header" is recommended to have the Objects italic:"length", italic:"status", italic:"part", and italic:"total".
+ - The italic:"header" is recommended to have the Objects italic:"length", italic:"status", italic:"part", italic:"total", and italic:"type".
+ - The italic:"header" is suggested to have the Objects italic:"salt" and italic:"time".
- The recommended italic:"length" represents the size of the italic:"payload".
- The recommended italic:"part" represents a single part of a set of packets for when the data being transmitted is split across multiple payloads.
- - The recommended italic:"total" represents the total number of parts representing a complete data transmitted across multiple payloads.
- The recommended italic:"status" represents status codes (such as success or failure) and multiple.
+ - The recommended italic:"total" represents the total number of parts representing a complete data transmitted across multiple payloads.
+ - The recommended italic:"type" represents the type of information being transmitted.
+ - The suggested italic:"salt" represents random arbitrary data to further assist in making packets more unique during compression.
+ - The suggested italic:"time" represents some form of time unit, such as a time stamp.
- The Content for the recommended italic:"length" and italic:"status" are positive whole numbers (including zero) that may be in italic:"binary", italic:"octal", italic:"decimal", italic:"duodecimal", or italic:"hexidecimal" numerical format.
+ - There may be multiple italic:"header" Object and associated Content but the behavior is not defined by this standard.
+ - For guaranteed safe and compatible behavior, only a single italic:"header" Object and associated Content should be defined.
+
+ The italic:"signature"\:
+ - The italic:"signature"'s Content is of type code:"FSS-0001 (Extended)".
+ - This is an optional Object and Content set.
+ - This is intended to be used to specify signatures and checksums, such as GPG signatures or SHA256 checksums.
+ - This can be used to sign or provide checksums on italic:"header" and the italic:"payload".
+ - There may be multiple italic:"signature" Object and associated Content but the behavior is not defined by this standard.
+ - For guaranteed safe and compatible behavior, only a single italic:"signature" Object and associated Content should be defined.
The italic:"payload"\:
- The italic:"payload"'s Content may contain anything, including raw binary data.
- - The italic:"payload" is italic:"required" to be the last list Object in the file.
+ - The italic:"payload" is italic:"required" to be the last list Object in the file, if present.
- The italic:"payload" is recommended to have its size designated in some manner in the italic:"header" (such as with the recommended italic:"length").
- The italic:"payload" is terminated by the EOF:"End of File" character or by the recommended italic:"length" header.
- - The italic:"payload" may be empty (length may be zero), but the list Object italic:"payload" must still exist.
+ - The italic:"payload" may be empty (length may be zero).
- Nothing in the italic:"payload" may be considered a valid list Object by the outer code:"FSS-0002 (Basic List)" and therefore escaping is unnecessary (No further processing by the outer code:"FSS-0002 (Basic List)" is allowed at this point).
- Comments in the italic:"payload" are not considered comments and are instead considered part of the payload, as-is.
- Essentially, the italic:"payload" should be treated as binary data embedded in a text file.
+ - There may only be a single italic:"payload" Object and associated Content.
+ - Any italic:"payload" Object and associated Content that is not the last must not have its Content data treated as binary in the same way as the last italic:"payload" Object and associated Content.
The recommended italic:"length" italic:"header" Object used to designate the italic:"payload" size does not necessarily have to be defined in the italic:"header".
That is to say, if the italic:"payload" is expected to be of some pre-defined or static length then a length does not need to be provided in the italic:"header".
- The recommended italic:"status" italic:"header" Object may be a string, such as code:"F_none", or a positive whole number.
+ The recommended italic:"status" italic:"header" Object may be a string, such as code:"F_okay", 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 FLL:"Featureless Linux Library" status code.
- - The FLL:"Featureless Linux Library" status code is a 16-bit digit whose first two high-order bits represent italic:"error" and italic:"warning" ( representing italic:"signal").
+ - The FLL:"Featureless Linux Library" status code is a 16-bit digit whose first two high-order bits represent italic:"error" and italic:"warning" (representing italic:"signal").
- The FLL:"Featureless Linux Library" status code as a number is binary sensitive and may not be portable across binaries or systems.
- For best portability, consider using status as a name string to ensure cross-system or cross-binary compatibility.
status 296
length 30
+ signature\:
+ header sha1 e31b562d6ceba5e59dfaefbd7a37df6a20cad970
+ header type md5 cb5e100e5a9a3e7f6d1fd97512215282
+ payload sha256 fa4e17188867095856b8c5b7ff8f79e6f96c7a36621309473d09acc3fa0fe4d9
+
payload\:
The program is out of memory.
Outer Objects would be\:
1) header
- 2) payload
+ 2) signature
+ 3) payload
"header" Objects would be\:
1.1) type
1.2.1) 296
1.3.1) 30
+ "signature" Objects would be\:
+ 2.1) header
+ 2.2) header
+ 2.3) payload
+
+ "signature" Contents would be\:
+ 2.1.1) sha1 e31b562d6ceba5e59dfaefbd7a37df6a20cad970
+ 2.2.1) type md5 cb5e100e5a9a3e7f6d1fd97512215282
+ 2.3.1) sha256 fa4e17188867095856b8c5b7ff8f79e6f96c7a36621309473d09acc3fa0fe4d9
+
The payload would be\:
- 2) The program is out of memory.
+ 3) The program is out of memory.
# fss-0002 iki-0000
#
-# license: open-standard-license-1.0
+# license open-standard-license-1.0
+# version 2023/11/14
#
# This file (assumed to be named fss-000f.txt) can be more easily read using the following iki_read commands:
-# iki_read fss-000f.txt +Q -w -WWW character "'" "'" code '"' '"' emphasis '"' '"'
+# iki_read fss-000f.txt +Q -w -WWWW character "'" "'" code '"' '"' italic '"' '"' bold '"' '"'
#
# To read the "Featureless Settings Specification: 000f - Simple Packet" section of this file, use this command sequence:
-# fss_basic_list_read fss-000f.txt +Q -cn "Featureless Settings Specification: 000f - Simple Packet" | iki_read +Q -w -WWW character "'" "'" code '"' '"' emphasis '"' '"'
+# fss_basic_list_read fss-000f.txt +Q -cn "Featureless Settings Specification: 000f - Simple Packet" | iki_read +Q -w -WWWW character "'" "'" code '"' '"' italic '"' '"' bold '"' '"'
#
Featureless Settings Specification: 000f - Simple Packet:
This is a network packet format that contains code:"FSS-000e (Payload)" within it.
- The Simple Packet structure is described in blocks, of which are structured in bytes.
+ The bold:"Simple Packet" structure is described in blocks, of which are structured in bytes.
There are only three blocks in this format\:
1) Control Block.
2) Size Block.
3) Payload Block.
- 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 italic:"string" or italic:"binary" bit.
- The second bit following that bit represents the endianness bit.
+ The bold:"Control Block" is the first block in the packet and is considered endianless.
+ There exists only a single byte within the bold:"Control Block" (8-bits).
+ Regardless of the endianness of the packet, leftmost bit is always the endianness bit.
+ The second bit following that endianness bit represents the italic:"string" or italic:"binary" bit.
- The italic:"string" or italic:"binary" 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 italic:"string" packet or a italic:"binary" packet is referring to whether or not the Payload Block is in italic:"string" format or is in italic:"binary" format.
+ Control Block Structure\:
+ code:"
+ [ Endianness Bit ] [ String / Binary Bit ] [ Remaining 6 Bits (unused) ]
+ [ size: 1 bit ] [ size: 1 bit ] [ size: 6 bits ]
+ "
The endianness bit designates whether or not the packet is in big endian or little endian format.
A bit value of 0 designates that this packet is in little endian and a value of 1 designates that this packet is in big endian format.
- All binary data within this packet, following the Control Block, must respect this endianness bit (including the Size Block).
+ All italic:"binary" data within this packet, following the Control Block, must respect this endianness bit (including the bold:"Size Block").
+
+ The italic:"string" or italic:"binary" bit, a value of 0 designates that the packet is in string format and a value of 1 designates that the packet is in italic:"binary" format.
+ While the packet might be considered to be in string format, it is technically always in italic:"binary" format due to the bold:"Control Block" and bold:"Size Block".
+ This means that the italic:"binary" bit designating the packet as either a italic:"string" packet or a italic:"binary" packet is referring to whether or not the bold:"Payload Block" is in italic:"string" or italic:"binary" format.
+ The bold:"Payload Block" itself can contain italic:"binary" data even when in italic:"string" format as per code:"FSS-000e (Payload)".
The remaining bits are not defined by this standard and are expected to be 0.
Non-formal or local uses may utilize these remaining 6 bits as desired.
- However, there may be additional standards that expand upon this and utilize these remaining Control bits.
- Anything that utilizes these unused Control bits may add or remove additional Blocks after the Control Block as they see fit.
+ However, there may be additional standards that expand upon this and utilize these remaining bold:"Control" bits.
+ Anything that utilizes these unused bold:"Control" bits may add or remove additional bold:"Blocks" after the bold:"Control Block" as they see fit.
+ One possible use of the remaining bits is to designate a different variation of this bold:"Simple Packet" standard.
+
+ Size Block Structure\:
+ code:"
+ [ Size Block ]
+ [ size: 32 bits ]
+ "
- The Size Block is an unsigned 32-bit integer representing the size of the entire packet, including the Control Block and Size Block.
+ The bold:"Size Block" is an unsigned 32-bit integer representing the size of the entire packet in bytes, including the bold:"Control Block" and bold:"Size Block".
This size must exactly match the packet to be a valid packet.
The size represents number of bytes in the file.
- The Control Block is 1 byte long and the Size Block is 4 bytes long and so the maximum available size is (2^32)-6.
+ The bold:"Control Block" is 1 byte long and the bold:"Size Block" is 4 bytes long, therefore the maximum available size of the entire bold:"Simple Packet" structure is code:"(2^32)-6".
+
+ The reason behind why the size includes both the bold:"Control Block" and the bold:"Size Block" in addition to the bold:"Payload Block" is to avoid the need to perform any calculations for handling the size of the entire packet. The idea here is to optimize the packet for the network hardware transferring the packet. The network device should not need to read the contents of the packet in order to transfer the packet and therefore it only needs the number of the entire packet. Anything that wants to analyze this packet will have to incure the cost of calculating the bold:"Payload Block" size by performing the appropriate subtraction from the size represented in the bold:"Size Block".
+
+ Payload Block Structure\:
+ code:"
+ [ Payload Block ]
+ [ size: (2^32)-6 bytes ]
+ "
- The Payload Block is not defined by this standard of that that it exists and should be in code:"FSS-000e (Payload)" format.
- The code:"FSS-000e (Payload)" may be represented in either string format or binary format.
+ The bold:"Payload Block" is not defined by this standard other than that it exists and should be in code:"FSS-000e (Payload)" format.
+ The code:"FSS-000e (Payload)" may be represented in either italic:"string" format or italic:"binary" format.
The code:"FSS-000e (Payload)" may contain multiple italic:"header"(s) but may only contain a single italic:"payload".
- With this in mind, it is recommended that only a single italic:"header" be supported in the Payload Block.
+ With this in mind, it is recommended that only a single italic:"header" be supported in the bold:"Payload Block".
+ The italic:"payload" bold:"Content" may be in either a italic:"binary" or italic:"string" format regardless of the italic:"binary" bit in the bold:"Simple Packet" bold:"Header Block".
- See the file:"fss-000e.txt" specification file for details on the syntax rules for the Payload Block.
+ See the file:"fss-000e.txt" specification file for details on the syntax rules for the bold:"Payload Block".
Example Packet Structure\:
+ code:"
[ Control Block ] [ Size Block ] [ Payload Block ]
[ 0b10000000 ] [ 0b00000000 0b00000000 0b00000100 0b11010010 ] [ size: 1229 (1234 - 5) ]
+ "
--- /dev/null
+# fss-0002 iki-0000
+#
+# license open-standard-license-1.0
+# version 2023/07/16
+#
+# This file (assumed to be named fss-0010.txt) can be more easily read using the following iki_read commands:
+# iki_read fss-0010.txt +Q -w -r HTTP HTTP -WWWW character "'" "'" code '"' '"' italic '"' '"' bold '"' '"'
+#
+# To read the "Featureless Settings Specification: 0010 - Encrypted Simple Packet" section of this file, use this command sequence:
+# fss_basic_list_read fss-0010.txt +Q -cn "Featureless Settings Specification: 0010 - Encrypted Simple Packet" | iki_read +Q -w -r HTTP HTTP -WWWW character "'" "'" code '"' '"' italic '"' '"' bold '"' '"'
+#
+
+Featureless Settings Specification: 0010 - Encrypted Simple Packet:
+ This is an encrypted form of the network packet format of code:"FSS-000f (Simple Packet)".
+
+ The entire bold:"Payload Block" is undefined by this standard and is instead defined by the encryption algorithm or standard in use.
+ There is no rule, restriction, requirement, or definition on what encryption can be used.
+ The only rule is that the bold:"Payload Block" must be of a valid length as defined by the bold:"Size Block".
+
+ The general rule is that it can be assumed that the encrypted data in the bold:"Payload Block" would be of the code:"FSS-000e (Payload)" format. Being that the data is supposed to be encrypted, the actual contents of the bold:"Payload Block" is left undefined.
+
+ The code:"FSS-000f (Simple Packet)" that this standard modifies does not require the bold:"Payload Block" to be in code:"FSS-000e (Payload)" format.
+ This standard is even more lax than code:"FSS-000f (Simple Packet)" and drops replaces the words italic:"should be in" from the code:"FSS-000f (Simple Packet)" standard and replaces them with italic:"could be in".
+
+ This allows for the encrypted data to be anything the user wants, such as but not limited to HTTP:"Hypertext Transfer Protocol".
+
+ When it comes to security, any and all data can be useful. For best encryption, one may want to consider not using this format because of the bold:"Control Block" and the bold:"Size Block" are not encrypted.
+
+ The endianness bit should only be used to represent the bold:"Size Block" to avoid any security concerns. The endianness of the encrypted needs to be determined through some other means for any kind of reasonable security.
+
+ This standard uses the third bit from the left in the bold:"Control Block" to designate that this is an encrypted packet.
+
+ The 5 remaining control bits are left undefined.
+
+ See the file:"fss-000f.txt" specification file for details regarding the code:"FSS-000f (Simple Packet)" standard.
+
+ Example Packet Structure\:
+ code:"
+ [ Control Block ] [ Size Block ] [ Payload Block ]
+ [ 0b10100000 ] [ 0b00000000 0b00000000 0b00000100 0b11010010 ] [ size: 1229 (1234 - 5) ]
+ "
+
+ In the above example, take note that the third bit in the bold:"Control Block" is a 1.
# fss-0002 iki-0000
#
-# license: open-standard-license-1.0
+# license open-standard-license-1.0
+# version 2024/01/15
#
# This file (assumed to be named fss.txt) can be more easily read using the following iki_read commands:
-# iki_read fss.txt +Q -w -rrrrrrrr anti-KISS anti-KISS ASCII ASCII BOM BOM FSS FSS KISS KISS UTF-8 UTF-8 URL URL XML XML -WWW character "'" "'" code '"' '"' emphasis '"' '"'
+# iki_read fss.txt +Q -w -rrrrrrrr anti-KISS anti-KISS ASCII ASCII BOM BOM FSS FSS KISS KISS UTF-8 UTF-8 URL URL XML XML -WWW character "'" "'" code '"' '"' italic '"' '"'
#
# Individual sections in this file may be parsed using fss_basic_list_read command and then passed to the iki_read command.
# To read the "Featureless Settings Specifications" section of this file, use this command sequence:
-# fss_basic_list_read fss.txt +Q -cn "Featureless Settings Specifications" | iki_read +Q -w -rrrrrrrr anti-KISS anti-KISS ASCII ASCII BOM BOM FSS FSS KISS KISS UTF-8 UTF-8 URL URL XML XML -WWW character "'" "'" code '"' '"' emphasis '"' '"'
+# fss_basic_list_read fss.txt +Q -cn "Featureless Settings Specifications" | iki_read +Q -w -rrrrrrrr anti-KISS anti-KISS ASCII ASCII BOM BOM FSS FSS KISS KISS UTF-8 UTF-8 URL URL XML XML -WWW character "'" "'" code '"' '"' italic '"' '"'
#
Featureless Settings Specifications:
Unless otherwise specified, white space immediately both before (and after, outside of the terminating quote) an Object is not considered part of the Object.
This simplifies identifying the object, use quoted Objects to support white space before/after an object for styling purposes.
- Unless otherwise specified, quotes may only be a single quote character:"'" (unicode:"U+0027"), a double quote character:'"' (unicode:"U+0022"), or a backtick character:'`' (unicode:"U+0060") and only a backslash character:"\\" (unicode:"U+005C") may be used as a delimiter.
+ Unless otherwise specified, quotes may only be a single quote character:"'" (unicode:"U+0027"), a double quote character:'"' (unicode:"U+0022"), or a grave character:'`' (unicode:"U+0060") and only a backslash character:"\\" (unicode:"U+005C") may be used as a delimiter.
For example, code:"FSS-0000 (Basic)"\:
\"Object 1" has content starting at the '1', with an Object named '"Object'.
\\"Object 1" has content starting at the '1', with an Object named '\"Object'.
- fss-000d: Basic Rule
- fss-000e: Payload
- fss-000f: Simple Packet
+ - fss-0010: Encrypted Simple Packet
# fss-0002 iki-0000
#
-# license: open-standard-license-1.0
+# license open-standard-license-1.0
+# version 2023/07/14
#
# This file (assumed to be named iki-0000.txt) can be more easily read using the following iki_read commands:
# iki_read iki-0000.txt +Q -w -WW character "'" "'" code '"' '"'
# fss-0002 iki-0000
#
-# license: open-standard-license-1.0
+# license open-standard-license-1.0
+# version 2023/07/14
#
# This file (assumed to be named iki-0001.txt) can be more easily read using the following iki_read commands:
# iki_read iki-0001.txt +Q -w -rrr URI URI URL URL URN URN -WW character "'" "'" code '"' '"'
# fss-0002 iki-0000
#
-# license: open-standard-license-1.0
+# license open-standard-license-1.0
+# version 2023/07/14
#
# This file (assumed to be named iki-0002.txt) can be more easily read using the following iki_read commands:
-# iki_read iki-0002.txt +Q -w -WWW character "'" "'" code '"' '"' emphasis '"' '"'
+# iki_read iki-0002.txt +Q -w -WWW character "'" "'" code '"' '"' italic '"' '"'
#
# To read the "IKI Specification: 0002 - Simple Script" section of this file, use this command sequence:
-# fss_basic_list_read iki-0002.txt +Q -cn "IKI Specification: 0002 - Simple Script" | iki_read +Q -w -WWW character "'" "'" code '"' '"' emphasis '"' '"'
+# fss_basic_list_read iki-0002.txt +Q -cn "IKI Specification: 0002 - Simple Script" | iki_read +Q -w -WWW character "'" "'" code '"' '"' italic '"' '"'
#
IKI Specification: 0002 - Simple Script:
# fss-0002 iki-0000
#
-# license: open-standard-license-1.0
+# license open-standard-license-1.0
+# version 2024/01/15
#
# This file (assumed to be named iki.txt) can be more easily read using the following iki_read commands:
-# iki_read iki.txt +Q -w -WWW character "'" "'" code '"' '"' emphasis '"' '"'
+# iki_read iki.txt +Q -w -WWW character "'" "'" code '"' '"' italic '"' '"'
#
# To read the "IKI Specifications" section of this file, use this command sequence:
-# fss_basic_list_read iki.txt +Q -cn "IKI Specifications" | iki_read +Q -w -WWW character "'" "'" code '"' '"' emphasis '"' '"'
+# fss_basic_list_read iki.txt +Q -cn "IKI Specifications" | iki_read +Q -w -WWW character "'" "'" code '"' '"' italic '"' '"'
#
IKI Specifications:
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 italic:"Object" and is also considered the vocabulary.
The variable value is considered the italic:"Content".
+ The variable name may be wrapped by a single open bracket, character:"[" (unicode:"U+005B"), at the start and a single close bracket, character:"]" (unicode:"U+005D"), at the end.
+
+ The wrapping characters characters are not part of the variable name and must not be contained within a variable name.
+ The wrapping characters do not support escaping.
+ Both wrapping characters must be specified or neither.
The IKI format will use code:"iki-0000" to represent an IKI with no explicitly defined vocabulary.
Whereas code:"iki-0001" and beyond represent a specific IKI vocabulary.
- A potential IKI variable name starts on word (or character:"_", character:"-", character:"+") characters.
- White space and non-word (and non character:"_", character:"-", character:"+") character punctuations may not exist as part of the variable name.
+ A potential IKI variable name starts on word character or one of character:"_" (unicode:"U+005F"), character:"-" (unicode:"U+002D"), character:"+" (unicode:"U+002B"), character:"[" (unicode:"U+005B")).
+ White space, non-word, and non character:"_" (unicode:"U+005F"), character:"-" (unicode:"U+002D"), character:"+" (unicode:"U+002B")) character punctuations may not exist as part of the variable name.
The only Unicode dash-like characters allowed as a "dash" are those intended to connect, such as the Unicode hyphens (unicode:"U+2010" and unicode:"U+2011").
- Any potential IKI data must be escaped to make it treated as non-IKI data by prepending a backslash character:"\\" before the colon character:":" that is before the opening quote (single, double, or backtic). Potential IKI data refers to any valid IKI sequence without considering the closing single quote character:"'" (unicode:"U+0027"), closing double quote character:'"' (unicode:"U+0022"), or closing backtick character:'`' (unicode:"U+0060").
+ Any potential IKI data must be escaped to make it treated as non-IKI data by prepending a backslash character:"\\" before the colon character:":" that is before the opening quote (single, double, or backtic). Potential IKI data refers to any valid IKI sequence without considering the closing single quote character:"'" (unicode:"U+0027"), closing double quote character:'"' (unicode:"U+0022"), or closing grave character:'`' (unicode:"U+0060").
Unicode punctuation connector characters are supported just like character:"_", except when they connect outside the current line (such as unicode:"U+FE33" character:"︳").
Unicode invisible punctuations (such as invisible plus: unicode:"U+2064") are not considered a punctuations in this standard (because they a zero-width characters), therefore they are not to be considered a valid character:"_", character:"-", or character:"+" Unicode equivalents.
Key\:
code:"\o" = any printable word character, including character:"_", character:"-", character:"+" (and Unicode equivalents).
code:"\c" = any character, including white space and non-printing, and any delimited quote (used as the opening quote) or a any quote (undelimited) not used as the opening quote.
- code:"\q" = either a single quote character:"'" (unicode:"U+0027"), a double quote character:'"' (unicode:"U+0022"), or a backtick character:'`' (unicode:"U+0060").
+ code:"\q" = either a single quote character:"'" (unicode:"U+0027"), a double quote character:'"' (unicode:"U+0022"), or a grave character:'`' (unicode:"U+0060").
code:"\x" = any character.
code:"\W" = any non-word character, discluding character:"_", character:"-", character:"+" (and Unicode equivalents).
code:"\e" = an optional escape sequence of any number of backslashes, such as character:"\\".
+ code:"[" = a single conditionally optional open bracket, character:"[" (unicode:"U+005B").
+ code:"]" = a single conditionally optional close bracket, character:"]" (unicode:"U+005D").
code:"*" = zero or more occurrences.
code:"~" = one or more occurrences, or zero if at start of file.
code:"\x*\W~\*:*"
Structure\:
- code:"\o\e:\q\c\q"
+ code:"[\o\e:]\q\c\q"
After Structure\:
code:""
Example\:
code\:'# fss-000c iki-0000
- This is my sentence, anything can go here but sometimes I want to emphasis\:"emphasize some text".
+ This is my sentence, anything can go here but sometimes I want to italic\:"emphasize some text".
Other times I want to render a url such as this example url: url\:'http://www.example.com/url with space/'.
- There are no comments, except for maybe the FSS header (which would not resolve to any IKI syntax anyway).
+ There are no comments, except for maybe the FSS\:"Featureless Settings Specification" header (which would not resolve to any IKI syntax anyway).
Quotes may be included, such as: code\:"const char *string = \"My \\\"quoted\\\" C string.\";".
- The following emphasis\:"is escaped to not be treated as IKI data".'
+ The following italic\:"is escaped to not be treated as IKI data".'
+
+ The conditionally optional open and close brackets allow for putting a variable directly next to another word character like: [context]\:"strong"this[context]\:"strong".
Objects (also called vocabulary or variable name) would be\:
- 1) emphasis
- 2) url
- 3) code
+ 1) FSS
+ 2) italic
+ 3) url
+ 4) code
+ 5) context
+ 6) context
Contents (also called variable value) would be\:
- 1.1) emphasize some text
- 2.1) http://www.example.com/url with space/
- 3.1) const char *string = "My \"quoted\" C string.";
+ 1.1) Featureless Settings Specification
+ 2.1) emphasize some text
+ 3.1) http://www.example.com/url with space/
+ 4.1) const char *string = "My \"quoted\" C string.";
+ 5.1) strong
+ 6.1) strong
The following are core specifications (each with a common name associated with the specification number)\:
- fss-0000: Unrestricted
--- /dev/null
+Initial Draft - Currently Just Notes.
+
+Need an alternative to /etc/resolv.conf.
+
+Expand kevux specific practices that include "port" and "extension".
+Add "scheme".
+
+The "scheme" is a group or category in this case.
+Consider "inet" for classic internet.
+
+example resolution file (/etc/resolution):
+ # fss-????
+ inet:
+ namesever 208.67.222.222
+ extension kevux 127.0.0.2:123
+
+ kevux:
+ nameserver 127.0.0.2:123
+ extension turtle 127.0.0.3:456
+
+
+Can then do nslookup like this:
+ nslookup google.com
+ nslookup turtle.kevux
+ nslookup kevux://google.com
+ nslookup kevux://turtle.kevux
+ nslookup kevux://kevin.turtle
+
+Recommend reserving "http" and "https" for "inet" use in programs.
+
+Need to include additional files that can be created dynamically.
+Allow for user-specific checks.
+Allow for custom cached includes.
+Allow for custom use for things like VPN.
# fss-0002 iki-0000
#
-# license: open-standard-license-1.0
+# license open-standard-license-1.0
+# version 2023/12/16
#
# This file (assumed to be named time.txt) can be more easily read using the following iki_read commands:
# iki_read time.txt +Q -r UTC UTC -w -WW character "'" "'" code '"' '"'
The systems should expect 64-bit and larger bits would have to become common before something larger than 64-bit is the expected or assumed default.
Negative signs can be allowed but they must not prevent the full use of the 64-bit.
The implementation of how this is done is left to the implementer except that the signs are immediately to the left of the digit.
- For example code:"2022:-5" would be 5 units after the start of the year 2022.
+ For example code:"2022:-5" would be 5 units before the start of the year 2022.
Because the negative is allowed, so must the positive character (such as code:"2022:+5").
A positive value is the default interpretation when no sign is valid.
The unit of time called bold:"Time" is counted increments of a nanosecond, or 10^-9 seconds.
A unit of bold:"Time" is, therefore, equivalent to a nanosecond.
- The default year for bold:"Time" is the current year.
+ When the year is not specified, then the behavior of the year is not defined.
+ The year can be inferred, directly designated through some other means, understood, asserted, or simply unknown or otherwise unspecified.
+ The general recommendation is that the default year for bold:"Time" is the current year.
The unit of time called bold:"EpochTime" is counted increments of a second, or 10^-9 seconds.
A unit of bold:"EpochTime" is, therefore, equivalent to a second.
- The default year for bold:"EpochTime" is the bold:"UNIX Epoch", sometimes called bold:"Unix time".
+ The behavior when the year is not specified is the same as described for the bold:"Time".
+ The general recommendation is that the default year for bold:"EpochTime" is the bold:"UNIX Epoch", sometimes called bold:"Unix time".
The unit bold:"Time" has two technical forms and one common form, with the year and without the year.