#!/usr/bin/sbcl --noinform ; Copy in to out, ommitting any aligned 2048-byte chunks ; that consist entirely of zero-valued bytes. (defun vcd-filter (in out &key (bufsize 2048)) (let ((buf (make-sequence '(vector unsigned-byte) bufsize)) (all-zero (make-sequence '(vector unsigned-byte) bufsize :initial-element 0))) (do ((successfully-read (read-sequence buf in) (read-sequence buf in))) ((< successfully-read bufsize) (write-sequence (subseq buf 0 successfully-read) out)) (unless (equalp buf all-zero) (write-sequence buf out))))) (with-open-file (in (third *posix-argv*) :element-type 'unsigned-byte) (with-open-file (out (fourth *posix-argv*) :direction :output :element-type 'unsigned-byte) (vcd-filter in out)))