aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lisp/jka-compr.el27
1 files changed, 21 insertions, 6 deletions
diff --git a/lisp/jka-compr.el b/lisp/jka-compr.el
index 7a0f39d89ee..fa852bd19b6 100644
--- a/lisp/jka-compr.el
+++ b/lisp/jka-compr.el
@@ -1,6 +1,6 @@
1;;; jka-compr.el --- reading/writing/loading compressed files 1;;; jka-compr.el --- reading/writing/loading compressed files
2 2
3;; Copyright (C) 1993, 1994, 1995, 1997, 1999, 2000, 2003 Free Software Foundation, Inc. 3;; Copyright (C) 1993, 1994, 1995, 1997, 1999, 2000, 2003, 2004 Free Software Foundation, Inc.
4 4
5;; Author: jka@ece.cmu.edu (Jay K. Adams) 5;; Author: jka@ece.cmu.edu (Jay K. Adams)
6;; Maintainer: FSF 6;; Maintainer: FSF
@@ -138,6 +138,10 @@ for `jka-compr-compression-info-list')."
138 "bzip2ing" "bzip2" nil 138 "bzip2ing" "bzip2" nil
139 "bunzip2ing" "bzip2" ("-d") 139 "bunzip2ing" "bzip2" ("-d")
140 nil t "BZh"] 140 nil t "BZh"]
141 ["\\.tbz\\'"
142 "bzip2ing" "bzip2" nil
143 "bunzip2ing" "bzip2" ("-d")
144 nil nil "BZh"]
141 ["\\.tgz\\'" 145 ["\\.tgz\\'"
142 "zipping" "gzip" ("-c" "-q") 146 "zipping" "gzip" ("-c" "-q")
143 "unzipping" "gzip" ("-c" "-q" "-d") 147 "unzipping" "gzip" ("-c" "-q" "-d")
@@ -145,7 +149,14 @@ for `jka-compr-compression-info-list')."
145 ["\\.g?z\\(~\\|\\.~[0-9]+~\\)?\\'" 149 ["\\.g?z\\(~\\|\\.~[0-9]+~\\)?\\'"
146 "zipping" "gzip" ("-c" "-q") 150 "zipping" "gzip" ("-c" "-q")
147 "unzipping" "gzip" ("-c" "-q" "-d") 151 "unzipping" "gzip" ("-c" "-q" "-d")
148 t t "\037\213"]) 152 t t "\037\213"]
153 ;; dzip is gzip with random access. Its compression program can't
154 ;; read/write stdin/out, so .dz files can only be viewed without
155 ;; saving, having their contents decompressed with gzip.
156 ["\\.dz\\'"
157 nil nil nil
158 "unzipping" "gzip" ("-c" "-q" "-d")
159 nil t "\037\213"])
149 160
150 "List of vectors that describe available compression techniques. 161 "List of vectors that describe available compression techniques.
151Each element, which describes a compression technique, is a vector of 162Each element, which describes a compression technique, is a vector of
@@ -160,6 +171,7 @@ APPEND-FLAG STRIP-EXTENSION-FLAG FILE-MAGIC-CHARS], where:
160 type of compression (nil means no message) 171 type of compression (nil means no message)
161 172
162 compress-program is a program that performs this compression 173 compress-program is a program that performs this compression
174 (nil means visit file in read-only mode)
163 175
164 compress-args is a list of args to pass to the compress program 176 compress-args is a list of args to pass to the compress program
165 177
@@ -199,7 +211,7 @@ invoked."
199 :group 'jka-compr) 211 :group 'jka-compr)
200 212
201(defcustom jka-compr-mode-alist-additions 213(defcustom jka-compr-mode-alist-additions
202 (list (cons "\\.tgz\\'" 'tar-mode)) 214 (list (cons "\\.tgz\\'" 'tar-mode) (cons "\\.tbz\\'" 'tar-mode))
203 "A list of pairs to add to `auto-mode-alist' when jka-compr is installed." 215 "A list of pairs to add to `auto-mode-alist' when jka-compr is installed."
204 :type '(repeat (cons string symbol)) 216 :type '(repeat (cons string symbol))
205 :group 'jka-compr) 217 :group 'jka-compr)
@@ -421,10 +433,7 @@ There should be no more than seven characters after the final `/'."
421 (let ((can-append (jka-compr-info-can-append info)) 433 (let ((can-append (jka-compr-info-can-append info))
422 (compress-program (jka-compr-info-compress-program info)) 434 (compress-program (jka-compr-info-compress-program info))
423 (compress-message (jka-compr-info-compress-message info)) 435 (compress-message (jka-compr-info-compress-message info))
424 (uncompress-program (jka-compr-info-uncompress-program info))
425 (uncompress-message (jka-compr-info-uncompress-message info))
426 (compress-args (jka-compr-info-compress-args info)) 436 (compress-args (jka-compr-info-compress-args info))
427 (uncompress-args (jka-compr-info-uncompress-args info))
428 (base-name (file-name-nondirectory visit-file)) 437 (base-name (file-name-nondirectory visit-file))
429 temp-file temp-buffer 438 temp-file temp-buffer
430 ;; we need to leave `last-coding-system-used' set to its 439 ;; we need to leave `last-coding-system-used' set to its
@@ -432,6 +441,9 @@ There should be no more than seven characters after the final `/'."
432 ;; that `basic-save-buffer' sees the right value. 441 ;; that `basic-save-buffer' sees the right value.
433 (coding-system-used last-coding-system-used)) 442 (coding-system-used last-coding-system-used))
434 443
444 (or compress-program
445 (error "No compression program defined"))
446
435 (setq temp-buffer (get-buffer-create " *jka-compr-wr-temp*")) 447 (setq temp-buffer (get-buffer-create " *jka-compr-wr-temp*"))
436 (with-current-buffer temp-buffer 448 (with-current-buffer temp-buffer
437 (widen) (erase-buffer)) 449 (widen) (erase-buffer))
@@ -631,6 +643,9 @@ There should be no more than seven characters after the final `/'."
631;;; (setq size insval))) 643;;; (setq size insval)))
632;;; (setq p (cdr p)))) 644;;; (setq p (cdr p))))
633 645
646 (or (jka-compr-info-compress-program info)
647 (message "You can't save this buffer because compression program is not defined"))
648
634 (list filename size)) 649 (list filename size))
635 650
636 (jka-compr-run-real-handler 'insert-file-contents 651 (jka-compr-run-real-handler 'insert-file-contents