[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 メーリングリストの案内