]> Kevux Git Server - fll/log
fll
3 days agoBugfix: Typo in 0x sequence for Tulu-Tigalari symbol. 0.8 development
Kevin Day [Sun, 25 Oct 2026 04:14:49 +0000 (23:14 -0500)]
Bugfix: Typo in 0x sequence for Tulu-Tigalari symbol.

A letter `d` accidentally got introduced causing the sequence to be out of range.

3 days agoBugfix: The f_directory_status bad macro and a failing unit test.
Kevin Day [Sun, 25 Oct 2026 04:10:40 +0000 (23:10 -0500)]
Bugfix: The f_directory_status bad macro and a failing unit test.

The `macro_f_directory_status_t_initialize_1()` is using `status_value` and `path_value` as the parameters within it but is defining them as `status` and `path`.
Fix this by setting them to `status_value` and `path_value`.

The unit test is improperly initializing them.
How did this test not fail in the past?
It just suddenly started failing.
I'll leave that as a fluke.
It is going that the tests caught it and this fixes it.

3 days agoFeature: Clarify and handle Unicode combining and joiner characters, focusing on...
Kevin Day [Sun, 25 Oct 2026 02:54:39 +0000 (21:54 -0500)]
Feature: Clarify and handle Unicode combining and joiner characters, focusing on FSS Read.

One of the types of breaking changes and features that I allow are in regards to Unicode and following its standards.
I was never really sure how I was going to handle special cases, such as combining and joiner characters.
That has now changed and as of this change I now have declared the behavior.

This, unfortunately, resulted in a lot of changes and behavioral changes.
I have decided that making some breaking changes is the route to go.

One of my goals with this massive change set is to try to reduce how often I read the combining and joining characters.
There is going to be some performance hit but hopefully I have kept it to a minimal.

The crux of the problem is that the combining and joiner characters are after the character being changed rather than before.
That means that for every character being processed the code has to then go past it and check for a combining character.

I've noticed that most software does not handle combining characters and joiner characters following an end of line character.
I was going to treat this just like any other case but given the consistent way in which this is ignored I have decided to ignore combining and joiner characters specifically for end of lines `\n` (U+000A).

The specifications have been updated.
I do note that I need to clean them up at some future date.

I have decided to only focus on reading (**FSS Read**) given the size of this change.
The write code will be updated following this.
This change set is just too large as it is.

This change set did have some huge benefits such as exposing and helping me solve existing bugs and logic flaws.
Several of those changes have been extracted and committed separately, such as the "Bugfix: Fix invalid FSS Read unit test expectations.
" changes.

Another major change is in my commit and branching behavior.
In the distant past I had some data lost and lost a lot of work.
My immediate solution was to just push everything asap.
All in one branch.
All together.
Incomplete work is prefixed with "Progress:" to represent "work in progress".
This can get messy.

Switching to branching where I keep using "Progress:" will allow for me to manage the code as work in progress but then merge it in a cleaner manner.
Thus this massive commit.

The following are my notes collected from various commits in the separate progress branch.

Have to add is_combining functions to detect combining for the purpose of FSS processing.

Skip past initial place holders in the skip functions.

The initial combining returns `F_complete_not_utf_start` only for combining at the start.
This should be then handled as a combining.

Add a new feature via additional functions for explicitly checking for joiner characters.
These joiner characters are not the same as combining characters.

This requires various build settings, like stand alone builds, to be updated with one of the following source files added:
```
  fll/level_0/private-utf_joiner.c
  level_0/private-utf_joiner.c
  private-utf_joiner.c
```

This requires various `config.h` files to now support handling of:
```
  #define _di_f_utf_character_is_joiner_
  #define _di_f_utf_is_joiner_
```

I had the option of either adding this and not exposing it through the **API** or exposing it through the **API**.
Exposing it through the **API** causes this to be a new feature (which I really want to avoid in general).
However, if the code is going to be added (because it is necessary and fixes some bugs), then it makes more sense to just expose it through the **API**.

This also fixes incidental missing `_di*_` in some cases.

The combining combines into what is effectively a graph character.
Treat the joiner characters the same, even though one can join two non-printing characters.
New lines must ignore joiners (I have seen this as the standard behavior by a lot of software and decided to go with that to avoid problems).
The `is_combining`, `is_joiner`, and `is_combining_joiner` are new features added to help solve these problems.

I didn't want to add a cost of auto-checking every character after the first.
This means that I cannot have the `is_space`, `is_graph`, or other such functions automate this.
Therefore, the logic must be changed to check for these spaces.
The code will become more complex but this will not incur as much of a performance cost compared to checking each character 2x+ times.
I also decided not to continue on after the first combining and joiner characters.
The combining already makes something a graph.
The joiner requires more searched and is highly subjective.
Therefore, make life easier and just treat all joiners as graph-making for the purposes of processing and syntax.

Fix problem inn tests where its failing due to `getline()` reaching the end of the line.
If the EOL is reached, then the loop must end.

The `f_fss_skip_past_combining()` is replaced with `f_fss_skip_past_combining_joiner()`.

The `f_fss_seek_to_eol()` returns `F_okay_eol`.
Check that instead of doing a buffer string character comparison where possible.

Improve some condition block logic regarding breaks, returns, and continues.

Change some of the status error checking to reduce return statements.
I have probably flip flopped on this problem numerous times.
Looking into how compilers and CPUs like to optimize things, I believe that reducing the return statements will be of benefit vs the probably cleaner immediate returns.
This can only be done when it is clear and when the status code being returned (or any state) is identical between calls.

It seems that editors make it difficult to add and manipulate combining characters.
It is possible my test files have lost combining characters without my awareness.
I used commands like the following to help generate some combining characters:

```sh
echo "first valid.$(utf8 -cB U+0301)" >> basic-combining_read.txt

echo -e "  not a valid list{$(utf8 -cB U+0301)\n}" >> extended_list-combining_read.txt
```
Work on basic list combining tests, changing test strategy.

The previous strategies that I used were only doing a file of only **Objects** and files of only **Contents**.
This worked well for simple things.
This ideally better allowed for more isolated unit tests.

However, it is easier to write and follow tests of a complete **FSS** file.
This means doing both the **Object** and **Content** tests in the same unit test (despite being separate functions).
This provides more accurate checks, better testing, and as mentioned easier to write and follow test files.

I discovered that copying the file with the combining character at the start of the line (U+0301) causes a space to be added.
I have to then manually recreate the file and use my `utf8` program to regenerate the correct test data:
```sh
utf8 -cB U+0301 >> test.txt
```

I decided that I needed to expand the `f_fss_skip_past_space()` into `f_fss_skip_past_space_previous()` to expose the `previous` position variable to the caller.
I must avoid breaking the **API**/**ABI**, so `f_fss_skip_past_space()` is not changed.
This should simplify the embedded read functions.

Fix documentation, adding "Must not be NULL." where it is missing.

The man pages will need to be re-generated more than likely.
Just copy the `f_fss_skip_past_space()` man page and update it manually for now.

Add missing `_di_f_utf_is_zero_width_` check on `private_f_utf_character_is_joiner()`.

Redesign the FSS identify functions.

Always reset the original used length on error.

Reduce the number of return statements.

Add a check for the combining joiner characters after the `#`.

Remove inaccurate comment about depending on `f_utf_is_combining()` from parse function.

Utilize the `f_state_t` locally to perform the necessary operations.
This is not exposed to the caller to prevent **API** and **ABI** breakage.
Future versions of **FLL** (0.9+) are expected to pass the state via the function parameter.

Switch to the new practice of using flags to manage special internal states.
This no longer guesses success based on `ids.used` being non-zero.
Using the internal flags allows accurate handling.

Add comments to functions that need `f_state_t` so that future version of **FLL** can properly handle.

Rename `start` to `line_start` to be more consistent with other functions.
The `line_start` is also more unique.
This makes it easier to search.

Switch to `fll_flags` from `found_data` for managing flags within a function.

Handle basic list combining/joiner at start and fix unit test.

For lists, if the start of a line is a combining/joiner, then it must be treated as Content even if it would otherwise be a valid Object on that line.

The unit test actually has to handle when `F_okay_eos` or `F_okay_stop` is returned on content read.
The basic list doesn't know if the content is a valid object or not.
It can be assumed, but the function does not do this.

The caller must handle incrementing found.used when either `F_okay_eos` or `F_okay_stop` is returned.
Update the comment on this as well.

Properly verify that `newline_last` is in fact a new line by checking it against the `begin` position.
The basic list already has `begin`, but extended list has `begin` added to perform this check.

3 days agoBugfix: Fix more invalid FSS Read unit test expectations.
Kevin Day [Sun, 25 Oct 2026 01:46:33 +0000 (20:46 -0500)]
Bugfix: Fix more invalid FSS Read unit test expectations.

Just like with previous commits, like b0f127837b39ab1cc7902723c3f6d8b5db2e2d53, there are a number of invalid test expectations.

Taking the easy route in generating the tests ended up hiding some bugs that the recent changes happened to fix.

3 days agoBugfix: Fix invalid FSS Read unit test expectations for fss-0002, when using -C and -e.
Kevin Day [Tue, 20 Oct 2026 00:35:06 +0000 (19:35 -0500)]
Bugfix: Fix invalid FSS Read unit test expectations for fss-0002, when using -C and -e.

This is just like b0f127837b39ab1cc7902723c3f6d8b5db2e2d53.

The test is testing empty content and counting the columns.
This should actually report 1 for basic list (fss-0002).

3 days agoBugfix: Fix invalid FSS Read unit test expectations.
Kevin Day [Sat, 17 Oct 2026 03:16:46 +0000 (22:16 -0500)]
Bugfix: Fix invalid FSS Read unit test expectations.

A good while back I didn't have the capacity to write every single unit test expectation.
I decided to cheat and build the tests based on the currently functionality.
I recognized that I could have bugs that got hidden by this decision and so expected in the future I would identify and have to fix this.

Today is that future
I discovered that the delimited list Content that would otherwise be a valid Object is not appearing at all in the output.
This is entirely incorrect.

Fix the expectations.

There are a couple more failures in my combining branch changes, but I need to investigate those further to rule out a mistake in a combining work or a mistake in the expectation files.

6 days agoCleanup: Rework some cases of 0x notation with function specific defines.
Kevin Day [Thu, 22 Oct 2026 01:05:54 +0000 (20:05 -0500)]
Cleanup: Rework some cases of 0x notation with function specific defines.

This brings in a practice that I decided to switch to in order to make the code more verbose.
The long define names and the three leading and trailing underscores are additional mechanisms used to reduce the likelihood of naming conflicts.

I did not do an exhaustive search.
I just took care of the ones that I happened to see.

2 weeks agoBugfix: The fl_print depends on f_console.
Kevin Day [Sat, 10 Oct 2026 03:34:44 +0000 (22:34 -0500)]
Bugfix: The fl_print depends on f_console.

2 weeks agoBugfix: The signal handlers are missing, preventing interrupts from working as expected.
Kevin Day [Sat, 10 Oct 2026 03:04:42 +0000 (22:04 -0500)]
Bugfix: The signal handlers are missing, preventing interrupts from working as expected.

The `fss_read` and `fss_write` have the signal handler call back on the wrong parameter resulting in interrupts being ignored.
The `iki_read` is completely missing the signal handler.

2 weeks agoCleanup: Remove the quotes from the last_command in the fss_read test file generator.
Kevin Day [Sat, 10 Oct 2026 03:01:29 +0000 (22:01 -0500)]
Cleanup: Remove the quotes from the last_command in the fss_read test file generator.

2 weeks agoUpdate: Ensure f_fll_id_t.name is always NULL terminated.
Kevin Day [Fri, 9 Oct 2026 00:27:34 +0000 (19:27 -0500)]
Update: Ensure f_fll_id_t.name is always NULL terminated.

Set the normal length of `f_fll_id_name_length_d` to 63.
Then have the actual max length remain at 64 via newly added `f_fll_id_name_max_length_d`.

The `f_fll_id_name_length_d` is only used for comparisons now.
The `f_fll_id_name_max_length_d` is used on the structure.
This should prevent **API** and **ABI** breakage.

Add missing close parenthesis in documentation comment.

2 weeks agoUpdate: Add missing "medium" allocation size.
Kevin Day [Thu, 8 Oct 2026 01:26:45 +0000 (20:26 -0500)]
Update: Add missing "medium" allocation size.

This has been overlooked and is now added with a default value of 16.

2 weeks agoCleanup: Do not add single quote after printed date.
Kevin Day [Mon, 5 Oct 2026 02:03:11 +0000 (21:03 -0500)]
Cleanup: Do not add single quote after printed date.

2 weeks agoUpdate: Add future status codes, commented out.
Kevin Day [Fri, 2 Oct 2026 01:31:43 +0000 (20:31 -0500)]
Update: Add future status codes, commented out.

This will be potentially enabled (or removed) in 0.9.x and later.

2 weeks agoUpdate: Add space in printed error message 'for program'.
Kevin Day [Fri, 2 Oct 2026 00:06:39 +0000 (19:06 -0500)]
Update: Add space in printed error message 'for program'.

2 weeks agoBugfix: Properly print program argument in fake_make_operate_process_return().
Kevin Day [Thu, 1 Oct 2026 03:46:31 +0000 (22:46 -0500)]
Bugfix: Properly print program argument in fake_make_operate_process_return().

The print should instead be `%Q` rather than `%s`.
Fix the color context as well.

2 weeks agoFeature: Print the time stamp, if possible, when the operation fails or is cancelled.
Kevin Day [Thu, 1 Oct 2026 02:54:12 +0000 (21:54 -0500)]
Feature: Print the time stamp, if possible, when the operation fails or is cancelled.

Provide additional useful information, such as time stamp.

There is currently no **FLL** wrapper for `strftime()`.

This does require bringing in a new dependency `f_time`.

This is all optional via the `_en_print_time_on_cancel_` and `_en_print_time_on_failure_` defines.
The modes `time` and `individual_time` are used to enable this.
The `time` mode is added by default.
The `f_time` is not a dependency if `time` or `individual_time` modes are not used.

Update the boot strap script to pass `time` and `individual_time` accordingly to just `fake`.

2 weeks agoFeature: Print operation content on error.
Kevin Day [Thu, 1 Oct 2026 02:01:49 +0000 (21:01 -0500)]
Feature: Print operation content on error.

Provide additional details on error by showing the exact line (without expanding any **IKI** syntax).

This requires changes in some of the functions, which breaks **API** and **ABI**.
This only happens in the level 3, so programs.
The programs aren't as strictly required to be non-breaking changes.
(Although, non-breaking changes is highly encouraged.)
I decided the additional error information to be of more value than the breaking change aspect.

2 weeks agoUpdate: License descriptions to use the new formats and wrapped license structure.
Kevin Day [Mon, 7 Sep 2026 15:48:53 +0000 (10:48 -0500)]
Update: License descriptions to use the new formats and wrapped license structure.

2 weeks agoUpdate: Use word characters in license file name examples in the license.
Kevin Day [Mon, 7 Sep 2026 15:40:22 +0000 (10:40 -0500)]
Update: Use word characters in license file name examples in the license.

2 weeks agoUpdate: Rename license files to use word characters and avoid dashes.
Kevin Day [Mon, 7 Sep 2026 15:34:46 +0000 (10:34 -0500)]
Update: Rename license files to use word characters and avoid dashes.

This makes the licenses file names friendlier and easier to work with.
This also better allows for combining licenses where a word character, such as a minus sign `-`, can be used to designate the different parts.

2 weeks agoUpdate: Add new license Clarified 1.0 (or later).
Kevin Day [Mon, 7 Sep 2026 13:34:36 +0000 (08:34 -0500)]
Update: Add new license Clarified 1.0 (or later).

This provides a way orf adding the same protections done to the OSL1.1+ license.
This acts as a wrapping license to others so that these conditions may be provided without directly altern a wrapped license.

This essentially requires licensees to agree to terminology and applications (not as in software applications but as in "to apply") for their use to be valid and lawful.
But only within the scope of the works.

This is official as of Sep 7, 2026 (UTC).
The dates are really what designate the official date in addition to the version.
I need to make a separate license repository and make official tagged releases for each license to provide a more proper way of clearly designating official license releases.
For now, the ultimate way of doing this will need to be a public announcement on the website.

2 weeks agoUpdate: Open Standard License 1.1.
Kevin Day [Mon, 7 Sep 2026 13:31:33 +0000 (08:31 -0500)]
Update: Open Standard License 1.1.

This is an offiical update on Sep 7, 2026 (UTC) that is intended to provide more clarifications and clean it up.

I worked an another license that applies the same changes as done in the OSL 1.1.
This helped me notice more things that might need further clarification and details.

The following are some of the changes:

- Explicitly add Licenser term and use that.
- Make each top-level section using 3-letters, such as `PRL` instead of `01` to make referencing sections more distinct (like `[PRL.07.b]`).
- Further clarifiy details of "license is irrevocable unless...".
  - This must always include the "or greater" or other similar changes so add (a) and (b) to describe this.
- Follow new line spacing practices (two lines between each section and one line after each section title).
- Break apart items with long sentences into sub-items.
- Move the "When at any point in time under any ..." item underneath the item before it and update the numbering.
- Add missing parenthesis.
- Clarify the now `[PRL.16]` by:
  - Breaking part of the long sentence into more sub-items.
  - Further clarify by adding "Containing is not limited to..." sub-item.
- Clarify the now `[PRL.17]` by:
  - Adding " Machines, LCG, software, etc..." sub-item.
- Allow all of the liones to be referenced by prepending item numbers like `01)`.
  - Use the same numbering system consistently.

2 weeks agoUpdate: Finish review and finalize Open Standard License to 1.1.
Kevin Day [Thu, 20 Aug 2026 02:03:34 +0000 (21:03 -0500)]
Update: Finish review and finalize Open Standard License to 1.1.

Reviewed the license and now make it official as of August 20, 2026 (UTC).

2 weeks agoUpdate: Change language in Open Standard License to 1.1 or later.
Kevin Day [Tue, 28 Jul 2026 01:46:43 +0000 (20:46 -0500)]
Update: Change language in Open Standard License to 1.1 or later.

I did a review pass and attempted to improve the language and wording.

Instead of using "combined works", use "modified works".
That seems to make more sense as "combined works" makes less sense for a standard / specification.

Break down the details a bit more.

I will likely need to do further review later on before I officially release this license update.

2 weeks agoUpdate: Open Standard License to 1.1 or later.
Kevin Day [Tue, 28 Jul 2026 00:38:46 +0000 (19:38 -0500)]
Update: Open Standard License to 1.1 or later.

Address problems, misunderstandings, misrepresentations, or anything else caused by how society appears to have spontaneously forgotten how computers work and what "AI" is.
Provide the LCG terminology to help better clarify things so that "AI" can be more properly used.

4 months agoUpdate: Further clarify FSS specification in regards to Unicode combining characters.
Kevin Day [Sun, 31 May 2026 15:36:39 +0000 (10:36 -0500)]
Update: Further clarify FSS specification in regards to Unicode combining characters.

I added combining characters to a new line (which is after the new line character as per **Unicode** rules).
I discovered that the tools I tested do not combine into the new line.
Instead, they present an invalid/incomplete/partial character on the next line.

This seems incorrect to me.
I want the **FSS** to combine onto the new line and not treat it as a new line for the purposes of termination.
Update the standard to favor the current behavior that I have observed.

I am going to do further research to try and understand how **Unicode** defines how this should happen.
I will follow this up with updates as needed.

4 months agoUpdate: Invert debug mode parameter in boot strap example script.
Kevin Day [Sun, 31 May 2026 15:08:22 +0000 (10:08 -0500)]
Update: Invert debug mode parameter in boot strap example script.

I generally want debugging when using the example boot strap script.
Make the default behavior to have debug mode enabled.

The debug parameter to the boot strap example script now disables the debug mode.

4 months agoUpdate: Handle error printing of F_complete_not_utf_start.
Kevin Day [Sun, 31 May 2026 14:59:30 +0000 (09:59 -0500)]
Update: Handle error printing of F_complete_not_utf_start.

5 months agoUpdate: To Unicode 16.
Kevin Day [Fri, 29 May 2026 00:45:58 +0000 (19:45 -0500)]
Update: To Unicode 16.

This gets the code base up to date with **Unicode 16**.
I intend to follow this up with additional changes to update to **Unicode 17**.

I discovered that I accidentally had the unit tests disabled for the **Unicode** is_* functions.
Re-enable the tests and get things working.
Also add a "is_control_picture" unit tests.
I added additional logic that prints out useful information for when many of the **Unicode** related unit tests fail.
I intend to slowly add more such logic to all of me units tests over time.

I discovered that the combining characters might have marks in them that do not belong as punctuation.
I will have to follow this up with a bug fix to address all of these cases.
This will take some time.
I did not correct the unit tests within this commit to avoid doing a lot of that work right now.

I believe I also need to add is_mark functions to properly handle this and test for this.
This is will be a new feature to fix a bug.
I should also back port these changes to the 0.6.x series.

I also made some structural changes by adding some more if conditionals in situations where it seemed like there were too many checks in a given block set.

5 months agoUpdate: Build scripts to better handle white spaces.
Kevin Day [Thu, 28 May 2026 22:32:06 +0000 (17:32 -0500)]
Update: Build scripts to better handle white spaces.

The `"${@}"` will expand spaces correctly into each parameter.
The double quotes are requires as `${@}` will not work as expected.

5 months agoUpdate: The generate unicode script to accept input file parameter.
Kevin Day [Thu, 28 May 2026 22:31:38 +0000 (17:31 -0500)]
Update: The generate unicode script to accept input file parameter.

5 months agoUpdate: Remove unused `slash_count` variable.
Kevin Day [Thu, 14 May 2026 23:24:57 +0000 (18:24 -0500)]
Update: Remove unused `slash_count` variable.

The `slash_count` variable is not used for anything anymore in this specific function.

5 months agoUpdate: First copyright year is actually 2006.
Kevin Day [Mon, 11 May 2026 02:00:41 +0000 (21:00 -0500)]
Update: First copyright year is actually 2006.

I discovered that my Turtle Kevux Installation Scripts actually has a copyright of 2006 and not 2007.
This means the official first year is actually 2006 and not 2007.

The old commit where I inferred the original dat of 2007 is: e2c7d76e9ed717d18a30a3a0d6a8d3b2e2522f8f.

5 months agoUpdate: Utilize -pipe in default build flags.
Kevin Day [Sun, 10 May 2026 15:33:30 +0000 (10:33 -0500)]
Update: Utilize -pipe in default build flags.

This prevents writing to a file system directory, like `/tmp`.

Writing to `/tmp` clobbers up that directory, wastes disk I/O, and reduces the life span of drives (like solid state hard drives).
Avoid all of this by utilizing the compiler option `-pipe`.

5 months agoUpdate: Next micro version (0.8.2).
Kevin Day [Thu, 30 Apr 2026 05:46:31 +0000 (00:46 -0500)]
Update: Next micro version (0.8.2).

The following are the commands that I ran to make this change:
  # find build/ level_? specifications/ documents/ licenses/ -type f -exec sed -i -e 's|0\.8\.1|0.8.2|g' -e 's|^version_micro 0|version_micro 1|g' '{}' ';'
  # find level_3/ -name *.h -exec sed -i -e 's|_program_version_micro_s F_string_ascii_1_s|_program_version_micro_s F_string_ascii_2_s|g' -e 's|_program_version_micro_s_length F_string_ascii_1_s_length|_program_version_micro_s_length F_string_ascii_2_s_length|g' '{}' ';'
  # sed -i -e 's|version_micro 1|version_micro 2|g' build/*/settings* build/stand_alone/*.settings* level_*/*/data/build/*settings*

5 months agoBugfix: Incorrect micro version in stand alone build settings. 0.8.1
Kevin Day [Thu, 30 Apr 2026 05:09:24 +0000 (00:09 -0500)]
Bugfix: Incorrect micro version in stand alone build settings.

5 months agoBugfix: The bootstrap.sh script isn't loading build_libraries setting properly.
Kevin Day [Thu, 30 Apr 2026 04:23:39 +0000 (23:23 -0500)]
Bugfix: The bootstrap.sh script isn't loading build_libraries setting properly.

The variable for the `build_libraries` setting is just `libraries`.
The code is incorrectly saving that setting in `build_libraries` variable.
Make the code save values in `libraries` variable instead of `build_variables` variable.

Add an additional conditional logic check for when setting a variable "has" key to `no`.
If the value already exists and has a `yes` assigned, then do not set it to `no`!

Do some code cleanup up:
  - Move all of the keys into a single location for the loops (one location for single values and one location for multi values).
    - Make these read only local variables.
  - Add additional safety checks for when `${key}` might be NULL.

6 months agoBugfix: Incomplete and invalid bootstrap.sh settings.
Kevin Day [Thu, 23 Apr 2026 03:14:22 +0000 (22:14 -0500)]
Bugfix: Incomplete and invalid bootstrap.sh settings.

The build settings in `bootstrap.sh` is incomplete or invalid for various reasons.

Some of the build settings are now consistently present in the Multi value Objects array loop.

The `build_sources_script-mode` is now being loaded.

Many of the build settings are now properly being populated using the correct variable or settings names.

The `bootstrap_id()` is now being called where the `bootstrap_id()` call has been missing entirely.

Remove build settings that do not actually exist in the standard (like `defines_object_program`).

The `has-flags_library-mode` is now being properly used.

6 months agoBugfix: The bootstrap script is overwriting existing multi-valued settings.
Kevin Day [Wed, 22 Apr 2026 03:47:00 +0000 (22:47 -0500)]
Bugfix: The bootstrap script is overwriting existing multi-valued settings.

This happens when there are multiple modes specifying the same value.
The multi-valued settings must have the value appended and not overwritten or removed.

Specifically, the setting is designated as not populated when a mode specifies a setting and then is followed by another mode that does not specify this setting.

Resolve this by adding checks if the setting is already designated as specified.
If the settings is not specified, then and only then declare it as unspecified.

6 months agoBugfix: The bootstrap script improperly loads settings resulting in incorrectly faile...
Kevin Day [Wed, 22 Apr 2026 03:20:18 +0000 (22:20 -0500)]
Bugfix: The bootstrap script improperly loads settings resulting in incorrectly failed builds.

I suspect this situation happened due to various changes over time without a thorough review of everything that needs to be changed.

Reserve the variable index position of 0 to designate not found.
Update all checks to then check for `key` to not be 0 after calling `bootstrap_id()`.
This fixes problems where the position after the last valid index might get set and used as a value.
When the position after the last valid index is read, it could read these values even if it should report not found.

The index position checks are updated to more properly check and assign the index using the appropraite `has-*` and `has-*-mode` vs the normal value `*` and `*-mode`, respectively.

Update all index position checks to check the `has-*` and `has-*-mode` accordingly.
This change fixes the primary problem that is causing the build to fail due to incorrect variable loading.
The `has-*` and `has-*-mode` checks checks for existence.
Then and only then should the actual respective values be used.
In particular, the `*-mode` settings should only be assigned if the respective `has-*-mode` is set to `yes`.

This bug is observed in my **TKIS** script development where the `path_headers` is being treated as an empty string despite being designated as `fll`.
The **Featureless Make** program compiles properly but not this `bootstrap.sh` script.
The **TKIS** scripts are expected to be run on a system without the **FLL** project at all.
I have not observed this problem because I have been using the **Featureless Make** directly for years now.
The packaging and unit tests scripts provided by this project are coincidentally not triggering any obvious errors with the improper behavior.

If the existing scripts were working before then these changes might cause problems with those scripts.
I will follow this up and investigate and fix these issues.
Running the **Featureless Make** on these works and so these changes likely expose existing problems rather than causes regressions.

I would love to find a way to reduce the repetitive assignments to variables in a safe/sane manner.
This would require more research on my part, if it is even possible.
I don't plan on doing such research any time soon and so I am continuing to consider the bootstrap script design as tolerable.

Additional Changes:
  - Simplify logic in for loops for `bootstrap_id()` by combining all of the passes into a single pass (The actual index values are irrelevant and so restructuring/reordering caused by this is not a problem).
  - Ensure the key is an integer in all cases.
  - Remove unnecessary `key` variable assignments.
  - Remove some redundant assignments.

6 months agoBugfix: The fss_embedded_list_read and fss_embedded_list_write are missing from stand...
Kevin Day [Tue, 21 Apr 2026 02:18:51 +0000 (21:18 -0500)]
Bugfix: The fss_embedded_list_read and fss_embedded_list_write are missing from stand alone builds.

I apparently overlooked and completely forgot to add this.

Add the build settings and the `config.h` settings for both the read and write programs for FSS Embedded List.

6 months agoBugfix: Add missing define to private_fl_fss_list_write_object_trim().
Kevin Day [Tue, 21 Apr 2026 02:17:54 +0000 (21:17 -0500)]
Bugfix: Add missing define to private_fl_fss_list_write_object_trim().

The `fl_fss_embedded_list_object_write()` depends on `private_fl_fss_list_write_object_trim()`.

6 months agoBugfix: Out of place build settings files in stand alone builds.
Kevin Day [Tue, 21 Apr 2026 02:05:07 +0000 (21:05 -0500)]
Bugfix: Out of place build settings files in stand alone builds.

The regular files are being included in the stand alone builds.
This is confusing and can lead to build failures due to selecting invalid build settings files.

Remove the build settings files that must not exist in stand alone builds.

7 months agoBugfix: Invalid seeked value on failure in f_file_seek().
Kevin Day [Thu, 5 Mar 2026 02:57:27 +0000 (20:57 -0600)]
Bugfix: Invalid seeked value on failure in f_file_seek().

The previous commit 6dc28ff5673c86d8d6042b47538c2f66e7726717 left out the `seeked` NULL check before assigning a value.

7 months agoBugfix: Invalid seeked value on failure in f_file_seek().
Kevin Day [Wed, 4 Mar 2026 04:41:14 +0000 (22:41 -0600)]
Bugfix: Invalid seeked value on failure in f_file_seek().

The `lseek()` can return a negative value.

Use a local variable to get the `lseek()` value.
This then allows for the `seeked` to be NULL.

Change the `seeked` parameter to be optional and when set to NULL then it is not assigned.
This neither breaks API nor ABI.

The `seeked` value is only assigned when the result is `-1`.
The POSIX standard is inconsistent about negative return values.
In the case of `lseek()`, only `-1` is technically an error.

7 months agoBugfix: Missing quote in error message for invalid parameter for file error.
Kevin Day [Wed, 4 Mar 2026 03:51:52 +0000 (21:51 -0600)]
Bugfix: Missing quote in error message for invalid parameter for file error.

8 months agoBugfix: Handle more cases of IPv6 addresses not being properly identified.
Kevin Day [Fri, 30 Jan 2026 05:44:00 +0000 (23:44 -0600)]
Bugfix: Handle more cases of IPv6 addresses not being properly identified.

I learned that `::` and `::/24` addresses are valid.

Add a few more test cases.

8 months agoCleanup: Replace literal characters with defined string characters in f_network_is_ip...
Kevin Day [Thu, 29 Jan 2026 02:39:42 +0000 (20:39 -0600)]
Cleanup: Replace literal characters with defined string characters in f_network_is_ip_address().

Literal characters like `'a'` should not be used.
Instead, things like `f_string_ascii_a_s.string[0]`.

8 months agoBugfix: Invalid IPv6 addressdetection and improve IPv4 address detection in f_network...
Kevin Day [Wed, 28 Jan 2026 05:44:03 +0000 (23:44 -0600)]
Bugfix: Invalid IPv6 addressdetection and improve IPv4 address detection in f_network_is_ip_address().

The `f_network_is_ip_address()` is not properly identifying bracketed IPv6 addresses.

Digits to the left of double colons `::` should be supported.
The forward slash `/` should be allowed after double colons `::`.
Ending in a double colon `::` is in fact valid in situations, such as with `::/0`.

Make the IPv6 logic easier to follow by adding additional comments.
Also rename `count` to `digits` to further make the code logic more understandable.

Improve IPv4 detection by checking if the number is between 0 and 255, inclusively.

Add more unit tests to better catch the newly identified and now resolved problems.
Update unit tests to use the newer `macro_f_string_static_t_initialize_2()` instead of `macro_f_string_static_t_initialize_1()`.
Add additional comments to help identify rows.

9 months agoBugfix: Incorrect documentation for f_network_from_ip_string().
Kevin Day [Tue, 27 Jan 2026 02:49:06 +0000 (20:49 -0600)]
Bugfix: Incorrect documentation for f_network_from_ip_string().

The `f_network_from_ip_string()` is incorrectly referencing IPv6 bracket notation.

Make it clear that ports are not supported.

Make it clear that IPv6 bracket notation is not supported.

Clean up the `f_network_from_ip_string()`, removing unnecessary nesting.

9 months agoBugfix: Do not include private header when installing.
Kevin Day [Thu, 22 Jan 2026 03:20:12 +0000 (21:20 -0600)]
Bugfix: Do not include private header when installing.

The `private-console.h` must not be added to the `build_sources_headers` setting.
Adding it to the `build_sources_headers` sets it up to be installed.

9 months agoCleanup: The help for -D should be printing +D instead of +D in the parenthetical...
Kevin Day [Tue, 13 Jan 2026 02:14:40 +0000 (20:14 -0600)]
Cleanup: The help for -D should be printing +D instead of +D in the parenthetical comment.

9 months agoFeature: Add support for debug mode in test script.
Kevin Day [Tue, 13 Jan 2026 02:11:04 +0000 (20:11 -0600)]
Feature: Add support for debug mode in test script.

The test script should also support the debug mode.
This is not to be confused with running the build process in debug mode itself (the `+D` / `++debug` setting).

9 months agoBugfix: Static builds with '../' relative paths for objects do not build correctly.
Kevin Day [Mon, 12 Jan 2026 02:47:31 +0000 (20:47 -0600)]
Bugfix: Static builds with '../' relative paths for objects do not build correctly.

Add new function that handles converting the relative path with '../' with one that has no '../'.
Use this to build the object paths by adding the full relative directory path for the build files.

Note that this could be a problem with possible directory structure conflicts in some situations.

Utilize a new cache `cache_relative` for the processing of the relative path.

Add additional debug reporting to improve the error reporting details with the programs, like `ar`, fail.

Add note how future FLL versions (0.9 and later) should have something like `fl_path_canonical()`.

I need to also follow this commit up with an investigation to see if any of these `../` can get outside the project root.
There is a need for a project root parameter for situations where different paths are specified, such as specifying `--sources`.
Alternatively, I might have to restrict all `../` to the sources directory and then move all of my `tests/` directory files within the `sources/` directoreis for all projects.

This also gives me reason to consider adding IKI support to enhance the build settings.
I am on the fence on actually doing this or not.

9 months agoBugfix: The fl_path_canonical() is not consistently resetting canonical.used.
Kevin Day [Sun, 11 Jan 2026 22:26:48 +0000 (16:26 -0600)]
Bugfix: The fl_path_canonical() is not consistently resetting canonical.used.

The `fl_path_canonical()` is replacing the `canonical` variable rather than appending to it.
However, when `path.used` is 0, then the current path is appended without resetting `canonical.used` to 0.

Ensure that `canonical.used` is always set to 0 to enforce replacement.

Add explicit documentation comment making it clear that this function performs a replacement rather than an append.

9 months agoBugfix: Actually install man files.
Kevin Day [Sun, 11 Jan 2026 02:26:32 +0000 (20:26 -0600)]
Bugfix: Actually install man files.

I setup the man files to be used along with the `0.8.0` release.
I completely forgot to actual add the configuration to move the man files into the proper location so that they can be installed.

Add the appropriate build settings that designate the documentation file to be installed.

9 months agoFeature: Add support for debug mode in bootstrap example script.
Kevin Day [Sat, 10 Jan 2026 22:46:14 +0000 (16:46 -0600)]
Feature: Add support for debug mode in bootstrap example script.

I use this script a lot for convenience.
Add support for enabling debug mode when building via the `-D` parameter.

9 months agoBugfix: Non-debug mode error printing prints incorrectly.
Kevin Day [Sat, 10 Jan 2026 22:44:03 +0000 (16:44 -0600)]
Bugfix: Non-debug mode error printing prints incorrectly.

A character is incorrectly printed when debug mode is disabled.

If the first character in the debug string is NULL, then do not print the wrapping parenthesis.

9 months agoUpdate: Next micro version (0.8.1).
Kevin Day [Fri, 9 Jan 2026 01:11:49 +0000 (19:11 -0600)]
Update: Next micro version (0.8.1).

The following are the commands that I ran to make this change:
  # find build/ level_? specifications/ documents/ licenses/ -type f -exec sed -i -e 's|0\.8\.0|0.8.1|g' -e 's|^version_micro 0|version_micro 1|g' '{}' ';'
  # find level_3/ -name *.h -exec sed -i -e 's|_program_version_micro_s F_string_ascii_0_s|_program_version_micro_s F_string_ascii_1_s|g' -e 's|_program_version_micro_s_length F_string_ascii_0_s_length|_program_version_micro_s_length F_string_ascii_1_s_length|g' '{}' ';'
  # sed -i -e 's|version_micro 0|version_micro 1|g' build/*/settings build/stand_alone/*.settings level_*/*/data/build/*settings*

10 months agoUpdate: Use 32-bit for f_number_unsigned_t on i386, i486, i586, and i686. 0.8.0
Kevin Day [Wed, 24 Dec 2025 19:59:15 +0000 (13:59 -0600)]
Update: Use 32-bit for f_number_unsigned_t on i386, i486, i586, and i686.

This only checks the standard GNU architecture macros.
Other systems that use different means of communication architecture shall need changes.

10 months agoUpdate: The tags file.
Kevin Day [Wed, 24 Dec 2025 14:23:48 +0000 (08:23 -0600)]
Update: The tags file.

10 months agoBugfix: The FSS Read program is missing the f_directory dependency.
Kevin Day [Tue, 23 Dec 2025 17:06:49 +0000 (11:06 -0600)]
Bugfix: The FSS Read program is missing the f_directory dependency.

10 months agoBugfix: Error reporting has invalid syntax and some are the wrong errors.
Kevin Day [Fri, 19 Dec 2025 01:01:41 +0000 (19:01 -0600)]
Bugfix: Error reporting has invalid syntax and some are the wrong errors.

The Access Denied error is missing the trailing quote.
The problem appears to stem from when I added the debug printing support.
I failed to place the closing quote into the correct location.

I also noticed that the static strings array is too short!
This will result in the wrong errors being printed.

Add the missing strings.

The stand alone builds must be updated because this now uses a string that wasn't used before.
Make sure `_di_f_string_format_sentence_end_basic_s_` is available in all custom builds that rely on the error printing.

10 months agoUpdate: The f_process syscalls should return F_implement_not if not available.
Kevin Day [Thu, 18 Dec 2025 02:18:46 +0000 (20:18 -0600)]
Update: The f_process syscalls should return F_implement_not if not available.

The `f_process` is very new.
The syscalls might not be available.

Ensure that this doesn't break older software stacks by returning `F_implement_not` when the associated syscall is not available.

10 months agoUpdate: Disable f_thread_mutex_priority_ceiling_get() and f_thread_mutex_priority_cei...
Kevin Day [Tue, 16 Dec 2025 03:07:53 +0000 (21:07 -0600)]
Update: Disable f_thread_mutex_priority_ceiling_get() and f_thread_mutex_priority_ceiling_set() for pinephone.

10 months agoUpdate: Add pinephone build mode and fix build setting inconsistencies encountered.
Kevin Day [Tue, 16 Dec 2025 02:13:19 +0000 (20:13 -0600)]
Update: Add pinephone build mode and fix build setting inconsistencies encountered.

Add a convenience build mode similar to the `android` build mode for the `pinephone`.
Just like with the `android` build mode, add a parameter to build using the `pinephone` mode to the `bootstrap-example.sh` script.
Utilize the android build variables for the script, replacing them with a more generic variable name.

I discovered and addressed some build settings inconsistencies while mass adding the `pinephone` mode.

10 months agoUpdate: Enable f_thread_cancel() in all stand alone builds.
Kevin Day [Tue, 16 Dec 2025 00:20:16 +0000 (18:20 -0600)]
Update: Enable f_thread_cancel() in all stand alone builds.

10 months agoUpdate: Use regular grep rather than POSIX regex grep in package.sh build script.
Kevin Day [Tue, 16 Dec 2025 00:18:42 +0000 (18:18 -0600)]
Update: Use regular grep rather than POSIX regex grep in package.sh build script.

Not every version of grep supports POSIX regex.
Use the uglier but better supported equivalent match strings to make the package script more portable.

10 months agoUpdate: Provide _pthread_kill_as_pthread_cancel_ and disable thread robust functions...
Kevin Day [Mon, 15 Dec 2025 02:38:55 +0000 (20:38 -0600)]
Update: Provide _pthread_kill_as_pthread_cancel_ and disable thread robust functions for Android builds.

The `_pthread_kill_as_pthread_cancel_` provides an experimental work-around for Android.
Android does not support the `pthread_cancel()` (not supporting this makes Android unsafe).

Use `pthread_kill()` with the terminate signal in place of `pthread_cancel()` when this is defined.
The `f_thread_cancel_state_set()` is also replaced with a stub function that returns `F_implement_not`.

10 months agoRevert "Bugfix: Cannot disable f_thread_cancel() and f_thread_cancel_state_set()...
Kevin Day [Mon, 15 Dec 2025 01:43:10 +0000 (19:43 -0600)]
Revert "Bugfix: Cannot disable f_thread_cancel() and f_thread_cancel_state_set() on Android."

This reverts commit a4de650d1b0461a75e7c548f3a1e5fae797393a6.

The linking passed, but when I tried to run the program, it failed.
I guess I cannot enable these.

10 months agoBugfix: Cannot disable f_thread_cancel() and f_thread_cancel_state_set() on Android.
Kevin Day [Mon, 15 Dec 2025 01:10:12 +0000 (19:10 -0600)]
Bugfix: Cannot disable f_thread_cancel() and f_thread_cancel_state_set() on Android.

These are now required by the programs.
I also tested on Android and found that these now work.
It should be safe to enable these by default on Android.

10 months agoUpdate: Provide THREAD_* defines if they do not exist and use the f_thread defines.
Kevin Day [Mon, 15 Dec 2025 00:46:01 +0000 (18:46 -0600)]
Update: Provide THREAD_* defines if they do not exist and use the f_thread defines.

Make sure all relevant `THREAD_*` are defined and if not, then define them.

Do not directly use the `PTHEAD_*` defines.
Instead use the ones provided by `f_thread`.

10 months agoUpdate: Ensure sockets defines for SOCKET_* and catch missing MSG_* defines.
Kevin Day [Mon, 15 Dec 2025 00:13:03 +0000 (18:13 -0600)]
Update: Ensure sockets defines for SOCKET_* and catch missing MSG_* defines.

Add `MSG_*` defines that I missed in a previous commit.

Add the `SOCKET_*` defines.

10 months agoUpdate: Ensure sockets defines exist, add more defines, and remove redundancy.
Kevin Day [Sun, 14 Dec 2025 23:31:47 +0000 (17:31 -0600)]
Update: Ensure sockets defines exist, add more defines, and remove redundancy.

Make sure each standard define exists.
If they do not, then create them.
This provides a new disable define called `_di_f_socket_defines_d_`.

Add a lot of missing defines.
This especially includes a lot of protocols.

The `f_socket_message_flag_e` enums are redundant, so remove them.

10 months agoUpdate: Add -A option to example bootstrap script for android.
Kevin Day [Sun, 14 Dec 2025 20:41:02 +0000 (14:41 -0600)]
Update: Add -A option to example bootstrap script for android.

The Android system has a terrible interface.
Make the bootstrap process easier by allowing a single parameter to be passed to enable passing android build mode to everything being built.

10 months agoUpdate: Add .gitignore file for common directories that should not be committed.
Kevin Day [Sun, 14 Dec 2025 17:30:07 +0000 (11:30 -0600)]
Update: Add .gitignore file for common directories that should not be committed.

10 months agoUpdate: Add man pages forr most or all FLL functions and programs.
Kevin Day [Sun, 14 Dec 2025 16:34:56 +0000 (10:34 -0600)]
Update: Add man pages forr most or all FLL functions and programs.

The man page format is terrible.

The doxygen program helps automatically create these, but it is terrible at generating the man page format (on top of the man page format itself being terrible).
I found a tool from https://github.com/gsauthof/doxy2man.git that helps convert doxygen created xml files into man pages.
It works a lot better than doxygen's man page generation.

The generation from doxygen still has problems.
It doesn't understand some of the commenting structure.

This documents the process so that I do not have to try and figure this out all over again.

I have to take the generated man pages and modify them to clean up a bunch of mess.
This is a lot of work and so I am expecting to have missed something, overlooked something, or made some silly mistake.
Oh well. I can address such problems over time.

This is another reminder (like commit 63be746d22d66870ae89f9575c82db7d0b784e32 from the 0.6 branch) that I probably have to write something that provides a better documentation format.
Then I can convert that to man pages.
I imagine something using FSS + Wiki + IKI.
Using both Wiki and IKI is because IKI isn't meant to replace Wiki.

10 months agoFeature: Add IKI Write stand alone programs.
Kevin Day [Sat, 13 Dec 2025 18:13:28 +0000 (12:13 -0600)]
Feature: Add IKI Write stand alone programs.

10 months agoUpdate: Build settings header ordering and config.c and config.h files.
Kevin Day [Sat, 13 Dec 2025 17:21:55 +0000 (11:21 -0600)]
Update: Build settings header ordering and config.c and config.h files.

Change the ordering to have the headers before the source files.
This seems to flow more naturally.

Move the main program and config.c files onto their own source lines, in general.

Make sure all programs have a config.c and config.h file.
I've generated these files in the past but now with the external programs it has become less consistent.
Make the files statically defined rather than generated and explicitly add them to the build settings.

The individual, level, and monolithic builds should still craete the config.h and config.c files.
However, remove the automated insertion of the config.c into the build settings files.
These are now directly added to the build settings files.

10 months agoUpdate: Fix problems discovered in stand alone builds.
Kevin Day [Sat, 13 Dec 2025 05:21:24 +0000 (23:21 -0600)]
Update: Fix problems discovered in stand alone builds.

The cap defines, libraries, and flags are not needed by most of the stand alone build settings.

The example program does not need fll_print.

The fake program is now using more up to date source code files for f_iki (it was missing the eki files).

The fss_read programs were not including the correct config.h files.
This then exposed incomplete config files that are now updated.

10 months agoUpdate: Make level 3 programs more consistent and fix problems.
Kevin Day [Sat, 13 Dec 2025 05:16:38 +0000 (23:16 -0600)]
Update: Make level 3 programs more consistent and fix problems.

The example program does not need fl_conversion or fll_print.

The iki_read program does not need fll_file.

Add missing defines and flags for several program build settings and fix inconsistencies.

10 months agoFeature: Add IKI Read stand alone programs.
Kevin Day [Sat, 13 Dec 2025 05:11:22 +0000 (23:11 -0600)]
Feature: Add IKI Read stand alone programs.

10 months agoFeature: Add FSS Write stand alone programs.
Kevin Day [Sat, 13 Dec 2025 02:30:45 +0000 (20:30 -0600)]
Feature: Add FSS Write stand alone programs.

10 months agoUpdate: FSS Read stand alone build has unnecessary files.
Kevin Day [Sat, 13 Dec 2025 02:18:40 +0000 (20:18 -0600)]
Update: FSS Read stand alone build has unnecessary files.

Remove unnecessary files and ensure that the `f_fss_default_d` macros are available.

10 months agoBugfix: Incorrect disable defines for fll_program_print_error_parameter_cannot_use_wi...
Kevin Day [Sat, 13 Dec 2025 02:04:06 +0000 (20:04 -0600)]
Bugfix: Incorrect disable defines for fll_program_print_error_parameter_cannot_use_with_xor.

10 months agoBugfix: Incorrect disable defines for fl_fss_basic_object_write.
Kevin Day [Sat, 13 Dec 2025 02:02:44 +0000 (20:02 -0600)]
Bugfix: Incorrect disable defines for fl_fss_basic_object_write.

10 months agoCleanup: Remove unused dependencies in fss_read and fss_write projects.
Kevin Day [Fri, 12 Dec 2025 03:11:13 +0000 (21:11 -0600)]
Cleanup: Remove unused dependencies in fss_read and fss_write projects.

10 months agoBugfix: Incorrectly used f_memory_adjust() instaed of f_memory_resize() in fss_read.
Kevin Day [Fri, 12 Dec 2025 03:10:39 +0000 (21:10 -0600)]
Bugfix: Incorrectly used f_memory_adjust() instaed of f_memory_resize() in fss_read.

10 months agoCleanup: Add missing space to endif comment.
Kevin Day [Fri, 12 Dec 2025 03:10:10 +0000 (21:10 -0600)]
Cleanup: Add missing space to endif comment.

10 months agoUpdate: Existing stand alone builds.
Kevin Day [Fri, 12 Dec 2025 03:08:29 +0000 (21:08 -0600)]
Update: Existing stand alone builds.

Change the file structure for the fl_fss source files, breaking it up into two lines.

The status code should use `stand_alone` as the stage.
I was originally trying something different and abandoned the approach but I forgot to change the stage back to `stand_alone`.

10 months agoFeature: Add FSS Read stand alone programs.
Kevin Day [Fri, 12 Dec 2025 03:05:04 +0000 (21:05 -0600)]
Feature: Add FSS Read stand alone programs.

10 months agoUpdate: Remove unnecessary level_0/parse.h include.
Kevin Day [Thu, 11 Dec 2025 06:26:06 +0000 (00:26 -0600)]
Update: Remove unnecessary level_0/parse.h include.

10 months agoFeature: Add Status Code stand alone programs.
Kevin Day [Thu, 11 Dec 2025 06:18:38 +0000 (00:18 -0600)]
Feature: Add Status Code stand alone programs.

10 months agoBugfix: Multiple dependencies files, not handling all of the dependencies.
Kevin Day [Thu, 11 Dec 2025 05:53:29 +0000 (23:53 -0600)]
Bugfix: Multiple dependencies files, not handling all of the dependencies.

A single stand alone project is not properly getting all of the FLL sources when multiple dependency files are specified and they have different dependencies.

This now ensures that all properly named `dependencies` files are processed.

10 months agoBugfix: Incorrect destination path for the custom stand alone build config.h files.
Kevin Day [Thu, 11 Dec 2025 05:42:26 +0000 (23:42 -0600)]
Bugfix: Incorrect destination path for the custom stand alone build config.h files.

This now uses the correct path.

10 months agoUpdate: Bootstrap script, changing the switch to loops and fixing static object build...
Kevin Day [Thu, 11 Dec 2025 05:27:28 +0000 (23:27 -0600)]
Update: Bootstrap script, changing the switch to loops and fixing static object build using shared value.

Using a loop with a counter allows for avoiding the need to manually specify each count.
This makes updating easier in that regard.

The number of values would make one huge loop so break it apart into multiple loops.

The object building for static objects is incorrectly using shared variables when it should instead use static variables.

10 months agoUpdate: Setup all defauls and provide version_file and version_target defaults.
Kevin Day [Wed, 10 Dec 2025 04:34:03 +0000 (22:34 -0600)]
Update: Setup all defauls and provide version_file and version_target defaults.

Make sure all of the build setting defaults are assigned at the start of the load process.

The `bootstrap.sh` script needs to also set the defaults for `version_file` and `version_target`.

10 months agoRefactor: Build mode gcc_13 to flex_arrays to provide a more generic name.
Kevin Day [Wed, 10 Dec 2025 04:23:50 +0000 (22:23 -0600)]
Refactor: Build mode gcc_13 to flex_arrays to provide a more generic name.

The `gcc_13` was a temporary mode and I don't want to have version specific modes.
Replace the mode witha more long term version unspecific name `flex_arrays`.

10 months agoCleanup: Remove unused dependencies in status code program.
Kevin Day [Wed, 10 Dec 2025 03:38:24 +0000 (21:38 -0600)]
Cleanup: Remove unused dependencies in status code program.

I need to vet all programs and remove any unused dependencies.