home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1993 July / Internet Tools.iso / RockRidge / mail / newsgate / news2mail.sh < prev    next >
Encoding:
Linux/UNIX/POSIX Shell Script  |  1991-07-18  |  2.0 KB  |  97 lines

  1. #! /bin/sh
  2. ##  $Header: /nfs/papaya/u2/rsalz/src/newsgate/RCS/news2mail.sh,v 1.3 91/02/12 14:50:28 rsalz Exp $
  3. ##  A short, mostly-awk, script to send news on stdin out as mail.
  4. ##  Usage:  news2mail <address>
  5. ##  Written by John S. Quarterman <jsq@longway.tic.com>.
  6. ##  Light editing by Rich $alz <rsalz@bbn.com>.
  7. PATH=/usr/local:/usr/ucb:/bin:/usr/bin ; export PATH
  8.  
  9. case $1 in
  10. "")
  11.     echo "Usage:  `basename $0` address"
  12.     exit 1
  13.     ;;
  14. "-")
  15.     TO="cat -u"
  16.     ;;
  17. *)
  18.     TO="/bin/mail $1"
  19.     ;;
  20. esac
  21.  
  22. awk '
  23. BEGIN {
  24.     header = 1;
  25.     date = "";
  26. }
  27. header == 1 && /^$/ {
  28.     # End of headers; print dates.
  29.     header = 0;
  30.     if (pdate != "" && date ~ /GMT/ && pdate !~ /GMT/) {
  31.     print "Date: "pdate;
  32.     print "Posted-Date: "date;
  33.     } else {
  34.     if (date != "")
  35.         print "Date: "date;
  36.     if (pdate != "")
  37.         print "Posted-Date: "pdate;
  38.     }
  39. }
  40. header == 0 {
  41.     print $0;
  42.     next;
  43. }
  44. $1 == "Relay-Version:"        { next; }
  45. $1 == "Posting-Version:"    { next; }
  46. $1 == "Path:"            { next; }
  47. $1 == "From"            { next; }
  48. $1 == "Date-Received:"        { next; }
  49. $1 == "Received-Date:"        { next; }
  50. #$1 == "Newsgroups:"        { next; }
  51. #$1 == "Organization:"        { next; }
  52. $1 == "Approved:"        { next; }
  53. $1 == "Lines:"            { next; }
  54. $1 == "Date:" {
  55.     date = $2;
  56.     for (i = 3; i <= NF; i++)
  57.     date = date " " $i;
  58.     next;
  59. }
  60. $1 == "Posted-Date:" {
  61.     pdate = $2;
  62.     for (i = 3; i <= NF; i++)
  63.     pdate = pdate " " $i;
  64.     next;
  65. }
  66. $1 == "From:" {
  67.     address=$2;
  68.     name = "";
  69.     surround = 0;
  70.     for (f = 3; f <= NF; f++) {
  71.     if ($f ~ /,/)
  72.         surround=1;
  73.     if (split ($f, parts, "(") > 1)
  74.         it = parts[2];
  75.     else
  76.         it = $f;
  77.     if (split ($f, parts, ")") > 1)
  78.         it = parts[1];
  79.     if (name == "")
  80.         name = it;
  81.     else
  82.         name = name " " it;
  83.     }
  84.     if (address ~ /.UUCP$/) {
  85.     split(address, parts, "@");
  86.     address = sprintf ("%s%%%s@%s", parts[1], parts[2], "'`hostname`'");
  87.     }
  88.     if (surround != 0)
  89.         printf ("From: %s (%s)\n", address, name);
  90.     else
  91.         printf ("From: %s <%s>\n", name, address);
  92.     next;
  93. }
  94. {
  95.     print $0;
  96. }' | eval $TO
  97.