;;; -*- Mode:LISP; Package:USER; Readtable:CL; Base:10 -*-


(defun lines-in-system (x)
  (let ((l (mapcar #'lines-in-file (si:system-source-files (si:find-system-named x)))))
    (format t "~&~%Total for system ~A,~%~D code lines, ~D comment lines ~D blank lines~%"
	    x
	    (apply '+ (mapcar #'car l))
	    (apply '+ (mapcar #'cadr l))
	    (apply '+ (mapcar #'caddr l)))))


(defun lines-in-file (x)
  (format t "~&File ~A has " x)
  (let ((code 0)
	(comment 0)
	(blank 0))
    (with-open-file (s x)
      (do ((line))
	  ((null (setq line (readline s nil))))
	(cond ((zerop (length line))
	       (incf blank))
	      ((char= #\; (aref line 0))
	       (incf comment))
	      ('else
	       (incf code)))))
    (format t "~D code lines, ~D comment lines, ~D blank lines~%"
	    code comment blank)
    (list code comment blank)))

