94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
-
-
-
+
+
|
libf's symlink support has never been fleshed out (and has been outright ignored in numerous places as a result of my personal stance on storing symlinks in an SCM), so this disconnect could be in any number of places in the library.
# Security-relevant
But not otherwise SCM-relevant...
- **Port over `db_unprotect()` and `db_protect_pop()`** APIs, which allow a db to effectively be made read-only except for limited windows where specific sections of it needs to be writable. Related: `db.c:db_top_authorizer()`.
- ***SQLite3 Security Encryption Extension (SEE)*** support: <https://sqlite.org/see>. We have received an SEE license which can be used to develop this support, so it's now just a matter of figuring out how best to integrate it in such a way that arbitrary clients can plug into it.
# Non-SCM TODOs
In no particular order...
- **URL parsing**: _not_ because we really need URLs at the library level, but (A) so that libfossil can find a repo's default user name from its `remote-url` setting (which is often a URL with a user name encoded in it) and (B) so that client code can parse URLs in a manner known to be compatible with fossil's understanding of them.
- **Add [SPDX-style](https://spdx.dev/) license attribution** to all source files. This is ongoing.
- **Header file restructuring.** The current separation of the APIs into many `include/fossil-scm/*.h` files is somewhat confusing. The initial intent was to keep my low-end development system of the time from choking on syntax highlighting on one large file, but those days are largely behind me. It may make sense to combine those into 1 public API file, 1 internal API file, and the auto-generated config file(s). (Even then, it's big enough to choke emacs' syntax highlighting on lower-end systems like Raspberry Pi SBCs.)
- **Stop using char as booleans**. This tree historically uses `char` type for booleans. Now that the tree is C99, we can switch to the `bool` type. This is ongoing.
|