X-Git-Url: http://git.hcoop.net/bpt/emacs.git/blobdiff_plain/a971635315e259c076de020b3676c04d1dcc415e..f019fb210628549b661bf7ebaa40e136df205af4:/lisp/jka-compr.el diff --git a/lisp/jka-compr.el b/lisp/jka-compr.el index fe7adb92c1..cd769885cc 100644 --- a/lisp/jka-compr.el +++ b/lisp/jka-compr.el @@ -1,7 +1,6 @@ ;;; jka-compr.el --- reading/writing/loading compressed files -;; Copyright (C) 1993, 1994, 1995, 1997, 1999, 2000, 2001, 2002, 2003, -;; 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +;; Copyright (C) 1993-1995, 1997, 1999-2011 Free Software Foundation, Inc. ;; Author: jka@ece.cmu.edu (Jay K. Adams) ;; Maintainer: FSF @@ -93,7 +92,7 @@ (require 'jka-cmpr-hook) (defcustom jka-compr-shell "sh" - "*Shell to be used for calling compression programs. + "Shell to be used for calling compression programs. NOTE: Not used in MS-DOS and Windows systems." :type 'string :group 'jka-compr) @@ -166,8 +165,11 @@ to keep: LEN chars starting BEG chars from the beginning." (unwind-protect (or (memq (call-process jka-compr-shell infile t nil "-c" + ;; Windows shells need the program file name + ;; after the pipe symbol be quoted if they use + ;; forward slashes as directory separators. (format - "%s %s 2> %s | %s bs=%d skip=%d %s 2> %s" + "%s %s 2> %s | \"%s\" bs=%d skip=%d %s 2> %s" prog (mapconcat 'identity args " ") err-file @@ -181,7 +183,8 @@ to keep: LEN chars starting BEG chars from the beginning." null-device)) jka-compr-acceptable-retval-list) (jka-compr-error prog args infile message err-file)) - (jka-compr-delete-temp-file err-file))) + (delete-file err-file))) + ;; Run the uncompression program directly. ;; We get the whole file and must delete what we don't want. (jka-compr-call-process prog message infile t nil args)) @@ -222,7 +225,7 @@ to keep: LEN chars starting BEG chars from the beginning." ""))) jka-compr-acceptable-retval-list) (jka-compr-error prog args infile message err-file)) - (jka-compr-delete-temp-file err-file))) + (delete-file err-file))) (or (eq 0 (apply 'call-process prog infile (if (stringp output) temp output) @@ -244,13 +247,10 @@ There should be no more than seven characters after the final `/'." :type 'string :group 'jka-compr) -(defun jka-compr-make-temp-name (&optional local-copy) +(defun jka-compr-make-temp-name (&optional _local-copy) "This routine will return the name of a new file." (make-temp-file jka-compr-temp-name-template)) -(defalias 'jka-compr-delete-temp-file 'delete-file) - - (defun jka-compr-write-region (start end file &optional append visit) (let* ((filename (expand-file-name file)) (visit-file (if (stringp visit) (expand-file-name visit) filename)) @@ -309,6 +309,7 @@ There should be no more than seven characters after the final `/'." (and compress-message + jka-compr-verbose (message "%s %s..." compress-message base-name)) (jka-compr-run-real-handler 'write-region @@ -337,10 +338,11 @@ There should be no more than seven characters after the final `/'." (and append can-append) 'dont)) (erase-buffer)) ) - (jka-compr-delete-temp-file temp-file) + (delete-file temp-file) (and compress-message + jka-compr-verbose (message "%s %s...done" compress-message base-name)) (cond @@ -404,6 +406,7 @@ There should be no more than seven characters after the final `/'." (and uncompress-message + jka-compr-verbose (message "%s %s..." uncompress-message base-name)) (condition-case error-code @@ -479,6 +482,7 @@ There should be no more than seven characters after the final `/'." (and uncompress-message + jka-compr-verbose (message "%s %s...done" uncompress-message base-name)) (and @@ -534,6 +538,7 @@ There should be no more than seven characters after the final `/'." (and uncompress-message + jka-compr-verbose (message "%s %s..." uncompress-message base-name)) ;; Here we must read the output of uncompress program @@ -554,6 +559,7 @@ There should be no more than seven characters after the final `/'." (and uncompress-message + jka-compr-verbose (message "%s %s...done" uncompress-message base-name)) (write-region @@ -572,7 +578,7 @@ There should be no more than seven characters after the final `/'." ;; Support for loading compressed files. -(defun jka-compr-load (file &optional noerror nomessage nosuffix) +(defun jka-compr-load (file &optional noerror nomessage _nosuffix) "Documented as original." (let* ((local-copy (jka-compr-file-local-copy file)) @@ -590,13 +596,20 @@ There should be no more than seven characters after the final `/'." (or nomessage (message "Loading %s...done." file)) ;; Fix up the load history to point at the right library. - (let ((l (assoc load-file load-history))) + (let ((l (or (assoc load-file load-history) + ;; On MS-Windows, if load-file is in + ;; temporary-file-directory, it will look like + ;; "c:/DOCUME~1/USER/LOCALS~1/foo", whereas + ;; readevalloop will record its truename in + ;; load-history. Therefore try truename if the + ;; original name is not in load-history. + (assoc (file-truename load-file) load-history)))) ;; Remove .gz and .elc?. (while (file-name-extension file) (setq file (file-name-sans-extension file))) (setcar l file))) - (jka-compr-delete-temp-file local-copy)) + (delete-file local-copy)) t)) @@ -696,5 +709,4 @@ by `jka-compr-installed'." (provide 'jka-compr) -;; arch-tag: 3f15b630-e9a7-46c4-a22a-94afdde86ebc ;;; jka-compr.el ends here