#! /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))))))
