da290c21a9
benchmark: improve setup
...
Add some useful make targets, and separate (optimized) build.
2023-07-25 23:56:19 +03:00
4c0b7db3d8
store: add 'add_document' optimization, use it
...
*Usually* we need Xapian's replace_document() API, but when we know a
document (message) is completely new, we can use the faster
add_document(). That is the case with the initial (re)indexing, when
start with an empty database.
Also a few smaller cleanups.
2023-07-25 23:56:19 +03:00
4d8ba5f579
index/scanner: implement i-node sorting
...
On rotational devices (HDD) processing direntries is much faster when
doing so sorted by i-node for the dir-entries. This is an old
optimization (perhaps mu <= 1.6 or so?) that was implemented yet after
indexing changed, likely because my systems use SDDs instead!
But, let's restore that optimization; the sorting is fast enough that we
don't care for SDDs; on HDD it should be quite a bit faster.
2023-07-25 22:39:12 +03:00
b795242d5a
message: use html-to-text scraper for html parts
...
We were dumping the HTML-parts as-is in the Xapian indexer; however,
it's better to remove the html decoration first, and just pass the text.
We use the new built-in html->text scraper for that.
2023-07-25 21:26:36 +03:00
56b8fad89e
utils: implement html-to-text
...
Implement a crude html-to-text scraper function, to extract plain text
from html messages, so we can use it for indexing.
2023-07-25 21:26:36 +03:00
11c807f955
utils/readline: use fmt-based apis
2023-07-25 21:26:01 +03:00
9580d11fef
utils/result: add std::move version of Err
...
Avoid a copy in some situations
2023-07-25 21:26:01 +03:00
72f43f11df
lib: improve store error messages
...
Use xapian_try_result
2023-07-23 21:04:26 +03:00
d374d94031
clang: avoid some build warnings
2023-07-23 21:04:26 +03:00
7b38f094c4
migrate some more code to mu_format / join_paths
...
Let's modernize a bit.
2023-07-20 23:14:29 +03:00
6ad5cccc53
store/index: and unit test for circular symlink
...
Check that we bail out early
2023-07-18 23:18:21 +03:00
885903c496
index: limit length of maildir path to MaxTermLength
...
This limit was already in place, but now we detect it a bit earlier (in
the indexer). We _could_ increase it (by using hashes for dirstamps), but
right now it's a good catch for circular symlinks.
2023-07-18 23:18:21 +03:00
cf6c5a36d7
utils: rework running system commands
...
Use g_spawn and pass arguments, so we don't involve a shell that needs
escaping etc.
Improve error handling.
2023-07-18 20:19:27 +03:00
e8462e0204
lib/index: add rudimentary scanner test
...
Make the defunct existing one a working test.
2023-07-18 19:08:16 +03:00
99a0eaaa76
lib/store: improve dirstamp / set_dirstamp code
...
Modernize.
2023-07-11 22:54:01 +03:00
545494225a
lib/contacts-cache: improve code
2023-07-11 22:54:01 +03:00
6f69f5d482
utils/mu-regex: add move constructor
2023-07-11 22:54:01 +03:00
f3bfdf5add
lib/maildir: use mv for moving to avoid warnings
...
using gio gives some (false, we assume) valgrind warnings, so for now
use 'mv' instead.
Also slightly update the code with some mu_format overtaking format.
2023-07-10 23:17:06 +03:00
18490a818d
store/server: centralize docids-for-msgid
...
No need for two near-identical impls
Remove some dead declarations.
2023-07-10 23:17:06 +03:00
0b4f7c4cbe
lib: xapian-db/store: simplify
...
No need for "pimpl" in xapian-db; keep it simple.
2023-07-10 23:15:40 +03:00
cc65b8b401
utils: add some more helpers for test code
...
Creating and removing (temp) dirs, running mu commands.
2023-07-10 23:15:40 +03:00
904f64aa03
utils/result: add "unwrap" convenience function
2023-07-10 23:15:40 +03:00
31f0c40893
migrate to fmt-based logging in some more places
...
and improve logging.
2023-07-08 10:30:36 +03:00
4171fe14c3
store: removing trailing / for root_maildir
...
Other code depends on that.
2023-07-06 21:49:50 +03:00
75a2cab3f1
message: don't check language without cld2 support
...
No point in checking if we do not have the support.
2023-07-06 21:49:50 +03:00
82235b9d49
fmt: more update to use new fmt-based APIs
2023-07-06 21:49:50 +03:00
91c5a9bac5
store: only write last-change _once_
...
xapian-db does it, no longer needed in store.cc
2023-07-06 21:49:50 +03:00
e48485cb58
sexp: use fmt for parsing_error
...
Should help with Apple clang build too.
2023-07-05 23:40:36 +03:00
aed1395c53
lib/utils: update library paths
2023-07-05 23:14:34 +03:00
4920b56671
update to use fmt-based apis
...
Not complete, but a first big stab converting users of Mu::Error and
various g_warning & friends, format to the new libfmt-based APIs.
2023-07-05 23:10:13 +03:00
742ca33740
utils: rework Mu::Error and g_ logging macros with fmt
...
A bit more C++ template magic to remove a lot of code.
2023-07-05 23:07:11 +03:00
e6ab61d233
thirdparty: add fmt
...
Add libfmt for formatting strings. With C++23, perhaps we can remove
this. Let's see.
2023-07-05 23:07:11 +03:00
5c878558e0
thirdparty: move {optional,expected}.hpp to tl/
...
Follow upstream naming.
2023-07-05 23:07:11 +03:00
c5f3894374
message: double-check part-type in Multipart
...
Avoid exception for some messages (unsigned messages with signed
attachment).
2023-07-05 20:39:47 +03:00
867f3205e2
lib/xapian-db: add missing include unordered_map
2023-07-02 10:08:58 +03:00
c4b5795328
cli: support --ignored-address for init command
...
Allow for skipping unwanted addresses (such as 'noreply') from the
contacts cache.
2023-07-02 10:00:40 +03:00
5dc41ed811
lib: support ignoring addresses for contacts-cache
...
Skip annoying 'noreply' & friends.
2023-07-02 00:06:56 +03:00
c6fff6a281
all: update for API changes (config etc.)
...
Use the new & improved APIs.
2023-07-02 00:06:56 +03:00
2acc1c2271
lib/contacts-cache: rework using config
...
Use the new config class to pass information and serialization.
2023-07-02 00:06:56 +03:00
3791d0c375
lib/store: rework to use xapian-db / config
...
Simplifies the implementation.
2023-07-02 00:06:56 +03:00
c28fde9155
lib: create mu-xapian-db, mu-config
...
XapianDb is a fairly thing wrapper around Xapian, which handles locking,
exception handling and some tracking.
On top of that, Config add a configuration database for type /
introspectable configuration info.
2023-07-02 00:06:56 +03:00
426c1d35d0
thirdparty: bump tl::expected version
2023-06-27 22:43:29 +03:00
fd7c011195
lib: update for api changes, update tests
...
With the new Sexp. And expand unit tests.
2023-06-27 00:53:23 +03:00
ae9607530f
utils/sexp: extend and improve tests
...
Extend functionality for parsing; update documentation, tests.
2023-06-27 00:52:07 +03:00
0bdab5ae06
contact/display-name: quote "names" with '@'
...
Apparently, some mail servers want this, and gnus doesn't handle it
automatically.
2023-06-12 23:37:39 +03:00
b9026c5042
message/fields: add some helpers for combination-fields
...
such as "recip" and "contacts".
2023-06-04 14:56:40 +03:00
9bab2a4050
utils/sexp: add some convenience
...
Add some convenience function for dealing the head/tail
Some whitespace / cosmetics
Add operators ==
Add operator !=
Update command handler for this.
2023-06-04 14:56:40 +03:00
eafc81f168
utils: fix non-cld2 build
2023-05-12 21:52:32 +03:00
7f2eeb1010
message: try to detect body text language
...
Try to detect the language of the e-mail body and make it searchable.
2023-05-11 23:23:52 +03:00
ad64093183
utils: implement language-detector
...
A thing wrapper around CLD2 with which we can detect the language of an
e-mail message.
2023-05-11 23:23:52 +03:00