From 1dd263248af0120fa0ab167f69f13f44adb18391 Mon Sep 17 00:00:00 2001 From: Ralph Ronnquist Date: Sun, 16 Apr 2023 11:37:26 +1000 Subject: [PATCH 1/1] add byte list functions for humans --- lsp-misc/misc.lsp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/lsp-misc/misc.lsp b/lsp-misc/misc.lsp index f60d0d3..5b72484 100644 --- a/lsp-misc/misc.lsp +++ b/lsp-misc/misc.lsp @@ -13,4 +13,20 @@ ;; Print string as binary octals (define (octals-string S) (join (map octal-byte (unpack (dup "b" (length S)) S)))) -(global 'octals-string 'octal-byte) + +;; Return byte code as printable or as code. +(define (human-byte B) + (if (and (> B 32) (< B 127)) (char B) B)) + +;; Return a packed encoding of a list of bytes, joining string elements +(define (human-bytes BL) + (let ((OUT '()) (X nil)) + (dolist (B (map human-byte BL)) + (if (string? B) (if X (extend X B) (setf X B)) + (begin (when (string? X) (push X OUT -1)) + (push B OUT -1) + (setf X nil)))) + (when (string? X) (push X OUT -1)) + OUT)) + +(global 'octals-string 'octal-byte 'human-byte 'human-bytes) -- 2.39.2