]> Kevux Git Server - fll/commit
Update: Add directory functions, re-design fl_directory_do().
authorKevin Day <Kevin@kevux.org>
Thu, 17 Apr 2025 03:11:27 +0000 (22:11 -0500)
committerKevin Day <Kevin@kevux.org>
Fri, 18 Apr 2025 04:59:35 +0000 (23:59 -0500)
commitb2cb998d72b032ae34c4f42f8a6567533d250d58
tree19b7a4f33d0da8b67a4de217803562e784a5fd8e
parent3673fd29a8505ca47c1d1e79e69dbb49c2f8bdf8
Update: Add directory functions, re-design fl_directory_do().

Add several directory functions.
I still may need to add more, such as a rewind to handle rewinddir().

Change the directory recurse do flags from an enumeration to defines.
Add a type fo handling `DIR *` called `f_directory_stream_t`.

Get rid of the directory listing structure to reduce memory usage.
This is only possible by replacing the `scandir()` with custom direct processing.
This change reduces the number of looping and removes the sorting behavior.
The directory recurse do flags are now redesigned.
The `top` is now entirely removed because a depth of 0 can be used to test for top without needing a flag.
The `opendir()` still has a notable cost, especially during recursion.
I need to do more research into how to more efficiently call `opendir()` without consuming too much memory.
The documentation comments still needs to be reviewed following these changes.

Make sure the directory functions only update the id values if there is no error.

Explicitly check for `-1` as return error rather than `< 0` to be more consistent with the standards.

Use typedefs to define callbacks.

Tweak the `fl_directory_list()` design.
Tweak the `fl_directory_path_pop()` design.
40 files changed:
build/disable/level_0/f_directory.h
build/stand_alone/fake.config.h
build/stand_alone/firewall.config.h
level_0/f_directory/c/directory.c
level_0/f_directory/c/directory.h
level_0/f_directory/c/directory/common.h
level_0/f_directory/c/directory/listing.h
level_0/f_directory/c/directory/recurse_do.c
level_0/f_directory/c/directory/recurse_do.h
level_0/f_directory/data/build/settings-mocks
level_0/f_directory/data/build/settings-tests
level_0/f_directory/tests/unit/c/mock-directory.c
level_0/f_directory/tests/unit/c/mock-directory.h
level_0/f_directory/tests/unit/c/test-directory-recurse_dos_delete_callback.c
level_0/f_directory/tests/unit/c/test-directory-recurse_dos_destroy_callback.c
level_0/f_directory/tests/unit/c/test-directory-recurse_doss_delete_callback.c
level_0/f_directory/tests/unit/c/test-directory-recurse_doss_destroy_callback.c
level_0/f_directory/tests/unit/c/test-directory-stream_close.c [new file with mode: 0644]
level_0/f_directory/tests/unit/c/test-directory-stream_close.h [new file with mode: 0644]
level_0/f_directory/tests/unit/c/test-directory-stream_open.c [new file with mode: 0644]
level_0/f_directory/tests/unit/c/test-directory-stream_open.h [new file with mode: 0644]
level_0/f_directory/tests/unit/c/test-directory-stream_open_id.c [new file with mode: 0644]
level_0/f_directory/tests/unit/c/test-directory-stream_open_id.h [new file with mode: 0644]
level_0/f_directory/tests/unit/c/test-directory-stream_read.c [new file with mode: 0644]
level_0/f_directory/tests/unit/c/test-directory-stream_read.h [new file with mode: 0644]
level_0/f_directory/tests/unit/c/test-directory-stream_rewind.c [new file with mode: 0644]
level_0/f_directory/tests/unit/c/test-directory-stream_rewind.h [new file with mode: 0644]
level_0/f_directory/tests/unit/c/test-directory-stream_seek.c [new file with mode: 0644]
level_0/f_directory/tests/unit/c/test-directory-stream_seek.h [new file with mode: 0644]
level_0/f_directory/tests/unit/c/test-directory-stream_tell.c [new file with mode: 0644]
level_0/f_directory/tests/unit/c/test-directory-stream_tell.h [new file with mode: 0644]
level_0/f_directory/tests/unit/c/test-directory.c
level_0/f_directory/tests/unit/c/test-directory.h
level_1/fl_directory/c/directory.c
level_1/fl_directory/c/directory.h
level_1/fl_directory/c/private-directory.c
level_1/fl_directory/c/private-directory.h
level_3/fake/c/main/build.c
level_3/fake/c/main/fake/do.c
level_3/fake/c/main/make/operate_process_type.c