[Date Prev][Date Next][Thread Prev][][Date Index][Thread Index]

Re: Solaris + XEmacs の問題解決方法



From:  Hideyuki SHIRAI (白井秀行) <shirai@rdmg.mgcs.mei.co.jp> 曰く
Subject: [emacs-w3m:02077] Solaris + XEmacs の問題解決方法
Message-ID: <20011106.191854.68564037.shirai@rdmg.mgcs.mei.co.jp>
Date: Tue, 06 Nov 2001 19:18:54 +0900 (JST)

白井> Solaris + XEmacs で process-connection-type が t だと w3m の終了
白井> が検知できないし、process-connection-type が nil だと passwd の
白井> 検出/入力が出来ないし、という問題の話です。

なんだか(Emacs の立場からは)付属のパッチでいいような気がしてきま
した。オプション増やすと、それがある w3m とそれがない w3m とか判
定するのがめんどうだし。

# Meadow からだと、isatty(0) => nil になるのね。

無理やり理由づけすると、

#!/bin/sh
w3m -dump_source http://認証の必要なところ <<EOF
user
passwd
EOF

もできるし。wget の --http-user|passwd といい勝負かな。

## けど、XEmacs 付属の read-passwd() って変。
## ぼくは XEmacs 用になぜだか read-passwd() を .emacs で定義して
## いた。いつのことか、なんでだかはすっかり不明。

-- 
白井秀行 (mailto:shirai@rdmg.mgcs.mei.co.jp)
diff -cr w3m-0.2.1-inu-1.5.orig/configure w3m-0.2.1-inu-1.5/configure
*** w3m-0.2.1-inu-1.5.orig/configure	Fri Sep 28 22:17:38 2001
--- w3m-0.2.1-inu-1.5/configure	Tue Nov  6 14:14:01 2001
***************
*** 1316,1321 ****
--- 1316,1338 ----
    srandom_flg="#undef HAVE_SRANDOM"
  fi
  
+ ####### getpassphrase
+ cat > _zmachdep.c << EOF
+ #include <unistd.h>
+ main()
+ {
+   getpassphrase("");
+ }
+ EOF
+ if $cc $cflags -o _zmachdep _zmachdep.c > /dev/null 2>&1
+ then
+   echo "You have getpassphrase()."
+   getpassphrase_flg="#define HAVE_GETPASSPHRASE"
+ else
+   echo "You don't have getpassphrase()."
+   getpassphrase_flg="#undef HAVE_GETPASSPHRASE"
+ fi
+ 
  ####### fclose
  cat > _zmachdep.c << EOF
  #include <stdio.h>
***************
*** 1840,1846 ****
  $putenv_flg
  $srand48_flg
  $srandom_flg
! $readlink_flg
  $fclose_dcl
  $pclose_dcl
  $setjmp_def
--- 1857,1863 ----
  $putenv_flg
  $srand48_flg
  $srandom_flg
! $getpassphrase_flg
  $fclose_dcl
  $pclose_dcl
  $setjmp_def
diff -cr w3m-0.2.1-inu-1.5.orig/file.c w3m-0.2.1-inu-1.5/file.c
*** w3m-0.2.1-inu-1.5.orig/file.c	Wed Oct 31 20:41:11 2001
--- w3m-0.2.1-inu-1.5/file.c	Wed Nov  7 10:50:23 2001
***************
*** 861,867 ****
  	    fflush(stdout);
  	    uname = Strfgets(stdin);
  	    Strchop(uname);
!             pwd = Strnew_charp((char *) getpass(proxy ? "Proxy Password: " : "Password: "));
  	}
  	Strcat_char(uname, ':');
  	Strcat(uname, pwd);
--- 861,879 ----
  	    fflush(stdout);
  	    uname = Strfgets(stdin);
  	    Strchop(uname);
! 	    printf(proxy ? "Proxy Password: " : "Password: ");
! 	    fflush(stdout);
! 	    if (!isatty(0)) {
! 		pwd  = Strfgets(stdin);
! 		Strchop(pwd);
! 	    }
! 	    else {
! #ifdef HAVE_GETPASSPHRASE
! 		pwd = Strnew_charp((char *) getpassphrase(""));
! #else
! 		pwd = Strnew_charp((char *) getpass(""));
! #endif
! 	    }
  	}
  	Strcat_char(uname, ':');
  	Strcat(uname, pwd);
--- w3m.el.orig	Wed Nov  7 11:25:01 2001
+++ w3m.el	Wed Nov  7 10:20:29 2001
@@ -2356,7 +2356,7 @@
 	    (goto-char (point-min))
 	    (cond
 	     ((and (looking-at
-		    "\\(\nWrong username or password\n\\)?Proxy Username for \\(.*\\): Proxy Password: ")
+		    "\\(\n?Wrong username or password\n\\)?Proxy Username for \\(.*\\): Proxy Password: ")
 		   (= (match-end 0) (point-max)))
 	      (unless w3m-proxy-passwd
 		(setq w3m-proxy-passwd
@@ -2368,7 +2368,7 @@
 		    (delete-region (point-min) (point-max)))
 		(error nil)))
 	     ((and (looking-at
-		    "\\(\nWrong username or password\n\\)?Proxy Username for \\(.*\\): ")
+		    "\\(\n?Wrong username or password\n\\)?Proxy Username for \\(.*\\): ")
 		   (= (match-end 0) (point-max)))
 	      (unless w3m-proxy-user
 		(setq w3m-proxy-user
@@ -2380,7 +2380,7 @@
 				       (concat w3m-proxy-user "\n"))
 		(error nil)))
 	     ((and (looking-at
-		    "\\(\nWrong username or password\n\\)?Username for \\(.*\\)\n?: Password: ")
+		    "\\(\n?Wrong username or password\n\\)?Username for \\(.*\\)\n?: Password: ")
 		   (= (match-end 0) (point-max)))
 	      (setq w3m-process-realm (match-string 2))
 	      (setq w3m-process-passwd
@@ -2395,7 +2395,7 @@
 		    (delete-region (point-min) (point-max)))
 		(error nil)))
 	     ((and (looking-at
-		    "\\(\nWrong username or password\n\\)?Username for \\(.*\\)\n?: ")
+		    "\\(\n?Wrong username or password\n\\)?Username for \\(.*\\)\n?: ")
 		   (= (match-end 0) (point-max)))
 	      (setq w3m-process-realm (match-string 2))
 	      (setq w3m-process-user