#! /usr/bin/scheme --script
(define (sum)
(let loop ((c (read-char)) (s 0) (b 0))
(if (eof-object? c)
(values s (+ (quotient b 512) (if (zero? (modulo b 512)) 0 1)))
(loop (read-char) (modulo (+ s (char->integer c)) 65535) (+ b 1)))))
(if (null? (cdr (command-line)))
(let-values (((s b) (sum)))
(display s) (display " ") (display b) (newline))
(do ((files (cdr (command-line)) (cdr files))) ((null? files))
(with-input-from-file (car files)
(lambda ()
(let-values (((s b)(sum)))
(display s) (display " ")
(display b) (display " ")
(display (car files)) (newline))))))