=== modified file 'lisp/emacs-lisp/package.el' --- lisp/emacs-lisp/package.el 2010-08-09 18:05:56 +0000 +++ lisp/emacs-lisp/package.el 2010-08-14 14:59:14 +0000 @@ -656,13 +656,15 @@ (defun package-download-tar (name version) "Download and install a tar package." - (let ((tar-buffer (url-retrieve-synchronously - (concat (package-archive-url name) - (symbol-name name) "-" version ".tar")))) + (let* ((tar-url (concat (package-archive-url name) + (symbol-name name) "-" version ".tar")) + (filep (equal "file" (url-type (url-generic-parse-url tar-url)))) + (tar-buffer (url-retrieve-synchronously tar-url))) (with-current-buffer tar-buffer - (package-handle-response) - (re-search-forward "^$" nil 'move) - (forward-char) + (unless filep + (package-handle-response) + (re-search-forward "^$" nil 'move) + (forward-char)) (package-unpack name version) (kill-buffer tar-buffer)))) @@ -995,11 +997,13 @@ (archive-url (cdr archive)) (dir (expand-file-name "archives" package-user-dir)) (dir (expand-file-name archive-name dir)) + (filep (equal "file" (url-type (url-generic-parse-url archive-url)))) (buffer (url-retrieve-synchronously (concat archive-url file)))) (with-current-buffer buffer - (package-handle-response) - (re-search-forward "^$" nil 'move) - (forward-char) + (unless filep + (package-handle-response) + (re-search-forward "^$" nil 'move) + (forward-char)) (delete-region (point-min) (point)) (make-directory dir t) (setq buffer-file-name (expand-file-name file dir))