]> Kevux Git Server - fll/log
fll
19 months agoBugfix: Fix return codes and clean up package.sh. 0.6.5
Kevin Day [Sat, 29 Apr 2023 02:49:32 +0000 (21:49 -0500)]
Bugfix: Fix return codes and clean up package.sh.

Fix the return code handling just like the test.sh script in commit 68367b9577fdf1578b66008e5e1cb37070098b1b.

The package.sh script is rather out of date in regards to the use of wrapping braces.

19 months agoBugfix: Incorrect return code in tests causes false failures in CI.
Kevin Day [Sat, 29 Apr 2023 01:23:05 +0000 (20:23 -0500)]
Bugfix: Incorrect return code in tests causes false failures in CI.

Recent changes of the code change the "failure" variable from being an empty string for no error to being the explicit digit of "0".
The change is incomplete and this caused the false failure by incorrectly returning "1" when instead "0" should be returned.

The Gitlab CI detected this but the Github CI failed to.

19 months agoCleanup: Remove invalid disable defines.
Kevin Day [Sat, 29 Apr 2023 00:14:12 +0000 (19:14 -0500)]
Cleanup: Remove invalid disable defines.

19 months agoUpdate: Month name to April in man pages.
Kevin Day [Sat, 29 Apr 2023 00:11:21 +0000 (19:11 -0500)]
Update: Month name to April in man pages.

19 months agoCleanup: Fix mistake in documentation that makes sentence nonsense.
Kevin Day [Fri, 28 Apr 2023 01:05:55 +0000 (20:05 -0500)]
Cleanup: Fix mistake in documentation that makes sentence nonsense.

The word "Content" should not be used here and instead use "data".
The word "main" is used here randomly with no logical sense.
Remove this use of the word "main".

19 months agoSecurity: Invalid read in help output due to incorrect size assigned to static string.
Kevin Day [Fri, 28 Apr 2023 00:52:58 +0000 (19:52 -0500)]
Security: Invalid read in help output due to incorrect size assigned to static string.

19 months agoCleanup: Fix spelling mistake in word "applied".
Kevin Day [Fri, 28 Apr 2023 00:46:54 +0000 (19:46 -0500)]
Cleanup: Fix spelling mistake in word "applied".

19 months agoUpdate: Add stand alone build for fss_payload_read and fss_payload_write.
Kevin Day [Wed, 26 Apr 2023 23:47:36 +0000 (18:47 -0500)]
Update: Add stand alone build for fss_payload_read and fss_payload_write.

I did fss_payload_read in a hurry and may have missed something.
Making potential problems potentially worse I just copied the fss_payload_read for fss_payload_write and then made minor modifications.
There is some significant potential for unneeded code being added due to the disable define configuration.

19 months agoCleanup: Add common locale-specific environment variables and remove some duplicate...
Kevin Day [Wed, 26 Apr 2023 23:46:47 +0000 (18:46 -0500)]
Cleanup: Add common locale-specific environment variables and remove some duplicate thread related defines.

19 months agoBugfix: Incorrect wrapping define usage.
Kevin Day [Wed, 26 Apr 2023 23:45:41 +0000 (18:45 -0500)]
Bugfix: Incorrect wrapping define usage.

I discovered these while building the fss_payload_read stand alone build.

19 months agoUpdate: The stand alone builds should also support fakefiles.
Kevin Day [Tue, 25 Apr 2023 02:57:49 +0000 (21:57 -0500)]
Update: The stand alone builds should also support fakefiles.

This is an oversight from previous changes where stand alone support is implemented and where the fakefile is make more advanced (adding help etc..).

19 months agoBugfix: Featureless Make stand alone build fails to compile due to missing f_string_a...
Kevin Day [Tue, 25 Apr 2023 02:33:19 +0000 (21:33 -0500)]
Bugfix: Featureless Make stand alone build fails to compile due to missing f_string_append_nulless().

A recent change must have introduced a dependency for f_string_append_nulless().
Disable the associated disable define.

19 months agoBugfix: Invalid macro name for f_string_map_multi_t and f_utf_string_map_multi_t.
Kevin Day [Tue, 25 Apr 2023 02:22:58 +0000 (21:22 -0500)]
Bugfix: Invalid macro name for f_string_map_multi_t and f_utf_string_map_multi_t.

The wrong macro name is being used.
This is clearly a copy and paste mistake.

19 months agoSecurity: fake_build_arguments_standard_add() is treating static path the same as...
Kevin Day [Sun, 16 Apr 2023 23:37:18 +0000 (18:37 -0500)]
Security: fake_build_arguments_standard_add() is treating static path the same as shared.

The size calculation is only using the shared size.
Then a static string of a potentially different size is being used.

19 months agoUpdate: Use f_string_append_nulless() instead of f_string_append() just in case.
Kevin Day [Fri, 14 Apr 2023 00:49:33 +0000 (19:49 -0500)]
Update: Use f_string_append_nulless() instead of f_string_append() just in case.

19 months agoSecurity: fl_directory_list() is not appending a NULL.
Kevin Day [Tue, 11 Apr 2023 03:36:34 +0000 (22:36 -0500)]
Security: fl_directory_list() is not appending a NULL.

If any of these strings are passed to standard library functions that expect NULL terminated strings, then an invalid read access can occur.

19 months agoBugfix: The stage files should not begin with "-".
Kevin Day [Thu, 6 Apr 2023 01:47:19 +0000 (20:47 -0500)]
Bugfix: The stage files should not begin with "-".

I haven't looked at the stage files in a while because it just works.
I happened to notice that they are beginning with "-".
This is incorrect.

Turns out that at some point in time the separator got pulled outside the process.used condition.
This results in the "-" always being added when it should not be.
The problem is introduced in this completely erroneous commit 8cb1d765b75403e242e307590842628aad7ad91b.

Add the same logic check to the name because it also append a "-".

Also reset the used length at the start of population of the stage file strings.

20 months agoUpdate: Improve thread configuration, document modes in build settings files, and...
Kevin Day [Tue, 4 Apr 2023 23:48:45 +0000 (18:48 -0500)]
Update: Improve thread configuration, document modes in build settings files, and update build scripts.

Improve the thread configuration to make it easier to enable or disable thread support.

Add documentation regarding the build modes supported in each of the build settings files.

Update the build scripts to better handle the now additional build modes.
The build scripts now use braces everywhere.
Doing this should make it easier to be compatible with other scripting engines such as ZSH.

20 months agoBugfix: Remove extra arguments being added.
Kevin Day [Sun, 2 Apr 2023 22:45:11 +0000 (17:45 -0500)]
Bugfix: Remove extra arguments being added.

The parameter expansion is perhaps the worst designed area of the Featureless Make project.
It went through a lot of iterations and the logic requires jumping around too much.

At some point I changed the code to fix problems with the expansion logic regarding quotes and not quotes.
Two functions were left that still added arguments of their own.
This seems wrong.
This does not appear to cause an obvious bug and so it is also unclear if removing these cause a non-obvious regression.
Keep an eye out for regressions in this.

20 months agoUpdate: Rebuild the disable defines file and update the readme.
Kevin Day [Sat, 1 Apr 2023 02:29:19 +0000 (21:29 -0500)]
Update: Rebuild the disable defines file and update the readme.

Only a single change after rebuilding as per the readme.

Rebuild the example as well.

20 months agoBugfix: When specifying a specific section name, do not care if there is no "main...
Kevin Day [Fri, 31 Mar 2023 04:40:58 +0000 (23:40 -0500)]
Bugfix: When specifying a specific section name, do not care if there is no "main" section.

When I implemented the feature represented by commit 25671e39d0a275b4a14b1db6612ae46d497c38c7, I apparently forgot to handle this case.

This program correctly errors when there is no "main" section.
When specifically asking to run a named section rather than the default "main", who cares if there is no "main"?
Based on that logic the lack of a "main" section should not be an error.

20 months agoUpdate: Back port utf string compare unit tests.
Kevin Day [Fri, 31 Mar 2023 04:12:27 +0000 (23:12 -0500)]
Update: Back port utf string compare unit tests.

This only back ports unit tests for the functions that are present in 0.6.x.

20 months agoUpdate: Back port utf string compare code from 0.7.x.
Kevin Day [Fri, 31 Mar 2023 04:10:53 +0000 (23:10 -0500)]
Update: Back port utf string compare code from 0.7.x.

This only back ports the functions that are present in 0.6.x.
This does not introduce any new functions and therefore has neither any API nor any ABI changes.

20 months agoCleanup: Remove invalid documentation comments from fl_string_dynamic_compare_except_...
Kevin Day [Thu, 30 Mar 2023 04:48:52 +0000 (23:48 -0500)]
Cleanup: Remove invalid documentation comments from fl_string_dynamic_compare_except_string() and fl_string_dynamic_compare_string().

These two functions, fl_string_dynamic_compare_except_string() and fl_string_dynamic_compare_string(), are not trim functions.
They do not ignore leading and trailing white space.

20 months agoUpdate: Back port unit tests from 0.7.x development.
Kevin Day [Thu, 30 Mar 2023 00:15:28 +0000 (19:15 -0500)]
Update: Back port unit tests from 0.7.x development.

The f_compare unit tests are back ported to fl_string.

20 months agoBugfix: Add missing function fl_string_dynamic_partial_compare_trim().
Kevin Day [Thu, 30 Mar 2023 00:13:48 +0000 (19:13 -0500)]
Bugfix: Add missing function fl_string_dynamic_partial_compare_trim().

The function declaration is missing from the header.
This is technically an API change but because the function actually exists and is defined there is no ABI change.

This is discovered by back porting some unit tests.

20 months agoCleanup: Typo in testfile, Cmcka should be Cmocka.
Kevin Day [Thu, 30 Mar 2023 00:10:29 +0000 (19:10 -0500)]
Cleanup: Typo in testfile, Cmcka should be Cmocka.

20 months agoRegression: The bootstrap-example.sh should have fll_path and not fl_path.
Kevin Day [Wed, 29 Mar 2023 23:49:00 +0000 (18:49 -0500)]
Regression: The bootstrap-example.sh should have fll_path and not fl_path.

This problem is introduced in commit 362c7b9f6cd57421a18c0148fb6eb9bda165bcd2.
The back port failed to include updating the different directory structure.

20 months agoRegression: Build test.sh script is not properly running.
Kevin Day [Wed, 29 Mar 2023 23:24:15 +0000 (18:24 -0500)]
Regression: Build test.sh script is not properly running.

Three mistakes are introduced by the commit 362c7b9f6cd57421a18c0148fb6eb9bda165bcd2.
1) The error handling return status checks are against empty string and not "0".
2) The test.sh script is backported from the 0.7.x development branch and accidentally included projects not existing in this 0.6.x branch.
3) Accidental copy and paste mistake where print variable is being used as if it were a function.

Remove the failure=0 assignment.
The default of failure="" is what is needed.

The fl_path project is actually fll_path.

The variable print_line_first is supposed to be test_print_first.

20 months agoUpdate: Add the locale specific environment variables to everything by default.
Kevin Day [Wed, 29 Mar 2023 04:36:11 +0000 (23:36 -0500)]
Update: Add the locale specific environment variables to everything by default.

20 months agoSecurity: Invalid read in trim comparison functions.
Kevin Day [Wed, 29 Mar 2023 03:46:05 +0000 (22:46 -0500)]
Security: Invalid read in trim comparison functions.

This is a back port of the changes from the 0.7. development branch commit 4d19713c7c113481124958284f7390b8bdc48e97.

The unit tests might also be back ported at a later time.

Writing unit tests exposed this problem.

The last1 and last2 positions could be the exclusive stop points.
The comparison checks fail to handle this situation and expect the last1 and last2 variables to not be positioned at an exclusive stop point.
This results in an invalid read.

20 months agoRegression: The variable buffer.range should be buffer.used.
Kevin Day [Wed, 29 Mar 2023 03:44:00 +0000 (22:44 -0500)]
Regression: The variable buffer.range should be buffer.used.

This is introduced by the commit 5f1e938fcc9a54a8290c9afd0a1e58ec93971c52.

I must have been sleepier than I realized.
This is a dirt simple mistake.

20 months agoBugfix: The fl_string parsing functions do not check buffer.used.
Kevin Day [Mon, 27 Mar 2023 12:33:28 +0000 (07:33 -0500)]
Bugfix: The fl_string parsing functions do not check buffer.used.

The range length is being performed but not the buffer used length.
Add the appropriate return codes to represent end of string (buffer used length is reached).
This is applicable for the dynamic strings but is not applicable for the regular strings.

Do some code clean up while I am at it.

20 months agoBugfix: Out of date repository build scripts.
Kevin Day [Tue, 21 Mar 2023 03:52:41 +0000 (22:52 -0500)]
Bugfix: Out of date repository build scripts.

The repository build scripts are very much out of date.

A recent bugfix, commit 9a021eb4044cf8cb63bcef6f8851566b4bc574c7, attempted to partially address this.
It turns out that there is a lot more that needs to be done.

All of the repository build scripts are now updated.

Make sure the copyright parameter is available.

Make sure the "+Q/++quiet" and "+E/++error" parameters are correct and working.

This is a copy of the changes from commit 736d99ce416da505e859c9ee3890b3adf119260f from the 0.7.0 development branch.
The 0.7.0 parameters "+F/++line_first_no" and "+L/++line_last_no" are removed as they are not available in 0.6.0 stable branch versions.
The relevant code remains, it is just unused.

Improve return status handling.
The goal here is to avoid calling "exit".
The use of "exit" is not safe as under certain conditions it can close terminals that the script is running in.

20 months agoBugfix: Out of date install.sh and Featureless Make helper scripts.
Kevin Day [Mon, 20 Mar 2023 03:14:02 +0000 (22:14 -0500)]
Bugfix: Out of date install.sh and Featureless Make helper scripts.

It seems that I never looked at these in a while and they are rather out of date.
Fix the parameters.
There are other scripts that need to be looked at as well and are not solved by this commit.

I fixed this in 0.7.0.
I decided to cheat with install.sh and copy over the file with the newer features.
Just disable those features by deleting a few lines to maintain synthetic API compatibility.
This is a script and so API is not really a thing.

20 months agoBugfix: Incorrect file path in error message.
Kevin Day [Mon, 20 Mar 2023 03:13:44 +0000 (22:13 -0500)]
Bugfix: Incorrect file path in error message.

20 months agoCleanup: Add missing header includes.
Kevin Day [Sat, 18 Mar 2023 02:36:38 +0000 (21:36 -0500)]
Cleanup: Add missing header includes.

20 months agoCleanup: Move function declaration to proper position.
Kevin Day [Fri, 17 Mar 2023 23:26:35 +0000 (18:26 -0500)]
Cleanup: Move function declaration to proper position.

20 months agoUpdate: Don't call f_file_exists() until after child status is checked.
Kevin Day [Fri, 17 Mar 2023 23:23:17 +0000 (18:23 -0500)]
Update: Don't call f_file_exists() until after child status is checked.

If the process is exiting as a child process, don't perform the file exists check.
This removes an unnecessary task that has disk I/O implications.

20 months agoUpdate: Next micro version (0.6.5).
Kevin Day [Fri, 17 Mar 2023 00:37:31 +0000 (19:37 -0500)]
Update: Next micro version (0.6.5).

20 months agoUpdate: Add unit tests for fll_path. 0.6.4
Kevin Day [Thu, 16 Mar 2023 23:17:26 +0000 (18:17 -0500)]
Update: Add unit tests for fll_path.

I noticed that the '~' path is not expanded.
I checked to see if this is intentional or not.
It is intentionally not supported yet.
I need another function.

This check encouraged me to write some unit tests for the current behavior.
It seems that I had forgotten just how few unit tests I have.
Now there are at least more.

20 months agoUpdate: Change man page year and month from January 2023 to March 2023.
Kevin Day [Thu, 16 Mar 2023 00:11:31 +0000 (19:11 -0500)]
Update: Change man page year and month from January 2023 to March 2023.

20 months agoUpdate: Man page for controller specification changes regarding "helper" mode.
Kevin Day [Thu, 16 Mar 2023 00:00:52 +0000 (19:00 -0500)]
Update: Man page for controller specification changes regarding "helper" mode.

20 months agoUpdate: Add stand alone fss_identify, iki_read, ad iki_write builds.
Kevin Day [Tue, 14 Mar 2023 02:36:26 +0000 (21:36 -0500)]
Update: Add stand alone fss_identify, iki_read, ad iki_write  builds.

I borrowed an existing define file to rush through this.
As a result there may be unused code brought in due to a lack of thoroughness.

20 months agoBugfix: Status Code stand alone has incorrect files added.
Kevin Day [Tue, 14 Mar 2023 02:35:01 +0000 (21:35 -0500)]
Bugfix: Status Code stand alone has incorrect files added.

Remove files not needed that are missing because they (correctly) are not added.
This is a misconfiguration issue.

20 months agoBugfix: Stand alone build file problems and bad define macros.
Kevin Day [Tue, 14 Mar 2023 02:26:51 +0000 (21:26 -0500)]
Bugfix: Stand alone build file problems and bad define macros.

The stand alone files suffer from some sloppy copy and pasting.

Fix problems with some of the define macros.

20 months agoBugfix: Incorrect dependencies for individual build modes.
Kevin Day [Mon, 13 Mar 2023 23:49:29 +0000 (18:49 -0500)]
Bugfix: Incorrect dependencies for individual build modes.

20 months agoBugfix: The control readonly option is not being loaded.
Kevin Day [Sat, 11 Mar 2023 17:19:51 +0000 (11:19 -0600)]
Bugfix: The control readonly option is not being loaded.

I implemented the numeration and processing logic but I somehow forgot to actually load the setting from the entry file.

Set and unset the flag as requested.
Make sure the path_control is reset before appending the string.

Add control_has in validation test mode to better display the file.

20 months agoBugfix: Remove out of place single quote in print.
Kevin Day [Sat, 11 Mar 2023 17:19:02 +0000 (11:19 -0600)]
Bugfix: Remove out of place single quote in print.

20 months agoBugfix: The Entry is not printing on simulate and validate combined mode.
Kevin Day [Sat, 11 Mar 2023 06:25:28 +0000 (00:25 -0600)]
Bugfix: The Entry is not printing on simulate and validate combined mode.

I must have not gotten around to doing this.
Now there entry and settings information is printed.

20 months agoUpdate: Add example contrroller script for running under systemd using cgroups.
Kevin Day [Sat, 11 Mar 2023 02:42:53 +0000 (20:42 -0600)]
Update: Add example contrroller script for running under systemd using cgroups.

This provides an example cgroups setup.
I found that on systems with cgroups2, this is harder to figure out.
This turned out to be because of the existing setup used by many systemd systems.

This provides an example that I managed to get to work under some systems in some circumstances.
The biggest problems is that the subtree needs to be passed along and that tends to not be done by default.
The current user, if not root, usually lacks the privileges to do so.

The best case would be to use the cgroups generation when running as root to setup the appropriate user.
Then, use the program startup examples as the normal user.
This should show the cgroup situation.

I would not be surprised if the cgroup setup scripts has to be altered (not just the user and group name).

20 months agoCleanup: Minor syntax and style issues.
Kevin Day [Fri, 10 Mar 2023 04:03:22 +0000 (22:03 -0600)]
Cleanup: Minor syntax and style issues.

20 months agoFeature: Add support for 'helper' mode to compliment the 'program' mode.
Kevin Day [Thu, 9 Mar 2023 05:00:33 +0000 (23:00 -0600)]
Feature: Add support for 'helper' mode to compliment the 'program' mode.

This is a bug fix disguised as a new feature.

When controller runs in program mode and is cancelled, all background (asynchronous) processes are cancelled.
My original thoughts were that background processes should stay open in program mode.
This is the bug being fixed.

I believe that there are use cases to operate in "program" mode and to always terminate the background processes in this manner.
Rather than fixing one case and breaking the other, this is a new feature that helps solve both cases.

The "program" mode operates in the same manner unchanged.

The new "helper" mode operates by detaching background (asynchronous) processes on exit.
The foreground process still runs and blocks normally.
A terminate signal might still terminate background processes.
More work is likely needed in this regard.

This stretches the original design to its limits.
The 0.7.x versions and later will need re-design to better handle these cases.
The original design I used was a learn as I go for thread design.
This resulted in rather messy code.
Now that I made it to this point, the controller program (0.6.x and earlier) can be used as a stepping stone for a better design.

Some of the problems are worked-around.
The program starts and exits too fast in controller mode.
The child processes end up getting terminated before a complete process is started and then backgrounded.
The work-around is to add a short sleep.
This is not reliable but for most cases it should be fine.
Additional work-arounds may be needed by the user such as executig their own sleep foreground process.

20 months agoCleanup: Remove dead code in controller program.
Kevin Day [Thu, 9 Mar 2023 02:47:47 +0000 (20:47 -0600)]
Cleanup: Remove dead code in controller program.

The process variable is not used.
I decided to not remove the now unused process parameter from the relevant functions.
This prevents breaking API and ABI.

20 months agoCleanup: Properly initialize the time variable in controller_thread_process_cancel().
Kevin Day [Thu, 9 Mar 2023 02:35:27 +0000 (20:35 -0600)]
Cleanup: Properly initialize the time variable in controller_thread_process_cancel().

20 months agoBugfix: Multiple cancellations may occur, use mutex lock to prevent.
Kevin Day [Thu, 9 Mar 2023 02:27:46 +0000 (20:27 -0600)]
Bugfix: Multiple cancellations may occur, use mutex lock to prevent.

There is an existing check that prevents the cancellation from being called more than once.
What is not being considered is that if the main thread calls cancellation while another cancellation is active then the controller_thread_process_exit() gets called.
The controller_thread_process_exit() function will begin more forcibly shutting things down.

Avoid this by providing a mutex lock to lock the cancellation.
Only once the first cancellation is complete will the second (or more) then return without doing anything.

20 months agoCleanup: Improve semaphore documentation comments.
Kevin Day [Thu, 9 Mar 2023 02:20:57 +0000 (20:20 -0600)]
Cleanup: Improve semaphore documentation comments.

20 months agoCleanup: Documentation comments in regards to f_state_t.
Kevin Day [Tue, 7 Mar 2023 00:33:14 +0000 (18:33 -0600)]
Cleanup: Documentation comments in regards to f_state_t.

Several of the documentation comments regarding f_state_t are now no longer out of date.

21 months agoBugfix: Fix unterminated quote handling issue addressed by specifications clarification.
Kevin Day [Mon, 6 Mar 2023 04:29:17 +0000 (22:29 -0600)]
Bugfix: Fix unterminated quote handling issue addressed by specifications clarification.

These commits clarified the specification:
e79fd90eb383acd5cdcb03f20d5fd2661a423c7c
4f2a4866eddceac491da0e02d868916316e32c9c

This clarification paved the way for a solution to the bug where lines with unterminated quotes are not getting anything at all.
By "favoring the typo", the rest of the line is preserved and is able to be printed.

21 months agoUpdate: Further clarify quoting in FSS specifications.
Kevin Day [Mon, 6 Mar 2023 03:45:13 +0000 (21:45 -0600)]
Update: Further clarify quoting in FSS specifications.

I looked at the code and realized I should instead favor the "typo" behavior.
Process until the end of the line rather than break up the Object due to the quotes.
This means if the quote is unterminated then the rest of the line is considerd the Object.
Also document where Content utilizes the same rules.

This invalidates some of the description in the commit 4f2a4866eddceac491da0e02d868916316e32c9c.

The two examples are now as follows:

  Example Object and Content pair following FSS-0001:
    Object "Content".

The Content would be "Content".
This behavior effectively preserves the period and also retains the quotes.

  Another example (FSS-0001):
    "Object 1" "Content 1" Content2 and_3
    "Object 2": Content.

This second row shows the "typo" is favored concept.
The second row has no Content and instead has the following as the "Object: Object 2": Content.
Note how the quotes are kept when this situation happens.

I also updated the word "newline", replacing it with the words "new" and "line".
I noticed and fixed a mistake in the logic due to this refactor and a similar previous refactor.

21 months agoUpdate: Clarify FSS specifications in regards to quote behavior.
Kevin Day [Mon, 6 Mar 2023 01:37:30 +0000 (19:37 -0600)]
Update: Clarify FSS specifications in regards to quote behavior.

I noticed a problem where something that is quoted with an immediate character after it does not get processed.

Example Object and Content pair following FSS-0001:
  Object "Content".

In the above example, notice how there is a period after the quotes.
Also notice how the content has no spaces.

The current behavior would treat the "Content". as invalid.

I reviewed the specifications and found them lacking in regards to this dilemma.

I updated the specification to clarify the behavior.

With this change the FSS read functions will need to be updated.

Another example (FSS-0001):
  "Object 1" "Content 1" Content2 and_3
  "Object 2": Content.

In the above example for an FSS-001, the first row is straight-forward.
The second row is a problem.

Because there is non-white space after the quote, this cannot be treated as a quoted Object.
The behavior would then be to treat this as not quoted.
This means for row two, the object name is: "Object
The first Content is 2":
The second Content is Content.

21 months agoFeature: Implement wrap support for IKI standard to be compliant with recent changes.
Kevin Day [Mon, 6 Mar 2023 01:16:21 +0000 (19:16 -0600)]
Feature: Implement wrap support for IKI standard to be compliant with recent changes.

The wrap support for IKI (using open and close brackets '[' (U+005B) ']' (U+005D)) has been recently added to the specification.
This updates the project to be in compliance.

21 months agoBugfix: Dead code in return status handling.
Kevin Day [Sun, 5 Mar 2023 20:51:19 +0000 (14:51 -0600)]
Bugfix: Dead code in return status handling.

The fake_make_operate_process_return() has dead code where it checks for the inverse of the return_code in two spots.
The first of which always returns.
The second case can never be reached.

Redesign the function.
This success/failure behavior should be preserved with this change.

Add a simple example fakefile for testing the return code value.

21 months agoCleanup: Add explicit buffer empty checks in owner and group funcctions.
Kevin Day [Sun, 5 Mar 2023 17:59:23 +0000 (11:59 -0600)]
Cleanup: Add explicit buffer empty checks in owner and group funcctions.

21 months agoCleanup: Return F_exists_not for owner and group to id get function.
Kevin Day [Sun, 5 Mar 2023 16:12:56 +0000 (10:12 -0600)]
Cleanup: Return F_exists_not for owner and group to id get function.

Update the documentation comments appropriately.
Remove F_exists_not documentation comment from the mode id get function.

21 months agoBugfix: Number to large error should be returned as an error.
Kevin Day [Sun, 5 Mar 2023 16:00:16 +0000 (10:00 -0600)]
Bugfix: Number to large error should be returned as an error.

An error is detected and reported when value for UID or GID is too large.
However, no error status is set and the function succeeds.

21 months agoBugfix: Add missing "extern" to functions in header.
Kevin Day [Sun, 5 Mar 2023 15:47:57 +0000 (09:47 -0600)]
Bugfix: Add missing "extern" to functions in header.

21 months agoUpdate: Use the signal check counter more consistently in Featureless Make.
Kevin Day [Sun, 5 Mar 2023 02:15:40 +0000 (20:15 -0600)]
Update: Use the signal check counter more consistently in Featureless Make.

There are areas in the code where the signal is being checked without utilizing the counter.

21 months agoCleanup: Perform status child check before file check in Featureless Make.
Kevin Day [Sun, 5 Mar 2023 02:01:15 +0000 (20:01 -0600)]
Cleanup: Perform status child check before file check in Featureless Make.

The file check is rather expensive and the child check is not.

The process is an existing child when status is set to child.
This process should not perform the file check.

21 months agoCleanup: Fix ordering of function fake_build_load_environment().
Kevin Day [Sun, 5 Mar 2023 01:34:10 +0000 (19:34 -0600)]
Cleanup: Fix ordering of function fake_build_load_environment().

21 months agoBugfix: Return result lost in Featureless Make for f_string_dynamic_append_nulless...
Kevin Day [Sun, 5 Mar 2023 01:29:45 +0000 (19:29 -0600)]
Bugfix: Return result lost in Featureless Make for f_string_dynamic_append_nulless() call.

There is a second call to f_string_dynamic_append_nulless() without checking the return status.
This effectively hides any potential error.

21 months agoFeature: The IKI standard now supports bracket wrapping.
Kevin Day [Thu, 2 Mar 2023 04:03:23 +0000 (22:03 -0600)]
Feature: The IKI standard now supports bracket wrapping.

I wanted to avoid this and keep IKI as simple as possible.
My recent uses have shown that I must have some sort of word-separator support.

This is the simplest implementation that I can think of at this time.
The brackets do not get escaped, instead the IKI gets escaped.
If there is no closing brracket in the correct spot, then the first bracket is not part of the variable.
The brackets other than the opening at the front and the closing bracket at the end are allowed.

The vocabulary name never includes the open and close bracket.

The following shows the heart of the problem this feature solves:

Consider:
  - helloworld:"earth".

What if "world" is the variable name and hello is not supposed to be space separated?
With this featre, now the following is possible:
  - hello[world]:"earth"

Note that the following are not valid (that is to say these are not IKI variables):
  - hello[world:"earth"
  - heloworld]:"earth"
  - hello[[world]]:"earth"

21 months agoUpdate: Style guide documentation.
Kevin Day [Thu, 2 Mar 2023 04:02:14 +0000 (22:02 -0600)]
Update: Style guide documentation.

21 months agoBugfix: Miscellaneous problems in file functons and Featureless Make related code.
Kevin Day [Wed, 1 Mar 2023 06:05:31 +0000 (00:05 -0600)]
Bugfix: Miscellaneous problems in file functons and Featureless Make related code.

Fix documentation inaccuracies such as "Set to 0 to not use." when 0 is not a "not use" value and is instead a valid value with discrete meaning.
Remove documentation about non-existent parameter "file".
Clarify the wording in some of the documentation.

Add missing return on error check after several memory allocation function calls.

Add missing range parameter checks.

Error checking is being performed on wrong status variable and wrong status variable is being returned.

Perform some general code clean up as encountered.

21 months agoCleanup: Improve wording in some of the print messages.
Kevin Day [Fri, 24 Feb 2023 05:31:49 +0000 (23:31 -0600)]
Cleanup: Improve wording in some of the print messages.

21 months agoCleanup: Make the error messages with fallback warning messages.
Kevin Day [Fri, 24 Feb 2023 02:23:47 +0000 (20:23 -0600)]
Cleanup: Make the error messages with fallback warning messages.

Follow up the previous commit (4d7d66565a555baf9d7df72255c1063bc8858072) with an even better improvement.
Use warning rather than error and then only display on verbose or greater.

21 months agoCleanup: Consistently apply verbosity to error message with fallback.
Kevin Day [Fri, 24 Feb 2023 02:14:39 +0000 (20:14 -0600)]
Cleanup: Consistently apply verbosity to error message with fallback.

The fallback error message is an automatically recovered error.
Only print the error message in verbose mode or greater.
This behavior is followed elsewhere and so this change makes the design more consistent.

21 months agoBugfix: Control group function is partially outdated and uses incorrect integer.
Kevin Day [Wed, 22 Feb 2023 23:57:58 +0000 (17:57 -0600)]
Bugfix: Control group function is partially outdated and uses incorrect integer.

The F_control_group_path_system_default_s_length should not be used here when progressing the path string.
Use control_group.groups.array[i].used instead.

21 months agoBugfix: Incorrect and messy file error messages.
Kevin Day [Wed, 22 Feb 2023 04:45:09 +0000 (22:45 -0600)]
Bugfix: Incorrect and messy file error messages.

The code is unlikely to get to the error cases that print these messages due to other safety checks.
This makes testing this more difficult.
I do not currently have the testing environment for this.

I found the error messages is messed up and incorrect.
Clean up the messages.
This has not been tested due to the above mentioned problems.

21 months agoBugfix: Set error status when link target is an empty string.
Kevin Day [Tue, 21 Feb 2023 04:29:38 +0000 (22:29 -0600)]
Bugfix: Set error status when link target is an empty string.

Also update the printed message.

21 months agoCleanup: Printed messages, use of words.
Kevin Day [Mon, 20 Feb 2023 06:12:30 +0000 (00:12 -0600)]
Cleanup: Printed messages, use of words.

Shoten 'define setting name' into 'define name'.

Use 'File name' rather than 'Filename'.

21 months agoBugfix: Printed error message is not utilize verbosity quite mode.
Kevin Day [Mon, 20 Feb 2023 06:11:26 +0000 (00:11 -0600)]
Bugfix: Printed error message is not utilize verbosity quite mode.

Also add appropriate color context.

21 months agoCleanup: Add color context to change mode operation.
Kevin Day [Sun, 19 Feb 2023 16:40:27 +0000 (10:40 -0600)]
Cleanup: Add color context to change mode operation.

21 months agoBugfix: Print message is missing the percent before the 'Q' causing invalid printing.
Kevin Day [Sun, 19 Feb 2023 16:38:08 +0000 (10:38 -0600)]
Bugfix: Print message is missing the percent before the 'Q' causing invalid printing.

21 months agoBugfix: Argument variable passed is a pointer, print the value not the pointer.
Kevin Day [Sun, 19 Feb 2023 04:20:28 +0000 (22:20 -0600)]
Bugfix: Argument variable passed is a pointer, print the value not the pointer.

21 months agoCleanup: Reword project path changed to message.
Kevin Day [Sun, 19 Feb 2023 04:20:01 +0000 (22:20 -0600)]
Cleanup: Reword project path changed to message.

21 months agoUpdate: Print message rather than an error when termination signal is received.
Kevin Day [Sat, 18 Feb 2023 03:02:31 +0000 (21:02 -0600)]
Update: Print message rather than an error when termination signal is received.

21 months agoUpdate: Allocate extra space for the terminating NULL.
Kevin Day [Sat, 18 Feb 2023 01:14:22 +0000 (19:14 -0600)]
Update: Allocate extra space for the terminating NULL.

21 months agoUpdate: Use f_string_dynamic_append_nulless() instead of f_string_dynamic_append().
Kevin Day [Fri, 17 Feb 2023 06:25:14 +0000 (00:25 -0600)]
Update: Use f_string_dynamic_append_nulless() instead of f_string_dynamic_append().

Switch to the nulless version to favor sanity over performance.

21 months agoCleanup: Enumerations comment and ordering in Featureless Make.
Kevin Day [Thu, 16 Feb 2023 05:59:56 +0000 (23:59 -0600)]
Cleanup: Enumerations comment and ordering in Featureless Make.

21 months agoBugfix: Fix typo in 'original' word.
Kevin Day [Thu, 16 Feb 2023 02:17:51 +0000 (20:17 -0600)]
Bugfix: Fix typo in 'original' word.

21 months agoSecurity: Invalid read or write while expanding operations.
Kevin Day [Wed, 15 Feb 2023 05:05:12 +0000 (23:05 -0600)]
Security: Invalid read or write while expanding operations.

The logic here is non-standard.
The normal logic operates on a pre-allocated basis.
That is, right before accessing the data perform the pre-allocation.

This code operates on the expectation that new variables are only added when conditionally required.
This results in a post-allocation basis where once a variable is known to expand then increment the used variable for the next pass.
The allocation checks need to happen after the increment on used.

There are some cases where this post-allocation is not happening.
This is probably a regression in the very recent bug fixes regarding expanding operations.

Be sure to ensure a clean state after the post-allocation process.

21 months agoBugfix: Multiple single-valued Objects should used last instead of first Object.
Kevin Day [Wed, 15 Feb 2023 04:15:23 +0000 (22:15 -0600)]
Bugfix: Multiple single-valued Objects should used last instead of first Object.

Early on I was uncertain on what the proper behavior should be.

Over time I established that the last Object specified should be used.
This makes sense with most things.
Consider normal math:
  x = 1
  x = 2

Is x equal to 1 or 2?
I strongly believe the most common interpretation would be "2" because the assignment to "2" comes after the assignment to "1" when reading top-down.

Following this logic, the single-valued settings Objects must use the last occurrence rather than the first.

This is being considered a bug.

21 months agoBugfix: Incorrect and confusing warning message in Featureless Make.
Kevin Day [Wed, 15 Feb 2023 03:02:11 +0000 (21:02 -0600)]
Bugfix: Incorrect and confusing warning message in Featureless Make.

The object name is being printed as if it were the fakefile.
The message itself is now re-worded to make more sense.

Use "fakefile" rather than 'file'.

21 months agoFeature: Add Turtle Kevux path support.
Kevin Day [Sun, 12 Feb 2023 16:22:20 +0000 (10:22 -0600)]
Feature: Add Turtle Kevux path support.

This does not break API or ABI because it requires macros to be defined that would break it.
These macros, when in use, should not break API (but does extend it) but may break ABI.
The return value may have additional results and might be considered an API but not ABI breaking change.

There is already Kevux-specific code in FLL.
Temporarily continue that process as a short term solution.
In the long term, separate functions or files may be used (or an entirely separate project).

21 months agoBugfix: The bootstrap script "-d/--define" command does not match the Fake command.
Kevin Day [Sun, 12 Feb 2023 16:02:55 +0000 (10:02 -0600)]
Bugfix: The bootstrap script "-d/--define" command does not match the Fake command.

This is the old way the -d/--define command was designed.
The bootstrap script simply has never been updated.

The command is now "--define" and not "--defines".

Remove the sanity check in the parameter.
This behavior is not as precise and the commands are passed to the program in whatever form they expect.

21 months agoBugfix: The content action cache, comments, and delimits are not being properly cleared.
Kevin Day [Fri, 10 Feb 2023 01:16:06 +0000 (19:16 -0600)]
Bugfix: The content action cache, comments, and delimits are not being properly cleared.

This is a follow up to 241ef476dbba9200cf9422501a3c323136b45dd0.

There are more cases where the cache is not being cleared upon use.
This is resulting in invalid error messages.

21 months agoBugfix: Consistently use the same color context for the entry name.
Kevin Day [Fri, 10 Feb 2023 01:13:01 +0000 (19:13 -0600)]
Bugfix: Consistently use the same color context for the entry name.

21 months agoUpdate: Add stand alone controller build.
Kevin Day [Mon, 6 Feb 2023 03:02:13 +0000 (21:02 -0600)]
Update: Add stand alone controller build.

21 months agoBugfix: Invalid defines, incorrect comments, missing flags, and missing dependencies.
Kevin Day [Mon, 6 Feb 2023 02:51:04 +0000 (20:51 -0600)]
Bugfix: Invalid defines, incorrect comments, missing flags, and missing dependencies.

There is an inconsistency where _di_f_color_string_s_ and _di_f_color_strings_s_ are used.
Settle on _di_f_color_string_s_ because it is defined in the header file.

Incorrect defines, such as _di_f_utf_is_contro_codel_ are removed.

The *.config.h comment example doesn't work.

Consistently add fanalyzer mode and make sure it is available in both settings and fakefile files.

Some of the define macros are missing in regards to private functions.

The controller program is missing f_limit and fl_directory dependencies.