[Mew-dist 05057] Re: imget APOP error
Akihisa Konno
minnie at example.com
1998年 6月 12日 (金) 16:16:21 JST
たびたびすみません、金野(minnie)@東大船舶です。
From: Akihisa Konno <minnie at example.com>
Subject: [Mew-dist 05056] Re: imget APOP error
Date: Fri, 12 Jun 1998 15:39:04 +0900
> IM/GetPass.pmへのパッチを流した金野(minnie)@東大船舶(現 環境)です。
> セキュリティのことはちっとも考えていませんでした^^;;。それと、前のパッ
> チはピントがぼけていたので、修正版です。
初歩的なバグがありました。POSIXモジュールのロードに失敗するとエラー
を出さずに/bin/sttyを起動するので、さっきまで気づきませんでした。失礼
しました。
オリジナルの im-93/IM.in/GetPass.pm.in へのパッチです。
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
._ _ * ._ ._ * _ 金野 祥久 東大・工・船舶海洋工・流体研
[ | ) | [ ) [ ) | (/, minnie at example.com
-=-=-=-=-=-=-=-=-=-=-=-=-= なーに言ってんだか -=-=-=-=-=-=-=-=-=-=-=-=-
-------------- next part --------------
--- IM.in/GetPass.pm.in.orig Wed Jan 14 14:43:18 1998
+++ IM.in/GetPass.pm.in Fri Jun 12 15:59:59 1998
@@ -45,18 +45,22 @@
my ($prompt) = @_;
my ($secret, $termios, $c_lflag);
- unless (win95p()) {
- # POSIX doesn't exist for Win95, sigh.
- # stty is not effective for Mule since it's not
- # terminal base, sigh.
- # Anyway, Mew never echos back even if getpass echos back.
- require POSIX && import POSIX;
+ # may well be wrapped by "if (-t STDIN) { ... }" ???
- $termios = new POSIX::Termios;
- $termios->getattr(fileno(STDIN));
- $c_lflag = $termios->getlflag;
- $termios->setlflag($c_lflag & ~&POSIX::ECHO);
- $termios->setattr(fileno(STDIN), &POSIX::TCSANOW);
+ # POSIX doesn't exist for Win95, sigh.
+ # stty is not effective for Mule since it's not
+ # terminal base, sigh.
+ # Anyway, Mew never echos back even if getpass echos back.
+ if (eval 'require POSIX') {
+ import POSIX qw(termios_h);
+ $termios = new POSIX::Termios;
+ $termios->getattr(fileno(STDIN));
+ $c_lflag = $termios->getlflag;
+ $termios->setlflag($c_lflag & ~&POSIX::ECHO);
+ $termios->setattr(fileno(STDIN), &POSIX::TCSANOW);
+ } elsif (unixp()) { # non-POSIX-ish UNIX.
+ # stty might be available.
+ system('/bin/stty -echo'); # Ignore errors.
}
print STDERR $prompt;
@@ -64,9 +68,11 @@
chomp($secret = <STDIN>);
print STDERR "\n";
- unless (win95p()) {
- $termios->setlflag($c_lflag);
- $termios->setattr(fileno(STDIN), &POSIX::TCSANOW);
+ if (defined $termios) { # POSIX-ish
+ $termios->setlflag($c_lflag);
+ $termios->setattr(fileno(STDIN), &POSIX::TCSANOW);
+ } elsif (unixp()) { # non-POSIX-ish UNIX.
+ system('/bin/stty echo'); # Ignore errors.
}
return $secret;
Mew-dist メーリングリストの案内