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

[debian-users:01430] Re: procmail add dot ?



若狭です。

From: Susumu OSAWA <susumu-o@xxxxxxxxxxxxxxx>
Subject: [debian-users:01408] procmail add dot ?
Date: Tue, 5 Aug 1997 18:26:40 +0900 (JST)

>   fetchpopのソースを見るかぎり、とくに何もしてませんよね。
>   みんな困ってないんでしょうかねぇ。

困っていました^^; が、自分が使っている pop サーバが悪いのかと思ってい
ました。でもここでのお話によると「.」が付くのは pop の仕様(?)だった
訳ですね(←自分の勉強不足)。

>   こんな感じでどうでしょう。(fetchpop-1.91)
>   #添削もとむ(^^;

試してみました。自分が使っているのは fetchpop1.9 に patch1 と patch2 
を当てたものですが、このパッチでうまくいっているようです。

つまり、行頭に `.' があるだけの行が来たらそのメールは終了だから抜ける
が、行頭に `.' があっても、もしその後が続いてるんなら抜けない。
`.' の後が続いているということは、仕様から、元々先頭が `.' だった行に
更に `.' が付加されたということであるはずだから、次のキャラクタをチェッ
クして `.' であるならやっぱりそうなので、その行はそのまま使うんじゃな
くて最初の `.' を取り除け、ということですよね。

#何故 fetchpop はそれをやってないんでしょうかね?

ということは2文字目が `.' かどうかをチェックする必要はあるのだろうか?
という気もしてきました...。
もしそうだとしたら、大沢さんのパッチは、

--
*** ../fetchpop-1.91.orig/retrieve.c    Wed Jun 26 10:28:12 1996
--- retrieve.c  Tue Aug  5 18:16:33 1997
***************
*** 240,248 ****
      if (inheaders && msgbuf[0] == '\0')
        inheaders = 0;
  
!     if (msgbuf[0] == '.') 
        if (msgbuf[1] == 0)
        break; 
      
      strcat(msgbuf,"\n");
      if (options->hack_addresses && inheaders) {
--- 240,252 ----
      if (inheaders && msgbuf[0] == '\0')
        inheaders = 0;
  
!     if (msgbuf[0] == '.') { 
        if (msgbuf[1] == 0)
        break; 
+       else {
+         strncpy(msgbuf,msgbuf+1,MSGBUFLEN-1);
+       }
+     }
      
      strcat(msgbuf,"\n");
      if (options->hack_addresses && inheaders) {
--

というのでもいいのではないでしょうか?2文字目(?)チェックをサボって
も自分はとりあえずうまくいってるようです。もし間違ってたらすいません...。
---
Ken Wakasa: Saito-Aida Lab. M2.
Graduate School of Info. Eng., The Univ. of Tokyo, Japan