home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume23 / trn / part09 / Pnews.SH < prev    next >
Text File  |  1991-08-22  |  18KB  |  791 lines

  1. case $CONFIG in
  2.     '') . ./config.sh ;;
  3. esac
  4. echo "Extracting Pnews (with variable substitutions)"
  5. $spitshell >Pnews <<!GROK!THIS!
  6. $startsh
  7. # $Header: Pnews.SH,v 4.3.3.3 91/01/16 03:27:15 davison Trn $
  8. #
  9. # $Log:    Pnews.SH,v $
  10. # Revision 4.3.3.3  91/01/16  03:27:15  davison
  11. # Integrated rn patches 48-54.
  12. # Revision 4.3.3.2  90/08/20  16:24:09  davison
  13. # Use mbox.saver for AUTHORCOPY.  Fixed sitename handling.
  14. # Revision 4.3.3.1  90/07/24  22:01:25  davison
  15. # Initial Trn Release
  16. # Revision 4.3.2.14  91/01/05  15:18:19  sob
  17. # Changed the header purge code to use sed instead of grep.
  18. # Revision 4.3.2.13  90/12/30  03:47:57  sob
  19. # Changed "hidden" to "hiddennet" to be like nntp and bnews.
  20. # Made it possible to cancel articles if hiddennet is defined.
  21. # Revision 4.3.2.12  90/12/30  03:27:44  sob
  22. # Corrected a spelling problem.
  23. # Revision 4.3.2.11  90/12/04  02:47:54  sob
  24. # Added a fix to remove blank lines in the header before posting.
  25. # Revision 4.3.2.10  90/11/22  13:45:40  sob
  26. # Added support for making news posting appear to come from the domain
  27. # itself instead of individual hosts withing a domain.
  28. # Revision 4.3.2.9  90/11/06  00:54:52  sob
  29. # Added ./ to be beginning of config.sh
  30. # Revision 4.3.2.8  90/11/06  00:08:11  sob
  31. # Fixed bug in sed syntax for usg password file format per bug report by
  32. # prc@erbe.se
  33. # Revision 4.3.2.7  90/05/04  23:14:45  sob
  34. # Expires: line removed from Pnews.header.
  35. # Revision 4.3.2.6  90/04/21  16:53:43  sob
  36. # Corrected a typo pointed out by Bill Aten.
  37. # Revision 4.3.2.5  89/12/17  01:53:48  sob
  38. # Changed from using ypcat to using ypmatch
  39. # Revision 4.3.2.4  89/12/09  01:48:30  sob
  40. # Reply-To: field removed. This makes all the headers created by rn
  41. # look roughly the same.
  42. # Revision 4.3.2.3  89/11/26  22:20:04  sob
  43. # Added support for some of the top level names that are not part of
  44. # the mainstream.
  45. # Revision 4.3.2.2  89/11/06  00:25:39  sob
  46. # Some minor changes to make the help messages more accurate
  47. # Revision 4.3.2.1  89/11/06  00:21:30  sob
  48. # Added RRN support from NNTP 1.5
  49. # Revision 4.3.1.4  86/09/05  15:21:10  lwall
  50. # Changes for new top-level newsgroup names.
  51. # Revision 4.3.1.3  85/08/01  14:24:06  lwall
  52. # Added AUTHORCOPY.  Temp file is no longer in /tmp.  'e editor' added.
  53. # Revision 4.3.1.2  85/05/17  10:36:46  lwall
  54. # Removed some extra backslashes.
  55. # Revision 4.3.1.1  85/05/10  11:30:21  lwall
  56. # Branch for patches.
  57. # Revision 4.3  85/05/01  12:20:33  lwall
  58. # Baseline for release with 4.3bsd.
  59. #
  60. # syntax: Pnews -h headerfile            or
  61. #      Pnews -h headerfile oldarticle    or
  62. #         Pnews newsgroup title            or just
  63. #         Pnews
  64.  
  65. export PATH || (echo "OOPS, this isn't sh.  Desperation time.  I will feed myself to sh."; sh \$0; kill \$\$)
  66.  
  67. # System dependencies
  68.  
  69. mailer="${mailer-/bin/mail}"
  70. # if you change this to something that does signatures, take out signature code
  71.  
  72. case $portable in
  73. define)
  74. # your site name
  75. case "$hostcmd" in
  76. '') sitename="$sitename" ;;
  77. *)  sitename=\`$hostcmd\` ;;
  78. esac
  79. case \$sitename in
  80.     *.*)
  81.         ;;
  82.     *)
  83.         sitename=\${sitename}.$domain
  84.         ;;
  85. esac
  86. # where recordings, distributions and moderators are kept
  87. lib=\`$filexp $lib\`
  88. # where important rn things are kept
  89. rnlib=\`$filexp $rnlib\`
  90. ;;
  91. undef)
  92. # your site name
  93. sitename="$sitename"
  94. # where recordings, distributions and moderators are kept
  95. lib="$lib"
  96. # where important rn things are kept
  97. rnlib="$rnlib"
  98. ;;
  99. esac
  100.  
  101. case $hiddennet in
  102. define)    sitename="$domain"
  103.     ;;
  104. *)
  105.     ;;
  106. esac
  107.  
  108. # your organization name
  109. orgname="$orgname"
  110. # what pager you use--if you have kernal paging use cat
  111. pager="\${PAGER-$pager}"
  112. # how you derive full names, bsd, usg, or other
  113. nametype="$nametype"
  114. # default editor
  115. defeditor="$defeditor"
  116. # how not to echo with newline
  117. n="$n"
  118. c="$c"
  119.  
  120. # You should also look at the distribution warnings below marked !DIST!
  121. # to make sure any distribution regions you are a member of are included.
  122. # The following are some prototypical distribution groups.  If you do not
  123. # use them all set the unused ones to a non-null string such as 'none'.
  124. loc="$locpref"
  125. org="$orgpref"
  126. city="$citypref"
  127. state="$statepref"
  128. cntry="$cntrypref"
  129. cont="$contpref"
  130.  
  131. test=${test-test}
  132. sed=${sed-sed}
  133. echo=${echo-echo}
  134. cat=${cat-cat}
  135. egrep=${egrep-egrep}
  136. grep=${grep-grep}
  137. rm=${rm-rm}
  138. tr=${tr-tr}
  139. inews=${inews-inews}
  140. nidump=${nidump}
  141. ypmatch=${ypmatch}
  142.  
  143. !GROK!THIS!
  144. $spitshell >>Pnews <<'!NO!SUBS!'
  145. dotdir=${DOTDIR-${HOME-$LOGDIR}}
  146. tmpart=$dotdir/.article
  147.  
  148. if $test -f $dotdir/.pnewsexpert; then
  149.     expertise=expert
  150. else
  151.     $cat <<'EOM'
  152. I see you've never used this version of Pnews before.  I will give you extra
  153. help this first time through, but then you must remember what you learned.
  154. If you don't understand any question, type h and a CR (carriage return) for
  155. help.
  156.  
  157. If you've never posted an article to the net before, it is HIGHLY recommended
  158. that you read the netiquette document found in news.announce.newusers so
  159. that you'll know to avoid the commonest blunders.  To do that, interrupt
  160. Pnews, and get to the top-level prompt of rn.  Type "g news.announce.newusers"
  161. and you are on your way.
  162.  
  163. EOM
  164.     expertise=beginner
  165. fi
  166.  
  167. case $cntry in
  168.   can) stpr=Province ;;
  169.   *)   stpr=State ;;
  170. esac
  171.  
  172. headerfile=""
  173. case $# in
  174. 0) ;;
  175. *)  case $1 in
  176.     -h)
  177.     headerfile="$2"
  178.     shift
  179.     shift
  180.     case $# in
  181.     0)
  182.         oldart=""
  183.         ;;
  184.     *)
  185.         oldart="$1"
  186.         shift
  187.         ;;
  188.     esac
  189.     ;;
  190.     esac
  191.     ;;
  192. esac
  193.  
  194. case $headerfile in
  195. '')
  196.     . $rnlib/Pnews.header
  197.     ;;
  198. *)
  199.     $cat < $headerfile  > $tmpart
  200.     ;;
  201. esac
  202.     rescue="sleep 1; $cat $tmpart >>${HOME-$LOGDIR}/dead.article ; $echo Article appended to ${HOME-$LOGDIR}/dead.article ; exit"
  203.     trap "$rescue" 1
  204.     trap "$rescue" 2
  205.  
  206. $echo ""
  207.  
  208. # extract the newsgroups list and distribution
  209. hdr_newsgroups=`$sed -n -e '/^Newsgroups:/{' -e 's///' -e 's/,/ /g' -e p -e q -e '}' $tmpart`
  210. hdr_distribution=`$sed -n -e '/^Distribution:/{' -e 's///' -e p -e q -e '}' $tmpart`
  211.  
  212. # check for "poster" magic cookie
  213. flag=0
  214. for ng in $hdr_newsgroups ; do
  215.     case "$ng" in
  216.     poster)    flag=1 ;;
  217.     *)    ;;
  218.     esac
  219. done
  220. case $flag in
  221. 1)
  222.     $echo " "
  223.     $echo "The original author has requested that messages be sent back via"
  224.     $echo "mail rather than posting to news.  Do you want to jump out of this"
  225.     $echo $n "and mail your reply instead? [yn] $c"
  226.     read ans
  227.     case $ans in
  228.     n*) ;;
  229.     *)  exit ;;
  230.     esac
  231.     $echo " "
  232.     $echo "OK, but you will have to edit the 'Newsgroups:' line in the message."
  233.     ;;
  234. esac
  235.   
  236. # play recorded message
  237. if $test -s ${lib}/recording ; then
  238.      for ng in $hdr_newsgroups ; do
  239.     _rec1=${lib}/`$sed -n "/^$ng/s/^.*    //p" ${lib}/recording`
  240.     _tmp=`$echo $ng |$sed "s/\..*//"`
  241.     _rec2=${lib}/`$cat -s ${lib}/recording|$grep ${_tmp}.all|$sed "s/^.*    //"`
  242.     if $test -f ${_rec1} ; then
  243.         $cat -s ${_rec1}
  244.     fi
  245.     if $test -f ${_rec2} ; then
  246.         $cat -s ${_rec2}
  247.     fi
  248.     done
  249. fi
  250.  
  251. # determine the distribution of this message
  252. set X $hdr_distribution
  253. shift
  254. if $test $# -gt 0 ; then
  255.     dist=$1.whatever
  256. else
  257.     set X $hdr_newsgroups
  258.     shift
  259.     if $test $# -gt 0 ; then
  260.     dist=$1.whatever
  261.     else
  262.     dist=misc.whatever
  263.     fi
  264. fi
  265. case $dist in
  266. *.*)
  267.     ;;
  268. *)
  269.     dist=$dist.whatever
  270.     ;;
  271. esac
  272.  
  273. # tell them what we think they are doing... !DIST!
  274. case $dist in
  275. world.*|comp.*|news.*|sci.*|rec.*|misc.*|soc.*|talk.*|alt.*)
  276.     $cat <<'EOM'
  277. This program posts news to thousands of machines throughout the entire
  278. civilized world.  Your message will cost the net hundreds if not thousands of
  279. dollars to send everywhere.  Please be sure you know what you are doing.
  280.  
  281. EOM
  282.     ;;
  283. vmsnet.*)
  284.     $echo 'This program posts news to many machines.'
  285.     ;;
  286. bit.*)
  287.     $echo 'This program posts news to many machines on BITNET.'
  288.     ;;
  289. ddn.*)
  290.     $echo 'This program posts news to many machines throughout the internet.'
  291.     ;;
  292. $cont.*)
  293.     $echo 'This program posts news to many machines throughout the continent.'
  294.     ;;
  295. $cntry.*)
  296.     $echo 'This program posts news to many machines throughout the country.'
  297.     ;;
  298. $state.*)
  299.     $echo 'This program posts news to many machines throughout the state.'
  300.     ;;
  301. $city.*)
  302.     $echo 'This program posts news to many machines throughout the city.'
  303.     ;;
  304. $org.*)
  305.     $echo 'This program posts news to machines throughout the organization.'
  306.     ;;
  307. $loc.*)
  308.     $echo 'This program posts news to machines throughout the local organization.'
  309.     ;;
  310. *.*)
  311.     $echo 'This program may post news to many machines.'
  312.     ;;
  313. to.*)
  314.     $echo 'This program may post news to a particular machine.'
  315.     ;;
  316. *)
  317.     $echo 'This program posts news to everyone on the machine.'
  318.     ;;
  319. esac
  320. ans=""
  321. while $test "$ans" = "" ; do
  322.     $echo $n "Are you absolutely sure that you want to do this? [ny] $c"
  323.     read ans
  324.     case $ans in
  325.     y*) ;;
  326.     f*) ;;
  327.     h*) $cat <<'EOH'
  328.  
  329. Type n or CR to exit, y to post.
  330.  
  331. EOH
  332.     ans="" ;;
  333.     *) exit ;;
  334.     esac
  335. done
  336.  
  337. file=h
  338. while $test "$file" = h ; do
  339.     $echo ""
  340.     $echo $n "Prepared file to include [none]: $c"
  341.     read file
  342.     case $file in
  343.     h)
  344.     $cat <<'EOH'
  345.  
  346. If you have already produced the body of your article, type the filename
  347. for it here.  If you just want to proceed directly to the editor, type a
  348. RETURN.  In any event, you will be allowed to edit as many times as you
  349. want before you send off the article.
  350. EOH
  351.     ;;
  352.     '')
  353.     $echo "" >> $tmpart
  354.     state=edit
  355.     ;;
  356.     *)
  357.     $cat $file >>$tmpart
  358.     state=ask
  359.     ;;
  360.     esac
  361. done
  362.  
  363. $echo ""
  364.  
  365. while true ; do
  366.     case $state in
  367.     edit)
  368.     case $expertise in
  369.     beginner)
  370.         $cat </dev/null >$dotdir/.pnewsexpert
  371.         $cat <<'EOMessage'
  372. A temporary file has been created for you to edit.  Be sure to leave at
  373. least one blank line between the header and the body of your message.
  374. (And until a certain bug is fixed all over the net, don't start the body of
  375. your message with any indentation, or it may get eaten.)
  376.  
  377. Within the header may be fields that you don't understand.  If you don't
  378. understand a field (or even if you do), you can simply leave it blank, and
  379. it will go away when the article is posted.
  380.  
  381. Type return to get the default editor, or type the name of your favorite
  382. editor.
  383.  
  384. EOMessage
  385.         ;;
  386.     esac
  387.     case "${VISUAL-${EDITOR-}}" in
  388.     '')
  389.         tmp=h
  390.         ;;
  391.     *)
  392.         tmp=''
  393.         ;;
  394.     esac
  395.     while $test "$tmp" = h ; do
  396.         $echo $n "Editor [${VISUAL-${EDITOR-$defeditor}}]: $c"
  397.         read tmp
  398.         case $tmp in
  399.         h)
  400.         $cat <<'EOH'
  401.  
  402. Type a return to get the default editor, or type the name of the editor you
  403. prefer.  The default editor depends on the VISUAL and EDITOR environment
  404. variables.
  405.  
  406. EOH
  407.         ;;
  408.         '')
  409.         ;;
  410.         *)
  411.         VISUAL=$tmp
  412.         export VISUAL
  413.         ;;
  414.         esac
  415.     done
  416.     trap : 2
  417.     ${VISUAL-${EDITOR-$defeditor}} $tmpart $oldart
  418.     trap "$rescue" 2
  419.     state=ask
  420.     ;;
  421.     
  422.     ask)
  423.     $echo ""
  424.     $echo $n "Send, abort, edit, or list? $c"
  425.     read ans
  426.     
  427.     case "$ans" in
  428.     a*)
  429.         state=rescue
  430.         ;;
  431.     e*)
  432.         set $ans
  433.         case $# in
  434.         2)  VISUAL="$2" ;;
  435.         esac
  436.         state=edit
  437.         ;;
  438.     l*)
  439.         $pager $tmpart
  440.         state=ask
  441.         ;;
  442.     s*)
  443.         state=send
  444.         ;;
  445.     h*)
  446.         $cat <<'EOH'
  447.  
  448. Type s to send the article, a to abort and append the article to dead.article,
  449. e to edit the article again, or l to list the article.
  450.  
  451. To invoke an alternate editor, type 'e editor'.
  452. EOH
  453.     esac
  454.     ;;
  455.     
  456.     send)
  457.     set X `$sed < $tmpart -n -e '/^Newsgroups: /{' -e p -e q -e '}'`
  458.     shift
  459.     case $# in
  460.     2)
  461.         state=cleanup
  462.         if $test -f $lib/moderators; then
  463.         tryinews=no
  464.         shift
  465.         case "$1" in
  466.         *,*) set `$echo $1 | tr ',' ' '`;;
  467.         esac
  468.         for newsgroup in $*; do
  469. # the following screwy sed should prevent Eunice from hanging on no match
  470.             moderator=`$sed <$lib/moderators \
  471.             -e "/^$newsgroup[     ]/!s/.*//" \
  472.             -e "s/^$newsgroup[     ]//"`
  473.             case ${moderator}X in
  474.             X)  tryinews=yes
  475.             ;;
  476.             *)
  477.             $echo Mailing to moderator $moderator
  478.             case "$sign" in
  479.             n*) ;;
  480.             *)
  481.                 if $test -f $dotdir/.signature; then
  482.                 echo $n "Append .signature file? [y] $c"
  483.                 read ans
  484.                 case $ans in
  485.                 ''|y*)
  486.                     echo "-- " >> $tmpart
  487.                     cat $dotdir/.signature >> $tmpart
  488.                     ;;
  489.                 esac
  490.                 fi
  491.                 sign=no
  492.                 ;;
  493.             esac
  494.             case "$mailer" in
  495.             *recmail)
  496.                 $echo To: $moderator | $cat - $tmpart | $mailer
  497.                 ;;
  498.             *)
  499.                 $mailer $moderator < $tmpart
  500.                 ;;
  501.             esac
  502.             case $? in
  503.             0) ;;
  504.             *)
  505.                 $echo Unable to mail to moderator $moderator
  506.                 state=rescue
  507.                 ;;
  508.             esac
  509.             ;;
  510.             esac
  511.         done
  512.         else
  513.         tryinews=yes
  514.         fi
  515.         case "$tryinews" in
  516.         yes)
  517.         if $sed '1,/^[     ]*$/{/^[A-Z][-A-Za-z0-9]*:[     ]*$/d;}' $tmpart |
  518.             $inews -h ; then
  519.             : null
  520.         else
  521.             state=rescue
  522.         fi
  523.         ;;
  524.         esac
  525.         ;;
  526.     *)
  527.         $echo ""
  528.         $echo "Malformed Newsgroups line."
  529.         $echo ""
  530.         sleep 1
  531.         state=edit
  532.         ;;
  533.     esac
  534.     ;;
  535.     rescue)
  536.     if $test -s $tmpart; then
  537.         $cat $tmpart >> ${HOME-$LOGDIR}/dead.article
  538.         $echo "Article appended to ${HOME-$LOGDIR}/dead.article"
  539.         $echo "A copy may be temporarily found in $tmpart"
  540.     else
  541.         $echo "Null article discarded."
  542.     fi
  543.     exit
  544.     ;;
  545.     cleanup)
  546.     case "${AUTHORCOPY-none}" in
  547.     none)
  548.         ;;
  549.     *)
  550.         set X ${USER-${LOGNAME-`who am i`}} unknown
  551.         shift
  552.         $rnlib/mbox.saver $tmpart "." "." 0 0 Pnews $AUTHORCOPY "From $1 `date`"
  553.         if $test $? -eq 0 ; then
  554.         $echo "Article appended to $AUTHORCOPY"
  555.         else
  556.         $echo "Cannot append to $AUTHORCOPY"
  557.         fi
  558.         ;;
  559.     esac
  560.     exit
  561.     ;;
  562.     esac
  563. done
  564. !NO!SUBS!
  565. $eunicefix Pnews
  566. chmod 755 Pnews
  567. $spitshell >Pnews.header <<'!NO!SUBS!'
  568. case $# in
  569. 0)
  570.     ng=h
  571.     while $test "$ng" = h ; do
  572.     $echo ""
  573.     $echo $n "Newsgroup(s): $c"
  574.     read ng
  575.     case $ng in
  576.     h)
  577.         $cat <<'EOH'
  578.  
  579. Type the name of one or more newsgroups to which you wish to post an article.
  580. If you want to post to multiple newsgroups, it is better to do them all at
  581. once than to post to each newsgroup individually, which defeats the news
  582. reading programs' strategies of eliminating duplicates.
  583.  
  584. Separate multiple newsgroup names with commas.
  585. EOH
  586.         ;;
  587.     esac
  588.     done
  589.     ;;
  590. *)
  591.     ng=$1
  592.     shift
  593.     ;;
  594. esac
  595. case $ng in
  596. *\ *)
  597.     ng=`$echo "$ng" | $sed 's/[, ] */,/g'`
  598.     ;;
  599. esac
  600. case $ng in
  601. bit.*|pubnet.*|bionet.*|vmsnet.*|comp.*|news.*|sci.*|rec.*|misc.*|soc.*|talk.*|alt.*)
  602.     defdist=world
  603.     dist=h
  604.     ;;
  605. ddn.*)
  606.     defdist=inet
  607.     dist=h
  608.     ;;
  609. to.*)
  610.     defdist=''
  611.     dist=''
  612.     ;;
  613. *.*)
  614.     defdist=`expr "X$ng" : 'X\([a-z0-9]*\)'`
  615.     dist=h
  616.     ;;
  617. *)
  618.     defdist=''
  619.     dist=''
  620.     ;;
  621. esac
  622.  
  623. while $test "$dist" = h ; do
  624.     if $test -f $lib/distributions; then
  625.     $echo " "
  626.     $echo "Your local distribution prefixes are:"
  627.     $cat $lib/distributions
  628.     $echo " "
  629.     else
  630.     $egrep -v '[     ]none$' <<EOM
  631.  
  632. Your local distribution prefixes are:
  633.     Local organization:    $loc
  634.     Organization:    $org
  635.     City:        $city
  636.     $stpr:          $state
  637.     Country:        $cntry
  638.     Continent:        $cont
  639.     Everywhere:        world
  640.  
  641. EOM
  642.     fi
  643.     $echo $n "Distribution ($defdist): $c"
  644.     read dist
  645.     case $dist in
  646.     '') dist=$defdist ;;
  647.     esac
  648.     case $dist in
  649.     h)
  650.     $cat <<'EOH'
  651.  
  652. The Distribution line may be used to limit the distribution of an article
  653. to some subset of the systems that would receive the article based only on
  654. the Newsgroups line.  For example, if you want to sell your car in talk.auto,
  655. and you live in New Jersey, you might want to put "nj" on the Distribution
  656. line to avoid advertising in California, which has enough problems of its own.
  657. The actual area designators to use depend on where you are, of course.
  658. EOH
  659.     ;;
  660.     ''|$loc*|$org*|$city*|$state*|$cntry*|$cont*|$defdist)
  661.     ;;
  662.     world*|comp*|news*|sci*|rec*|misc*|soc*|talk*|alt*)
  663.     dist=''
  664.     ;;
  665.     *)  
  666.     if $test -f $lib/distributions && \
  667.       $egrep "^$dist[     ]" $lib/distributions >$tmpart && \
  668.       $test -s $tmpart; then
  669.         : null
  670.     else
  671.         $echo "Unrecognized distribution prefix--type h for help, CR to use anyway."
  672.         defdist=$dist
  673.         dist=h
  674.     fi
  675.     ;;
  676.     esac
  677. done
  678.  
  679. follow=""
  680.  
  681. case $# in
  682. 0)
  683.     title=h
  684.     while $test "$title" = h ; do
  685.     $echo ""
  686.     $echo $n "Title/Subject: $c"
  687.     read title
  688.     case $title in
  689.     h)
  690.         $cat <<'EOH'
  691.  
  692. Type the title for your article.  Please make it as informative as possible
  693. (within reason) so that people who aren't interested won't have to read the
  694. article to find out they aren't interested.  This includes marking movie
  695. spoilers as (spoiler), and rotated jokes as (rot 13).
  696. EOH
  697.     ;;
  698.     esac
  699.     done
  700.     ;;
  701. *)
  702.     title="$*"
  703.     ;;
  704. esac
  705.  
  706. # now build a file with a header for them to edit
  707.  
  708. set X ${USER-${LOGNAME-`who am i`}}
  709. shift
  710. logname=$1
  711. case $logname in
  712. *!*) logname=`expr "$logname" : '!\(.*\)$'` ;;
  713. esac
  714. case ${NAME-$nametype} in
  715. bsd)
  716.     if $test "$ypmatch" != ""; then
  717.         fullname=`$ypmatch $logname passwd 2>/dev/null | $sed "s/^[^:]*:[^:]*:[^:]*:[^:]*:\([^,:;]*\).*"'$'"/\1/"`
  718.     elif $test "$nidump" != ""; then
  719.         fullname=`$nidump passwd / | $sed -e "/^$logname:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:\([^,:;]*\).*"'$'"/\1/" -e "q" -e "}" -e "d"`
  720.     fi
  721.      if $test "$fullname" = ""; then
  722.         fullname=`$sed </etc/passwd -e "/^$logname:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:\([^,:;]*\).*"'$'"/\1/" -e "q" -e "}" -e "d"`
  723.     fi
  724.     case $fullname in
  725.     *'&'*) : GACK
  726.     lname=`$echo $logname | $tr 'a-z' 'A-Z'`
  727.     lname=`$echo $lname $logname | $sed 's/^\(.\)[^ ]* ./\1/'`
  728.     fullname=`$echo "$fullname" | $sed "s/&/${lname}/"`
  729.     ;;
  730.     esac
  731.     ;;
  732. usg)
  733.     if $test "$ypmatch" != ""; then
  734.         fullname=`$ypmatch $logname passwd 2>/dev/null | $sed -e "s/^[^:]*:[^:]*:[^:]*:[^:]*:\([^(:]*\).*"'$'"/\1/" -e "s/^.*-//" -e "q"`
  735.     fi
  736.      if $test "$fullname" = ""; then
  737.     fullname=`$sed </etc/passwd -e "/^$logname:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:\([^(:]*\).*"'$'"/\1/" -e "s/^.*-//" -e "q" -e "}" -e "d"`
  738.     fi
  739.     ;;
  740. *)
  741.     fullname=${NAME-`$cat $dotdir/.fullname`}
  742.     ;;
  743. esac
  744.  
  745. orgname=${ORGANIZATION-$orgname}
  746. case $orgname in
  747. /*) orgname=`$cat $orgname` ;;
  748. esac
  749.  
  750. $sed -e '/^Reply-To: $/d' > $tmpart <<EOHeader
  751. Newsgroups: $ng
  752. Subject: $title
  753. Summary: 
  754. Reply-To: $REPLYTO
  755. Followup-To: $follow
  756. Distribution: $dist
  757. Organization: $orgname
  758. Keywords: 
  759.  
  760. EOHeader
  761.  
  762. !NO!SUBS!
  763. case "$isrrn" in
  764. define) sed < Pnews.header -e '/^#NORMAL/d' > Pnews.h.new ;;
  765. *)  sed < Pnews.header -e '/^#NORMAL/s/^#NORMAL//' > Pnews.h.new ;;
  766. esac
  767. mv Pnews.h.new Pnews.header
  768. $eunicefix Pnews.header
  769.