diff --git a/asdf-install.lisp b/asdf-install.lisp index b8b3840df46be0d34dea31d626ac77511c586cc4..b66a5d8b6b8e18090203e24f9d3f3b65afded4ab 100644 --- a/asdf-install.lisp +++ b/asdf-install.lisp @@ -135,8 +135,12 @@ an immediate concern (subseq line (1+ colon)))))) stream)))) -(defun download (package-name file-name) - (let ((url (format nil "http://www.cliki.net/~A?download" package-name))) +(defun download (package-name-or-url file-name) + (let ((url + (if (string-equal package-name-or-url "http://" + :end1 7) + package-name-or-url + (format nil "http://www.cliki.net/~A?download" package-name)))) (destructuring-bind (response headers stream) (block got (loop @@ -249,8 +253,14 @@ an immediate concern (defvar *temporary-files*) (defun temp-file-name (p) - (merge-pathnames (make-pathname :type "asdf-install-tmp") - (merge-pathnames p))) + (let* ((pos-slash (position #\/ p :from-end t)) + (pos-dot (position #\. p :start (or pos-slash 0)))) + (merge-pathnames + (make-pathname + :name (subseq p (if pos-slash (1+ pos-slash) 0) pos-dot) + :type "asdf-install-tmp")))) + + (defun run (&optional (packages (cdr *posix-argv*))) (destructuring-bind (source system name) (where)