bed72e5b5c
mu-option/-result: tidy-ups
...
Small tweaks to avoid copying; add [[nodiscard]] .
2026-08-20 15:05:31 -07:00
7e83f5e4b0
mu-regex: add match_groups, use everywhere
...
Add match_groups to Mu::Regex, and update old "raw" GRegex users.
2026-08-20 15:05:31 -07:00
a03fd48551
utils: support negative lexnums
...
We use "lexnums" to efficiently/sortably store numbers >= 0; let's
support negative numbers as well (albeit not very optimal in size yet)
2026-08-20 15:05:31 -07:00
51a2bc5f60
cld2: unit-test fix
...
Fix inverted HAVE_CLD2 test
2026-08-20 15:05:31 -07:00
ca881a6e83
cld2: fix macos unit-test on ci
2026-08-20 15:05:31 -07:00
391cc3c556
cld2: fix language-detector
...
Inverted #if check.
2026-08-20 15:05:30 -07:00
91ad1c4478
cld2: fix HAVE_CLD2 test
...
It _is_ defined (as 0) when there is no CLD2.
2026-08-20 15:05:30 -07:00
da2995a768
mu-sexp: improve corner-cases, performance
...
Some C++20 updates; use the new ascii/ctype functions. Avoid unlimited
recursion. Speed-up conversion to_string
Update unit-tests.
2026-08-20 15:05:30 -07:00
dfdd943817
utils: html-to-text: fix some issues, update tests
...
Improve handling of some corner-cases, and add more unit-tests for
things that were broken before.
2026-08-20 15:05:30 -07:00
809b9e4f4a
utils: read_from_stdin: avoid reading nuls
...
We should read the actual written size, not the allocated size.
2026-08-20 15:05:30 -07:00
86464cd083
modernization: tweaks for c++20
...
Update various places for what we can do with C++20:
- ends_with / starts_with
- std::to_array
- using instead of typedef
- designated initializers
- "[[maybe_unused]]" instead of G_GNUC_UNUSED
Also remove some unnecessary 'static'
2026-08-20 15:05:30 -07:00
502c9cd67b
lib: use ascii ctype utils
...
Use the new ascii ctype utils.
2026-08-20 15:05:30 -07:00
f2960a197e
utils: add ascii ctype helpers
...
Add some constexpr ctype helpers that avoid any possible UB (i.e.,
handling casting to unsigned), and explicitly avoid any
locale-specifics.
2026-08-20 15:05:30 -07:00
6715ff418a
lib/utils: small cleanups
...
Fix some static analysis warnings
2026-08-20 15:05:29 -07:00
d8afabcc0f
lib: remove unused async-queue
2026-08-20 15:05:29 -07:00
339cf0bd65
mu-utils-file: use std::filesystem::remove_all
...
Instead of the hacky "rm -rf"
2026-08-20 15:05:28 -07:00
3c4b50e7a2
mu-utils-file: remove some unused code
2026-08-20 15:05:28 -07:00
45b9722040
mu/lib: fix some possible quoting issues
2026-08-20 15:05:28 -07:00
db7bd7a900
mu-utils: replace #define with constexpr for MU_COLOR_
2026-08-20 15:05:28 -07:00
85f4a4b80a
utils: fix typo
2026-08-20 15:05:28 -07:00
ab6017d5a9
utils: rework MU_ENABLE_BITOPS using C++20 code
...
Instead of macros, we using C++20 concepts to define the helpers to deal with
bitops on enum-class conveniently.
x# Please enter the commit message for your changes. Lines starting
2026-08-20 15:05:28 -07:00
911ade8b73
sexp.hh: silence compiler warnings
...
Seems they only happen in C++20 mode, not when compiling C++23 mode. So assuming
these are false alarms (old code anyway)
2026-08-20 15:05:28 -07:00
f66b58cd41
utils: rework logging functions
...
Use a general mu_log which does the formatting, and specific mu_debug, mu_info
etc., to call it.
2026-08-20 15:04:27 -07:00
5f7686a767
test-utils: fix some clang-tidy warnings
2026-08-20 15:04:27 -07:00
ad327d3acb
test-utils: use remove_directory
2026-08-20 15:04:27 -07:00
d258c77661
utils/file: rework remove_directory, add test
...
Make remove_directory not much less ugly, but at least more robust, e.g., when
the "rm" binary is not at /bin/rm
Add unit test
2026-08-20 15:04:27 -07:00
4acf708eb9
logging: don't g_message with --quiet
...
When `--quiet` is passed (and not --debug), do not log with g_message at
startup.
2026-08-20 15:04:27 -07:00
5c6642c9b9
utils: add utf8_clean helper
...
To morph text into valid utf8 if it isn't already.
2026-08-20 15:04:27 -07:00
056540b8e8
utils: avoid fmt:gmtime/fmt::localtime
...
They've been deprecated and give build warnings with new enough libfmt.
2026-08-20 15:04:26 -07:00
543c43f078
Replace "the the " with "the "
2026-08-20 15:04:26 -07:00
5378f321f4
utils: add set_thread_name
...
With HAVE_PTHREAD_SETNAME_NP
2026-08-20 15:04:25 -07:00
8c706a77db
mu-init: automatic export labels with --reinit
...
When re-initializing the store, automatically write the labels to a file in mu's
cache, so user can later import them.
2025-08-16 16:20:33 +03:00
34d3bf2e28
tests: only build when needed
...
Build the tests lazily, i.e., not before `meson test`. This helps with
build-times.
2025-08-15 21:01:05 +03:00
8d3b65c5d8
utils: refactor count_nl from mu-cmd-find
...
And update users.
Please enter the commit message for your changes. Lines starting
2025-07-27 19:39:23 +03:00
33958cd0f7
fmt: prefer system package if found
...
mu embeds a "vendored" subset of the libfmt package under thirdparty; but it's
better to use the system-package if the user has one.
So, use the system package if found or user -Duse-embedded-fmt=true is
specified.
2025-07-24 19:55:27 +03:00
7f274fe518
mu-test: fix logging verbosity
...
We were logging _everything since the g_log_set_handler was only set for the
default domain, not "mu". Let's fix this.
2025-06-16 10:57:36 +03:00
eb75141d0a
mu_utils: add to_string_char
...
Like to_string_gchar, but for malloc/free strings.
2025-06-14 13:14:03 +03:00
452969355c
mu-test: add valgrind check
...
Make it a bit easier to skip some tests when running under valgrind.
2025-05-24 19:18:10 +03:00
a2a1838da4
mu-server: cleanup find prop handling
...
Rework the overly long find-handler.
Improve parsing of options, and return better return properties (for use
in mu4e).
2025-04-12 15:07:28 +07:00
507ea8e18e
mu-sexp: don't require > c++17
2025-03-23 20:22:56 +02:00
44ba631a34
mu-find: implement format=json2
...
Implement a new experimental json2 format for mu-find, which gets rid of
the ":" prefixes for fields, i.e., "subject" instead of ":subject".
Document it as well.
2025-03-23 19:47:09 +02:00
4cda859eb8
mu-sexp: tighten definition of plistp
...
In a plist, we also require the first of each two element pairs to start
with ':'
Fixes #2830 .
2025-03-23 19:47:09 +02:00
c91e4ef515
mu-sexp: fix c++23 warning for suffix operator
...
Space between operator"" and _xxx is deprecated.
2025-03-23 19:47:09 +02:00
dee7e5951c
utils-file: add unit-test for expand_file
2024-12-09 19:41:58 +02:00
0e0d4a0cb6
mu-sexp: add -unix output for json tstamps
...
The json output (for mu-find etc.) just showed the converted sexp
output, including the clumsy emacs-style tstamps (for changed/date).
Add unix timestamps as well, which are easier to work with outside
emacs.
This handles #2770 .
2024-12-07 12:14:55 +02:00
646ad2e840
lib/utils: include fmt/xchar.h
...
Needed for 'join'
2024-12-06 20:14:11 +02:00
29dc1cea0c
Fix typos.
2024-09-22 17:27:18 +00:00
075394b35f
lib: use time_t_max for empty datetime
...
In Mu::parse_date_time, when provided with an empty string, return
time_t_max instead of G_MAXINT64. For systems with a 64-bit time_t, there
is no difference. With a 32-bit time_t it caused a test to fail:
not ok /utils/date-basic - ERROR:../mu-1.12.4/lib/utils/tests/test-utils.cc:92
void test_date_basic(): assertion failed
(parse_date_time(std::get<0>(test), std::get<1>(test)).value_or(-1)
== std::get<2>(test)): (18446744073709551615 == 2147483647)
This edge case probably only affected the test, as when other parts of
the application call parse_date_time (e.g. mu-server.cc and
mu-query-processor.cc), they check if the input string is empty first.
2024-08-26 14:46:54 +00:00
23941735df
logging: rework a bit, maybe support syslog
...
Seems journal logging fails on NetBSD (no surprise), but has some
unwanted/not-fully-understood side-effects.
In any case, outside Linux there's no use in even trying to use
journald; so we don't do that anymore.
Add conditional support for syslog (requires glib 2.80).
2024-05-07 09:27:50 +03:00
a0d60d23b0
compat: include sys/wait.h where needed
...
netbsd needs this explicitly, other systems let us get away without it.
2024-04-21 22:08:10 +03:00