[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