(fwd) MIME in UNIX

Andrey Gerzhov (kittle@freeland.alex-ua.com)
Sat, 25 Oct 1997 02:38:04 +0300 (EEST)

-- forwarded message --
Path: freeland.alex-ua.com!barmaglot.alexradio.kiev.ua!f188.n463.z2!f116.n463.z2!f58.n463!f238.n5020!f204.n5020!not-for-mail
Newsgroups: fido.ru.internet
Distribution: fido
X-Comment-To: Andrew V. Kovalev
From: Yuri Safronov <Yuri.Safronov@f204.n5020.z2.fidonet.org>
Date: Fri, 24 Oct 97 16:38:22 +0300
Subject: MIME in UNIX
Message-ID: <877714879@f204.n5020.z2.ftn>
References: <3121726458@tiger.jet.msk.su>
Organization: +SfY+ private
X-FTN-AREA: RU.INTERNET
X-FTN-MSGID: 2:5020/204 3450ddbf
X-FTN-REPLY: tiger.jet.msk.su ba11c3fa
X-FTN-Tearline: GoldED 2.50+
X-FTN-Origin: +SfY+ private (2:5020/204)
X-FTN-SEEN-BY: 50/993 462/30 463/58 67 72 89 116 138 159 188 606 690 691 2033
X-FTN-SEEN-BY: 4613/204 4614/1 6 4615/21 4623/17 4631/13 4635/40 5000/7 44 76
X-FTN-SEEN-BY: 5001/15 5002/16 5005/5005 5011/13 201 5015/4 5020/104 128 176 204
X-FTN-SEEN-BY: 5020/238 288 443 927 1100 5021/11 22 5022/5 5023/11 5024/1 5026/10
X-FTN-SEEN-BY: 5028/51 5029/1 5030/251 5032/6 5040/47 5047/17 5049/6 256 5051/16
X-FTN-SEEN-BY: 5054/9 5058/4 5059/2 5061/7 15 5063/1 5066/2 5070/29 5075/10 5077/3
X-FTN-SEEN-BY: 5078/20 5083/13 5084/10 5100/21
X-FTN-PATH: 5020/204 238 463/58 116
X-FTN-PATH: 463/188
Lines: 70
Xref: freeland.alex-ua.com fido.ru.internet:6845

Hello Andrew!

Пят Окт 24 1997 13:53, Andrew V. Kovalev wrote to All:

>> Hет ли у кого MIME encoder/decoder-а под unix,
>> или описания принципа кодирования mime?
AK> Пакет называется metamail. "Описание принципа кодирования" - в RFC,
AK> номера, увы, не помню.
Да вот вся енкодилка, собственно... Как-то накpопал в свое вpемя:

===
static char *
MIME="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";

void MIME_encode(FILE * in, FILE * out)
{
unsigned long triple=0;

int EofSem=0;
int Pos=0;
int nOct=0;
int nSex=0;
int ch;

while (!EofSem)
{
if ((ch=getc(in))== EOF)
{
ch=0;
EofSem=1;
for (int i=nOct;i<3;i++)
triple= (triple<<8) | ch;
}
else
{
triple= (triple<<8) | ch;
nOct++;
}
if (EofSem)
nSex=nOct + (nOct?1:0);
else
nSex=4;
if (nOct == 3 || EofSem)
{
for (int i = 0; i < nSex; i++)
{
putc(MIME[(triple>>((3-i)*6))&0x3F], out);
Pos++;
if (Pos==72)
{
Pos=0;
fputs("\n", out);
}
}
if (EofSem)
for (i=nSex; i < 4; i++)
putc('=', out);
nOct=0;
triple=0;
}
}
if (Pos > 0)
fputs("\n", out);
}

===

Cheers,
Yuri (mailto:sfy@corbina.net)

-- end of forwarded message --

-- 

Kittle