CismonX
1db61bc878
all: debug_puts() should accept arbitrary string
2025-02-15 19:38:15 +08:00
CismonX
bf9e0e7f92
sandbox: workaround legacy landlock
...
So that they can build with kernel headers older than 6.2,
and still work as expected on newer kernels.
2025-02-15 19:08:08 +08:00
CismonX
9afdfc45d7
backend: rename bookmark_check
args
...
- Rename `id` -> `parent_id`, since the function works on
the parent directory.
2025-02-13 17:48:07 +08:00
CismonX
52b3707d2b
backend: rename bookmark_fsck -> bookmark_check
...
Some relevant names are also renamed.
2025-02-12 20:47:10 +08:00
CismonX
3375674973
backend: ignore val_len
when updating timestamps
2025-02-12 12:36:30 +08:00
CismonX
e199a1203a
backend: fix includes
...
Fix a regression in commit d1dac54b72
where sys/stat.h is no longer
included in backend_firefox.c and backend_chromium.c.
It has to be explicitly included for the UTIME_xxx macros.
2025-02-10 19:55:43 +08:00
CismonX
916102484f
all: only log line numbers in debug mode
2025-02-10 18:43:15 +08:00
CismonX
cd3d6a6232
backend_firefox: improve mkfs
...
Switch to schema version 74, so that it is compatible with
browsers (e.g., GNU IceCat) which are still based on
Firefox 115 ESR (now end-of-life), as well as saving us
a bit more space since there are fewer tables to be created.
2025-02-10 18:40:00 +08:00
CismonX
4f8b15fd80
backend_firefox: improve bookmark storage init
...
- Check schema version when initializing database.
- Minor refactor for db_check().
2025-02-09 23:49:21 +08:00
CismonX
df29392008
all: fix conditional build
...
There were bad code changes that cause the compiler to complain or
panic, but went unnoticed since they are only built if toggled with
`--enable-xxx` or `--disable-xxx` during build configuration.
Fix them altogether.
2025-02-08 19:47:20 +08:00
CismonX
d1dac54b72
chore: tidy up includes
2025-02-08 18:56:45 +08:00
CismonX
b195e7821a
hash: add hash_digestcb() function
...
May be useful for calculating hash of a stream of input data.
2025-02-06 16:09:58 +08:00
CismonX
767e25e867
xstd: update xabort_() output format
2025-02-05 18:28:22 +08:00
CismonX
d99ef6d681
chore: update links
...
- Specify the full homepage URL.
- Follow GNU's naming convention for mailing lists.
2025-02-05 18:11:37 +08:00
CismonX
fbed71ce3e
all: add line number to log output
2025-02-04 20:55:49 +08:00
CismonX
852caab209
doc: misc update
2025-02-04 20:55:29 +08:00
CismonX
d0aa74b212
backend: rename object_free
-> cookie_free
2025-02-03 18:15:52 +08:00
CismonX
1d1ff58aa4
ioctl: move type definitions to common.h
2025-02-02 21:35:12 +08:00
CismonX
031691fae5
build: move BUILDING_BOOKMARKFS to config.h
2025-02-02 18:51:48 +08:00
CismonX
d08848c097
db: minor refactor
2025-02-02 17:55:14 +08:00
CismonX
54c81c43bb
all: fix __FILE_NAME__ workaround
...
Do not apply offset for __FILE__ in non-VPATH build,
since the path is not prefixed with `${srcdir}/` in that case.
2025-02-02 17:48:42 +08:00
CismonX
c17d6ebadf
all: better workaround for __FILE_NAME__
...
There's only a few legacy releases of gcc and clang that
support -fmacro-prefix-map but not __FILE_NAME__.
Thus the originial workaround is not very beneficial.
Switching to a more portable `__FILE__ + offset` workaround
that works for any standard-compliant compiler, even TinyCC.
However, this workaround may produce binaries that leak
information about the build environment, especially when using
an exotic build path.
2025-02-01 23:25:19 +08:00
CismonX
88e38bd38e
backend: update cookie even on callback failure
...
No need to check status and always update cookie after
invoking callback for bookmark_list() and bookmark_fsck().
2025-02-01 00:21:02 +08:00
CismonX
78b80be2e5
backend: rename struct bookmarkfs_bookmark_entry
...
Rename field `next` -> `off`.
2025-01-31 20:31:52 +08:00
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