30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
+
+
-
+
+
+
|
# 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_autorizer()`.
# Non-SCM TODOs
In no particular order...
- **Add [SPDX-style](https://spdx.dev/) license attribution** to all source files.
- **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. We should use `int` instead or switch to C99, which has a `bool` type.
- **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.
- **Port over the `XDG_CONFIG_HOME`-related changes** for finding the global config db.
- Update [the fossil file format docs](https://fossil-scm.org/home/doc/trunk/www/fileformat.wiki) to document the handful of special cases not covered there, like the convention that tag names must not be purely hexadecimal and control artifacts may not contain tags which refer to that control artifact (like a checkin may legally do (and often does)).
# Maybe (and Maybe Not) TODO
- **Undo** support.
|