Gary King wrote:
How about this:
(defun directory-pathname-p (pathname) (and (member (pathname-name pathname) (list nil :unspecified)) (member (pathname-type pathname) (list nil :unspecified))))
(defun sysdef-central-registry-search (system) (let ((name (coerce-name system)) (to-remove nil)) (block nil (unwind-protect (dolist (dir *central-registry*) (let ((defaults (eval dir))) (cond ((directory-pathname-p defaults) (let ((file (and defaults (make-pathname :defaults defaults :version :newest :name name :type "asd" :case :local)))) (if (and file (probe-file file)) (return file)))) (t (warn "~@<While searching for system `~s`: `~s` evaluated to `~s` which is not a directory. Removing entry from *central- registry*~@:>" system dir defaults) (push dir to-remove))))) ;; cleanup (dolist (dir to-remove) (setf *central-registry* (remove dir *central-registry*)))))))
This looks great. Minor suggestion: change the "warn" to "cerror". When loading a big system, or a big init file, CL implementations will often spew a lot of messages that will bury a warning. That means that this warning might slip by un-noticed and then you'd get a confusing error later on. CERROR will be more obtrusive and, in this case, I think more obtrusive is right.
On Jul 7, 2009, at 7:16 AM, Gary King wrote:
Hi Tobias,
I think this would be a good thing.
On Jul 7, 2009, at 6:31 AM, Tobias C. Rittweiler wrote:
I think it's bitten pretty much all of us that we at least once tried to push a non-directory-designating filename to *CENTRAL-REGISTRY*.
It's a common pitfalls for newcomers.
Couldn't ASDF signal a warning when it encounters such a thing while grovelling through the registry?
-T.
asdf-devel mailing list asdf-devel@common-lisp.net http://common-lisp.net/cgi-bin/mailman/listinfo/asdf-devel
-- Gary Warren King, metabang.com Cell: (413) 559 8738 Fax: (206) 338-4052 gwkkwg on Skype * garethsan on AIM * gwking on twitter
-- Gary Warren King, metabang.com Cell: (413) 559 8738 Fax: (206) 338-4052 gwkkwg on Skype * garethsan on AIM * gwking on twitter
asdf-devel mailing list asdf-devel@common-lisp.net http://common-lisp.net/cgi-bin/mailman/listinfo/asdf-devel