+(defun check-file (file &key copyright-notice)
+ (cond
+ (copyright-notice (set-state :copyright-required))
+ ((string= "package" (pathname-name file)) (set-state :normal))
+ (t (set-state :begin)))
+ (setf *line-no* 0)
+ (setf *col-no* 0)
+ (setf *form-stack* nil)
+ (setf *form-ended-on-same-line* nil)
+ (when copyright-notice
+ (setf *evaluators*
+ (append *evaluators*
+ (list
+ (make-evaluator :copyright-required (format nil "~A\\n" copyright-notice)
+ (lambda ()
+ (incf *line-no*)
+ (setf *col-no* :reset)
+ (if (string= "package" (pathname-name file))
+ (set-state :normal)
+ (set-state :begin))))))))
+ (handler-case
+ (progn
+ (evaluate (slurp-file file))
+ (list :success file))
+ (check-failure (cf)
+ (list :failure file (check-failure-msg cf) (check-failure-line-no cf) (check-failure-col-no cf)))))
+
+(setf (documentation 'check-file 'function)
+ "CHECK-FILE FILE &key COPYRIGHT-NOTICE => RESULT