refactor(sterni/mblog): move REDIRECT-STREAM into mime4cl

Eventually, we'll want to replace dump-stream-binary with something more
efficient—given that we have flexi-streams we can use something that
only does matching element types no problem. REDIRECT-STREAM is much
more efficient thanks to using an internal buffer.

streams.lisp gets a new section at the beginning for grouping utilities
that don't have any real (internal) dependencies.

Change-Id: I141cd36440d532131f389be2768fdaa54e7c7218
Reviewed-on: https://cl.tvl.fyi/c/depot/+/8583
Reviewed-by: sterni <sternenseemann@systemli.org>
Autosubmit: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
This commit is contained in:
sterni 2023-05-16 16:22:44 +02:00 committed by clbot
parent 734cec2e3b
commit a06e30e73b
4 changed files with 23 additions and 18 deletions

View file

@ -26,14 +26,6 @@
:if-does-not-exist :create)
,@body))
(defun redirect-stream (in out)
"Consume input stream IN and write all its content to output stream OUT.
The streams' element types need to match."
(let ((buf (make-array config:*general-buffer-size* :element-type (stream-element-type in))))
(loop for pos = (read-sequence buf in)
while (> pos 0)
do (write-sequence buf out :end pos))))
;; CSS
(defvar *style* "
@ -98,7 +90,8 @@ a:link, a:visited {
(with-overwrite-file (attachment-out attachment-dst
:element-type
(stream-element-type attachment-in))
(redirect-stream attachment-in attachment-out)))))
(redirect-stream attachment-in attachment-out
:buffer-size *general-buffer-size*)))))
(values))

View file

@ -50,6 +50,7 @@
:config)
(:export :build-mblog)
(:import-from :local-time :universal-to-timestamp)
(:import-from :mime4cl :redirect-stream)
(:shadowing-import-from :common-lisp :list))
(defpackage :cli