From 28187bb367d31f343c613384672d1aab36f7d5f2 Mon Sep 17 00:00:00 2001 From: yamaoka Date: Tue, 7 Nov 2000 00:43:43 +0000 Subject: [PATCH 1/1] Synch with Gnus. --- lisp/ChangeLog | 12 +++++++++ lisp/gnus-art.el | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ lisp/gnus-sum.el | 1 + lisp/mml2015.el | 32 ++++++++++++++--------- lisp/rfc2231.el | 2 +- 5 files changed, 110 insertions(+), 14 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 13aa3e6..28a157d 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,15 @@ +2000-11-06 19:10:14 ShengHuo ZHU + + * rfc2231.el (rfc2231-encode-string): Use us-ascii if charset is nil. + +2000-11-06 18:17:53 ShengHuo ZHU + + * gnus-art.el (gnus-article-encrypt): New function. + (gnus-article-encrypt-protocol-alist): New variable. + (gnus-article-encrypt-protocol): New variable. + * mml2015.el (mml2015-self-encrypt): New function. + (mml2015-mailcrypt-encrypt): Set mc-pgp-always-sign. + 2000-11-06 16:02:52 ShengHuo ZHU * mm-uu.el (mm-uu-gpg-key-skip-to-last): New function. diff --git a/lisp/gnus-art.el b/lisp/gnus-art.el index ac0821a..ac06878 100644 --- a/lisp/gnus-art.el +++ b/lisp/gnus-art.el @@ -1013,6 +1013,15 @@ See the manual for details." :group 'gnus-article-treat :type gnus-article-treat-custom) +(defvar gnus-article-encrypt-protocol-alist + '(("PGP" . mml2015-self-encrypt))) + +(defcustom gnus-article-encrypt-protocol nil + "The protocol used for encrypt articles. +It is a string, such as \"PGP\". If nil, ask user." + :type 'string + :group 'mime-security) + ;;; Internal variables (defvar article-goto-body-goes-to-point-min-p nil) @@ -5446,6 +5455,74 @@ For example: (t (error "%S is not a valid value" val)))) +(defun gnus-article-encrypt (protocol) + "Replace the article with encrypted one." + (interactive + (list + (or gnus-article-encrypt-protocol + (completing-read "Encrypt protocol: " + gnus-article-encrypt-protocol-alist + nil t)))) + (let ((func (cdr (assoc protocol gnus-article-encrypt-protocol-alist)))) + (unless func + (error (format "Can't find the encrypt protocol %s" protocol))) + (if (equal gnus-newsgroup-name "nndraft:drafts") + (error "Can't encrypt the article in group nndraft:drafts.")) + (save-excursion + (set-buffer gnus-summary-buffer) + (let ((mail-parse-charset gnus-newsgroup-charset) + (mail-parse-ignored-charsets gnus-newsgroup-ignored-charsets) + (summary-buffer gnus-summary-buffer) + references point) + (gnus-set-global-variables) + (when (gnus-group-read-only-p) + (error "The current newsgroup does not support article encrypt")) + (gnus-summary-show-article t) + (setq references + (or (mail-header-references gnus-current-headers) "")) + (set-buffer gnus-article-buffer) + (let* ((buffer-read-only nil) + (headers + (mapcar (lambda (field) + (and (save-restriction + (message-narrow-to-head) + (goto-char (point-min)) + (search-forward field nil t)) + (prog2 + (message-narrow-to-field) + (buffer-substring (point-min) (point-max)) + (delete-region (point-min) (point-max)) + (widen)))) + '("Content-Type:" "Content-Transfer-Encoding:" + "Content-Disposition:")))) + (message-narrow-to-head) + (message-remove-header "MIME-Version") + (goto-char (point-max)) + (setq point (point)) + (insert (apply 'concat headers)) + (widen) + (narrow-to-region point (point-max)) + (let ((message-options message-options)) + (message-options-set 'message-sender user-mail-address) + (message-options-set 'message-recipients user-mail-address) + (message-options-set 'message-sign-encrypt 'not) + (funcall func)) + (goto-char (point-min)) + (insert "MIME-Version: 1.0\n") + (widen) + (gnus-summary-edit-article-done + references nil summary-buffer t)) + (when gnus-keep-backlog + (gnus-backlog-remove-article + (car gnus-article-current) (cdr gnus-article-current))) + (save-excursion + (when (get-buffer gnus-original-article-buffer) + (set-buffer gnus-original-article-buffer) + (setq gnus-original-article nil))) + (when gnus-use-cache + (gnus-cache-update-article + (car gnus-article-current) (cdr gnus-article-current))))))) + ;;; @ for mime-view ;;; diff --git a/lisp/gnus-sum.el b/lisp/gnus-sum.el index 3541e54..71a842d 100644 --- a/lisp/gnus-sum.el +++ b/lisp/gnus-sum.el @@ -1671,6 +1671,7 @@ increase the score of each group you read." "c" gnus-article-copy-part "C" gnus-article-view-part-as-charset "e" gnus-article-externalize-part + "E" gnus-article-encrypt "i" gnus-article-inline-part "|" gnus-article-pipe-part)) diff --git a/lisp/mml2015.el b/lisp/mml2015.el index 46385b1..dfd62be 100644 --- a/lisp/mml2015.el +++ b/lisp/mml2015.el @@ -171,19 +171,21 @@ (goto-char (point-max)))) (defun mml2015-mailcrypt-encrypt (cont) - (mc-encrypt-generic - (or (message-options-get 'message-recipients) - (message-options-set 'message-recipients - (mc-cleanup-recipient-headers - (read-string "Recipients: ")))) - nil nil nil - (message-options-get 'message-sender) - (or mc-pgp-always-sign - (eq t - (or (message-options-get 'message-sign-encrypt) - (message-options-set 'message-sign-encrypt - (or (y-or-n-p "Sign the message? ") - 'not)))))) + (let ((mc-pgp-always-sign + (or mc-pgp-always-sign + (eq t (or (message-options-get 'message-sign-encrypt) + (message-options-set + 'message-sign-encrypt + (or (y-or-n-p "Sign the message? ") + 'not)))) + 'never))) + (mc-encrypt-generic + (or (message-options-get 'message-recipients) + (message-options-set 'message-recipients + (mc-cleanup-recipient-headers + (read-string "Recipients: ")))) + nil nil nil + (message-options-get 'message-sender))) (let ((boundary (funcall mml-boundary-function (incf mml-multipart-number)))) (goto-char (point-min)) @@ -383,6 +385,10 @@ (funcall func cont) (error "Cannot find sign function.")))) +;;;###autoload +(defun mml2015-self-encrypt () + (mml2015-encrypt nil)) + (provide 'mml2015) ;;; mml2015.el ends here diff --git a/lisp/rfc2231.el b/lisp/rfc2231.el index 6ef6990..65367eb 100644 --- a/lisp/rfc2231.el +++ b/lisp/rfc2231.el @@ -198,7 +198,7 @@ These look like \"us-ascii'en-us'This%20is%20%2A%2A%2Afun%2A%2A%2A\"." (delete-char 1)) (forward-char 1))) (goto-char (point-min)) - (insert (or (symbol-name charset) "ascii") "''") + (insert (symbol-name (or charset 'us-ascii)) "''") (goto-char (point-min)) (if (not broken) (insert param "*=") -- 1.7.10.4