作者PaulLiu.bbs@processor.tfcis.org (GrandPaul) 看板: plan
標題Re: [問題] 關於 RFC 2045 / RFC 2047
時間XEON (Tue, 01 Apr 2003 19:22:16 +0800 (CST)) Updated: 2005/08/31
※ -------------- news 的部分 -------------- ※
: innbbsd/Makefile 若是 FreeBSD 要改這個
freebsd:
... -L./lib -linn -L/usr/local/lib -liconv" LIBCRYPT=-lcrypt target
: innbbsd/inntobbs.h
! extern char *SUBJECT, *FROM, *SITE, *DATE,
*GROUPS, *MSGID, *CONTROL, *CONTENTTYPE, *CONTENTENCODE;
: innbbsd/inntobbs.c
enum HeaderValue /* 所有有用到的 header */
{
SUBJECT_H,
FROM_H,
SITE_H,
DATE_H,
GROUPS_H,
MSGID_H,
CONTROL_H,
+ CONTENTTYPE_H,
+ CONTENTENCODE_H,
LASTHEADER
};
static header_t headertable[LASTHEADER] =
{
"Subject", SUBJECT_H,
"From", FROM_H,
"Organization", SITE_H,
"Date", DATE_H,
"Newsgroups", GROUPS_H,
"Message-ID", MSGID_H,
"Control", CONTROL_H,
+ "Content-Type", CONTENTTYPE_H,
+ "Content-Transfer-Encoding", CONTENTENCODE_H,
};
static char *HEADER[LASTHEADER];
char *BODY;
! char *SUBJECT, *FROM, *SITE, *DATE, *PATH,
*GROUPS, *MSGID, *CONTROL, *CONTENTTYPE, *CONTENTENCODE;
...
...
MSGID = HEADER[MSGID_H];
CONTROL = HEADER[CONTROL_H];
+ CONTENTTYPE = HEADER[CONTENTTYPE_H];
+ CONTENTENCODE = HEADER[CONTENTENCODE_H];
}
: innbbsd/rec_article.c
static int
receive_article()
{
newsfeeds_t *nf;
char myaddr[128], mynick[128], mysubject[128], myfrom[128], mydate[80];
char poolx[256];
+ char charset[32], decode;
+ int cc;
...
...
parse_date();
strcpy(mydate, (char *) Btime(&datevalue));
DATE = mydate;
+ /* 轉 charset */
+ mm_getencode(CONTENTENCODE, &decode);
+ cc = mmdecode(BODY, decode, BODY);
+ mm_getcharset(CONTENTTYPE, charset, sizeof(charset));
+ if (!*charset)
+ strcpy(charset, nf->charset);
+ str_conv(charset, MYCHARSET, BODY, cc);
- if (*nf->charset == 'g')
+ if (!str_cmp(charset, "gb2312"))
{
- gb2b5(BODY);
gb2b5(FROM);
gb2b5(SUBJECT);
gb2b5(SITE);
}
--
╭─ Origin ─╗ ���O���� processor.tfcis.org ~ κλμ ─┤
├ Author ╡ cnal.csie.nctu.edu.tw