pgg-pgp5

中川 誠 Makoto.Nakagawa @ jp.compaq.com
2000年 1月 11日 (火) 11:27:55 JST


中川@コンパック(株)です。

いくつか気が付いた点がありましたのでパッチを作成してみました。
emiko-1_13-200001060443 へのパッチです。

・pgp と pgp5 で verify-region がタイミング(検証対象が大きくなると?)に
  よっては SIGPIPE のエラーとなります。pgg-*-process-region を使うのばま
  ずそうなので、call-process を使用するように変更してみました。
  
  semi-pgpgpg では問題がないのは call-process-region と 
  pgg-*-process-region の仕様の差のようです。

・pgp と pgp5 で lookup-key-string での call-process への引数の数が間違っ
  ているようなので修正しました。

・gpg で lookup-key-string を call-process でおこなうように変更してみま
  した。入力を取らないのに pgg-gpg-process-region を利用するのは上の例も
  あって気持ちが悪いように思いました。pgp、pgp5 の両方での実装に合わせた
  だけです。

とりあえず動作しているようです。

-------------- next part --------------
--- pgg-gpg.el.orig	Fri Nov 26 15:29:09 1999
+++ pgg-gpg.el	Tue Jan 11 02:56:17 2000
@@ -136,8 +136,10 @@
   (let ((args (list "--with-colons" "--no-greeting" "--batch" 
 		    (if type "--list-secret-keys" "--list-keys")
 		    string)))
-    (pgg-gpg-process-region (point)(point) nil pgg-gpg-program args)
-    (with-current-buffer pgg-output-buffer
+    (with-current-buffer (get-buffer-create pgg-output-buffer)
+      (buffer-disable-undo)
+      (erase-buffer)
+      (apply #'call-process pgg-gpg-program nil t nil args)
       (goto-char (point-min))
       (when (re-search-forward "^\\(sec\\|pub\\):"  nil t)
 	(substring 
--- pgg-pgp5.el.orig	Fri Nov 26 15:29:10 1999
+++ pgg-pgp5.el	Tue Jan 11 03:24:11 2000
@@ -140,7 +140,7 @@
     (with-current-buffer (get-buffer-create pgg-output-buffer)
       (buffer-disable-undo)
       (erase-buffer)
-      (apply #'call-process pgg-pgp5-pgpk-program  nil t args)
+      (apply #'call-process pgg-pgp5-pgpk-program nil t nil args)
       (goto-char (point-min))
       (when (re-search-forward "^sec" nil t)
 	(substring 
@@ -216,8 +216,12 @@
 				   start end &optional signature)
   (let* ((basename (expand-file-name "pgg" temporary-file-directory))
 	 (orig-file (make-temp-name basename))
-	 (args '("+verbose=1" "+batchmode=1" "+language=us"))
-	 (orig-mode (default-file-modes)))
+	 (args
+	  (append
+	   '("+verbose=1" "+batchmode=1" "+language=us")
+	   pgg-pgp5-extra-args))
+	 (orig-mode (default-file-modes))
+	 exit-status)
     (unwind-protect
 	(progn
 	  (set-default-file-modes 448)
@@ -228,8 +232,16 @@
       (copy-file signature (setq signature (concat orig-file ".asc")))
       (setq args (append args (list signature)))
       )
-    (pgg-pgp5-process-region (point-min)(point-max) nil
-			     pgg-pgp5-pgpv-program args)
+    (with-current-buffer (get-buffer-create pgg-output-buffer)
+      (buffer-disable-undo)
+      (erase-buffer)
+      (setq exit-status
+	    (apply #'call-process pgg-pgp5-pgpv-program nil t nil args))
+
+      (pgg-convert-lbt-region (point-min)(point-max) 'LF)
+
+      (if (= 127 exit-status)
+	  (error "%s could not be found" program)))
     (delete-file orig-file)
     (if signature (delete-file signature))
     (pgg-process-when-success nil)
--- pgg-pgp.el.orig	Fri Nov 26 15:29:10 1999
+++ pgg-pgp.el	Tue Jan 11 03:24:07 2000
@@ -125,7 +125,7 @@
     (with-current-buffer (get-buffer-create pgg-output-buffer)
       (buffer-disable-undo)
       (erase-buffer)
-      (apply #'call-process pgg-pgp-program nil t args)
+      (apply #'call-process pgg-pgp-program nil t nil args)
       (goto-char (point-min))
       (cond
        ((re-search-forward "^pub\\s +[0-9]+/" nil t);PGP 2.*
@@ -204,7 +204,10 @@
 				   start end &optional signature)
   (let* ((basename (expand-file-name "pgg" temporary-file-directory))
 	 (orig-file (make-temp-name basename))
-	 (args '("+verbose=1" "+batchmode" "+language=us"))
+	 (args
+	  (append
+	   '("+verbose=1" "+batchmode" "+language=us")
+	   pgg-pgp-extra-args))
 	 (orig-mode (default-file-modes)))
     (unwind-protect
 	(progn
@@ -216,8 +219,16 @@
       (copy-file signature (setq signature (concat orig-file ".asc")))
       (setq args (append args (list signature orig-file)))
       )
-    (pgg-pgp-process-region (point-min)(point-max) nil
-			    pgg-pgp-program args)
+    (with-current-buffer (get-buffer-create pgg-output-buffer)
+      (buffer-disable-undo)
+      (erase-buffer)
+      (setq exit-status
+	    (apply #'call-process pgg-pgp-program nil t nil args))
+
+      (pgg-convert-lbt-region (point-min)(point-max) 'LF)
+
+      (if (= 127 exit-status)
+	  (error "%s could not be found" program)))
     (delete-file orig-file)
     (if signature (delete-file signature))
     (pgg-process-when-success

-------------- next part --------------
-- 
/***   Compaq Computer K.K.                        ***/
/***   Network and Systems Integration Servieces   ***/
/***   Nakagawa, Makoto(中川 誠)                ***/
/*  F6 E1 41 25 49 DF A8 82  D4 94 4F 0C 95 6B D7 57 */
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: 無し
型:         application/pgp-signature
サイズ:     366 バイト
説明:       無し
URL:        <http://lists.chise.org/pipermail/emacs-mime-ja/attachments/20000111/3b3762f0/attachment.pgp>


More information about the Emacs-mime-ja mailing list