home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk1.iso / altsrc / articles / 10757 < prev    next >
Text File  |  1994-06-24  |  2KB  |  69 lines

  1. Path: wupost!gumby!newsxfer.itd.umich.edu!europa.eng.gtefsd.com!sundog.tiac.net!news.sprintlink.net!demon!an-teallach.com!gtoal
  2. Newsgroups: alt.sources
  3. From: gtoal@an-teallach.com (Graham Toal)
  4. Subject: A quick hack for that nasty 'quoted-printable' mime mail...
  5. X-Phone: +44 31 662 0366
  6. X-Fax: +44 31 662 4678
  7. X-Organisation: An Teallach Limited
  8. Date: Fri, 24 Jun 1994 13:18:55 +0000
  9. Message-ID: <199406241314.OAA21644@an-teallach.com>
  10. Sender: usenet@demon.co.uk
  11. Lines: 56
  12.  
  13. This is a quick hack for people (like me) who don't have mime mailers
  14. and don't particularly want mime mailers, but who often receive mail
  15. from people with Macs and Eudora which contain those stupid '=46' etc
  16. codes and has lines broken in the wrong places everywhere with equals
  17. signs.
  18.  
  19. This is no substitute for the real thing, but I hacked it up quickly
  20. for myself because the mail I was getting was driving me nuts.
  21.  
  22. First, you need procmail.  Put this in your .procmailrc before anything
  23. else:
  24.  
  25. :3Hf:/home/gtoal/.mime
  26. ^Mime-Version: 1\.0
  27. ^Content-Type: text/plain; charset="iso-8859-1"
  28. ^Content-Transfer-Encoding: quoted-printable
  29. |/my/bin/directory/filter
  30.  
  31. Then take filter.c below and compile it and put it whereever you put
  32. '/my/bin/directory' above...
  33.  
  34. #include <stdio.h>
  35. #include <stdlib.h>
  36. int main(int argc, char **argv)
  37. {
  38.   /* =<nl> -> join */
  39.   /* =nn -> 0xnn */
  40.   int c1 = 0, c2 = 0, c3 = 0;
  41.   int started = (0!=0);
  42.   for (;;) {
  43.     c2 = getchar();
  44.     if (c2 == EOF) {
  45.       if (c1 != 0) putchar(c1);
  46.       break;
  47.     }
  48.     if (c1 == '\n' && c2 == '\n') started = (0==0); /* past headers */
  49.     if (started && (c1 == '=')) {
  50.       if (c2 == '\n') {
  51.         c1 = c2 = 0;
  52.       } else if (('0' <= c2 && c2 <= '9') || ('A' <= c2 && c2 <= 'F')) {
  53.         c3 = getchar();
  54.         putchar(((isdigit(c2) ? c2 - '0' : c2 - 'A' + 10) << 4)
  55.                 | (isdigit(c3) ? c3 - '0' : c3 - 'A' + 10));
  56.         c1 = c2 = c3 = 0;
  57.       } else {
  58.         /* illegal */
  59.         putchar(c1); putchar(c2); c1 = c2 = 0;
  60.       }
  61.     } else {
  62.       putchar(c1);
  63.       c1 = c2; c2 = 0;
  64.     }
  65.   }
  66.   exit(0);
  67.   return(1);
  68. }
  69.