- Remove EX_AMCOND() and EX_FEAT_EXPORT(), instead add flags to
EX_FEAT() to check whether a feature should be exported.
- Only mark a feature to be exported with AM_CONDITIONAL() when
it is checked within either */Makefile.am or tests/atlocal.in.
- Only add a feature to test/atlocal.in when it is checked by
ATX_FEAT_*().
- Move feature "bookmarkfs-util" after features that may enable it,
so that its enable status can be correctly displayed.
Since we're already installing man pages conditionally
(only install a man page when the corresponding program is enabled),
it makes more sense to install them by default,
instead of having to install separately with `make install-man`.
The functions should return negated errno on failure,
since bookmarkfs_xattr_get() and bookmarkfs_xattr_list() check
whether the syscall fails with ERANGE.
- No need to `--enable-bookmarkfs-util`, since it's implicitly done
by enabling other components.
- No need to `--enable-xxhash-inline`, since it's now the default.
Tests that require PRNG are by default seeded from `/dev/urandom`.
However, the user should be able to override with a given seed
to reproduce a failing test.
Instead of messing with command-line arguments, a cleaner approach
is to fetch the seed from an environment variable.
For `ATX_CHECK_FS()` and `ATX_CHECK_FS_NEW()`, do not skip the test
if a backend (or its "-write" feature) is disabled, since
`exit 77` skips the entire test group, not current `AT_CHECK()`.
Instead, silently pass the current test.
- Move common `AC_DEFINE()` usage to `EX_FEAT()`.
- Remove unused argument `action-if-disabled` for `EX_FEAT()`.
- Conditionally enable features by default.
- `mozorigin_get()`, `mozplace_addref()`: pass struct as argument.
- `parse_mozurl_host()`: rename to `parse_mozurl`; add comments;
store parse results to argument of type `struct mozorigin`.
- Rename objects of type `struct mozXXX` from `XXX_cols` to `mX`.
- ...
Do not force 64-bit `time_t` on 32-bit platforms, since libfuse
does not do so. Linking shared objects with incompatible types
breaks ABI, resulting in undefined behavior.
Instead, add run-time checks to make sure that timestamps do not
overflow. If they do, set to `INT32_MAX`.
Also tidy up build scripts, tests, and the installation guide.
- If the utility library is not built, link to the existing library
when building helper programs for filesystem tests.
- Refactor PRNG seeding in tests.
When a bookmark is deleted, if there are no other bookmarks
referencing the corresponding `moz_place` entry, tag and keyword
references to that entry are considered "dangling" references,
and shall be automatically removed.
Also reverts commit b5fa6960ef,
since the NULL title check is no longer necessary.
When a bookmark associated with a keyword is deleted,
there may still be dangling references (e.g., tags) to the
corresponding `moz_places` entry.
By filtering out NULL titles, `bookmark_lookup()` and
`bookmark_list()` now only give keywords associated with
valid bookmarks.
This allows users to quickly discover which keyword is
associated with a given bookmark.
Updating keywords via xattr is not implemented,
since it can be done trivially using existing API.
There is a chance that rehash may fail,
even with a decent hash function, and no collision attack.
Allow the hashmap to be rehashed for a second time during insert,
and ignore rehash failures during delete.