]> Kevux Git Server - fll/log
fll
16 months agoBugfix: Remove spurious 'y' character in help message.
Kevin Day [Sun, 25 Jun 2023 02:19:00 +0000 (21:19 -0500)]
Bugfix: Remove spurious 'y' character in help message.

16 months agoCleanup: Fix documentation comments for fss_identify_process_name_compare().
Kevin Day [Sun, 25 Jun 2023 02:30:38 +0000 (21:30 -0500)]
Cleanup: Fix documentation comments for fss_identify_process_name_compare().

The wrong return values are being reported.
The fl_string_dynamic_partial_compare_string() function is missing.

16 months agoBugfix: Add missing 'extern' keyword for fss_identify_process_name_compare() definition.
Kevin Day [Sat, 24 Jun 2023 23:24:06 +0000 (18:24 -0500)]
Bugfix: Add missing 'extern' keyword for fss_identify_process_name_compare() definition.

16 months agoCleanup: Documentation comments return status syntax is missing a colon.
Kevin Day [Sat, 24 Jun 2023 22:35:38 +0000 (17:35 -0500)]
Cleanup: Documentation comments return status syntax is missing a colon.

16 months agoCleanup: Add quotes to testfile LD_LIBRARY_PATH assignment.
Kevin Day [Sat, 24 Jun 2023 20:25:27 +0000 (15:25 -0500)]
Cleanup: Add quotes to testfile LD_LIBRARY_PATH assignment.

Do this for consistency with the pattern of the rest of the testfile.

16 months agoCleanup: Add missing () in docuumentation comments for f_file_seek().
Kevin Day [Sat, 24 Jun 2023 20:21:59 +0000 (15:21 -0500)]
Cleanup: Add missing () in docuumentation comments for f_file_seek().

16 months agoCleanup: Fix mistakes in documentation comments.
Kevin Day [Sat, 24 Jun 2023 03:14:46 +0000 (22:14 -0500)]
Cleanup: Fix mistakes in documentation comments.

These are back ported clean ups discovered while developing on the 0.7.x version.

16 months agoCleanup: Add environment to all unit test settings files.
Kevin Day [Sat, 24 Jun 2023 02:44:12 +0000 (21:44 -0500)]
Cleanup: Add environment to all unit test settings files.

17 months agoCleanup: Fix incorrect comment in f_limit.
Kevin Day [Wed, 21 Jun 2023 02:07:38 +0000 (21:07 -0500)]
Cleanup: Fix incorrect comment in f_limit.

17 months agoUpdate: The Open Standard License, adding stronger terminology and more clarification.
Kevin Day [Sun, 18 Jun 2023 03:42:25 +0000 (22:42 -0500)]
Update: The Open Standard License, adding stronger terminology and more clarification.

17 months agoBugfix: FSS Extended List Read program should print new line after Object.
Kevin Day [Fri, 16 Jun 2023 02:39:55 +0000 (21:39 -0500)]
Bugfix: FSS Extended List Read program should print new line after Object.

In the case where Object is printed but not Content a new line must be printed.
This is done to be consistent with the other programs, such as FSS Basic List Read.

The 0.7.x and later versions should probably implement something like -L/--line_end to perform this behavior.
In which case the default behavior would be what the code was doing here prior to this commit.

17 months agoCleanup: Minor syntax fixes and use the macro initializer.
Kevin Day [Fri, 16 Jun 2023 02:03:31 +0000 (21:03 -0500)]
Cleanup: Minor syntax fixes and use the macro initializer.

17 months agoBugfix: The line and total need to support the closing brace.
Kevin Day [Fri, 16 Jun 2023 00:33:20 +0000 (19:33 -0500)]
Bugfix: The line and total need to support the closing brace.

The closing brace is now being calculated when both --object and --content are specified.

17 months agoBugfix: Use arguments passed to fake when processing build with the custom build...
Kevin Day [Fri, 9 Jun 2023 04:17:26 +0000 (23:17 -0500)]
Bugfix: Use arguments passed to fake when processing build with the custom build arguments.

The custom build arguments are passed when the make mode is being used to call the build mode.
The mode arguments passed to the fake program, these should be propagated into the custom build arguments for the build mode.

Move the print message to after the build modes are processed so that an accurate message is printed.

17 months agoBugfix: Use the custom build settings name if passed when printing current setting...
Kevin Day [Fri, 9 Jun 2023 03:09:24 +0000 (22:09 -0500)]
Bugfix: Use the custom build settings name if passed when printing current setting being used.

The message, such as:
  Building fss_read using 'settings' with modes 'monolithic', 'thread'.

Should instead be:
  Building fss_read using 'settings.main' with modes 'monolithic', 'thread'.

Use the custom settings name if the custom build arguments are passed to display the correct name.

17 months agoBugfix: Quotes in FSS read functions are not being properly handled and fix backtick...
Kevin Day [Wed, 31 May 2023 04:31:13 +0000 (23:31 -0500)]
Bugfix: Quotes in FSS read functions are not being properly handled and fix backtick handling.

At some point in time the intended behavior changed from using the literal quote character to an enumeration representing the quote character on FSS read calls.
This transition is incomplete and broken.

Finish the transition, passing the enumeration representation rather than the literal character.

Remove an unnecessary initialization on the quote because the private function being called also initializes the variable.

Relocate the f_uint8s_increase() call to be after changing the error status to ensure that the quotes array is properly incremented.

Update the documentation comments to better clarify this behavior in regards to the enumeration.

There are several FSS read functions that are not handling backticks properly.
The backticks should now be fully and properly processed on read.

17 months agoBugfix: Handle f_directory_not status as an invalid directory.
Kevin Day [Mon, 29 May 2023 23:22:57 +0000 (18:22 -0500)]
Bugfix: Handle f_directory_not status as an invalid directory.

The status f_directory_not is returned with the path exists but is not a directory.

The fake program can fail when doing something like this:
  fake clean make -w /arbitrary_non_directory_file +V

The error message returned is not very helpful:
  ERROR: (674) when calling function f_file_stat().

This is a known file-related error and so it is now handled appropraitely.
The new error message looks like:
  ERROR: Invalid directory while trying to access directory '/arbitrary_non_directory_file'.

17 months agoBugfix: The testfile needs to handle the --build parameter and improve --work paramet...
Kevin Day [Mon, 29 May 2023 23:16:44 +0000 (18:16 -0500)]
Bugfix: The testfile needs to handle the --build parameter and improve --work parameter handling.

Provide a new operation "build_path" to load the "--build" parameter properly.
The existing checks for the "--work" parameter is better suited checking against "work:value" rather than "work".

There may be an existing bug where the condition for "build" parameter is always returning true when it should not.
This requires further investigation and is not addressed within the scope of this commit.

17 months agoBugfix: The -T/--trim parameter is not being processed.
Kevin Day [Mon, 29 May 2023 20:23:12 +0000 (15:23 -0500)]
Bugfix: The -T/--trim parameter is not being processed.

A simple mistake of using the wrong length number is preventing the -T/--trim parameter from being detected and processed.

17 months agoCleanup: Fix comments in settings-tests files.
Kevin Day [Mon, 29 May 2023 19:09:43 +0000 (14:09 -0500)]
Cleanup: Fix comments in settings-tests files.

17 months agoBugfix: Comments are being included when processing --total and --at.
Kevin Day [Sun, 28 May 2023 20:25:26 +0000 (15:25 -0500)]
Bugfix: Comments are being included when processing --total and --at.

Valid comments should be ignored.
Lines representing a valid comment must not be counted as a line.

18 months agoUpdate: Next micro version (0.6.6).
Kevin Day [Sat, 29 Apr 2023 22:52:53 +0000 (17:52 -0500)]
Update: Next micro version (0.6.6).

18 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.

18 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.

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

18 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.

18 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".

18 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.

18 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".

18 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.

18 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.

18 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.

18 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..).

18 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.

18 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.

19 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.

19 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.

19 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.

19 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.

19 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.

19 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.

19 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.

19 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.

19 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.

19 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.

19 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.

19 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.

19 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.

19 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.

19 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.

19 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.

20 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.

20 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.

20 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.

20 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.

20 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.

20 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.

20 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.

20 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.

20 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.

20 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.

20 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.

20 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().

20 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.

20 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"

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

20 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.

20 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.

20 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.

20 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.

20 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.