]> Kevux Git Server - fll/log
fll
2 days agoBugfix: The IKI and EKI specifications have mistakes and needs clarifications.
Kevin Day [Tue, 19 Nov 2024 02:17:38 +0000 (20:17 -0600)]
Bugfix: The IKI and EKI specifications have mistakes and needs clarifications.

The wording of the specification is now greatly improved.
I noticed that some of the specification is actually incomplete.
I removed the incomplete sentence.

Make sure the FSS-000C specification is updated to add allowances for the EKI specification.

The example in both the IKI and the EKI specifications has several mistakes.
Use the grave character (U+0060) for the code to help avoid needing to escape the single quotes.
The IKI inside of a valid IKI Variable do not need to be escaped.
The example that directly states "is escaped to not be treated as IKI Variable" is incorrectly being documented as a valid IKI syntax (a significant mistake on my part).

Add explicit escaping examples to help make the escape behavior more explicit and clear.
I believe the current escaping logic in the IKI processing code is incorrect and will need to be updated and corrected following this commit.

I remembered this time to make the date based on UTC.
The version date in this commit is based on the current UTC Earth day.

3 days agoFeature: Add f_iki_write() along with appropriate unit tests.
Kevin Day [Mon, 18 Nov 2024 04:58:54 +0000 (22:58 -0600)]
Feature: Add f_iki_write() along with appropriate unit tests.

The `f_iki_write()` function is missing.

Add appropriate unit tests.

I also need to add tests with existing slashes.
I think I noticed a bug in the IKI read functions regarding slashes and I will investigate that before I add such tests here.

I will write the EKI write functions once I have done further review and fixed the likely IKI read bugs that I believe that I have observed.

3 days agoFeature: Implement EKI at level_0.
Kevin Day [Sun, 17 Nov 2024 23:22:29 +0000 (17:22 -0600)]
Feature: Implement EKI at level_0.

This provides the initial eki implementation and unit testing.

I had to choose between making an f_eki compliment of f_iki or appending EKI into f_iki.
I ended up choosing the latter because it is simpler and will require fewer cross-dependencies when using higher levels.
There is enough overlap in functionality to justify this.
These are almost completely identical specifications.

Add additional unit tests to catch more problems and implement these same unit tests in f_iki for consistency purposes.

This includes some code clean up.
The `wrapped` is changed to use `0x0` and `0x1` rather than `F_false` and `F_true`.
These are functionally identical but the code is more consistent when having `0x0`, `0x1`, and `0x2` instead of `F_false`, `F_true`, and `0x2`.

5 days agoUpdate: IKI and EKI specifications.
Kevin Day [Sat, 16 Nov 2024 05:30:06 +0000 (23:30 -0600)]
Update: IKI and EKI specifications.

Further clarify the specifications and simplify some of the logic.
The "Before Structure" is confusing in that it has a `\*:*`.

13 days agoCleanup: Print new line to test.sh script on install.
Kevin Day [Fri, 8 Nov 2024 05:15:39 +0000 (23:15 -0600)]
Cleanup: Print new line to test.sh script on install.

I noticed that the "All operations complete." runs into the "Installing individual project '..." line.
The `test.sh` now prints a new line before the "Installing..." message.

13 days agoUpdate: Add FSS Embedded List read depth tests and fix test script files.
Kevin Day [Fri, 8 Nov 2024 04:53:36 +0000 (22:53 -0600)]
Update: Add FSS Embedded List read depth tests and fix test script files.

Add tests for the FSS-0008 standard using depths.
I generated these test expectations.
I will have to slowly review these over time or fix them when I identify one is wrong.
I did do a test by building the same tests on both the 0.6 and 0.7 and found that they both pass.
I either have correct logic or I have consistently bad logic.

This adds a lot of FSS-0008 depth tests, however, the amount of tests needed is a lot more than what I have done here.
I think this large number is a good start.

Add special cases functions for the script tests.
I noticed that the failure code is incorrectly being set (the logic appears reversed).

The conditional argument used to determine which test being run in the test script is wrong.
Create a new variable called `test_set` and use that.
The `standard` variable can then be extracted from the `test_set`.

The test script incorrectly is missing the `-o` for the Object in some cases.

2 weeks agoUpdate: Implement the fss_embedded_read depth logic using recursion.
Kevin Day [Thu, 7 Nov 2024 02:20:38 +0000 (20:20 -0600)]
Update: Implement the fss_embedded_read depth logic using recursion.

I only did cursory review of the code and functionality.
I need to do more extended review to make sure there are no mistakes or logic flaws.
I need to write unit tests to identify these cases.

2 weeks agoCleanup: f_fss_item_t documentation.
Kevin Day [Thu, 7 Nov 2024 02:20:18 +0000 (20:20 -0600)]
Cleanup: f_fss_item_t documentation.

2 weeks agoFeature: Add EKI specification for EKI standard, a slightly updated IKI standard.
Kevin Day [Mon, 4 Nov 2024 03:11:25 +0000 (21:11 -0600)]
Feature: Add EKI specification for EKI standard, a slightly updated IKI standard.

Think of EKI as an extended IKI.
This introduces a single change (and its accompanying requirements).

Multiple IKI Vocabularies are now supported.
I have been using IKI in practice for a while now.
A need has risen up where I really want to be able to easily designate multiple IKI Vocabularies for a single IKI Variable.

This new format allows for me to do something more similar to HTML.
I have been using IKI as part of a templating process.
With EKI, unlike IKI, I can now make something both bold and italic.
Whereas with IKI, I would have to create a new type that combines them (like `bold_italic`).

I would then have to create two types if I wanted to be order agnostic, such as `bold_italic` and `italic_bold`.
This would get progressively worse if I added a third or more Vocabularies.

With EKI, I don't add any new IKI Variables and the order does not necessarily matter.

Example: `bold:italic:"My example"` (and `italic:bold:"My example"`).
This would have `bold` and `italic`.
The order should be preserved in case something does care about order.
The order can be ignored if something does not care about order.

2 weeks agoBugfix: Mistakes in the IKI specification.
Kevin Day [Mon, 4 Nov 2024 03:07:24 +0000 (21:07 -0600)]
Bugfix: Mistakes in the IKI specification.

Explicitly describe the colon `:` (`U+003A`).

The escape sequence is before the colon `:` (`U+003A`) and not the close bracked `]` (`U+005D`).

The example should be using `bold` and not `strong`.

The specification file names are incorrectly named (should be `iki` and not `fss`).

5 weeks agoCleanup: Remove unused variable.
Kevin Day [Sat, 12 Oct 2024 05:26:34 +0000 (00:26 -0500)]
Cleanup: Remove unused variable.

5 weeks agoBugfix: Empty Objects are preserving leading white space when in original mode for...
Kevin Day [Sat, 12 Oct 2024 04:21:55 +0000 (23:21 -0500)]
Bugfix: Empty Objects are preserving leading white space when in original mode for Payload.

The functionality already exists.
The test is failing.

Add the missing `fss_read_feature_flag_object_align_d` feature flag to the Payload.

Update the unit test to properly reflect this.

5 weeks agoRegression: Make sure FSS Payload Read compiles after recent changes.
Kevin Day [Sat, 12 Oct 2024 03:52:17 +0000 (22:52 -0500)]
Regression: Make sure FSS Payload Read compiles after recent changes.

This commit 3b8b0cba03096e764194db8bb889cd94a8d97f5b has a mistake.
I ran the `testfile` tests, which does not use the `main` programs for specific types.
The `testfile` tests only uses the `fss_read` program.

I forgot to check and compile the main programs.
Replace the non-existent functions for the Payload main program.

5 weeks agoCleanup: Simplify the naming of the process_normal functions.
Kevin Day [Sat, 12 Oct 2024 03:44:28 +0000 (22:44 -0500)]
Cleanup: Simplify the naming of the process_normal functions.

The `normal` is now removed from the `process_normal` functions.
The `process_normal` callback is also shortened to just `process`.

This is the follow up to the commit 171ba867137d29242be1083a129e97839ff88b8a.

5 weeks agoCleanup: Re-organize the process_normal files.
Kevin Day [Sat, 12 Oct 2024 03:38:01 +0000 (22:38 -0500)]
Cleanup: Re-organize the process_normal files.

I was originally thinking of having `process_X()` and such functions.
I created `process_normal()` functions as the standard functions to use.
I ended up not doing this but the `process_normal` use remained.

This is the first step into cleaning up the structure to a simpler naming system.
All this does is rename the files and anything using the files by name.
Changes to the functions will be in a follow up commit.

5 weeks agoBugfix: The FSS Payload Read is not treating the Payload as raw when printing.
Kevin Day [Sat, 12 Oct 2024 03:28:04 +0000 (22:28 -0500)]
Bugfix: The FSS Payload Read is not treating the Payload as raw when printing.

Special handling is needed to process the `payload` section.
The content functions all need to have the `at` position to determine this.
Update the callbacks to allow for this.

The function `fss_read_print_content_empty()` is defined and used but it is used only for the `print_object_end_empty()` callback.
Add a `print_content_empty()` callback to provide this.

These changes allow for removing redundant functions.

6 weeks agoUpdate: FSS Read tests, clean up syntax, and add additional range check.
Kevin Day [Sat, 5 Oct 2024 02:54:05 +0000 (21:54 -0500)]
Update: FSS Read tests, clean up syntax, and add additional range check.

Make sure the `at` is within range in the `contents` array.

Add missing NULL characters in the "payload" section of the runtime test expect files.

7 weeks agoBugfix: Empty Objects are preserving leading white space when in original mode.
Kevin Day [Thu, 3 Oct 2024 05:12:22 +0000 (00:12 -0500)]
Bugfix: Empty Objects are preserving leading white space when in original mode.

This (unfortunately) adds more logic to processing the case when `--original` is used and the Object is empty.

This makes me wonder if I have to implement the opener range.
I was not happy about adding the `close` for memory and space reasons.
Adding this would introduce more inefficiencies.

I may end up having to add support for processing different types of structures if I want to support the simple Object and Content without the `open` and `close` positions as well as with those positions.
The focus in this commit is only on fixing the printing and does not introduce any of the behavior that I described here.

7 weeks agoUpdate: The bootstrap example script now handles building using fake.
Kevin Day [Tue, 1 Oct 2024 02:05:21 +0000 (21:05 -0500)]
Update: The bootstrap example script now handles building using fake.

The bootstrap example script is generally for using bootstrap scripts.

I have ended up using this for regular building because it is simple and already written.
The FLL 0.7 development now has build settings for some programs that do not build using the bootstrap without additional parameters.

Add support for the bootstrap script to use `fake` directly if it exists in the PATH for these particular programs.

8 weeks agoCleanup: Fix position of high ports to be consistent.
Kevin Day [Wed, 25 Sep 2024 00:25:40 +0000 (19:25 -0500)]
Cleanup: Fix position of high ports to be consistent.

8 weeks agoFeature: Fake settings specification updates and enable simple golang support.
Kevin Day [Mon, 23 Sep 2024 02:08:03 +0000 (21:08 -0500)]
Feature: Fake settings specification updates and enable simple golang support.

The Featureless Make is intended to not be language specific since its inception.
I did not know how the languages were to work, so I mostly built this to guarantee C/C++ support.

I found that the `golang` supports some command line based compilation.
This adds support for `golang` in the most basic way.
This support is not well tested.
An `example_go` project is added.
I have only tested the basic build and I have not done anything advanced.

This relaxes some of the requirements.
The `bash` is changed to `shell` to encourage more types of scripts.
The `custom` is added and used as a fallback if `build_language_path` is not used.

I found that there needs to be some additional settings in the `settings` specification.
This updates the specification and adds:
  - build_compiler_arguments
  - build_compiler_arguments_shared
  - build_compiler_arguments_static
  - build_compiler_arguments_library
  - build_compiler_arguments_library_shared
  - build_compiler_arguments_library_static
  - build_compiler_arguments_object
  - build_compiler_arguments_object_shared
  - build_compiler_arguments_object_static
  - build_compiler_arguments_program
  - build_compiler_arguments_program_shared
  - build_compiler_arguments_program_static
  - build_language_path

This also fixes some mistakes in the language of the specification.

2 months agoFeature: The firewall program should have better IPv4 vs IPv6 support.
Kevin Day [Thu, 19 Sep 2024 03:52:32 +0000 (22:52 -0500)]
Feature: The firewall program should have better IPv4 vs IPv6 support.

Add two parameters to explicitly chose between IPv4 and IPv6 (`-4` and `-6`, respectively).
The default behavior is to display both.
This default `firewall show` will now therefore show both IPv4 and IPv6.

Add `(IPv4)` and `(IPv6)` to the output from the `firewall show` command.

When the firewall rules set the tool to either IPv4 or IPv6 but the command line is designating that either IPv4 or IPv6 is specifically enabled or not, then do operate on the tools that are not enabled.
Therefore if the firewall rules have an IPv6 tool (as is the case in the example/default settings for `icmpv6`) and something like `firewall start -4` is used then those IPv6 ruls are ignored.

2 months agoUpdate: Add missing fll_program function for short option, fix some parameters, and...
Kevin Day [Thu, 19 Sep 2024 03:50:59 +0000 (22:50 -0500)]
Update: Add missing fll_program function for short option, fix some parameters, and fix ordering of a function.

The `fll_program_print_help_option_short()` function is missing, should be defined, and now is defined.

The `description` parameters for these functions should have the `const` qualifier.

The `fll_program_print_help_option_standard()` implementation is not in the correct alphabetical position.

2 months agoCleanup: Minor clarification in console function comment.
Kevin Day [Thu, 19 Sep 2024 03:16:35 +0000 (22:16 -0500)]
Cleanup: Minor clarification in console function comment.

2 months agoUpdate: Relocate firewall rules to under the /etc/network/firewall/.
Kevin Day [Tue, 17 Sep 2024 02:19:41 +0000 (21:19 -0500)]
Update: Relocate firewall rules to under the /etc/network/firewall/.

This should help isolate all of the firewall rules from other network related tasks.

2 months agoUpdate: Refresh firewall iptables rules and relax some of the defaults.
Kevin Day [Tue, 17 Sep 2024 02:11:23 +0000 (21:11 -0500)]
Update: Refresh firewall iptables rules and relax some of the defaults.

Relax some of the defaults so that there will be less immediate failure.
Provide a lot of the previous `DROP` statements for easy re-assignment by just uncommenting.

Add some specific wrapping tools around IPv6 related rules.

2 months agoUpdate: Improve robustness of the fll_control_group_prepare() function.
Kevin Day [Wed, 11 Sep 2024 05:21:13 +0000 (00:21 -0500)]
Update: Improve robustness of the fll_control_group_prepare() function.

Add additional existence checks before attempting to create a directory within the cgroup path.

2 months agoBugfix: Get the FSS Embedded List Read working as expected based on runtime tests.
Kevin Day [Sat, 7 Sep 2024 00:08:42 +0000 (19:08 -0500)]
Bugfix: Get the FSS Embedded List Read working as expected based on runtime tests.

A good portion of clean ups and design changes to address special cases or anything overlooked.
The runtime tests now pass as expected.

This does not address the currently incomplete depth processing of the FSS Embedded List Read.

There are still some situations that need to be fixed.

2 months agoBugfix: Bad handling of comments due to not re-assigning line start and fix mispellin...
Kevin Day [Thu, 5 Sep 2024 02:41:04 +0000 (21:41 -0500)]
Bugfix: Bad handling of comments due to not re-assigning line start and fix mispelling in tests.

The `valud` should be `valid`.

2 months agoUpdate: The stand alone builds to handle the added use of f_utf_buffer_decrement().
Kevin Day [Wed, 4 Sep 2024 23:56:22 +0000 (18:56 -0500)]
Update: The stand alone builds to handle the added use of f_utf_buffer_decrement().

2 months agoBugfix: Incorrect parameter added to macro_fl_fss_data_embedded_list_t_initialize_1().
Kevin Day [Wed, 4 Sep 2024 23:50:36 +0000 (18:50 -0500)]
Bugfix: Incorrect parameter added to macro_fl_fss_data_embedded_list_t_initialize_1().

2 months agoBugfix: The delimited FSS lists are not properly setting the stop point.
Kevin Day [Wed, 4 Sep 2024 23:47:23 +0000 (18:47 -0500)]
Bugfix: The delimited FSS lists are not properly setting the stop point.

This uses existing variables and shuffles the data around rather than defining a new variable.

2 months agoUpdate: Recent changes to the FSS implementations did not account for the unit tests.
Kevin Day [Wed, 4 Sep 2024 23:31:38 +0000 (18:31 -0500)]
Update: Recent changes to the FSS implementations did not account for the unit tests.

2 months agoFeature: Add support for building under Android.
Kevin Day [Wed, 4 Sep 2024 23:29:17 +0000 (18:29 -0500)]
Feature: Add support for building under Android.

This is a forward port of the changes from the 0.6 branch without any testing.

This is not well tested or well supported.
This does have limited testing under the Termux project environment using CLang.

Add a new configuration option to build and run the project in an Android environment.

The test system had problems with text relocations but then required PIE.
This disables the relro in some spots (libraries) while enabling it in others (programs/executables).

Disable a lot of the functions that are not available or supported.

I have observed several warnings about `DT_FLAGS_1=0x41` being unsupported flag.
That is not a very helpful warning.
I have no idea what `0x41` is.
This causes a problem where the output of programs displays these warnings.
This can break programs that require I/O formatting and processing.

This has been tested to build using `bootstrap.sh` and then using `fake`.
Example build and install process:
# mkdir ~/software
# cd fll-0.6.X/
# ./bootstrap.sh build -m monolithic -m thread -m clang -m android && ./install.sh ~/software
# cd ../fake-0.6.X/
# ./bootstrap.sh build -m monolithic -m thread -m clang -m android -w ~/software && ./install.sh ~/software
# export LD_LIBRARY_PATH=~/software/libraries/shared
# export PATH=~/software/programs/shared
# cd ../byte_dump-0.6.X/
# fake -m monolithic -m thread -m clang -m android -w ~/software && ./install.sh ~/software

Example execution of `byte_dump` of `bash` program (this is a large dump).
# byte_dump -wt 7 $(type -p bash)

2 months agoBugfix: Incorrect disabled defines and missing disable wrapping defines.
Kevin Day [Wed, 4 Sep 2024 22:58:45 +0000 (17:58 -0500)]
Bugfix: Incorrect disabled defines and missing disable wrapping defines.

The `_di_f_fss_complete_e_` is required by multiple programs.

The `private_fl_fss_basic_write_object_trim()` is called by `private_fl_fss_basic_write()`.
This must now expose multiple types.

2 months agoBugfix: Replace index() with strchr().
Kevin Day [Wed, 4 Sep 2024 03:21:15 +0000 (22:21 -0500)]
Bugfix: Replace index() with strchr().

The `index()` function is deprecated.
Use the `strchr()` function instead.

2 months agoUpdate: Simplify and centralize reporting for FSS read errors.
Kevin Day [Wed, 4 Sep 2024 01:17:50 +0000 (20:17 -0500)]
Update: Simplify and centralize reporting for FSS read errors.

Use a single function to handle the common cases.

This is an improvement upon commit a9b37a3f8fd99e45feff22779e8d375314cbb925.

2 months agoUpdate: Improve error reporting resulting from unsupported file formats.
Kevin Day [Tue, 3 Sep 2024 03:59:59 +0000 (22:59 -0500)]
Update: Improve error reporting resulting from unsupported file formats.

The file is either an unsupported format or has syntax errors.
Provide a more human-friendly error message rather than the default catch-all error with a status code.

2 months agoUpdate: Implement Object alignment and trim expanding in FSS Read programs and restru...
Kevin Day [Mon, 2 Sep 2024 20:17:19 +0000 (15:17 -0500)]
Update: Implement Object alignment and trim expanding in FSS Read programs and restructure the program flags.

The program flags for the standard-specific functionality vs the program arguments were previously stored in the same bit space.
This breaks the two parts into the main program flags and the "feature" flags.

Implement support for new functionality where the Object structure can be optionally preserved.

Implement support for new functionality where the tabbing of the Object can be preserved, even when trimmed.
This is a step towards a "pretty print" mode that is more or less an "original print" mode.
The tabbing structure is now well preserved for standards like FSS Extended List (FSS-0003).

The Object alignment can determined from the Object close.
Use the `closes` structure to identify how the Object end is tabbed.
Then use that tabbing for the Object.
When trimming is enabled, still apply that tabbing.
This is done only for standards where such behavior makes sense.

The original print is now better preserved.
Printing an Object can now print the before and after Object characters (usually white space).
The trimming and original print may be used together to produce the results where the is no white space before or after the Object but everything else from the original source is preserved.
This combination of trim and original essentially ensure that the old behavior can be still produced.

I would further note that the processing of the FSS Embedded List (FSS-0008) Objects is not recursively performed.
No trimming or anything like that is applied at this time.
Only the selected depth is recursed into such that the Object and Content are processed.
I made this decision to keep the design as simple as possible.
Should I get the motivation and the time, then I may at some point in the future decided to recursively process and format all of the embedded structures.

I happened to notice duplicate and unused flags.
These are now removed.

Update the runtime tests accordingly.

Add new runtime tests to test the updated behavior.
I used the 0.6 and 0.7 to test these and I compared the results.
There is a discrepancy in some of 0.6 and 0.7 tests.
I will have to follow this commit with additional test fixes as necessary pending further review.

2 months agoUpdate: The FSS Lists (FSS-0002, FSS-0003, FSS-0008, etc..) to match recent specifica...
Kevin Day [Sat, 31 Aug 2024 23:43:50 +0000 (18:43 -0500)]
Update: The FSS Lists (FSS-0002, FSS-0003, FSS-0008, etc..) to match recent specification changes and reduce redundancy.

Update the Object read functions to be in compliance with the latest specification changes.
Review and update the code, fixing any observed problems and perform some clean ups.

I noticed that several of the list functions for Object read are almost identical.
Move this logic into into a shared private function to reduce repeated code.

The runtime tests are also updated.

I still need to review the Content read functions.
I probably may be able to also find similar, if not identical, code for the list write functions as well.
I will review the code and create a private function similar to what is done here if deemed possible and reasonable.

2 months agoCleanup: Fix bad grammar in function documentation comments.
Kevin Day [Sat, 31 Aug 2024 23:42:52 +0000 (18:42 -0500)]
Cleanup: Fix bad grammar in function documentation comments.

2 months agoCleanup: The testfile for the FSS Read programs.
Kevin Day [Sat, 31 Aug 2024 00:47:18 +0000 (19:47 -0500)]
Cleanup: The testfile for the FSS Read programs.

2 months agoUpdate: The FSS Basic List (FSS-0002) to match recent specification changes regading...
Kevin Day [Fri, 30 Aug 2024 05:06:32 +0000 (00:06 -0500)]
Update: The FSS Basic List (FSS-0002) to match recent specification changes regading Objects.

The runtime tests are also updated.
The FSS Payload (FSS-000E) tests are also updated as they use the FSS-0002 code.

2 months agoUpdate: The FSS-0002 and FSS-0003 standards, modifying the space after Object rules.
Kevin Day [Fri, 30 Aug 2024 02:23:17 +0000 (21:23 -0500)]
Update: The FSS-0002 and FSS-0003 standards, modifying the space after Object rules.

My previous changes did not alter the behavior of the standard.
I spent some time considering this and decied that I should make this change.

The new behavior is that white spaces after the last printable character (aka "graph" character) in a valid Object is no longer considered part of the Object.
I decided to do this because supporting the space after the Object but not the space before the Object is awkward and also makes Object name matching more difficult.
One of the pillars of this project is "human first".
Doing this change makes it easier for a human to use by relaxing the exactness of a match when it comes to white spaces before or after a valid Object.

The specifications specifically include optionally supporting untrimmed Objects that include the white space before or after the Object to help accommodate the previous behavior.

I do not want to add quote support in the Object names here to keep it simple.
This new behavior seems to be a good compromise.

2 months agoUpdate: Clarify the FSS-0002 and FSS-0003 standards regarding the white space before...
Kevin Day [Thu, 29 Aug 2024 03:25:33 +0000 (22:25 -0500)]
Update: Clarify the FSS-0002 and FSS-0003 standards regarding the white space before and after a valid Object.

I updated my 0.7 code and back ported some of the generated runtime tests.
I discovered problems and realized that the standard could be more clear according to the spaces before and after the Object.

This does not change the FSS-0002 and FSS-0003 standards in any functional way.
The simply clarifies the standard regarding the spaces to make it more clear and reduce the chances for a mistake.

2 months agoProgress: Continue working on getting FSS Embedded Read working.
Kevin Day [Wed, 28 Aug 2024 03:26:32 +0000 (22:26 -0500)]
Progress: Continue working on getting FSS Embedded Read working.

The runtime tests currently pass but I am not done with the changes.

Fix several problems with the Embedded List processing from fl_fss.
- The comments are now being handled correctly along with the `close`.

I noticed that the `--columns` could be opposing `--object` and `--content`.
This would make more sense as the combination of `--object` is meaningless.
I could also just throw a parameter error the `--columns` cannot be used with `--object`.
Then I could update the runtime tests to make more sense regarding the combination of `--object` and `--columns`.

2 months agoProgress: Continue working on getting FSS Embedded Read working and tweak allocations.
Kevin Day [Tue, 27 Aug 2024 04:22:59 +0000 (23:22 -0500)]
Progress: Continue working on getting FSS Embedded Read working and tweak allocations.

The extended list needs a separate parameter and make the `line_start` match the `newline_last` at the start of the function.
Record `newline_last` and `line_start` whenever possible once a new line is found.
Use the variable `comment_start` to make the purpose more clear.

The `closes` array should be initialized before calling `fl_fss_extended_list_content_read()`.
Make sure the `closes` array value is reset when the Content is not found.
Make sure the `closes` array used length is incremented.

The FSS Read functions now handle printing the close strings.
I am now considering adding an `open` variable.
Doing this would then merit moving most things into the `f_fss_item_t`.

Tweak some of the allocations in other FSS functions for allocations that need explicit sizes (`f_memory_array_increase_by()`).

2 months agoProgress: Continue working on getting FSS Embedded Read working and also add Object...
Kevin Day [Sun, 25 Aug 2024 22:07:47 +0000 (17:07 -0500)]
Progress: Continue working on getting FSS Embedded Read working and also add Object close support.

This starts the work for the handling of the depths.
I noticed the tests now pass despite the depths being incomplete.
Looks like I need to add some runtime tests for depths for both 0.6 and 0.7.

This brings in the runtime test expects from the 0.6 branch.

I have some brain storming to do so that I can determine how I want to handle the depth processing logic.

I decided that now is a good time to add support for the Object close.
This is to address the problem where I cannot print the original Object close for FSS Extended List and FSS Embedded List.
The reason being that the necessary data is not actually recorded.
I have not yet updated the unit tests.
I have not yet did any actual tests to confirm that this works.
I have not yet actually utilized this in the FSS Extended List Read and FSS Embedded List Read programs.
I have only made the low level changes and made sure everything compiles.

2 months agoProgress: Continue working on getting FSS Embedded Read working.
Kevin Day [Sat, 24 Aug 2024 03:18:33 +0000 (22:18 -0500)]
Progress: Continue working on getting FSS Embedded Read working.

I noticed that I forgot that I had intentionally set the size of the static array to 777 to try and trigger any problems.
I forgot about that and committed this in my previous progress commit.
This is now restored to a valid value.

This adds additional checks to the quotes and delimits arrays.
These are used in such a way that they much match the length of the Objects and Contents.
The current, incomplete, design with the FSS Embedded Read is copying over the Objects and Contents but has not yet properly set the delimits and quotes.
This exposes that there needs to be explicit checks between the loosely associated Objects and Contents with the delimits and quotes.

I noticed that the `--object` should always result in showing things even if the `--select` number is infinitely large but does not.
This is now fixed so that it always does this.
The runtime tests are updated as appropriate.

3 months agoProgress: Begin working on getting FSS Embedded Read working.
Kevin Day [Thu, 22 Aug 2024 04:15:13 +0000 (23:15 -0500)]
Progress: Begin working on getting FSS Embedded Read working.

The FSS Embedded Read is not working because nothing is actually implemented.

The problem is that the Nest structure is different from the standard Object and Content structure.
Only a single depth is to be processed.
This means that I can construct an Objects and Contents from the Nest based on the depth and pass that to the existing functions.

The initial work has been started but it is very much incomplete.
There is a lot of work to do in this regard.

3 months agoUpdate: The runtime test files for FSS Embedded Read.
Kevin Day [Wed, 21 Aug 2024 01:10:55 +0000 (20:10 -0500)]
Update: The runtime test files for FSS Embedded Read.

Update these based on the 0.6 branch that currently works.
I neglected this format during the transition and the FSS Embedded Read is currently non-functional.
The runtime tests should fail in most cases.

I will follow this change with the appropriate fixes once I identify and solve the problems.

3 months agoBugfix: The FSS Embedded Read is incorrectly handling empty Content.
Kevin Day [Tue, 20 Aug 2024 23:58:06 +0000 (18:58 -0500)]
Bugfix: The FSS Embedded Read is incorrectly handling empty Content.

The empty Content is being incorrectly handled as noted in the 0.6 commit 93a70bece8ecdb30801744e492fec8bb2601d2a4.

The '}' gets printed on empty Content, which is invalid.
Set the range to out of range when the start position is the line start.
This should only happen for empty Content because valid Content is only closed when '}' is on its own line.

3 months agoBugfix: Mistake in verify.sh script for variable declaration.
Kevin Day [Tue, 20 Aug 2024 12:01:05 +0000 (07:01 -0500)]
Bugfix: Mistake in verify.sh script for variable declaration.

3 months agoUpdate: FSS Read unit tests to handle trailing space when dealing with --line.
Kevin Day [Tue, 20 Aug 2024 03:00:46 +0000 (22:00 -0500)]
Update: FSS Read unit tests to handle trailing space when dealing with --line.

The tests now handle the `--line` parameter such that a trailing space is not printed.
The code is now updated to handle this behavior.

3 months agoCleanup: Relocate depth increment to inline of the if condition.
Kevin Day [Mon, 19 Aug 2024 03:35:29 +0000 (22:35 -0500)]
Cleanup: Relocate depth increment to inline of the if condition.

3 months agoCleanup: Use consistent ordering in fss_read_cache_t.
Kevin Day [Mon, 19 Aug 2024 03:22:23 +0000 (22:22 -0500)]
Cleanup: Use consistent ordering in fss_read_cache_t.

3 months agoUpdate: Unit tests for FSS Embedded Read.
Kevin Day [Mon, 19 Aug 2024 03:21:29 +0000 (22:21 -0500)]
Update: Unit tests for FSS Embedded Read.

I forgot to update the unit tests in commit 104ed789a759a344146431ded54cde9fefb063ec.

3 months agoUpdate: FSS Embedded Read memory allocation logic.
Kevin Day [Mon, 19 Aug 2024 02:41:00 +0000 (21:41 -0500)]
Update: FSS Embedded Read memory allocation logic.

Move the internally managed allocation into externally managed allocation.
This allows for better memory control and optimization by the caller.

The use of `f_memory_array_increase()` is incorrect in several cases.
Switch to `f_memory_array_resize()`.
Add 2 when resizing to account for the depth position but also an additional element as a minor memory allocation optimization.

Get rid of headers that should not be included.

This does not address any of the other problems with the FSS Embedded Read functions.

3 months agoUpdate: Function documentation for f_memory_array_increase().
Kevin Day [Mon, 19 Aug 2024 02:38:26 +0000 (21:38 -0500)]
Update: Function documentation for f_memory_array_increase().

The documentation comment needs to communicate the current behavior of (used + amount <= size).

I may end up reviewing this behavior in the future.

3 months agoUpdate: Add additional runtime tests for FSS Read programs for the --original parameter.
Kevin Day [Sun, 18 Aug 2024 15:03:42 +0000 (10:03 -0500)]
Update: Add additional runtime tests for FSS Read programs for the --original parameter.

3 months agoUpdate: Add additional signal checks in loops.
Kevin Day [Sun, 18 Aug 2024 04:56:18 +0000 (23:56 -0500)]
Update: Add additional signal checks in loops.

3 months agoUpdate: Improve FSS Read function correctness based on runtime unit tests.
Kevin Day [Sun, 18 Aug 2024 01:09:30 +0000 (20:09 -0500)]
Update: Improve FSS Read function correctness based on runtime unit tests.

This improves the runtime unit tests to be more correct as per the standard.
The standard allows for spaces after an Object.

There is no reason to print these extra spaces.
Add additional logic to better handle this behavior.

The FSS Basic Read and FSS Extended Read should not print this extra space after the Object when there is no Content to be printed.

The pipe mode should wrap empty Content with the start and end pipe characters.
This pope mode is still not well tested (or reviewed) and will eventually need further review and runtime tests.

The handling of `--empty` should only apply to when there is empty Content and not when there is no Content at all.

This adds new callback and flags to better handle these situations.

Update the `verify.sh` script (and associated `testfile`) to print the test name.
Update the `generate.sh` and `verify.sh` scripts to safely pass arguments with spaces using `"$@"`.

3 months agoRegression: The UTF-8 program should be printing a new line when not in quiet mode.
Kevin Day [Wed, 14 Aug 2024 01:31:13 +0000 (20:31 -0500)]
Regression: The UTF-8 program should be printing a new line when not in quiet mode.

3 months agoBugfix: FSS Read functions are not handling the --columns and --empty properly.
Kevin Day [Mon, 12 Aug 2024 02:51:40 +0000 (21:51 -0500)]
Bugfix: FSS Read functions are not handling the --columns and --empty properly.

When the `--columns` is specified, then the max columns should only be calculated if the used array size is greater than zero.
In addition, if the `--empty` is not specified, then the columns must also have non-empty Content.

For single Content standards, such as with `fss_basic_read`, the max was always being set to one even if the `contents.used` is zero.

This change will need to be back ported.

This includes updates to the runtime tests.
I still need to do some in-depth review.
I overlooked a situation during the release of the 0.6.11 branch regarding the `--empty` or lack thereof.
I will likely have to fix a bug and update all of the runtime tests in the 0.6.11 for the FSS Read programs.

3 months agoBugfix: Incorrect runtime tests for FSS Read programs.
Kevin Day [Sun, 11 Aug 2024 21:45:02 +0000 (16:45 -0500)]
Bugfix: Incorrect runtime tests for FSS Read programs.

I mass updated the FSS Read tests in the 0.7 branch.
I chose the quick route of just using the program to generate the tests.
This requires that I trust the results to be correct.
I figured I would eventually go through each one and make sure that they are correct at a later time.
It is a development branch, after all.

However, back porting these tests to the stable 0.6 branch revealed some bugs.
I reviewed the failing tests and files and I confirmed that the 0.6 branch is getting correct results and that the tests are incorrect.
The runtime tests in the 0.7 development branches will have to be updated and the bugs there will have to be fixed.

3 months agoUpdate: Add comments in some of the fss_read runtime tests.
Kevin Day [Sat, 10 Aug 2024 03:54:14 +0000 (22:54 -0500)]
Update: Add comments in some of the fss_read runtime tests.

These comments should not end up in the results and so only the source files are changed.

This should help increase the chances of catching an fss_read bug for the particular standard.
The specific comments added would otherwise be valid Object and Content data except for being commented out.

3 months agoSecurity: Missing range checks on comment processing.
Kevin Day [Tue, 6 Aug 2024 03:12:48 +0000 (22:12 -0500)]
Security: Missing range checks on comment processing.

The fss_payload_read such as the runtime test is wrong:
  # fss_payload_read -ocn payload level_3/fss_read/tests/runtime/fss_000e/source/test-0002-mixed.fss -t

The output is 1 but should instead be 4.
  # fss_payload_read -ocn payload level_3/fss_read/tests/runtime/fss_000e/source/test-0002-mixed.fss | wc -l

Investigating this problem revealed that the comment handling code is failing to perform a range check.
The overflow is causing the stop range to point to some random memory address which is almost always larger than the file.
This results in the count being wrong.

This bug is a security concern.
Add the range check in all places where this range check is missing for the comments.

Add additional runtime tests to reflect the condition that exposed this issue.
There is now a "payload" test for all runtime tests.

Update the testfile to make manually generating and verifying the runtime tests easier.
The "generate" and "verify" fakefile operations could not be directly called due needing additional data setup.
Also expose the "test-" setting as a parameter to make changing it easier.

3 months agoCleanup: Remove unused and commented out callback in fss_read.
Kevin Day [Tue, 6 Aug 2024 02:59:22 +0000 (21:59 -0500)]
Cleanup: Remove unused and commented out callback in fss_read.

3 months agoBugfix: FSS Payload Read is not counting the Content when counting the total.
Kevin Day [Tue, 6 Aug 2024 02:56:46 +0000 (21:56 -0500)]
Bugfix: FSS Payload Read is not counting the Content when counting the total.

The fss_payload_read is returning the wrong results.
The "fss_read -A payload" is returning the correct results.
An incorrect flag is being specified.

3 months agoUpdate: Apply the not operator logic to avoid needing to literally specify it.
Kevin Day [Tue, 6 Aug 2024 02:00:29 +0000 (21:00 -0500)]
Update: Apply the not operator logic to avoid needing to literally specify it.

3 months agoRegression: IPv6 detection is failing after isdigit() and similar changes.
Kevin Day [Tue, 6 Aug 2024 01:48:57 +0000 (20:48 -0500)]
Regression: IPv6 detection is failing after isdigit() and similar changes.

The commit 50788517d37ece42f32f6906078d2d59330ec3c9 missed a not operator for the IPv6 address.
The unit tests revealed the problem.

This adds the missing exclamation character '!'.

I also overlooked some cases where I could perform the same optimization used for the referenced commit in some places.
Also use the literal ASCII characters rather than the strings.
The ASCII codes are required and expected and substitution of the characters for the algorithm do not make sense here.
These are characters rather than strings.

3 months agoBugfix: Incorrect settings in the fss_read runtime tests.
Kevin Day [Mon, 5 Aug 2024 01:14:19 +0000 (20:14 -0500)]
Bugfix: Incorrect settings in the fss_read runtime tests.

Several of the tests are "object" tests but use "content" data.
Some tests are both "object" and "content" tests but do not use both.
This is now updated, however there are too many tests to update and fix.
The output is simply re-generated, which to forces a success (even if they should fail).
I need to come back at a later time and review the output.

There are some known problems such as:
# fss_basic_list_read -oc -n hi -t level_3/fss_read/tests/runtime/fss_000e/source/test-0002-mixed.fss
Which results in a wrong count.

# fss_basic_list_read -c -n hi -t level_3/fss_read/tests/runtime/fss_000e/source/test-0002-mixed.fss
vs
# fss_basic_list_read -c -n hi level_3/fss_read/tests/runtime/fss_000e/source/test-0002-mixed.fss | wc -l

3 months agoUpdate: Greatly reduce memory consumption by implementing simple low allocation step.
Kevin Day [Sun, 4 Aug 2024 06:15:14 +0000 (01:15 -0500)]
Update: Greatly reduce memory consumption by implementing simple low allocation step.

Historically the step was always 3.
I found, over time, that increasing the step greatly to something like 128 could greatly reduce memory consumption and performance in many cases.
In the situation where a large number of small objects are allocated then this number like 128 becomes highly abusive.

The simple low allocation step will only allocate a single unit on the very first allocation.
If the next allocation is on an array that has a size greater than one and less than four (via the tiny define), then the step size is set to four during allocation.
If the next allocation is on an array that has a size greater than four and less than eight (via the small define), then the step size is set to eight during allocation.
If the next allocation is on an array that has a size greater than eight and less than sixty-four (via the large define), then the step size is set to sixty-four during allocation.
In all cases, if the request step is less than the calculated step, then the requested step is used.
For example, if the requested step is twelve, then after eight is allocation, then the next generated step size is twelve rather than sixty-four.

Using some test files, shows the following reduction:
- Old: ~8GB of RAM -> New: ~200MB of RAM.
- Old: ~500MB of RAM -> New: ~20MB of RAM.

Update the unit tests accordingly and fix any problems exposed.

3 months agoUpdate: Reduce memory usage by fl_fss_basic_content_read() in some circumstances.
Kevin Day [Sun, 4 Aug 2024 06:07:22 +0000 (01:07 -0500)]
Update: Reduce memory usage by fl_fss_basic_content_read() in some circumstances.

The fl_fss_basic_content_read() is simple enough that the allocation of the found array is only needed on success.

3 months agoUpdate: Optimize away the isdigit(), isalpha(), isalnum(), and isxdigit().
Kevin Day [Sun, 4 Aug 2024 00:40:49 +0000 (19:40 -0500)]
Update: Optimize away the isdigit(), isalpha(), isalnum(), and isxdigit().

I did some research and learned that the "is*()" functions can greatly affect performance due to locale and other manners.
I originally used these to allow for well established optimization to take place.

Replace these with some mathematical operations that should increase performance.
This also means no function call on the stack.
This project is already function stack heavy by design and so reducing functions when easy is a great thing.

Start using literal characters rather than the standard strings for the UTF related functions.
In these cases the ASCII expectation is guaranteed.
The ability to override these is also not practical as the meaning should not change.

I have not looked at all of the "is*()" functions and I may address any remaining ones at a later time.
I potentially may also investigate mapping tables to further improve performance.

These math calculations can be used in a lot of the non-ASCII UTF ranges as well.
I opted to not do these just yet given that such work will take a large amount of time.

I have not done any performance analysis yet but I plan to do so.

3 months agoFeature: Add clock get, set, and precision functions to f_time.
Kevin Day [Sat, 3 Aug 2024 05:14:05 +0000 (00:14 -0500)]
Feature: Add clock get, set, and precision functions to f_time.

3 months agoBugfix: The private_f_abstruses_delete_switch() and private_f_abstruses_destroy_switc...
Kevin Day [Sat, 3 Aug 2024 00:43:04 +0000 (19:43 -0500)]
Bugfix: The private_f_abstruses_delete_switch() and private_f_abstruses_destroy_switch() both need wrapping defines.

The previous commit a2e1999a3e5c02a980fcbe9977b059c4639ea741 has a wrong define wrapper added.
The _di_f_abstruses_delete_ was added when it should instead be _di_f_abstruse_map_delete_.

The private_f_abstruses_destroy_switch() is also overlooked by that commit.
This adds the _di_f_abstruse_map_destroy_ to the private_f_abstruses_destroy_switch().

3 months agoCleanup: Build settings and fakefile mode related settings and documentation.
Kevin Day [Thu, 1 Aug 2024 03:40:58 +0000 (22:40 -0500)]
Cleanup: Build settings and fakefile mode related settings and documentation.

3 months agoBugfix: Incorrect wrapping defines around private_fl_fss_basic_write().
Kevin Day [Fri, 2 Aug 2024 06:12:31 +0000 (01:12 -0500)]
Bugfix: Incorrect wrapping defines around private_fl_fss_basic_write().

3 months agoBugfix: _di_f_file_write_range must instead be _di_f_file_write_range_.
Kevin Day [Fri, 2 Aug 2024 05:55:39 +0000 (00:55 -0500)]
Bugfix: _di_f_file_write_range must instead be _di_f_file_write_range_.

3 months agoBugfix: Missing define wrapper for private_f_rip_find_range(), private_f_abstruses_de...
Kevin Day [Fri, 2 Aug 2024 05:13:24 +0000 (00:13 -0500)]
Bugfix: Missing define wrapper for private_f_rip_find_range(), private_f_abstruses_delete_switch(), and private_fl_payload_header_map_maps().

3 months agoCleanup: Build settings and fakefile mode related settings and documentation.
Kevin Day [Thu, 1 Aug 2024 03:40:58 +0000 (22:40 -0500)]
Cleanup: Build settings and fakefile mode related settings and documentation.

3 months agoBugfix: The stand alone utf8 program should not be specifying build_sources_library.
Kevin Day [Thu, 1 Aug 2024 03:13:41 +0000 (22:13 -0500)]
Bugfix: The stand alone utf8 program should not be specifying build_sources_library.

3 months agoCleanup: Use a pointer to make the code more readable in fake_build_load_setting_proc...
Kevin Day [Thu, 1 Aug 2024 03:07:08 +0000 (22:07 -0500)]
Cleanup: Use a pointer to make the code more readable in fake_build_load_setting_process().

3 months agoBugfix: The build_name and version numbers should not support forward or backward...
Kevin Day [Thu, 1 Aug 2024 02:49:17 +0000 (21:49 -0500)]
Bugfix: The build_name and version numbers should not support forward or backward slashes.

This utilizes the logic from the "stage" setting that strips out invalid slashes.

The standard is updated accordingly to make this behavior more explicit.

3 months agoBugfix: Add stage setting to standards to prevent build state file conflicts.
Kevin Day [Thu, 1 Aug 2024 02:33:32 +0000 (21:33 -0500)]
Bugfix: Add stage setting to standards to prevent build state file conflicts.

The build state stage files are conflicting in some cases.
The old solution to this problem has been observed as insufficient.
The different build settings might have the same exact file name.

I have tossed around the idea of a settings Object such as "stage" in the past but I had previously opted against it.
I now believe that skipping over this was a mistake.

Add a new feature to the standards to fix this bug.
The "stage" value may now be specified.
The fakefile files accept the "stage" setting and passes the result along to any build settings.
The settings files accept the "stage" setting and uses the value by appending it to the stage files.

Only a single value is supported.
The forward and backward slashes are explicitly prohibited.
Other special characters are recommended to be avoided given the possibility of local file system problems.
Rather than erroring out, this slashes are stripped out.

The bootstrap.sh script is updated to support this.
The support for "stage" in the boostrap.sh script is very limited.

3 months agoRefactor: Change bit-wise enumerations into defines.
Kevin Day [Wed, 31 Jul 2024 02:45:20 +0000 (21:45 -0500)]
Refactor: Change bit-wise enumerations into defines.

I did some reviewing of how the enumerations used for flags are used.
These generally are not being used as a type.
An enumeration slightly increases the resulting binary size.
Enumeration values might be limited to just type of int.

This seems like an easy (small) optimization to just use defines rather than enumerations for flags and other bit-wise numbers.

3 months agoUpdate: Remove the control program.
Kevin Day [Wed, 31 Jul 2024 02:37:30 +0000 (21:37 -0500)]
Update: Remove the control program.

The control program is now in its own separate project.

3 months agoUpdate: Refresh the stand alone build files.
Kevin Day [Tue, 30 Jul 2024 04:47:18 +0000 (23:47 -0500)]
Update: Refresh the stand alone build files.

3 months agoUpdate: Add missing ifndef wrapping define for the FSS status codes.
Kevin Day [Tue, 30 Jul 2024 02:37:26 +0000 (21:37 -0500)]
Update: Add missing ifndef wrapping define for the FSS status codes.

3 months agoCleanup: Improve fakefile help using the bracketed IKI syntax.
Kevin Day [Mon, 29 Jul 2024 01:38:42 +0000 (20:38 -0500)]
Cleanup: Improve fakefile help using the bracketed IKI syntax.

3 months agoUpdate: The format sentence end strings, making their usage more clear.
Kevin Day [Sun, 28 Jul 2024 22:18:07 +0000 (17:18 -0500)]
Update: The format sentence end strings, making their usage more clear.

The sentence ends, unlike the other similar global static strings, does not have the "_single" in the name.
Add the "_single" in the name and then for consistency addthe case where there should be no "_single".

These cases are as a result now handled:
- ".%r".
- "'.%r".
- "%[.%]%r"
- "%['.%]%r"
- "%[%[.%]%]%r"
- "%[%['.%]%]%r"

3 months agoCleanup: Remove extra line.
Kevin Day [Fri, 26 Jul 2024 00:34:21 +0000 (19:34 -0500)]
Cleanup: Remove extra line.

3 months agoUpdate: Yet another file with a copyright year that needs to be updated.
Kevin Day [Thu, 25 Jul 2024 03:10:44 +0000 (22:10 -0500)]
Update: Yet another file with a copyright year that needs to be updated.

I overlooked this one it seems.

4 months agoCleanup: Fix grammar mistake in the standard.
Kevin Day [Sun, 14 Jul 2024 21:06:42 +0000 (16:06 -0500)]
Cleanup: Fix grammar mistake in the standard.

This does not alter the "content" of the standard and only alters the grammar.
The version does not, therefore, have to change.

4 months agoUpdate: Add F_lock_spin and F_lock_spin_not to status codes.
Kevin Day [Sat, 13 Jul 2024 05:13:54 +0000 (00:13 -0500)]
Update: Add F_lock_spin and F_lock_spin_not to status codes.

I overlooked spin locks when I added the mutex and the read and write lock status codes.

4 months agoUpdate: Add initialize macros for time.h structures and fix initializer for f_date_t.
Kevin Day [Sat, 13 Jul 2024 03:04:57 +0000 (22:04 -0500)]
Update: Add initialize macros for time.h structures and fix initializer for f_date_t.

4 months agoUpdate: Add additional F_enter and F_enter_not status codes to act as the opposite...
Kevin Day [Fri, 12 Jul 2024 03:23:57 +0000 (22:23 -0500)]
Update: Add additional F_enter and F_enter_not status codes to act as the opposite of F_exit ad F_exit_not.

4 months agoUpdate: Documentation and specifications and add additional status codes.
Kevin Day [Thu, 11 Jul 2024 05:23:00 +0000 (00:23 -0500)]
Update: Documentation and specifications and add additional status codes.

I discovered that some of the documentation and specification files are out of date and are now updated.

Add additional status codes regarding locks.

4 months agoUpdate: Remove Controller program as it is now migrated into its own separate project.
Kevin Day [Tue, 9 Jul 2024 03:47:18 +0000 (22:47 -0500)]
Update: Remove Controller program as it is now migrated into its own separate project.