annotate lisp/uncompress.el @ 18092:8428d56cd207

(smtpmail-via-smtp): Recognize XVRB as a synonym for VERB and XONE as a synonym for ONEX. (smtpmail-read-response): Add "%s" to `message' calls to avoid problems with percent signs in strings. (smtpmail-read-response): Return all lines of the response text as a list of strings. Formerly only the first line was returned. This is insufficient when one wants to parse e.g. an EHLO response. Ignore responses starting with "0". This is necessary to support the VERB SMTP extension. (smtpmail-via-smtp): Try EHLO and find out which SMTP service extensions the receiving mailer supports. Issue the ONEX and XUSR commands if the corresponding extensions are supported. Issue VERB if supported and `smtpmail-debug-info' is non-nil. Add SIZE attribute to MAIL FROM: command if SIZE extension is supported. Add code that could set the BODY= attribute to MAIL FROM: if the receiving mailer supports 8BITMIME. This is currently disabled, since doing it right might involve adding MIME headers to, and in some cases reencoding, the message.
author Richard M. Stallman <rms@gnu.org>
date Sun, 01 Jun 1997 22:24:22 +0000
parents 68dcc3ebe342
children e6a21f2c62f9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
657
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 21
diff changeset
1 ;;; uncompress.el --- auto-decompression hook for visiting .Z files
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 21
diff changeset
2
7300
cc7cd83ccf3f Update copyright.
Karl Heuer <kwzh@gnu.org>
parents: 6665
diff changeset
3 ;; Copyright (C) 1992, 1994 Free Software Foundation, Inc.
841
2cdce064065f entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 807
diff changeset
4
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 657
diff changeset
5 ;; Maintainer: FSF
657
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 21
diff changeset
6
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 21
diff changeset
7 ;; This file is part of GNU Emacs.
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 21
diff changeset
8
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 21
diff changeset
9 ;; GNU Emacs is free software; you can redistribute it and/or modify
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 21
diff changeset
10 ;; it under the terms of the GNU General Public License as published by
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 657
diff changeset
11 ;; the Free Software Foundation; either version 2, or (at your option)
657
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 21
diff changeset
12 ;; any later version.
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 21
diff changeset
13
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 21
diff changeset
14 ;; GNU Emacs is distributed in the hope that it will be useful,
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 21
diff changeset
15 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 21
diff changeset
16 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 21
diff changeset
17 ;; GNU General Public License for more details.
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 21
diff changeset
18
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 21
diff changeset
19 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 7300
diff changeset
20 ;; along with GNU Emacs; see the file COPYING. If not, write to the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 7300
diff changeset
21 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 7300
diff changeset
22 ;; Boston, MA 02111-1307, USA.
657
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 21
diff changeset
23
2319
d98c49df2acd Added or corrected Commentary section
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 841
diff changeset
24 ;;; Commentary:
d98c49df2acd Added or corrected Commentary section
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 841
diff changeset
25
d98c49df2acd Added or corrected Commentary section
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 841
diff changeset
26 ;; This package can be used to arrange for automatic uncompress of
17250
68dcc3ebe342 (uncompress-while-visiting): Handle .tgz files.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
27 ;; compressed files when they are visited.
2319
d98c49df2acd Added or corrected Commentary section
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 841
diff changeset
28 ;; All that's necessary is to load it. This can conveniently be done from
d98c49df2acd Added or corrected Commentary section
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 841
diff changeset
29 ;; your .emacs file.
d98c49df2acd Added or corrected Commentary section
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 841
diff changeset
30
17250
68dcc3ebe342 (uncompress-while-visiting): Handle .tgz files.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
31 ;; M-x auto-compression-mode is a more modern replacement for this package.
68dcc3ebe342 (uncompress-while-visiting): Handle .tgz files.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
32
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 657
diff changeset
33 ;;; Code:
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 657
diff changeset
34
21
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
35 ;; When we are about to make a backup file,
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
36 ;; uncompress the file we visited
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
37 ;; so that making the backup can work properly.
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
38 ;; This is used as a write-file-hook.
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
39
6665
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
40 (defvar uncompress-program "gunzip"
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
41 "Program to use for uncompression.")
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
42
21
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
43 (defun uncompress-backup-file ()
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
44 (and buffer-file-name make-backup-files (not buffer-backed-up)
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
45 (not (file-exists-p buffer-file-name))
6665
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
46 (call-process uncompress-program nil nil nil buffer-file-name))
21
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
47 nil)
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
48
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
49 (or (assoc "\\.Z$" auto-mode-alist)
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
50 (setq auto-mode-alist
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
51 (cons '("\\.Z$" . uncompress-while-visiting) auto-mode-alist)))
6665
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
52 (or (assoc "\\.gz$" auto-mode-alist)
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
53 (setq auto-mode-alist
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
54 (cons '("\\.gz$" . uncompress-while-visiting) auto-mode-alist)))
17250
68dcc3ebe342 (uncompress-while-visiting): Handle .tgz files.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
55 (or (assoc "\\.tgz$" auto-mode-alist)
68dcc3ebe342 (uncompress-while-visiting): Handle .tgz files.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
56 (setq auto-mode-alist
68dcc3ebe342 (uncompress-while-visiting): Handle .tgz files.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
57 (cons '("\\.tgz$" . uncompress-while-visiting) auto-mode-alist)))
21
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
58
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
59 (defun uncompress-while-visiting ()
6665
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
60 "Temporary \"major mode\" used for .Z and .gz files, to uncompress them.
21
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
61 It then selects a major mode from the uncompressed file name and contents."
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
62 (if (and (not (null buffer-file-name))
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
63 (string-match "\\.Z$" buffer-file-name))
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
64 (set-visited-file-name
6665
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
65 (substring buffer-file-name 0 (match-beginning 0)))
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
66 (if (and (not (null buffer-file-name))
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
67 (string-match "\\.gz$" buffer-file-name))
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
68 (set-visited-file-name
17250
68dcc3ebe342 (uncompress-while-visiting): Handle .tgz files.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
69 (substring buffer-file-name 0 (match-beginning 0)))
68dcc3ebe342 (uncompress-while-visiting): Handle .tgz files.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
70 (if (and (not (null buffer-file-name))
68dcc3ebe342 (uncompress-while-visiting): Handle .tgz files.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
71 (string-match "\\.tgz$" buffer-file-name))
68dcc3ebe342 (uncompress-while-visiting): Handle .tgz files.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
72 (set-visited-file-name
68dcc3ebe342 (uncompress-while-visiting): Handle .tgz files.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
73 (concat (substring buffer-file-name 0 (match-beginning 0)) ".tar")))))
21
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
74 (message "Uncompressing...")
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
75 (let ((buffer-read-only nil))
6665
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
76 (shell-command-on-region (point-min) (point-max) uncompress-program t))
21
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
77 (message "Uncompressing...done")
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
78 (set-buffer-modified-p nil)
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
79 (make-local-variable 'write-file-hooks)
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
80 (or (memq 'uncompress-backup-file write-file-hooks)
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
81 (setq write-file-hooks (cons 'uncompress-backup-file write-file-hooks)))
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
82 (normal-mode))
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
83
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
84 (or (memq 'find-compressed-version find-file-not-found-hooks)
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
85 (setq find-file-not-found-hooks
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
86 (cons 'find-compressed-version find-file-not-found-hooks)))
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
87
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
88 (defun find-compressed-version ()
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
89 "Hook to read and uncompress the compressed version of a file."
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
90 ;; Just pretend we had visited the compressed file,
8136d331c964 Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
91 ;; and uncompress-while-visiting will do the rest.
6665
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
92 (let (name)
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
93 (if (file-exists-p (setq name (concat buffer-file-name ".Z")))
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
94 (setq buffer-file-name name)
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
95 (if (file-exists-p (setq name (concat buffer-file-name ".gz")))
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
96 (setq buffer-file-name name)))
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
97 (if (eq name buffer-file-name)
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
98 (progn
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
99 (insert-file-contents buffer-file-name t)
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
100 (goto-char (point-min))
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
101 (setq error nil)
9594cf4c0ff5 (uncompress-program): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 2356
diff changeset
102 t))))
657
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 21
diff changeset
103
2356
f7b80bd03e70 Add provide call.
Richard M. Stallman <rms@gnu.org>
parents: 2319
diff changeset
104 (provide 'uncompress)
f7b80bd03e70 Add provide call.
Richard M. Stallman <rms@gnu.org>
parents: 2319
diff changeset
105
657
fec3f9a1e3e5 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 21
diff changeset
106 ;;; uncompress.el ends here