CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ CnUnix ] in KIDS
글 쓴 이(By): AHMLHS (the Nobody)
날 짜 (Date): 1995년12월19일(화) 12시46분21초 KST
제 목(Title): 그리고 한글메일깨진것들.



QP인코딩되서 깨져날라온 것은(=F8=B0 모 이딴 식으로 나오는거, MIME Header에는
Quoted Printable이라고 되어있음)
ftp://romance.kaist.ac.kr/pub/linux/han/hdcod.tgz
쓰시고,
Base64 인코딩된건 다른 분이 작성한 간단한 프로그램이 있더군요.
아래에 소스를 올려드리죠.(이건 MIME Header에 Base64라고 써있음)

그리고 euc-kr어쩌구 저쩌구 + ^N, ^O가 마구 섞여있는 메일은
hcode 쓰면 거의 해결됩니다. hcode -ik 나 hcode -dk 정도 쓰면 왠만하면
보이더군요. 글구 자꾸 sdn2ks이야기를 하시는데 그거쓸바에 차라리 hcode쓰세요.
sdn2ks는 out of date된 겁니다. 에이 그거 밀어버릴까. 쭈압.

아래는 Base64 디코더.
/* decode_base64.c */
#include <stdio.h>

main(argc,argv)
int argc;
char *argv[];
{
 FILE *qef;
 char out[100];
 if(argc < 2) {
  printf("Usage: decode_base64 infn\n");
  exit(0);
 }
 qef = fopen(argv[1],"r");
 decode_base64(qef,out);
 printf("New file at: %s\n",out);
 fclose(qef);
}


decode_base64(qef,qdfn)
FILE *qef;
char *qdfn;
{
 FILE *qdf;
 unsigned char aline[120];
 unsigned int c1,w1,wx;
 int b1,cv[128];
 int i,ip,j;
 /* Initialize table */
 for(i=0;i<128;i++) cv[i] = -1;
 for(i=0;i<26;i++) {
  cv[i+'A'] = i;
  cv[i+'a'] = 26+i;
 }
 for(i=0;i<10;i++) cv[i+'0'] = 52+i;
 cv['+'] = 62;
 cv['/'] = 63;
 cv['='] = -2;  /* padd character */
 ip = 0;
 w1 = 0;
 strcpy(qdfn,tempnam("/tmp","SD"));
 qdf=fopen(qdfn,"w");
 while(fgets(aline,120,qef) != NULL) {
  for(j=0;j<strlen(aline)-1;j++) {
   c1 = aline[j];
   b1=cv[c1];
   if(b1 >= 0) {
    w1 = (w1 << 6) | b1;
    ip += 6;
    if(ip>=8) {
     wx = w1 >> (ip - 8);
     ip -= 8;
     wx &= 255;
     putc(wx,qdf);
     w1 &= 0xffff;
    }
   }
  }
 }
 fclose(qdf);
}

그럼.
---
Lee, "AHMLHS" Ho-sun
ahmlhs@yoyo.kaist.ac.kr
[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.