about summary refs log tree commit diff
path: root/third_party/lisp/mime4cl
AgeCommit message (Collapse)AuthorFilesLines
2023-05-09 r/6128 fix(3p/lisp/mime4cl): use OTHERWISE in CASE not Tsterni1-1/+1
Change-Id: Ia674705b27fbc4ae3055973eec563b078a4a873c Reviewed-on: https://cl.tvl.fyi/c/depot/+/8558 Reviewed-by: sterni <sternenseemann@systemli.org> Autosubmit: sterni <sternenseemann@systemli.org> Tested-by: BuildkiteCI
2023-05-09 r/6127 fix(3p/lisp/mime4cl/tests): fix sample discovery in nix buildsterni1-1/+1
CL's path handling strikes once again… Change-Id: I4345941c8e2856f80cfddecc5356464f92b1a150 Reviewed-on: https://cl.tvl.fyi/c/depot/+/8557 Tested-by: BuildkiteCI Autosubmit: sterni <sternenseemann@systemli.org> Reviewed-by: sterni <sternenseemann@systemli.org>
2023-05-09 r/6126 refactor(3p/lisp/mime4cl): drop unused split-multipart-partssterni1-28/+0
Change-Id: If47a8ffde5b4910f6c52fe82a2372431a0e46045 Reviewed-on: https://cl.tvl.fyi/c/depot/+/8556 Autosubmit: sterni <sternenseemann@systemli.org> Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org>
2023-05-09 r/6125 refactor(3p/lisp/mime4cl): rename :stream to :underlying-streamsterni2-11/+12
This makes sure that initializing coder-stream-mixin (for the most part) has the same interface as initializing qbase64:decode-stream. This will make integrating that as a faster replacement to mime4cl:base64-decoder-stream a bit easier. The idea is to replace the char by char base64 decoder with one that supports read-sequence. After that deliminited-input-stream needs to gain support for read-sequence as well, so we can actually take advantage of this fact. Finally, we'll have to evaluate the remaining decoders and think about switching the (base64) encoders over as well. Change-Id: If971da02437506e00a7c9fab2b94efc42725e62d Reviewed-on: https://cl.tvl.fyi/c/depot/+/8555 Reviewed-by: sterni <sternenseemann@systemli.org> Tested-by: BuildkiteCI Autosubmit: sterni <sternenseemann@systemli.org>
2023-05-01 r/6122 refactor(3p/lisp/mime4cl): unify test mechanism for sample msgssterni3-17/+4
For whatever reason, there were two sort of identical tests, mime.1 and mime.2, in the mime4cl test suite: The former tested *sample1-file* and the latter all messages *samples-directory*—in the same way, parsing the original and a re-rendered version of the message to check if they were equal. We can just move sample1.msg into *samples-directory*, get rid of *sample1-file* and thus pave the way for more test messages in the future. Change-Id: I843be331682b731af6ae02a4648ba1c64aaf59a5 Reviewed-on: https://cl.tvl.fyi/c/depot/+/8546 Reviewed-by: sterni <sternenseemann@systemli.org> Autosubmit: sterni <sternenseemann@systemli.org> Tested-by: BuildkiteCI
2023-04-29 r/6119 fix(3p/lisp/mime4cl): correctly define find-mime-text-partsterni1-1/+1
The generic function itself needs to be defined using defgeneric, defmethod is used for a defining method of a generic function, i.e. how it should behave when confronted with a certain class. Change-Id: Idd38afa02b56c5002e215decfff7f0c25267eab5 Reviewed-on: https://cl.tvl.fyi/c/depot/+/8532 Autosubmit: sterni <sternenseemann@systemli.org> Reviewed-by: sterni <sternenseemann@systemli.org> Tested-by: BuildkiteCI
2023-03-30 r/6063 refactor(3p/lisp/mime4cl): replace babel with flexi-streamssterni3-7/+5
decode-RFC2047 used babel's octets-to-string, but we can replace it with the function of the same name from flexi-streams. This doesn't make a difference for the moment, but will be useful in the future: flexi-streams provides de- and encoding streams that we'll be able to use to replace and augment some of the stream based MIME part handling code in mime4cl. babel doesn't have as powerful stream functionality although it seems to be planned. Another big upside of flexi-streams is that we'll be able to replace delimited-input-string using it. This should allow us to slowly work towards correct and more efficient decoding of MIME bodies. Change-Id: I17174f1c96c5be7d103d396564e6aa0fe24c80fc Reviewed-on: https://cl.tvl.fyi/c/depot/+/8371 Autosubmit: sterni <sternenseemann@systemli.org> Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org>
2022-09-19 r/4922 chore(gerrit): migrate OWNERS files to code-owners styleLuke Granger-Brown1-3/+1
Change-Id: Iacc521dfdd4b4a2d5cef3920cf8189bcce35a488
2022-07-05 r/4275 chore: remove sclf from the treesterni7-12/+472
SCLF is quite a big utility library (almost 3€ LOC) with limited portability (CMUCL, SBCL and CLISP to an extent). Continuing to maintain it is an unnecessary burden, as depot only uses a fraction of it which is now inlined into the respective users (mime4cl and mblog). In the future trimming down ex-sclf.lisp may make sense either by refactoring the code that uses it or by moving interesting utilities into e.g. klatre. Change-Id: I2e73825b6bfa372e97847f25c30731a5aad4a1b5 Reviewed-on: https://cl.tvl.fyi/c/depot/+/5922 Tested-by: BuildkiteCI Autosubmit: sterni <sternenseemann@systemli.org> Reviewed-by: sterni <sternenseemann@systemli.org>
2022-02-02 r/3754 feat: move mblog header handling into mime4clsterni4-2/+34
Accessing the headers of a MIME message feels like something mime4cl should handle. We implemented this ad hoc in mblog before in order to not need to worry about doing it in a sensible way. Now we introduce a decent-ish interface for getting a header from a MIME message, mime-message-header-values: * It returns a list because MIME message headers may appear multiple times. * It decodes RFC2047 only upon request, as you may want to be stricter about parsing certain fields. * It checks header name equality case insensitively. The code for decoding the RFC2047 string is retained and still uses babel for doing the actual decoding. Change-Id: I58bbbe4b46dbded04160b481a28a40d14775673d Reviewed-on: https://cl.tvl.fyi/c/depot/+/5150 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org>
2022-02-02 r/3749 feat(3p/lisp/mime4cl): cache offset in delimited-input-streamsterni1-19/+39
By computing the amount the stream position advanced we can save a syscall on every read which speeds up mime:mime-body-stream by /a lot/, e.g. extracting a ~3MB attachment drops from over 15s to under ~0.5s. There's still a lot to be gained and correctness left to be desired which can be addressed as described in the newly added comment. Change-Id: I5e1dfd213aac41203f271cf220db456dfb95a02b Reviewed-on: https://cl.tvl.fyi/c/depot/+/5073 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org>
2022-01-26 r/3677 chore(3p/lisp/mime4cl): remove CMUCL specific codesterni7-18/+11
Having #+cmu all over the place suggests that we maintain CMUCL support or test with CMUCL which is not the case. Change-Id: Ia0828cb1ac48e49acdee6fef7a0fa2c04c1805b3 Reviewed-on: https://cl.tvl.fyi/c/depot/+/5068 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org>
2022-01-26 r/3676 refactor(3p/lisp/mime4cl): use trivial-gray-streamssterni4-51/+16
This should be a net positive for portability and lets us drop some of the CMUCL cruft (which we don't test anyway, CMU support may have regressed regardless). Change-Id: I85664d82d211177da1db9eebea65c956295b09f7 Reviewed-on: https://cl.tvl.fyi/c/depot/+/5067 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org>
2022-01-26 r/3675 style(3p/lisp): expand tabs in npg, mime4cl and sclfsterni10-991/+991
Done using find third_party/lisp/{sclf,mime4cl,npg} \ -name '*.lisp' -or -name '*.asd' \ -exec bash -c 'expand -i -t 8 "$0" | sponge "$0"' {} \; Change-Id: If84afac9c1d5cbc74e137a5aa0ae61472f0f1e90 Reviewed-on: https://cl.tvl.fyi/c/depot/+/5066 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org>
2021-09-12 r/2853 feat(3p/lisp/mime4cl): search for first (default) mime text partsterni2-0/+25
Adds a simple generic function find-mime-text-part which returns the first suitable text/* part in any MIME part it is given. Has no meaningful alternatives handling at the moment: It will pick the first text part and doesn't allow specifying a preference. Change-Id: Id9b113b3ef3ca1a575ce8f3582a4f85e30edfb43 Reviewed-on: https://cl.tvl.fyi/c/depot/+/3379 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org>
2021-09-01 r/2815 feat(3p/lisp/mime4cl): build using buildLispsterni6-5/+69
The following changes are required to make mime4cl build: * file-position doesn't like to be called with NIL as the position argument, so we have to make sure to not do that in stream-file-position. My workaround is a bit clunky, but works. * Tests discover the sample file via relative path resolution. This doesn't work when they are imported into the nix store as individual files. Instead we make use of the fact that DEFVAR is a no-op if the variable is already defined and inject a file via the nix build that sets the relevant ones. For the path to sample1.msg, we need to create a new variable. Change-Id: I74eeda7bf2c2a4f64cc2b90e72081513ec3285d5 Reviewed-on: https://cl.tvl.fyi/c/depot/+/3270 Tested-by: BuildkiteCI Reviewed-by: grfn <grfn@gws.fyi>
2021-09-01 r/2814 chore(3p/lisp): import mime4cl source tarballsterni13-0/+3313
Used http://wcp.sdf-eu.org/software/mime4cl-20150207T211851.tbz (sha256 5a914669bba7561efe59a4fd0817204c07ad2add98b03ae206ef185ac04affb3). Importing seems sensible since there's no upstream repo nor has their been a release since 2015. This is just an import commit, so the changes made to make it build are more discoverable as their own commit. Change-Id: I2ff28c3c7433abdf7857204bc89eaf9edc0b1cbc Reviewed-on: https://cl.tvl.fyi/c/depot/+/3378 Tested-by: BuildkiteCI Reviewed-by: grfn <grfn@gws.fyi>