]> Kevux Git Server - fll/log
fll
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.

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

21 months agoUpdate: Program man pages, adding copyright, fixing help, and adding missing period.
Kevin Day [Wed, 1 Feb 2023 06:20:48 +0000 (00:20 -0600)]
Update: Program man pages, adding copyright, fixing help, and adding missing period.

Document the copyright parameter.
The help uses dashes rather than pluses for compatibility with common GNU behavior.

21 months agoUpdate: Controller and Control man page documentation.
Kevin Day [Tue, 31 Jan 2023 03:09:32 +0000 (21:09 -0600)]
Update: Controller and Control man page documentation.

Move the specification details into man (5) pages.
This further allows for more explicit declaration of the license of the specifications.

The following are the commands used to help generated these man pages:
  fss_basic_list_read entry.txt +Q -cn "Entry Specification" | iki_read +Q -w -W code '\fB' '\fR'

  fss_basic_list_read exit.txt +Q -cn "Exit Specification" | iki_read +Q -w -W code '\fB' '\fR'

  fss_basic_list_read packet.txt +Q -cn "Packet Specification" | iki_read +Q -w -W code '\fB' '\fR'

  fss_basic_list_read rule.txt +Q -cn "Rule Specification" | iki_read +Q -w -W code '\fB' '\fR'

  fss_basic_list_read actions.txt +Q -cn "Actions Documentation" | iki_read +Q -w -W code '\fB' '\fR'

  fss_basic_list_read entry.txt +Q -cn "Entry Documentation" | iki_read +Q -r PID PID -w -W code '\fB' '\fR'

  fss_basic_list_read exit.txt +Q -cn "Exit Documentation" | iki_read +Q -r PID PID -w -W code '\fB' '\fR'

  fss_basic_list_read packet.txt +Q -cn "Packet Documentation" | iki_read +Q -w -W code '\fB' '\fR'

  fss_basic_list_read rule.txt +Q -cn "Rule Documentation" | iki_read +Q -r PID PID -w -W code '\fB' '\fR'

21 months agoUpdate: Featureless Make man page documentation.
Kevin Day [Tue, 31 Jan 2023 02:31:32 +0000 (20:31 -0600)]
Update: Featureless Make man page documentation.

Move the specification details into man (5) pages.
This further allows for more explicit declaration of the license of the specifications.

The following are the commands used to help generated these man pages.
  fss_basic_list_read dependencies.txt +Q -cn "Dependencies Specification" | iki_read +Q -w -WWW code '\fB' '\fR' bold '\fB' '\fR' FLL '\fB' '\fR'

  fss_basic_list_read defines.txt +Q -cn "Defines Specification" | iki_read +Q -w -WW code '\fB' '\fR' bold '\fB' '\fR'

  fss_basic_list_read fakefile.txt +Q -cn "Fakefile Specification" | iki_read +Q -w -WW character '\fB' '\fR' code '\fB' '\fR'

  fss_basic_list_read settings.txt +Q -cn "Settings Specification" | iki_read +Q -w -WW character '\fB' '\fR' code '\fB' '\fR'

  fss_basic_list_read fakefile.txt +Q -cn "Fakefile Documentation" | iki_read +Q -w -rrr ASCII ASCII GCC GCC HTML HTML -WW character '\fB' '\fR' code '\fB' '\fR'

  fss_basic_list_read settings.txt +Q -cn "Settings Documentation" | iki_read +Q -w -rr ASCII ASCII FLL FLL -WW character '\fB' '\fR' code '\fB' '\fR'

21 months agoFeature: Enable support for stand_alone packaging with 'all'.
Kevin Day [Mon, 30 Jan 2023 03:54:10 +0000 (21:54 -0600)]
Feature: Enable support for stand_alone packaging with 'all'.

This helps make the stand alone process easier by performing packaging on all stand alone packages.

21 months agoBugfix: The build settings 'path_sources' is incorrectly added.
Kevin Day [Sun, 29 Jan 2023 23:27:21 +0000 (17:27 -0600)]
Bugfix: The build settings 'path_sources' is incorrectly added.

The commit 79858cf386916fd25ccd3578797de53b16f5c446 fixed a problem with the sources path passed to the program.
This revealed a bug where the build setting 'path_sources' is being added twice.
This is probably why the previous bug was not noticed for so long.

Make sure to apply the passed path sources parameter when the build settings does not have 'path_sources'.

21 months agoUpdate: Featureless Make stand alone build now needs f_file_stream_read instead of...
Kevin Day [Sun, 29 Jan 2023 22:46:39 +0000 (16:46 -0600)]
Update: Featureless Make stand alone build now needs f_file_stream_read instead of f_file_read.

21 months agoSecurity: Add extra check range checks in Featureless Make build skeleton.
Kevin Day [Sun, 29 Jan 2023 22:43:14 +0000 (16:43 -0600)]
Security: Add extra check range checks in Featureless Make build skeleton.

The used - 1 could be a problem if used is 0.

21 months agoUpdate: Use f_file_stream_read() instead of f_file_read() after opening as a stream.
Kevin Day [Sun, 29 Jan 2023 22:23:47 +0000 (16:23 -0600)]
Update: Use f_file_stream_read() instead of f_file_read() after opening as a stream.

21 months agoBugfix: The -S/--sources parameter is not being correctly used.
Kevin Day [Sun, 29 Jan 2023 21:44:53 +0000 (15:44 -0600)]
Bugfix: The -S/--sources parameter is not being correctly used.

The parameter is not being properly validated.
The parameter is then not being appended to the appropriate strings.
The default value is being appended to the appropriate strings.

21 months agoCleanup: Fix styling in the Open Standard License file.
Kevin Day [Sun, 29 Jan 2023 20:32:49 +0000 (14:32 -0600)]
Cleanup: Fix styling in the Open Standard License file.

This is a non-functional change.
Only the styling is altered.

21 months agoUpdate: Open Standard License to be 1.0 or later rather than just 1.0.
Kevin Day [Sun, 29 Jan 2023 20:32:10 +0000 (14:32 -0600)]
Update: Open Standard License to be 1.0 or later rather than just 1.0.

21 months agoUpdate: Fakefile specification.
Kevin Day [Sun, 29 Jan 2023 20:25:14 +0000 (14:25 -0600)]
Update: Fakefile specification.

21 months agoCleanup: Remove comments from source file.
Kevin Day [Sun, 29 Jan 2023 04:24:37 +0000 (22:24 -0600)]
Cleanup: Remove comments from source file.

21 months agoBugfix: Incorrect documentation in fakefile.txt.
Kevin Day [Sun, 29 Jan 2023 04:12:13 +0000 (22:12 -0600)]
Bugfix: Incorrect documentation in fakefile.txt.

21 months agoCleanup: Add missing line.
Kevin Day [Sun, 29 Jan 2023 03:29:57 +0000 (21:29 -0600)]
Cleanup: Add missing line.

21 months agoCleanup: Simplify lines used in incrementing.
Kevin Day [Fri, 27 Jan 2023 05:35:01 +0000 (23:35 -0600)]
Cleanup: Simplify lines used in incrementing.

21 months agoFeature: Provide program parameter for displaying copyright.
Kevin Day [Fri, 27 Jan 2023 05:34:09 +0000 (23:34 -0600)]
Feature: Provide program parameter for displaying copyright.

Provide copyright printing that can be slighty fine tuned using verbosity.

Provide a define (_di_detailed_copyright_) for reducing some of the string printed.

21 months agoRegression: Serial example rule is not working.
Kevin Day [Thu, 26 Jan 2023 04:27:01 +0000 (22:27 -0600)]
Regression: Serial example rule is not working.

Investigation revealed that the commit 002bf17595459e65173be16f983977ead99593b6 introduced a regression where the cached data is being reset incorrectly.
The data is properly processed but when there is more than a single rule the previous rules are being cleared.

21 months agoCleanup: Remove an unused variable.
Kevin Day [Thu, 26 Jan 2023 01:41:47 +0000 (19:41 -0600)]
Cleanup: Remove an unused variable.

21 months agoUpdate: Add additional sanity checks.
Kevin Day [Thu, 26 Jan 2023 01:23:53 +0000 (19:23 -0600)]
Update: Add additional sanity checks.

The GCC -fanalyzer is reporting a problem that as far as I can tell is a false positive.
This program is older code practices and will eventually be rewritten anyway.

Add a few more safety checks.

21 months agoSecurity: NULL pointer dereference in writer due to pipe function result handling.
Kevin Day [Thu, 26 Jan 2023 00:56:36 +0000 (18:56 -0600)]
Security: NULL pointer dereference in writer due to pipe function result handling.

The GCC -fanalyzer parameter helped me discover this one.

The status_pipe is being read and processed.
There is a case where the status_pipe is being set but it is not being reset after handling.
In a later loop the pipe does not get read but the previously set state is used bringing the code into a bad state.
Then the loop doesn't do the block buffer used check and this results in the eventual NULL dereference.

21 months agoUpdate: Add fanalyzer build mode.
Kevin Day [Thu, 26 Jan 2023 00:55:02 +0000 (18:55 -0600)]
Update: Add fanalyzer build mode.

I keep forgetting to run the GCC fanalyzer sanity checks to help catch problems before making a release.
Add a formal mode in all of the build settings to make this processor easier and therefore easier to remember.

Add missing -Wall to some of the files for the test mode.

21 months agoUpdate: Use pre-existing cache rather than using a new variable.
Kevin Day [Wed, 25 Jan 2023 03:12:12 +0000 (21:12 -0600)]
Update: Use pre-existing cache rather than using a new variable.

This potentially reduces reallocations.

21 months agoBugfix: Further Fakefile processing with iki replacement space problems.
Kevin Day [Wed, 25 Jan 2023 02:25:38 +0000 (20:25 -0600)]
Bugfix: Further Fakefile processing with iki replacement space problems.

This is a follow up to commit 3713a5f0bd90d32f564afaca29f01d9ccf329cfb.

The other IKI variables still need the new lines when the context does not.

Detect when certain IKI variables expand into nothing and in these cases do not append.
When performing last line, only append if it is not by itself.