;;; -*- Mode:LISP; Package:USER -*-



(defun load-ada-tape (&optional query)
  ;;; If TRANSFORM is supplied, it should be a function of five arguments
  ;;; (host, directory, name, type, version) that returns a pathname that actually gets the file
  ;;; or NIL if the file should not be copied, or a symbol with a FS:TAPE-RESTORE-TRANSFORM
  ;;; property that is such a function.  The host argument is a host object.
  (fs:restore-magtape :transform
		      #'(lambda (host dir name type version)
			  (cond ((mem #'string-equal type
				      '("QFASL" "UNV" "ULP"))
				 (format T "~&Punting due to type: ~S ~S ~S ~S"
					 dir name type version)
				 nil)
				((LET ((X (IF (ATOM dir) dir (car dir))))
				   (not (mem #'string-equal x
					     '("ADA" "BARNES" "BOOCH"
					       "DOC"))))
				 (fs:make-pathname :host host
						   :directory dir
						   :name name
						   :type type
						   :version version))
				('else
				 (format t "~&Punting ~S ~S ~S ~S"
					 dir name type version)
				 nil)))
		      :query query))
