作者itoc.bbs@xeon.tfcis.org (核心動力) 看板: plan
標題Re: [問題] 濾掉ascii
時間動力核心 (Wed, 19 Nov 2003 09:36:42 +0800 (CST)) Updated: 2003/11/19
※ 引述《cpd.bbs@pitch.twbbs.org (Seasons)》之銘言:
> 像kkcity一樣,轉寄時可以選擇...
> 是否要保留 ANSI 彩色控制碼?(Yes/No)
> 覺得好像滿不錯的,應該怎麼做好呢?
: struct.h
#define MQ_JUSTIFY 0x01 /* 身分認證信函 */
#define MQ_ATTACH 0x02 /* 有 attachment 的信函 */
+ #define MQ_NOANSI 0x04 /* strip 掉 ANSI 的信件 */
: xover.c:xo_forward()
static char rcpt[64];
char fpath[128], folder[80], *dir, *title, *userid;
HDR *hdr, xhdr;
int tag, locus, userno, cc, xmode;
int method; /* 轉寄到 0:站外 >0:自己 <0:其他站內使用者 */
+ int mq;
...
...
else
{
if (not_addr(rcpt))
return XO_FOOT;
method = 0;
+ mq = (vans("是否保留 ANSI 彩色控制碼(Y/N)?[Y] ") == 'n') ? MQ_NOANSI : 0;
}
...
...
else /* 轉寄站外 */
{
- if ((cc = bsmtp(fpath, title, rcpt, 0)) < 0)
+ if ((cc = bsmtp(fpath, title, rcpt, mq)) < 0)
break;
}
: mail.c:bsmtp()
if (fp = fopen(fpath, "r"))
{
char *ptr;
+ char tmp[512];
str = buf;
*str++ = '.';
- while (fgets(str, sizeof(buf) - 3, fp))
+ while (fgets(tmp, sizeof(tmp), fp))
{
+ if (method & MQ_NOANSI)
+ {
+ str_ansi(str, tmp, sizeof(buf) - 3);
+ strcat(str, "\r\n");
+ }
+ else
+ {
+ str_ncpy(str, tmp, sizeof(buf) - 3);
if (ptr = strchr(str, '\n'))
{
*ptr++ = '\r';
*ptr++ = '\n';
*ptr = '\0';
}
+ }
fputs((*str == '.' ? buf : str), fw);
}
fclose(fp);
}
--
┌┼ Origin: Maple-itoc˙動力核心 processor.tfcis.org
└┘ Author: itoc 從 itoc.dorm11.nctu.edu.tw 發表