[mew-win32 03659] Re: GnuPG Passphrase input on Mew2.2

きむら takim at example.com
2002年 7月 24日 (水) 21:52:06 JST


木村と申します。

以前にもgpg関連で質問させていただいたことがあります。
Mew 3.0.55/gnupg 1.0.7/XEmacs 21.4.3にて動作していますので報
告します。

From: Hideyuki SHIRAI (白井秀行) <shirai at example.com>
Subject: [mew-win32 03655] Re: GnuPG Passphrase input on Mew2.2
Date: Wed, 24 Jul 2002 10:09:18 +0900 (JST)

> katsu> Cygwin(MinGW) 環境においては、Mew2.2 で GnuPG を package そのままで
> katsu> 使おうとすると passphrase の入力ができずに止まってしまうという
> katsu> 問題があります。最近の Cygwin 1.13.2/GnuPG 1.0.7 の組み合せで、
> katsu> これを解決する方法を紹介します。
> 
> おぉ。というわけで、早速試してみたのですが、
> 
> katsu> 1. パッケージとパッチの準備
> katsu> 2. ソースの準備
> katsu> 3. Configuration Generation
> 
> はにゃぁ、autoconf, automake が古いって言われてしまいました。;_;
> ので、gnu.org からそれぞれ最新版を貰ってきて、まずはそれから、と
> 思ったのですが、
> 
> (1) autoconf で configure, make => m4 が古いって言われる
> (2) automake で configure => autoconf が古いって言われる
> (3) (1) に戻る。
> 
> の無限ループ(千日手?)になってしまいました。ずっとバージョンアッ
> プをサボっていた罰があたったわけで、少しづつバージョンアップすれ
> ばいいのかな?それとも cygwin ごとバージョンアップ(現在 1.3.2)す
> ればいいのかな?

白井さんには申し訳ありませんが、こちらはわかりません。
私がcygwinをsetup.exeでフルインストールしたから、この問題に
は遭遇していないのでしょうかねぇ?

> katsu> 追試や改善の提案を含め、みなさまのご議論を強く歓迎します。

私がmew-3.0.55で動くことを確認した方法は以下のとおりです。
(元patchの亀井さんに感謝!)
1. cygwin setup.exe 2.249.2.3にてcygwin 1.3.10をフルインストー
   ル
2. gnupg-1.0.7.tar.gz(2399025 bytes)をローカルに展開
3. patch -p0 <添付のpatch
4. ./configure --disable-dev-random
5. make && make install

> katsu> -- 
> katsu> 渡邊克宏@SRA
> katsu> だれかほめて〜

動かせたのにMLに流さなかった自分を責めております...
============================================================
name:    木村 隆之 (KIMURA Takayuki)
email:   takim at example.com
GPG FP:  016C 56E6 D064 86AC BF0A  97BA 0024 BA18 4ACC 1645
pub-key: http://www.ceres.dti.ne.jp/~takim/
============================================================
-------------- next part --------------
diff -ur gnupg-1.0.7.org/configure gnupg-1.0.7/configure
--- gnupg-1.0.7.org/configure	2002-04-29 23:59:16.000000000 +0900
+++ gnupg-1.0.7/configure	2002-05-19 15:57:14.000000000 +0900
@@ -9,6 +9,8 @@
 # This configure script is free software; the Free Software Foundation
 # gives unlimited permission to copy, distribute and modify it.
 
+export RANLIB=`which ranlib`
+
 # Avoid depending upon Character Ranges.
 as_cr_letters='abcdefghijklmnopqrstuvwxyz'
 as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
@@ -3327,7 +3329,9 @@
 EOF
 
 cat >>confdefs.h <<\EOF
-#define HAVE_DRIVE_LETTERS 1
+#ifdef HAVE_DRIVE_LETTERS
+#undef HAVE_DRIVE_LETTERS
+#endif
 EOF
 
 cat >>confdefs.h <<\EOF
@@ -12108,3 +12112,4 @@
 fi
 echo
 
+cp po/Makefile.in po/Makefile
diff -ur gnupg-1.0.7.org/g10/armor.c gnupg-1.0.7/g10/armor.c
--- gnupg-1.0.7.org/g10/armor.c	2002-04-29 23:28:22.000000000 +0900
+++ gnupg-1.0.7/g10/armor.c	2002-05-20 23:28:00.000000000 +0900
@@ -37,7 +37,7 @@
 #include "status.h"
 #include "i18n.h"
 
-#ifdef HAVE_DOSISH_SYSTEM
+#ifdef HAVE_DOSISH_SYSTEM && !defined(__MINGW32__)
   #define LF "\r\n"
 #else
   #define LF "\n"
diff -ur gnupg-1.0.7.org/g10/sign.c gnupg-1.0.7/g10/sign.c
--- gnupg-1.0.7.org/g10/sign.c	2002-04-29 23:39:24.000000000 +0900
+++ gnupg-1.0.7/g10/sign.c	2002-05-20 23:27:24.000000000 +0900
@@ -41,7 +41,7 @@
 #include "i18n.h"
 
 
-#ifdef HAVE_DOSISH_SYSTEM
+#ifdef HAVE_DOSISH_SYSTEM && !defined(__MINGW32__)
   #define LF "\r\n"
   void __stdcall Sleep(ulong);
   #define sleep(a)  Sleep((a)*1000)
diff -ur gnupg-1.0.7.org/util/ttyio.c gnupg-1.0.7/util/ttyio.c
--- gnupg-1.0.7.org/util/ttyio.c	2002-01-06 03:05:20.000000000 +0900
+++ gnupg-1.0.7/util/ttyio.c	2002-05-19 20:44:18.000000000 +0900
@@ -72,6 +72,7 @@
 
 #else /* yeah, we have a real OS */
 static FILE *ttyfp = NULL;
+static FILE *ttyfpin = NULL;
 #endif
 
 static int initialized;
@@ -135,8 +136,9 @@
   #elif defined(__EMX__)
     ttyfp = stdout; /* Fixme: replace by the real functions: see wklib */
   #else
-    ttyfp = batchmode? stderr : fopen(TERMDEVICE, "r+");
-    if( !ttyfp ) {
+    ttyfp = batchmode? stderr : stdout;
+    ttyfpin = batchmode? stderr : stdin;
+    if( !ttyfp || !ttyfpin ) {
 	log_error("cannot open /dev/tty: %s\n", strerror(errno) );
 	exit(2);
     }
@@ -389,23 +391,26 @@
     } while (c != '\n');
     i = (i>0) ? i-1 : 0;
   #else /* unix version */
+    if( !isatty(fileno(stdin)) )
+        hidden = 0;
+    
     if( hidden ) {
       #ifdef HAVE_TCGETATTR
 	struct termios term;
 
-	if( tcgetattr(fileno(ttyfp), &termsave) )
+	if( tcgetattr(fileno(ttyfpin), &termsave) )
 	    log_fatal("tcgetattr() failed: %s\n", strerror(errno) );
 	restore_termios = 1;
 	term = termsave;
 	term.c_lflag &= ~(ECHO | ECHOE | ECHOK | ECHONL);
-	if( tcsetattr( fileno(ttyfp), TCSAFLUSH, &term ) )
+	if( tcsetattr( fileno(ttyfpin), TCSAFLUSH, &term ) )
 	    log_fatal("tcsetattr() failed: %s\n", strerror(errno) );
       #endif
     }
 
     /* fixme: How can we avoid that the \n is echoed w/o disabling
      * canonical mode - w/o this kill_prompt can't work */
-    while( read(fileno(ttyfp), cbuf, 1) == 1 && *cbuf != '\n' ) {
+    while( read(fileno(ttyfpin), cbuf, 1) == 1 && *cbuf != '\n' ) {
 	if( !hidden )
 	    last_prompt_len++;
 	c = *cbuf;
@@ -432,7 +437,7 @@
 
     if( hidden ) {
       #ifdef HAVE_TCGETATTR
-	if( tcsetattr(fileno(ttyfp), TCSAFLUSH, &termsave) )
+	if( tcsetattr(fileno(ttyfpin), TCSAFLUSH, &termsave) )
 	    log_error("tcsetattr() failed: %s\n", strerror(errno) );
 	restore_termios = 0;
       #endif


Mew-win32 メーリングリストの案内