Updated charset definitions and mime headers
This commit is contained in:
parent
a8bb84338a
commit
42238e6f29
@ -3,12 +3,17 @@ $Id$
|
||||
|
||||
v0.71.2 16-Jan-2005
|
||||
|
||||
charset:
|
||||
Changed rfc-2045 name x-mac to mac. Changed x-ibmpc to cp437.
|
||||
This allows rfc mime headers to show official names.
|
||||
|
||||
mbcico:
|
||||
Added protection during binkp receive for zero bytes compressed
|
||||
data frames, this will case uncompress error -5 because zero
|
||||
bytes can't be compressed ar all.
|
||||
|
||||
mbnntp:
|
||||
Does now send the right mime headers recognised by new clients.
|
||||
Fixed compile problem with some compilers.
|
||||
|
||||
|
||||
|
@ -19,8 +19,8 @@
|
||||
#
|
||||
# IN-SET/OUT-SET: us-ascii (FSC-0054: ASCII, VT100)
|
||||
# iso-8859-1 (FSC-0054: LATIN-1, AMIGA)
|
||||
# x-ibmpc (FSC-0054: IBMPC, PC-8)
|
||||
# x-mac (FSC-0054: MAC)
|
||||
# cp437 (FSC-0054: IBMPC, PC-8) (Was called x-ibmpc)
|
||||
# mac (FSC-0054: MAC)
|
||||
# koir-8 (KOIR-8)
|
||||
# x-alt (ALT)
|
||||
# ...
|
||||
@ -56,10 +56,9 @@ alias ascii us-ascii
|
||||
alias vt100 us-ascii
|
||||
alias latin-1 iso-8859-1
|
||||
alias amiga iso-8859-1
|
||||
alias ibmpc x-ibmpc
|
||||
alias pc-8 x-ibmpc
|
||||
alias cp437 x-ibmpc
|
||||
alias mac x-mac
|
||||
alias ibmpc cp437
|
||||
alias pc-8 cp437
|
||||
alias mac mac
|
||||
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
@ -73,12 +72,12 @@ table us-ascii iso-8859-1
|
||||
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
table us-ascii x-ibmpc
|
||||
table us-ascii cp437
|
||||
# nothing special to map
|
||||
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
table us-ascii x-mac
|
||||
table us-ascii mac
|
||||
# nothing special to map
|
||||
|
||||
|
||||
@ -252,7 +251,7 @@ map 1:1-noctrl
|
||||
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
table iso-8859-1 x-ibmpc
|
||||
table iso-8859-1 cp437
|
||||
map \x80 ?
|
||||
map \x81 ?
|
||||
map \x82 ?
|
||||
@ -384,7 +383,7 @@ map \xFF \x98
|
||||
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
table iso-8859-1 x-mac
|
||||
table iso-8859-1 mac
|
||||
map \x80 ?
|
||||
map \x81 ?
|
||||
map \x82 ?
|
||||
@ -516,7 +515,7 @@ map \xFF \xD7
|
||||
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
table x-ibmpc us-ascii
|
||||
table cp437 us-ascii
|
||||
map \x80 C
|
||||
map \x81 u e
|
||||
map \x82 e
|
||||
@ -648,7 +647,7 @@ map \xFF \x20
|
||||
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
table x-ibmpc iso-8859-1
|
||||
table cp437 iso-8859-1
|
||||
map \x80 \xC7
|
||||
map \x81 \xFC
|
||||
map \x82 \xE9
|
||||
@ -780,12 +779,12 @@ map \xFF \x20
|
||||
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
table x-ibmpc x-ibmpc
|
||||
table cp437 cp437
|
||||
# nothing special to map
|
||||
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
table x-ibmpc x-mac
|
||||
table cp437 mac
|
||||
map \x80 \x82
|
||||
map \x81 \x9F
|
||||
map \x82 \x8E
|
||||
@ -917,7 +916,7 @@ map \xFF \x20
|
||||
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
table x-mac us-ascii
|
||||
table mac us-ascii
|
||||
map \x80 A e
|
||||
map \x81 A
|
||||
map \x82 C
|
||||
@ -1049,7 +1048,7 @@ map \xFF ?
|
||||
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
table x-mac iso-8859-1
|
||||
table mac iso-8859-1
|
||||
map \x80 \xC4
|
||||
map \x81 \xC5
|
||||
map \x82 \xC7
|
||||
@ -1181,7 +1180,7 @@ map \xFF ?
|
||||
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
table x-mac x-ibmpc
|
||||
table mac cp437
|
||||
map \x80 \x8E
|
||||
map \x81 \x8F
|
||||
map \x82 \x80
|
||||
@ -1313,7 +1312,7 @@ map \xFF v
|
||||
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
table x-mac x-mac
|
||||
table mac mac
|
||||
# nothing special to map
|
||||
|
||||
|
||||
|
@ -842,7 +842,7 @@ map \xFF \xEF
|
||||
# Channel map for translation CP866 codes to MAC codes
|
||||
# (Russian language)
|
||||
#
|
||||
table cp866 x-mac
|
||||
table cp866 mac
|
||||
map \x80 \x80
|
||||
map \x81 \x81
|
||||
map \x82 \x82
|
||||
@ -979,7 +979,7 @@ map \xFF \xCA
|
||||
# Due to fidonet wieredness, capital Russian EN translates to
|
||||
# latin 'H'.
|
||||
#
|
||||
table x-mac cp866
|
||||
table mac cp866
|
||||
map \x80 \x80
|
||||
map \x81 \x81
|
||||
map \x82 \x82
|
||||
|
@ -52,6 +52,8 @@ extern char *ttystat[];
|
||||
void send_xlat(char *);
|
||||
char *make_msgid(char *);
|
||||
|
||||
static CharsetAlias *charset_alias_list;
|
||||
static CharsetTable *charset_table_list;
|
||||
|
||||
#define POST_MAXSIZE 10000
|
||||
|
||||
@ -134,9 +136,9 @@ char *getrfcchrs(int val)
|
||||
*/
|
||||
void command_abhs(char *buf)
|
||||
{
|
||||
char *p, *cmd, *opt, *subj;
|
||||
char *p, *cmd, *opt, *subj, *charset = NULL;
|
||||
unsigned long art = 0L;
|
||||
int found;
|
||||
int i, found;
|
||||
|
||||
Syslog('+', "%s", buf);
|
||||
cmd = strtok(buf, " \0");
|
||||
@ -194,12 +196,6 @@ void command_abhs(char *buf)
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Setup a charset translation
|
||||
*/
|
||||
charset_set_in_out(getrfcchrs(msgs.Charset),getrfcchrs(usercharset));
|
||||
|
||||
if (Msg_Read(art, 75)) {
|
||||
|
||||
if (strcasecmp(cmd, "ARTICLE") == 0)
|
||||
@ -209,6 +205,32 @@ void command_abhs(char *buf)
|
||||
if (strcasecmp(cmd, "BODY") == 0)
|
||||
send_nntp("222 %ld %s Article retrieved - Body follows", art, make_msgid(Msg.Msgid));
|
||||
|
||||
/*
|
||||
* Find out the charset used in the Fido side of the message
|
||||
*/
|
||||
if ((p = (char *)MsgText_First()) != NULL) {
|
||||
do {
|
||||
if (strncmp(p, (char *)"\001CHRS: ", 7) == 0) {
|
||||
charset = xstrcpy(p + 7);
|
||||
} else if (strncmp(p, "\001CHARSET: ", 10) == 0) {
|
||||
charset = xstrcpy(p + 10);
|
||||
}
|
||||
} while ((p = (char *)MsgText_Next()) != NULL);
|
||||
}
|
||||
if (charset) {
|
||||
if ((charset_alias_list == NULL) || (charset_table_list == NULL))
|
||||
charset_read_bin();
|
||||
for (i = 0; i < strlen(charset); i++) {
|
||||
if (charset[i] == ' ') {
|
||||
charset[i] = '\0';
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// We don't do translation to the users charset, the news reader must do that.
|
||||
// charset_set_in_out(getrfcchrs(msgs.Charset),getrfcchrs(usercharset));
|
||||
|
||||
if ((strcasecmp(cmd, "ARTICLE") == 0) || (strcasecmp(cmd, "HEAD") == 0)) {
|
||||
|
||||
send_nntp("Path: MBNNTP!not-for-mail");
|
||||
@ -220,13 +242,24 @@ void command_abhs(char *buf)
|
||||
send_nntp("Message-ID: %s", make_msgid(Msg.Msgid));
|
||||
if (strlen(Msg.Replyid))
|
||||
send_nntp("References: %s", make_msgid(Msg.Replyid));
|
||||
|
||||
/*
|
||||
* Send RFC 2045 Multipurpose Internet Mail Extensions (MIME) header.
|
||||
*/
|
||||
send_nntp("MIME-Version: 1.0");
|
||||
if (charset) {
|
||||
send_nntp("Content-Type: text/plain; charset=%s", charset_alias_rfc(charset));
|
||||
} else {
|
||||
send_nntp("Content-Type: text/plain; charset=us-ascii; format=fixed");
|
||||
}
|
||||
send_nntp("Content-Transfer-Encoding: 8bit");
|
||||
|
||||
send_nntp("X-FTN-From: %s <%s>", Msg.From, Msg.FromAddress);
|
||||
if (strlen(Msg.To))
|
||||
send_nntp("X-FTN-To: %s", Msg.To);
|
||||
if ((p = (char *)MsgText_First()) != NULL) {
|
||||
do {
|
||||
if ((p[0] == '\001') || (!strncmp(p, "SEEN-BY:", 8)) || (!strncmp(p, "AREA:", 5))) {
|
||||
Syslog('n', "%s", printablec(p, 0));
|
||||
if (p[0] == '\001') {
|
||||
send_nntp("X-FTN-%s", p+1);
|
||||
} else {
|
||||
@ -235,12 +268,12 @@ void command_abhs(char *buf)
|
||||
}
|
||||
} while ((p = (char *)MsgText_Next()) != NULL);
|
||||
}
|
||||
|
||||
send_nntp("MIME-Version: 1.0");
|
||||
send_nntp("Content-Type: text/plain; charset=%s; format=fixed", getrfcchrs(usercharset));
|
||||
send_nntp("Content-Transfer-Encoding: 8bit");
|
||||
}
|
||||
|
||||
if (charset)
|
||||
free(charset);
|
||||
charset = NULL;
|
||||
|
||||
if (strcasecmp(cmd, "ARTICLE") == 0)
|
||||
send_nntp("");
|
||||
|
||||
|
Reference in New Issue
Block a user