home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1993 July / Internet Tools.iso / RockRidge / mail / sendmail / uk-sendmail2.1 / Support / mail-news < prev    next >
Encoding:
Text File  |  1991-06-11  |  2.0 KB  |  81 lines

  1. #!/bin/sh
  2. #
  3. #    mail-news release 2.0    Copyright Jem Taylor 1988
  4. #
  5. #    Remove To: Cc: Received: and Via: fields,
  6. #    ensure that there is a Subject: line or make Subject: (none),
  7. #    re-order header lines to give
  8. #    From:
  9. #    Subject:
  10. #    Message-ID:
  11. #    Date:
  12. #    Sender:
  13. #    and move any other header lines to after these
  14. #
  15.  
  16. /bin/awk '
  17. BEGIN {    true=1; false=0; head=true; subject="Subject: (none)"
  18.     gateway="X-Mailer: mail-news 2.0.3"
  19.     }
  20. # From: and Sender: lines must be login@host (real name)
  21. #            instead of real name <login@host>
  22. # assume that <username> is one word - no quoted space - and at end of line
  23. /^From:.*>$/ {    if (head==true)
  24.     {    user=substr ( $NF, 2, length($NF) -2 )
  25.         real = $2
  26.         for ( i=3; i<NF; i++ ) real = real " " $i
  27.         from =  "From: " user " (" real ")"
  28.         next
  29.     }
  30.     }
  31. /^Sender:.*>$/ { if (head==true)
  32.     {    user=substr ( $NF, 2, length($NF) -2 )
  33.         real = $2
  34.         for ( i=3; i<NF; i++ ) real = real " " $i
  35.         sender =  "Sender: " user " (" real ")"
  36.         next
  37.     }
  38.     }
  39. /^From:/    { if (head==true) { from = $0 ; next } }
  40. /^Sender:/    { if (head==true) { sender = $0 ; next } }
  41. /^Message-ID:/    { if (head==true) { messageid = $0 ; next } }
  42. /^Date:/    { if (head==true) { date = $0 ; next } }
  43.  
  44. ##insist Subject: has something in it!
  45. /^Subject:.*[-=:)a-zA-Z@#!]/ {
  46.             if (head==true) { subject=$0; next } }
  47.  
  48. ## discard these and header continuation lines
  49. /^Received:/||/^Via:/|| \
  50. /^To:/||/^Cc:/||\
  51. /^    /||/^ /    { if (head==true) next }
  52.  
  53. ## move any other header lines to end of header
  54. /^.*:/        { if (head==true) { others[++ocnt]=$0; next } }
  55.  
  56. ## break between head and body - ensure subject in head
  57. /^$/    { if (head==true)
  58.     {    head=false;
  59.         if (from!="") print from
  60.         print subject
  61.         if (messageid!="") print messageid
  62.         if (date!="") print date
  63.         if (sender!="") print sender
  64.         for (i=1;i<=ocnt;i++) print others[i]
  65.         print gateway
  66.         print ""
  67.         next
  68.     }
  69.     }
  70.  
  71. ## change inclusion mark since sender is not on hand ...
  72. /^>/    { if (head==false)
  73.     {    print "|" substr( $0, 2, length - 1 )
  74.         next
  75.     }
  76.     }
  77.  
  78. ## all lines including body - unless explicitly skipped above
  79.     { print $0 }
  80. ' | /usr/lib/news/inews $@
  81.