[Mew-dist 04952] Re: Refile

Hajimu UMEMOTO ( 梅本肇 ) ume at example.com
1998年 5月 31日 (日) 00:35:45 JST


  梅本@日立です。

  fetchmail の話題で恐縮です。(_ _)

>>> Sat, 30 May 1998 15:13:46 +0900 の刻に「矢野」、すなわち
>>> Toru YANO (矢野暢) <ytoru at example.com> 氏曰く

矢野>   これは、man を引いてそれっぽいのを追加してみたのです。

  なるほど。

矢野>               (This option is provided to pacify people  who  are
矢野>               paranoid  about having an MTA edit mail headers and
矢野>               want to know they can prevent it, but it is  gener-
矢野>               ally not a good idea to actually turn off rewrite.)

矢野>   だって。

  偏執病者扱いされたくないので :-) hogehoge (nanntoka) <addr> を理解でき
るようにしてみました。テストはほとんどしていませんので、at your own
risk ということで。

  あと、IM のキューを読んで、POP3 XTND XMIT で送信する機能と、TIS FWTK 
の tn-gw 越え機能を追加して使っていたりします。こんなのって、需要ありま
すかね?
  後者のほうはともかく、前者は、SPAM の踏台対策で、どこからでも自分の 
ISP の sendmail に投げられる状況じゃなくなって来たので、ユーザ認証によっ
て送信を受け付けるという仕掛けが必要と感じて、追加しました。ちなみに、不
完全ながら、IM の方にも追加してます。

# ちょっとは Mew の話題に近付けたかな? ^^;

-------------- next part --------------
--- rfc822.c.orig	Tue Apr 21 22:09:59 1998
+++ rfc822.c	Sat May 30 23:31:08 1998
@@ -18,6 +18,7 @@
 
 #ifdef TESTMAIN
 static int verbose;
+char *program_name = "rfc822";
 #endif /* TESTMAIN */
 
 char *reply_hack(buf, host)
@@ -25,7 +26,7 @@
 char *buf;		/* header to be hacked */
 const char *host;	/* server hostname */
 {
-    char *from, *cp, last_nws = '\0';
+    char *from, *cp, last_nws = '\0', *parens_from = NULL;
     int parendepth, state, has_bare_name_part, has_host_part;
     int addresscount = 1;
 
@@ -105,13 +106,19 @@
 		 * an obscure misfeature described in sections
 		 * 6.1, 6.2.6, and A.1.5 of the RFC822 standard.
 		 */
-		else if ((*from == ',' || HEADER_END(from) || from[1] == '(')
+		else if ((*from == ',' || HEADER_END(from))
 			 && has_bare_name_part
 			 && !has_host_part
-			 && last_nws != ';' && last_nws != ')')
+			 && last_nws != ';')
 		{
 		    int hostlen;
+		    char *p;
 
+		    p = from;
+		    if (parens_from) {
+			from = parens_from;
+			parens_from = NULL;
+		    }
 		    while (isspace(*from) || (*from == ','))
 			--from;
 		    from++;
@@ -120,8 +127,15 @@
 			cp[hostlen+1] = *cp;
 		    *from++ = '@';
 		    memcpy(from, host, hostlen);
-		    from += hostlen;
+		    from = p + hostlen + 1;
 		    has_host_part = TRUE;
+		} 
+		else if (from[1] == '('
+			 && has_bare_name_part
+			 && !has_host_part
+			 && last_nws != ';' && last_nws != ')')
+		{
+		    parens_from = from;
 		} 
 		else if (!isspace(*from))
 		    has_bare_name_part = TRUE;
-------------- next part --------------
梅本 肇 @ インターネット互助会横浜
ume at example.com  ume at example.com  http://www.imasy.or.jp/~ume/
プログラムは書いた人の意図ではなく書かれた通り動く


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