Commit graph

25 commits

Author SHA1 Message Date
CismonX
341b7b3d5a
doc: misc update
- Add manual section for the utility library.
- Add comments for utility library functions.
- Fix installation path for backends and fsck handlers.
2025-01-28 20:56:06 +08:00
CismonX
50f05d2bd3
all: relax compiler requirements
- Do not check __STDC_HOSTED__.
- Do not use atomic builtins.
- Do not use thread-local storage for PRNG state.
2025-01-28 20:20:20 +08:00
CismonX
56fa90397d
fs_ops: limit xattr value length 2025-01-27 23:48:37 +08:00
CismonX
3ed11f53e5
backend: fix xattr bookmark title check
Do not check if the bookmark title is a valid filename,
as we said in the user manual.

However, we should ensure that the string does not contain
NUL characters, since we assume that a valid bookmark storage
should not contain bookmarks with such names.
2025-01-26 19:35:03 +08:00
CismonX
996ca0e042
backend_firefox: fix and refactor mkfs
- Make sure all tables and indices are created for the database,
  even the ones that are not used by BookmarkFS.
- Maintain the schema version in `PRAGMA user_version`.
- Always use `INT` for integer type, and `TEXT` for text type,
  so that we could save a little space.  This does not affect the
  actual datatype (more precisely, type affinity) of the columns.
2025-01-26 00:19:54 +08:00
CismonX
3b45900157
db: allow non-integer argument for safeincr 2025-01-25 21:25:37 +08:00
CismonX
35d4a93a41
backend_firefox: fix sandbox
- Allow fdatasync(), since it is used by SQLite when commiting.
- Move `PRAGMA quick_check` to backend_create(), since it sometimes
  calls stat() and cannot be sandboxed.
2025-01-25 21:15:57 +08:00
CismonX
10ad224b03
backend: rename backend_sync -> bookmark_sync 2025-01-24 23:07:22 +08:00
CismonX
623b4dd4f3
backend: rename backend_free -> backend_destroy 2025-01-24 09:12:41 +08:00
CismonX
b9e02d2d3d
fsck: add BOOKMARKFS_FSCK_HANDLER_READONLY flag
instead of reusing the BOOKMARKFS_BACKEND_READONLY flag
2025-01-24 08:34:40 +08:00
CismonX
3cb99fe85b
all: fix punctuation regarding "e.g." and "i.e."
Follow the convention of modern English grammar that
a comma should usually come after "e.g." and "i.e.".
2025-01-23 19:23:54 +08:00
CismonX
22263e48f2
backend: rename struct
`bookmarkfs_backend_init_resp` -> `bookmarkfs_backend_create_resp`,
since it is used for `backend_create` instead of `backend_init`.
2025-01-23 17:41:31 +08:00
CismonX
b699a613ef
fsck_online: wrap Linux getdents(2) to a function 2025-01-23 00:00:00 +08:00
CismonX
712861e8f8
fsck: fix fsck apply
- Throw an error if the handler tries to apply in readonly mode
- Do not expose BOOKMARKFS_FSCK_RESULT_END to the handler
2025-01-18 08:52:43 +08:00
CismonX
57a1a181b8
fsck: minor refactor 2025-01-15 22:44:08 +08:00
CismonX
95d6ff6b52
json: optimize file write
- Use larger buffer, reducing system call overhead.
- Always write full blocks, minimizing read-before-write.
2025-01-15 22:34:38 +08:00
CismonX
d4a370c223
backend_chromium: fix bookmark_create()
Fix the hashcode used for inserting entry into id map.
2025-01-15 19:35:46 +08:00
CismonX
c0a99474c7
fsck_handler_tcl: improve initialization
Initialize interp before entering sandbox, so that unsafe interp
can be used in sandbox mode.

Also no need to register std channels for unsafe interp.
2025-01-14 23:03:24 +08:00
CismonX
aa5326edf9
sandbox: fix landlock rule fd close 2025-01-14 19:45:22 +08:00
CismonX
349877f9a3
backend_firefox: don't bother opening db readonly
Readonly db does not work well with WAL mode.
See <https://www.sqlite.org/wal.html#readonly>.
2025-01-14 19:44:34 +08:00
CismonX
3de5006ae5
fsck_util: fix escape_control_chars()
Argument passed to iscntrl() must be representable as unsigned char.
2025-01-11 19:17:18 +08:00
CismonX
d6df1cd89b
fsck: add result code for "." and ".." entries
BOOKMARKFS_FSCK_RESULT_NAME_INVALID should be used solely for
names that are valid as filename, but not as bookmark name.
2025-01-11 18:32:50 +08:00
CismonX
38e33532f0
sandbox: remove redundant fusefd arg 2025-01-04 00:29:16 +08:00
CismonX
3e325a3934
ioctl: check if permd op is valid
A bad permd op should fail ioctl() with EINVAL instead of
invoking undefined behavior.
2025-01-02 18:53:12 +08:00
CismonX
cdf0ddfc53
init: prepare for Savannah 2024-12-31 18:09:03 +08:00