home *** CD-ROM | disk | FTP | other *** search
/ Unix System Administration Handbook 1997 October / usah_oct97.iso / news / cnews.tar / readnews / postnews < prev    next >
Text File  |  1995-04-27  |  2KB  |  112 lines

  1. #! /bin/sh
  2. # postnews - post news article
  3.  
  4. # =()<. ${NEWSCONFIG-@<NEWSCONFIG>@}>()=
  5. . ${NEWSCONFIG-/etc/news/bin/config}
  6.  
  7. oldpath="$PATH"
  8. newpath=$NEWSCTL/bin:$NEWSBIN:$NEWSPATH
  9. PATH=$newpath
  10. export PATH
  11. umask 077                # private
  12.  
  13. tmp=/tmp/pn$$
  14. tmpcopy=/tmp/pnc$$
  15. term="rm -f $tmp $tmpcopy ; trap 0 ; exit 0"
  16. trap "$term" 0 1 2
  17.  
  18. if test " $VISUAL" != " "
  19. then
  20.     edit="$VISUAL"
  21. elif test " $EDITOR" != " "
  22. then
  23.     edit="$EDITOR"
  24. else
  25.     edit=/bin/ed
  26. fi
  27.  
  28. newline='
  29. '
  30.  
  31. case "$1" in
  32. '')    if test -r $NEWSCTL/postdefltgroup
  33.     then
  34.         defg="`cat $NEWSCTL/postdefltgroup`"
  35.         dprompt=" [$defg]"
  36.     else
  37.         defg=
  38.         dprompt=
  39.     fi
  40.     ans=
  41.     while test " $ans" = " "
  42.     do
  43.         echo "Newsgroup(s)$dprompt? " | tr -d "$newline"
  44.         read ans
  45.         case "$ans" in
  46.         '')    if test " $defg" != " "
  47.             then
  48.                 ans="$defg"
  49.             fi
  50.             ;;
  51.         esac
  52.     done
  53.     echo "Newsgroups: $ans" >$tmp
  54.     ;;
  55.  
  56. -h)    cat $2 >$tmp
  57.     ;;
  58.  
  59. *)    echo "Newsgroups: $1" >$tmp
  60.     ;;
  61. esac
  62.  
  63. case "$1" in
  64. -h)    ;;
  65.  
  66. *)    subj=
  67.     while test " $subj" = " "
  68.     do
  69.         echo 'Subject: ' | tr -d "$newline"
  70.         read subj
  71.     done
  72.     echo "Subject: $subj" >>$tmp
  73.     if test -r $NEWSCTL/postdefltdist
  74.     then
  75.         echo "Distribution: `cat $NEWSCTL/postdefltdist`" >>$tmp
  76.     fi
  77.     ;;
  78. esac
  79.  
  80. echo >>$tmp
  81. echo "REPLACE THIS LINE WITH YOUR TEXT (leave the preceding blank line alone)" >>$tmp
  82. cp $tmp $tmpcopy
  83.  
  84. trap : 2
  85. PATH="$oldpath"
  86. $edit $tmp
  87. PATH=$newpath
  88. trap "$term" 2
  89.  
  90. while cmp -s $tmp $tmpcopy
  91. do
  92.     echo 'This posting does not appear to have been edited properly.'
  93.     echo 'Abandon it [y] ? ' | tr -d "$newline"
  94.     read ans
  95.     case "$ans" in
  96.     ''|y*|Y*)
  97.         rm -f $tmp
  98.         exit 0
  99.         ;;
  100.     esac
  101.  
  102.     echo 'Editing again...  Please check it over carefully.'
  103.     trap : 2
  104.     PATH="$oldpath"
  105.     $edit $tmp
  106.     PATH=$newpath
  107.     trap "$term" 2
  108. done
  109.  
  110. echo 'Posting...'
  111. $NEWSBIN/inject/inews -h <$tmp
  112.