Commit Graph

8 Commits

Author SHA1 Message Date
ae8607093b scm: avoid finalizer race with message-map
Let guile handle the message-map (with weak-hash-table), so we avoid the
cleanup race.

Better handle the fd handling (and avoid calling gc() each time when
we're nearing the limit)
2026-08-20 15:05:31 -07:00
60ed8f1a12 scm/c++: fix review issues in handler code
- Fix comments and some debug strings (copy-pasta)
- Fix mime-stream destruction (g_object_unref)
- Fix type-checking of scm types
2026-08-20 15:05:31 -07:00
6b89f4abae scm: message_parts: use cons instead of append
It's faster.
2025-08-22 08:13:55 +03:00
24e25f9663 scm: mfind: use cons instead of append, eval lazy
For the list building, using cons is much faster. So traverse the results
_backwards_, and then cons gives us the right order.

Don't eval when creating the list, but do so lazily (when requested in the
message, in mu-scm.scm)
2025-08-22 09:01:59 +03:00
b02aa57686 mu-scm: implement mime-part handling, refact
Implement accessing the MIME-parts + docs  + test.

Implement saving attachments to file.

Implement creating messages from files.

Refactor / rename functions to be more uniform.
2025-07-07 10:57:13 +03:00
3f53e4b439 mu-scm-message: don't require c++ >= 17 2025-06-30 22:52:13 +03:00
123c0c1bc8 mu-scm: defer scm exceptions with c++ throw/catch
SCM exception are "non-local exits", which mean that c++ objects don't get their
DTOR called when leaving the scope.... this break RAII, leaks mem etc.

So instead, we avoid SCM exceptions (where we can), and throw C++ exceptions,
and only use SCM-expections in the catch block.
2025-06-30 21:57:29 +03:00
ca46c09ccb mu-scm: add full-message support (body/header)
Implement support for "header" and "body" procedures, with require loading the
message file from disk, and create a foreign object for the message.

We keep those alive in a vector, and hook up a finalizer.

Update docs & tests as well.
2025-06-30 21:57:29 +03:00