]> Kevux Git Server - fll/log
fll
14 months agoUpdate: Replace f_fss_simple_packet_identify() with f_fss_simple_packet_extract(...
Kevin Day [Mon, 4 Sep 2023 20:04:37 +0000 (15:04 -0500)]
Update: Replace f_fss_simple_packet_identify() with f_fss_simple_packet_extract() and f_fss_simple_packet_extract_range().

The implementation of f_fss_simple_packet_identify() appears to be some sort of hybrid between actual code and brainstorming.
This appears to be by accident and the resulting logic of the function is nonsense.

Fix the logic in f_fss_simple_packet_identify().
I also see no reason to perform an identify call.
The FSS Packet design is so simple that I could just add 1, 4, or 5 to determine any of the parts.
Therefore, instead implement f_fss_simple_packet_extract() and f_fss_simple_packet_extract_range() to extract the Control bits and the Size integer.
The Payload part is not extracted but for the f_fss_simple_packet_extract_range(), the range for the Payload is determined.
This allows for the caller to determine how they want to manage the memory allocation.

This is a case where object-oriented would shine had I used C++ or some other object-oriented language.
I don't have this option available and so I am going to only have f_fss_simple_packet_t and f_fss_simple_packet_range_t with their respective f_fss_simple_packet_extract() and f_fss_simple_packet_extract_range() functions.

Unit tests are now provided for these two new functions.

14 months agoBugfix: Mistakes in the FSS-000f Simple Packet specification.
Kevin Day [Sat, 2 Sep 2023 14:30:00 +0000 (09:30 -0500)]
Bugfix: Mistakes in the FSS-000f Simple Packet specification.

The "Size Block Structure" section has the wrong example.
Fix the example to display the Size Block structure, which is a 32-bit digit.

Change the "Control Block Structure" section to use "size" annotations rather than bit examples.

14 months agoUpdate: Fix unit tests after adding additional sanity checks.
Kevin Day [Fri, 1 Sep 2023 04:09:29 +0000 (23:09 -0500)]
Update: Fix unit tests after adding additional sanity checks.

The commit 3dee02180d1ab33471e57b17c1485532fee1c597 introduced additional sanity checks.

Several unit checks did as little as necessary to perform the tests when it comes to mocking.
The additional sanity checks impose additional restrictions.

14 months agoUpdate: Add missing too large and too small status code handling for F_payload too...
Kevin Day [Fri, 1 Sep 2023 03:39:04 +0000 (22:39 -0500)]
Update: Add missing too large and too small status code handling for F_payload too large and too small.

I missed these in the previous commit 2b61b24b69bb7bf7dec41759dfb4f9cb4b188ffd.

14 months agoUpdate: Take advantage of lucky convenience where F_okay could be bumped from 197...
Kevin Day [Thu, 31 Aug 2023 04:19:28 +0000 (23:19 -0500)]
Update: Take advantage of lucky convenience where F_okay could be bumped from 197 to 200 thereby matching HTTP 200 status code.

I recently noticed that the F_okay is very close to being a 200 code after swapping F_none with F_okay.
This was never planned but it is incredibly convenient.

HTTP Status 200 code now matches FLL Status Code 200.
What luck!

14 months agoUpdate: Add too large and too small status codes for F_payload and F_packet.
Kevin Day [Thu, 31 Aug 2023 03:55:47 +0000 (22:55 -0500)]
Update: Add too large and too small status codes for F_payload and F_packet.

The packet and payload are very likely to have too large status codes.
Add the too small status codes for consistency.

14 months agoUpdate: Relocate some of the more common or expected to be common format strings...
Kevin Day [Thu, 31 Aug 2023 03:21:50 +0000 (22:21 -0500)]
Update: Relocate some of the more common or expected to be common format strings to global statics.

This is a minor resource optimization.
There will hopefully be more optimizations in the future where several of the commonly used strings (within individual projects) are moved into a single location for that given project.

14 months agoCleanup: Add comment to help clarify the size * 2 logic.
Kevin Day [Wed, 30 Aug 2023 01:54:32 +0000 (20:54 -0500)]
Cleanup: Add comment to help clarify the size * 2 logic.

This will comment should help future proof accidental incorrect changes to this value.

14 months agoSecurity: Add additional sanity checks before freeing in memory array and fix structu...
Kevin Day [Wed, 30 Aug 2023 00:11:27 +0000 (19:11 -0500)]
Security: Add additional sanity checks before freeing in memory array and fix structure problem in dynamicss callback.

Add additional checks to ensure a free() does not get called on a NULL pointer.

The dynamics delete and destroy callbacks in particular have the f_memory_array_resize() inside the loop rather than outside the loop.

14 months agoCleanup: Remove unused file that got overlooked when wrapping up the recent memory...
Kevin Day [Mon, 28 Aug 2023 04:20:14 +0000 (23:20 -0500)]
Cleanup: Remove unused file that got overlooked when wrapping up the recent memory logic re-design.

14 months agoSecurity: Invalid allocation size for fll_execute_arguments_add_parameter_set().
Kevin Day [Mon, 28 Aug 2023 03:57:45 +0000 (22:57 -0500)]
Security: Invalid allocation size for fll_execute_arguments_add_parameter_set().

The size should be size * 2 because of the parameter and value are added.

14 months agoFeature: Add -U/--under parameter to Featureless Make.
Kevin Day [Mon, 28 Aug 2023 02:59:03 +0000 (21:59 -0500)]
Feature: Add -U/--under parameter to Featureless Make.

I discovered that the data build directory customization is incomplete while working on the Kevux Tools TacocaT program.

A new parameter to specify a sub-directory within the data directory, called "under", represented by -U and --under is now added.
This provides the ability to change the "build" part of the "data/build" directory.
This can even be an empty string.

The fakefile documentation and specification is updated because this parameter must now be reserved and exposed to IKI expansion.
I have not yet done a thorough test of this feature and I will hopefully do this before the next release.
I have performed a basic test and I can now compile the TacocaT program easily using this parameter.

14 months agoUpdate: Fix some overlooked unit tests following wrap up of re-designing the memory...
Kevin Day [Sun, 27 Aug 2023 22:11:39 +0000 (17:11 -0500)]
Update: Fix some overlooked unit tests following wrap up of re-designing the memory logic.

I forgot to run all tests and overlooked updating these.

14 months agoUpdate: Wrap up re-designing the memory logic.
Kevin Day [Sun, 27 Aug 2023 21:52:26 +0000 (16:52 -0500)]
Update: Wrap up re-designing the memory logic.

Update the unit tests and stand alone builds as needed.
Also clear out the stand alone builds that are out of date and require being rebuilt from the ground up.

14 months agoProgress: Continue re-designing of the memory logic, focusing on unit tests for recen...
Kevin Day [Sun, 27 Aug 2023 01:36:18 +0000 (20:36 -0500)]
Progress: Continue re-designing of the memory logic, focusing on unit tests for recent changes to f_string_dynamic_t and similar.

This adds some test files that I did a git add on but forgot to do the git commit with.
Update many of the unit tests and fix any mistakes discovered.

15 months agoProgress: Continue re-designing of the memory logic, focusing on unit tests for recen...
Kevin Day [Wed, 23 Aug 2023 05:49:48 +0000 (00:49 -0500)]
Progress: Continue re-designing of the memory logic, focusing on unit tests for recent changes to f_string_dynamic_t and similar.

15 months agoProgress: Continue re-designing of the memory logic, focusing on f_string_dynamic_t...
Kevin Day [Tue, 22 Aug 2023 04:24:57 +0000 (23:24 -0500)]
Progress: Continue re-designing of the memory logic, focusing on f_string_dynamic_t and similar.

15 months agoProgress: Continue re-designing of the memory logic.
Kevin Day [Sat, 19 Aug 2023 04:19:37 +0000 (23:19 -0500)]
Progress: Continue re-designing of the memory logic.

I would note that I am leaving the append() and append_all() for the IKI structures because they are complex.
In the long term I may end up adding back the append() and append_all() functions for each type.
At this time it is more advantageous for me to not have that consistency for easier maintainability while the project is evolving and refactoring.

I still need to look over the string and UTF string memory related functionality.
This will be more delicate and given the size of these two projects will be a bit time consuming.

15 months agoUpdate: Existing F_none and similar uses are now F_okay.
Kevin Day [Fri, 18 Aug 2023 00:21:46 +0000 (19:21 -0500)]
Update: Existing F_none and similar uses are now F_okay.

This is the second part of changing the status codes.

This is a massive regex based change and so there is a lot of potential for mistakes.
Time will tell.

15 months agoUpdate: Use F_okay instead of F_none as the first status code.
Kevin Day [Thu, 17 Aug 2023 23:44:27 +0000 (18:44 -0500)]
Update: Use F_okay instead of F_none as the first status code.

This change is in two parts.
This part is just changing the status codes.
The next part will be changing all code using the status code F_none as the standard return to instead use F_okay.

I believe that F_okay makes more semantic sense than F_none when providing a standard code.
The original idea of F_none is that there are no errors.
I think "okay" is even more accurate.

Furthermore, the F_okay better matches the return code of the HTTP standard "HTTP 200 Okay".

15 months agoUpdate: Simplify disable defines for status codes.
Kevin Day [Thu, 17 Aug 2023 23:24:14 +0000 (18:24 -0500)]
Update: Simplify disable defines for status codes.

I like the idea of having the pre-created disable defines for each group.
The problem is that this is extra maintenance and I do not see significant use for this functionality.
Remove these to make my life slightly easier.

15 months agoProgress: Continue re-designing of the memory logic, mostly getting tests back in...
Kevin Day [Thu, 17 Aug 2023 03:48:37 +0000 (22:48 -0500)]
Progress: Continue re-designing of the memory logic, mostly getting tests back in synchronization.

Get the tests working.
Some of the tests I am not mocking the allocation and performing the real allocation actions.
This allows for the unit test to also test memory if run with valgrind.
I did this after getting much of the work done and so I ended up not consistently doing this on all of the "works" tests.
Generally, the tests for functions with the double 's' have the actual memory allocations.

15 months agoProgress: Continue re-designing of the memory logic also removing *_append() and...
Kevin Day [Sun, 13 Aug 2023 22:11:13 +0000 (17:11 -0500)]
Progress: Continue re-designing of the memory logic also removing *_append() and *_append_all().

In some cases *_append() and *_append_all() functions are removed.
This is a lot to manage at this time so remove it.
At some future point in time I need to implement a good generic append and append all design.
This is likely to use some sort of callback that performs the individual copy calls.

Many of the existing *_append() and *_append_all() are left alone but may eventually be removed.

The dynamic string based ones, however, will remain as an exception case.

The names I originally chose for the callbacks are misleading.
Rename them to be "delete" and "destroy" rather than "resize" and "adjust", respectively.

Half way through changing this I came across the more complex cases for resizing.
These I need callbacks both both array of arrays and arrays of arrays.
I did not finish the process of converting this.

The f_type_array needs more work.
In particular, the arrays of arrays in f_type_array can be moved into a common f_memory function, such as f_memory_arrayss_resize().

The unit tests have not been updated but I did manage to get the unit test for the f_account done.
The stand alone build config.h files are not update to date either.

These changes have shown a significant improvement in the resulting binary size.
The current size is actually just barely smaller than the 0.6.7 equivalent build (when compiled using the same compiler for both).
The changes are not complete and so I anticipate the 0.7.0 branch to be smaller than the 0.6.7 branch as of this change set despite the 0.7.0 development branch having more functionality.

15 months agoCleanup: Remove double "const" and add missing changes that were supposed to be in...
Kevin Day [Sun, 13 Aug 2023 00:46:35 +0000 (19:46 -0500)]
Cleanup: Remove double "const" and add missing changes that were supposed to be in the previous progress commit.

The previous progress commit is 8a9248d98b54f39824a335da036b7671d05bae1f.

15 months agoProgress: Continue re-designing of the memory logic.
Kevin Day [Sat, 12 Aug 2023 23:07:33 +0000 (18:07 -0500)]
Progress: Continue re-designing of the memory logic.

15 months agoBugfix: Stop using f_memory_array_append_all() for an array of IKI data.
Kevin Day [Sat, 12 Aug 2023 03:29:35 +0000 (22:29 -0500)]
Bugfix: Stop using f_memory_array_append_all() for an array of IKI data.

There is some logic mistake, structural mistake, design mistake, or an oversight.
Just do not use it for now and instead use a traditional for loop.

I may get rid of f_memory_array_append_all() in the future or I may spend time investigating what my mistake is in this use case.

15 months agoUpdate: Ensure pointers passed to the function are constant.
Kevin Day [Sat, 12 Aug 2023 03:28:09 +0000 (22:28 -0500)]
Update: Ensure pointers passed to the function are constant.

The function should never be allowed to change the pointer itself.
A double pointer is used so that the value of the pointer can be another pointer which can then be changed.

15 months agoProgress: Continue re-designing of the memory logic.
Kevin Day [Fri, 11 Aug 2023 03:11:01 +0000 (22:11 -0500)]
Progress: Continue re-designing of the memory logic.

This makes a second pass around f_thread memory and addresses other bugs found.

15 months agoProgress: Continue re-designing of the memory logic.
Kevin Day [Thu, 10 Aug 2023 04:33:16 +0000 (23:33 -0500)]
Progress: Continue re-designing of the memory logic.

I did a first pass through the f_thread related memory code.
There could be a second pass through the f_thread, but for now this is good enough.

I spent some time going through the build process and other such code to get unit tests running with the latest progress commits.

Fix mistake in f_file_stream_read() where F_none_eof is returned but F_none should be returned.

Include cleanup commit f6725366474492f1b7baabba7938854f6e6412eb from 0.6 branch.

15 months agoProgress: Continue re-designing of the memory logic.
Kevin Day [Tue, 8 Aug 2023 04:33:35 +0000 (23:33 -0500)]
Progress: Continue re-designing of the memory logic.

15 months agoBugfix: Use the settings-mocks for the f_type_array unit tests.
Kevin Day [Tue, 8 Aug 2023 02:40:13 +0000 (21:40 -0500)]
Bugfix: Use the settings-mocks for the f_type_array unit tests.

This is a follow up to the Progress commit 0dda50d25ee1fd477b495451c8e8b55b428a85a3.

After trying to figure out why the tests were failing, I finally discovered that the wrong file is being used.
The settings-mocks needs to be used to pull in the mocked data.

I felt this fix deserved its own distinct commit rather than being part of another Progress commit.

15 months agoCleanup: Add explicit casts in the f_memory memset() calls.
Kevin Day [Tue, 8 Aug 2023 01:21:26 +0000 (20:21 -0500)]
Cleanup: Add explicit casts in the f_memory memset() calls.

The pointer is cast to uint8_t to perform the arithmetic.
The pointer is not cast back but the cast happens in the function call.
Be explicit and designate that the cast back to a void pointer is intentional.

15 months agoSecurity: Add additional checks against the parameters in fll_execute_program().
Kevin Day [Tue, 8 Aug 2023 01:21:06 +0000 (20:21 -0500)]
Security: Add additional checks against the parameters in fll_execute_program().

15 months agoRegression: Incorrect type on memset() in array resulting in invalid read.
Kevin Day [Tue, 8 Aug 2023 01:02:45 +0000 (20:02 -0500)]
Regression: Incorrect type on memset() in array resulting in invalid read.

The particular problematic array is an array of f_string_t and not and array of f_char_t.

This is the opposite of the regression that is fixed in commit 3533e7f840c5d852f98372f2dd9c9066cc53c85e.

15 months agoBugfix: Wrong index is being used for the file in Featureless Make.
Kevin Day [Mon, 7 Aug 2023 16:30:12 +0000 (11:30 -0500)]
Bugfix: Wrong index is being used for the file in Featureless Make.

The values array should be used and not the location of the parameter.

15 months agoProgress: Continue re-designing of the memory logic.
Kevin Day [Sun, 6 Aug 2023 21:44:56 +0000 (16:44 -0500)]
Progress: Continue re-designing of the memory logic.

This wraps up the simple memory append all functions with added unit tests.
I anticipate that I need to do the more complex ones as well.

This adds the adjust and resize callbacks for use in more complex memory functions.
The more complex memory functions for adjust and resize are implemented with unit tests.

The unit tests for the type array callbacks are incomplete because I did not get time to finish writing them.
Those unit tests are written but are incomplete and do not yet work.

15 months agoRegression: Follow up to invalid type used when allocating string, f_string_t should...
Kevin Day [Sun, 6 Aug 2023 02:54:46 +0000 (21:54 -0500)]
Regression: Follow up to invalid type used when allocating string, f_string_t should instead be f_char_t.

I missed the save button on this file and this change did not get committed.

15 months agoProgress: Begin simplifying memory design, starting with f_number_unsigned_t array...
Kevin Day [Sun, 6 Aug 2023 00:43:19 +0000 (19:43 -0500)]
Progress: Begin simplifying memory design, starting with f_number_unsigned_t array structures.

I find that the use of custom per-type functions to simplify the usability of the library.
I also find that this increases the complexity and size of the code base.

I believe that over time this will become more complex and even harder to maintain.
I have decided to start changing the design to go back to simple allocation methods that just require more variables.
This simplifies the code and in theory will make it faster by having fewer function calls on the stack.
This may even reduce the resulting binary size (and I hope it does).

The down side is that the users of the library will once more have longer function call lines.

This commit is the beginning of the redesign process.

I also added the "append" and "append all" methods for f_memory_array calls.

15 months agoRegression: Invalid type used when allocating string, f_string_t should instead be...
Kevin Day [Sun, 6 Aug 2023 00:38:12 +0000 (19:38 -0500)]
Regression: Invalid type used when allocating string, f_string_t should instead be f_char_t.

I noticed odd differences between the 0.6.x and the 0.7.x in terms of memory usage.
I discovered this to be due to a bug where the f_string_t is being used when the type should be instead f_char_t.
This is likely a bug introduced in some past refactor.

15 months agoCleanup: Surround constant variable in a scoped block.
Kevin Day [Sun, 6 Aug 2023 00:36:16 +0000 (19:36 -0500)]
Cleanup: Surround constant variable in a scoped block.

15 months agoProgress: Begin further re-designing of the memory logic.
Kevin Day [Sat, 5 Aug 2023 20:58:49 +0000 (15:58 -0500)]
Progress: Begin further re-designing of the memory logic.

This adds the append and append all functions, respectively.
This adds a paramete check to see if width is 0.

15 months agoUpdate: Add comment in Featureless Make code to designate changes the must be done.
Kevin Day [Sat, 5 Aug 2023 20:57:14 +0000 (15:57 -0500)]
Update: Add comment in Featureless Make code to designate changes the must be done.

The use of main->program.parameters.arguments should no longer happen.
This is the old behavior and it looks like it has not been completely migrated.

This is wrong an can even have invalid read sizes.

15 months agoFeature: Add f_simple_packet_t for holding the packet data.
Kevin Day [Sat, 5 Aug 2023 19:44:08 +0000 (14:44 -0500)]
Feature: Add f_simple_packet_t for holding the packet data.

The f_simple_packet_range_t holds ranges within a string.

This f_simple_packet_t holds the actual values for the packet rather than ranges mapped to some string.

I am omitting unit tests at this time because I am going to do some additional changes involving the allocation and deallocation code project wide.

15 months agoBugfix: The socket id is not the same descriptor for reading.
Kevin Day [Sat, 5 Aug 2023 15:40:14 +0000 (10:40 -0500)]
Bugfix: The socket id is not the same descriptor for reading.

When binding and listening on some socket id, the accept call on that socket creates a new descriptor.
That descriptor is not the same as the original socket id.

Add a new id_data to the socket structure to represent the data transfer file descriptor that is created via the accept() call.
Add a new f_file_close_id() to close the file by the id in case the f_file_t is not available or in use.

15 months agoFeature: Add f_time project, adding functions for safely handling struct timespec.
Kevin Day [Sat, 5 Aug 2023 05:16:18 +0000 (00:16 -0500)]
Feature: Add f_time project, adding functions for safely handling struct timespec.

This adds f_time_spec_millisecond() and f_time_spec_nanosecond() for safely handling overflow and underflow when using standard FLL f_number_unsigned_t numbers.

Unit tests are added.

A comment in the controller prrogram is added to designate that the controller-specific functions should be updated to call these functions.

15 months agoCleanup: Style in this f_print source file.
Kevin Day [Sat, 5 Aug 2023 00:47:28 +0000 (19:47 -0500)]
Cleanup: Style in this f_print source file.

15 months agoUpdate: Wrap the static inline functions private_inline_f_print_to_error in custom...
Kevin Day [Sat, 5 Aug 2023 00:36:26 +0000 (19:36 -0500)]
Update: Wrap the static inline functions private_inline_f_print_to_error in custom disable macros.

As an exception case, wrap the private_inline_f_print_to_error() in _di_private_inline_private_f_print_to_error_ and _di_private_inline_f_print_to_error_ as appropriate.
Using a define condition on all of the possible cases would be difficult to manage.

An explicit define is simpler and easier in this exceptional case.

15 months agoCleanup: Reduce usage of static in functions.
Kevin Day [Sat, 5 Aug 2023 00:33:55 +0000 (19:33 -0500)]
Cleanup: Reduce usage of static in functions.

Remove the static from variables in functions that are not likely to be called multiple times and are not expected to be recursive.

I am backing off the experiment into this optimization for now.

15 months agoCleanup: Add extra parenthesis to prevent warning from clang.
Kevin Day [Sat, 5 Aug 2023 00:33:08 +0000 (19:33 -0500)]
Cleanup: Add extra parenthesis to prevent warning from clang.

15 months agoUpdate: Stand alone Featureless Make build settings.
Kevin Day [Fri, 4 Aug 2023 05:37:43 +0000 (00:37 -0500)]
Update: Stand alone Featureless Make build settings.

15 months agoCleanup: Remove the FSS Embedded List Program.
Kevin Day [Fri, 4 Aug 2023 05:00:15 +0000 (00:00 -0500)]
Cleanup: Remove the FSS Embedded List Program.

This embedded_list in fss_read should be used going forward.
The embedded_list in fss_read is not working yet and is just a copy of extended_list.
I will eventually get around to updating the embedded_list in fss_read to work as intended and expected.

15 months agoUpdate: Set the pipe flag consistely across programs.
Kevin Day [Fri, 4 Aug 2023 04:57:57 +0000 (23:57 -0500)]
Update: Set the pipe flag consistely across programs.

Use the same practice of designating the pipe as a main flag, even if the program isn't using the input pipe.

For the fss_read programs that use the word "pipe" in a main flag are renamed to "pipe" "format".

15 months agoUpdate: Control program to latest design practices, migrating from 0.6.x to 0.7.x...
Kevin Day [Fri, 4 Aug 2023 04:54:38 +0000 (23:54 -0500)]
Update: Control program to latest design practices, migrating from 0.6.x to 0.7.x design.

This gets the control program to compile under the latest design practices.

I did not to an in depth review as this program does not currently do anything.
Once the controller program is updated I will eventually come back to this.

15 months agoUpdate: Move standard console parameters enumeration into a standard enumeration...
Kevin Day [Thu, 3 Aug 2023 02:32:26 +0000 (21:32 -0500)]
Update: Move standard console parameters enumeration into a standard enumeration set and provide appropriate functions.

This should make the commonly used code slightly easier to maintain.

The control project is omitted because I am in the process of migrating it.
The migrated version will contain the appropriate changes from this.

15 months agoCleanup: Byte Dump program defines and comment.
Kevin Day [Tue, 1 Aug 2023 03:37:37 +0000 (22:37 -0500)]
Cleanup: Byte Dump program defines and comment.

15 months agoBugfix: The Byte Dump program prints extra new lines.
Kevin Day [Tue, 1 Aug 2023 01:57:54 +0000 (20:57 -0500)]
Bugfix: The Byte Dump program prints extra new lines.

Migrating from the old way to the new way results in extra new lines because of the first and last new line being printed.
Remove the extra new line being printed but still print in all other cases.

15 months agoBugfix: Byte Dump program 6-space string has only 5 spaces.
Kevin Day [Fri, 28 Jul 2023 03:33:41 +0000 (22:33 -0500)]
Bugfix: Byte Dump program 6-space string has only 5 spaces.

Add missing space.

15 months agoFeature: Add f_select_signal() and update unit tests.
Kevin Day [Fri, 28 Jul 2023 02:59:26 +0000 (21:59 -0500)]
Feature: Add f_select_signal() and update unit tests.

This adds the missing pselect() wrapper, f_select_signal().

16 months agoWorkaround: Clang compiler problems, add _clang_not_a_compile_time_constant_workaroun...
Kevin Day [Thu, 27 Jul 2023 04:03:42 +0000 (23:03 -0500)]
Workaround: Clang compiler problems, add _clang_not_a_compile_time_constant_workaround_ define in Byte Dump program.

CLang fails to handle this well and errors out with: "initializer element is not a compile-time constant".

Provide a custom define _clang_not_a_compile_time_constant_workaround_ to be used as a work-around for the problematic CLang compiler.

16 months agoBugfix: Add missing return statement in Byte Dump function.
Kevin Day [Thu, 27 Jul 2023 04:03:03 +0000 (23:03 -0500)]
Bugfix: Add missing return statement in Byte Dump function.

16 months agoUpdate: Remove unused fl_signal and fl_signal_state_interrupt.
Kevin Day [Thu, 27 Jul 2023 03:44:21 +0000 (22:44 -0500)]
Update: Remove unused fl_signal and fl_signal_state_interrupt.

The fl_signal_state_interrupt() function is not used and is replaced by fll_program_standard_signal_received().

The entire fl_signal can be and is removed.

16 months agoBugfix: Byte Dump program binary mode is printing wrong number of padding.
Kevin Day [Thu, 27 Jul 2023 02:38:14 +0000 (21:38 -0500)]
Bugfix: Byte Dump program binary mode is printing wrong number of padding.

16 months agoCleanup: Set named 0 enumeration in Byte Dump program.
Kevin Day [Thu, 27 Jul 2023 02:32:00 +0000 (21:32 -0500)]
Cleanup: Set named 0 enumeration in Byte Dump program.

16 months agoUpdate: Relocate several static stings into single location for Byte Dump program.
Kevin Day [Thu, 27 Jul 2023 02:31:05 +0000 (21:31 -0500)]
Update: Relocate several static stings into single location for Byte Dump program.

16 months agoBugfix: Fix new lines when printing help.
Kevin Day [Wed, 26 Jul 2023 04:26:15 +0000 (23:26 -0500)]
Bugfix: Fix new lines when printing help.

I noticed a couple of programs are missing the correct new lines when printing the help.

16 months agoUpdate: Minor fixes and consistency changes.
Kevin Day [Wed, 26 Jul 2023 04:18:47 +0000 (23:18 -0500)]
Update: Minor fixes and consistency changes.

Fix some small things that I noticed while I was migrating the byte_dump program.

16 months agoUpdate: Byte Dump program structure, following newer standards.
Kevin Day [Wed, 26 Jul 2023 04:16:52 +0000 (23:16 -0500)]
Update: Byte Dump program structure, following newer standards.

I noticed two things while working on this that need to be addressed for all programs.
1) When using threads, the signal for piping data (such as byte_dump /bin/bash | head) does not trigger.
2) The color code modes are not being processed correctly.

These observed bugs will be fixed in some other commit.

16 months agoUpdate: Finish memory array related changes.
Kevin Day [Sun, 23 Jul 2023 19:26:19 +0000 (14:26 -0500)]
Update: Finish memory array related changes.

There are still the append() and append_all() function to change but I am going to leave that for another time.
This finishes the recent set of Progress commits addressing the memory array related code.

I have observed a notable reduction in binary size but the primary goal here is reduction of duplicate code and simplification of code.

I should eventually be able to re-introduce macros to map these helper functions back to the base array type to reduce binary size by a significant amount.
This should only be done once the API has stabilized more.

16 months agoProgress: Continue memory array related changes.
Kevin Day [Sat, 22 Jul 2023 15:38:57 +0000 (10:38 -0500)]
Progress: Continue memory array related changes.

I noticed that I could also implement f_memory_array_append() and f_memory_array_append_all() methods if I used memcpy() and a multiplication over the type size.

This:
    const f_status_t status = f_memory_array_increase_by(source.used, sizeof(f_socket_t), (void **) &destination->array, &destination->used, &destination->size);
    if (F_status_is_error(status)) return status;

    for (f_number_unsigned_t i = 0; i < source.used; ++i) {
      destination->array[destination->used++] = source.array[i];
    } // for

    return F_none;

Could instead become:

    const f_status_t status = f_memory_array_increase_by(source.used, sizeof(f_socket_t), (void **) &destination->array, &destination->used, &destination->size);
    if (F_status_is_error(status)) return status;

    memcpy(destination->array, source.array, sizeof(f_socket_t) * source.used);

    return F_none;

This could then be logic could then be moved into something like f_memory_array_append_all(), further simplifying the code into:
    return f_memory_array_append(source.array, source.used, sizeof(f_socket_t), (void **) &destination->array, &destination->used, &destination->size);

I need to think of the function structure that I want and so I only decided to comment in this commit.
Such a change is not implemented yet but may be done at some later time.

16 months agoProgress: Continue memory array related changes.
Kevin Day [Sat, 22 Jul 2023 03:46:36 +0000 (22:46 -0500)]
Progress: Continue memory array related changes.

16 months agoProgress: Continue memory array related changes.
Kevin Day [Fri, 21 Jul 2023 03:10:39 +0000 (22:10 -0500)]
Progress: Continue memory array related changes.

This converts a lot of the projects to use the f_memory_array_*() functions.

Break the f_thread private functions into their own files.

16 months agoProgress: Continue memory array related changes, replacing the f_memory_structure...
Kevin Day [Wed, 19 Jul 2023 04:11:32 +0000 (23:11 -0500)]
Progress: Continue memory array related changes, replacing the f_memory_structure entirely.

The f_memory_array set of functions now fully replaces the f_memory_structure functions and related macros.
I think those structure macros are nifty but they are not in use enough anymore and the f_memory_array structure is what I am going forward with.

There is still an enormouse amount of changes to do.

16 months agoProgress: Add memory array allocation functionality and begin to use it where possible.
Kevin Day [Tue, 18 Jul 2023 04:56:33 +0000 (23:56 -0500)]
Progress: Add memory array allocation functionality and begin to use it where possible.

The pattern for handling the standard array structure is now well established.
Provide a memory array functionality for handling the most basic form.

This should reduce repeated code where possible.
It would be interesting if this reduces the size of the resulting binary but with inline optimizations it may be possible that this actually increases the size of the resulting binary.

Update the comments and tests.

There are a lot of files that will need to be updated to use these new functions.
Most of these are in the f_type_array project.

16 months agoUpdate: Add FSS Simple Packet related functionality and remove delimit and comment...
Kevin Day [Mon, 17 Jul 2023 05:24:37 +0000 (00:24 -0500)]
Update: Add FSS Simple Packet related functionality and remove delimit and comment types.

The FSS Simple Packet functionality is added, to provide for processing of the FSS Simple Packet.
The f_fss_simple_packet_ranges_t represents a set of ranges for designating where/how the packet is defined within some string.

The delimit and comment types are just helper type definitions for existing number types.
Simplify the design by getting rid of those, replacing them with the type that they effectively represent.
A lot of code is updated to reflect this change.

16 months agoFeature: Add specification FSS-0010 "Encrypted Simple Packet".
Kevin Day [Sun, 16 Jul 2023 22:52:42 +0000 (17:52 -0500)]
Feature: Add specification FSS-0010 "Encrypted Simple Packet".

This is an encrypted variation of the FSS-000F "Simple Packet" specification.
The third control bit (from the left) represents that the Simple Packet is encrypted.

The requirements for the format of the actual contents of Payload Block is further relaxed due encrypted data needing to be private (for what should be obvious reasons).

16 months agoUpdate: FSS-000f specification, adding reasoning and improve the wording.
Kevin Day [Sun, 16 Jul 2023 22:48:54 +0000 (17:48 -0500)]
Update: FSS-000f specification, adding reasoning and improve the wording.

Add a simple paragraph about the reason why the size bit includes the Control Block and the Size Block in its size representation.

Fix a mistake in the words where the standard has "...of that that...".
The back to back use of "that" is confusing and probably a typo.

16 months agoCleanup: Remove extra space in documentation comment of the standard.
Kevin Day [Sun, 16 Jul 2023 22:43:25 +0000 (17:43 -0500)]
Cleanup: Remove extra space in documentation comment of the standard.

This does not alter the standard itself and so the version date is left unchanged.

16 months agoCleanup: Documentation comments regarding structures.
Kevin Day [Sun, 16 Jul 2023 00:56:12 +0000 (19:56 -0500)]
Cleanup: Documentation comments regarding structures.

Add "Properties: " and related styling to the documentation comments for type definition structures.

Fix capitalization and other formatting issues that I noticed.

I did not focus on any of the programs.
However, some program related files happened to be open and so I updated those out of convenience.
A follow up commit will be needed to address the programs and any other files in which I may have missed in this pass.

16 months agoUpdate: Specifications, adding explicit version date and change license line format.
Kevin Day [Sat, 15 Jul 2023 03:00:11 +0000 (22:00 -0500)]
Update: Specifications, adding explicit version date and change license line format.

Add a version, which contains the date of the last change to each of the specifications.
There will eventually be a specification version number such as "1.2.3".

The license line in the comments at the top of each specification is of this form: "license: ".
Remove the colon so that the comment, if extracted, could be processed as something simple like FSS-0000.

16 months agoUpdate: Specifications, replacing "emphasis" with "italic".
Kevin Day [Sat, 15 Jul 2023 02:50:59 +0000 (21:50 -0500)]
Update: Specifications, replacing "emphasis" with "italic".

16 months agoUpdate: FSS-000F (Simple Packet) Specification.
Kevin Day [Sat, 15 Jul 2023 02:47:06 +0000 (21:47 -0500)]
Update: FSS-000F (Simple Packet) Specification.

I have decided that the endianness bit must be first.
The String/Binary bit is now the second bit.
The remaining 6 Control bits are left undefined.

Do some cleanup up in the text.
Improve the language.
Make sure "italic" is used instead of "emphasis".

16 months agoFeature: Add fll_program_print_error_parameter_integer_less_than() and fll_program_pr...
Kevin Day [Fri, 14 Jul 2023 03:49:22 +0000 (22:49 -0500)]
Feature: Add fll_program_print_error_parameter_integer_less_than() and fll_program_print_error_parameter_integer_more_than().

The less than and more than (greater than) are likely a common enough check to create standard functions for.

16 months agoUpdate: Conversion should return F_number_positive and F_number_negative without...
Kevin Day [Fri, 14 Jul 2023 03:07:57 +0000 (22:07 -0500)]
Update: Conversion should return F_number_positive and F_number_negative without error bit and do some clean up.

Do not treat F_number_positive and F_number_negative as an error.
The "unsigned" concept should be internal to the function and not whether or not the user input has a sign.

If F_number_negative is returned, the value can still be of type f_number_unsigned_t.
This is because the return status designates the effective sign.
The caller can then decide whether or not this is an error.

16 months agoUpdate: Use status_signal instead of status_thread.
Kevin Day [Thu, 13 Jul 2023 03:24:07 +0000 (22:24 -0500)]
Update: Use status_signal instead of status_thread.

The status_thread is being used specifically for the signal thread.
Change the standard practice to have this renamed to status_signal.

This then helps make other status names make more sense.
Rather than have status_thread, status_thread_a, and status_thread_b, instead have status_signal, status_a, and status_b.

16 months agoCleanup: Use present tense in documentation comments regarding F_interrupt.
Kevin Day [Thu, 13 Jul 2023 03:23:32 +0000 (22:23 -0500)]
Cleanup: Use present tense in documentation comments regarding F_interrupt.

16 months agoUpdate: The build disable files and stand alone setting files.
Kevin Day [Tue, 11 Jul 2023 02:58:28 +0000 (21:58 -0500)]
Update: The build disable files and stand alone setting files.

16 months agoUpdate: Add poll enumerations for f_poll_t.
Kevin Day [Tue, 11 Jul 2023 02:54:29 +0000 (21:54 -0500)]
Update: Add poll enumerations for f_poll_t.

This also includes a few enumerations based on GNU poll flags.

16 months agoCleanup: Fix socket documentation comment, where type is the actual socket type.
Kevin Day [Tue, 11 Jul 2023 01:52:44 +0000 (20:52 -0500)]
Cleanup: Fix socket documentation comment, where type is the actual socket type.

The socket.type is not the address type, it is the socket type.

The socket type is something like SOCK_STREAM or f_socket_type_stream_e.

16 months agoUpdate: Network additions and improvements, minor documentation comment clean ups.
Kevin Day [Sun, 9 Jul 2023 16:33:46 +0000 (11:33 -0500)]
Update: Network additions and improvements, minor documentation comment clean ups.

Add f_network_is_ip_address() along with appropriate unit tests.
The unit test are not as thorough as they could be.
I did not fully review the IPv6 standard, which has a rather absurd design.
There are likely things that I do not yet know about that are not supported.
Specifically do not support port number on any IPv6 address without brackets.
(The IPv6 address notation standard is horribly written.)

16 months agoUpdate: Add F_network_version_four, F_network_version_four_not, F_network_version_six...
Kevin Day [Sun, 9 Jul 2023 16:33:16 +0000 (11:33 -0500)]
Update: Add F_network_version_four, F_network_version_four_not, F_network_version_six, and F_network_version_six_not status codes.

The IPv4 and IPv6 situation is common enough to merit explicit status codes.

16 months agoCleanup: Conversion header comments.
Kevin Day [Sun, 9 Jul 2023 16:32:44 +0000 (11:32 -0500)]
Cleanup: Conversion header comments.

16 months agoCleanup: Documentation comments regarding "This alters setting.status" in programs.
Kevin Day [Sun, 9 Jul 2023 16:32:16 +0000 (11:32 -0500)]
Cleanup: Documentation comments regarding "This alters setting.status" in programs.

In such programs, this is comment is no longer accurate.

16 months agoUpdate: Socket bind functions, socket address family enumeration, and rename max_backlog.
Kevin Day [Sat, 8 Jul 2023 03:36:17 +0000 (22:36 -0500)]
Update: Socket bind functions, socket address family enumeration, and rename max_backlog.

Change the f_socket_bind_local() bind function to not call memset() and use the new address structure.
Add f_socket_bind_inet4() and f_socket_bind_inet6() bind functions in a similar way to f_socket_bind_local().

Update the appropriate documentation.
Add the appropriate unit tests.

The name max_backlog for f_socket_listen() is better named backlog_max as per the FLL style practices.

16 months agoUpdate: The f_socket enumerations and comments, the f_socket_t structure, the f_socke...
Kevin Day [Fri, 7 Jul 2023 03:37:08 +0000 (22:37 -0500)]
Update: The f_socket enumerations and comments, the f_socket_t structure, the f_socket build settings, and the f_socket unit tests.

The _di_f_socket_protocol_e_ enumerations are missing the trailing "_e" in the name.

As stated in a previous commit (90d0f47999fd5615f2f3550d688f63d49e590482), update the documentation comments for the f_socket_protocol_family_e enumerations.

Change the ordering of properties in the f_socket_t to have length property after the address property.

Set the default string for the name property to be f_string_static_t_initialize instead of f_string_empty_s.

Disable the braces warning in f_console.
The brace usage here is correct, and so the warning is disabled.

Fix the unit tests as they were not updated after changes in the previous commit (90d0f47999fd5615f2f3550d688f63d49e590482) and in this commit.

16 months agoCleanup: Use the signal check functions in progams.
Kevin Day [Fri, 7 Jul 2023 03:35:31 +0000 (22:35 -0500)]
Cleanup: Use the signal check functions in progams.

There already are signal check programs here.
Use those instead of manually performing the signal check actions.

16 months agoUpdate: Socket improvements regarding structure and styling.
Kevin Day [Thu, 6 Jul 2023 03:38:12 +0000 (22:38 -0500)]
Update: Socket improvements regarding structure and styling.

The f_socket_t structure has "struct sockaddr" as a pointer.
This means mass allocation becomes less practical due to needing to create the actual "struct sockaddr" as needed.
Implement an f_socket_address_t union that accepts the cost of less memory efficiency to improve the usability.

This now allows for mixed types to be stored in the array without needing complicated code to manage different arrays.
The caller will have to be responsible for properly setting the appropriate structure as needed.

Organize the code styling to be more consistent with alphabetical ordering.
I likely have some of the comments to update as well (a follow up commit will be necessary).

16 months agoUpdate: Socket file settings, use enumerations rather than defines, and add family...
Kevin Day [Thu, 6 Jul 2023 01:37:53 +0000 (20:37 -0500)]
Update: Socket file settings, use enumerations rather than defines, and add family enumerations.

This expands the socket family and makes their use more correct and consistent with existing ones.

The socket domain is renamed where possible to be protocol family or address family.

Bring in a lot of the existing family type codes (both protocol family and address family).

16 months agoUpdate: Add missing fakefiles for stand alone builds.
Kevin Day [Thu, 6 Jul 2023 01:37:21 +0000 (20:37 -0500)]
Update: Add missing fakefiles for stand alone builds.

16 months agoUpdate: The defines in cygwin.txt documentation are out of date.
Kevin Day [Thu, 6 Jul 2023 01:31:12 +0000 (20:31 -0500)]
Update: The defines in cygwin.txt documentation are out of date.

16 months agoCleanup: Add "write" to the open modes involving write.
Kevin Day [Tue, 4 Jul 2023 04:10:41 +0000 (23:10 -0500)]
Cleanup: Add "write" to the open modes involving write.

The "append" and "truncate" are not verbose enough.
Prepend "write_" to each of these to make the purpose and intent more obvious.