Annotation of 43BSD/contrib/nntp/rrn/Pnews, revision 1.1

1.1     ! root        1: #!/bin/sh
        !             2: # : Pnews.SH,v 4.3.1.2 85/05/17 10:36:46 lwall Exp $
        !             3: #
        !             4: # :    Pnews.SH,v $
        !             5: # Revision 4.3.1.2  85/05/17  10:36:46  lwall
        !             6: # Removed some extra backslashes.
        !             7: # 
        !             8: # Revision 4.3.1.1  85/05/10  11:30:21  lwall
        !             9: # Branch for patches.
        !            10: # 
        !            11: # Revision 4.3  85/05/01  12:20:33  lwall
        !            12: # Baseline for release with 4.3bsd.
        !            13: # 
        !            14: #
        !            15: # syntax: Pnews -h headerfile                  or
        !            16: #        Pnews -h headerfile oldarticle        or
        !            17: #         Pnews newsgroup title                        or just
        !            18: #         Pnews
        !            19: 
        !            20: export PATH || (echo "OOPS, this isn't sh.  Desperation time.  I will feed myself to sh."; sh $0; kill $$)
        !            21: 
        !            22: # System dependencies
        !            23: 
        !            24: mailer="/usr/lib/sendmail"
        !            25: # if you change this to something that does signatures, take out signature code
        !            26: 
        !            27: case define in
        !            28: define)
        !            29: # your site name
        !            30: sitename=`hostname`
        !            31: # where recordings, distributions and moderators are kept
        !            32: lib=`/usr/local/lib/rn/filexp /usr/spool/news/lib`
        !            33: # where important rn things are kept
        !            34: rnlib=`/usr/local/lib/rn/filexp /usr/local/lib/rn`
        !            35: ;;
        !            36: undef)
        !            37: # your site name
        !            38: sitename="ucbvax"
        !            39: # where recordings, distributions and moderators are kept
        !            40: lib="/usr/spool/news/lib"
        !            41: # where important rn things are kept
        !            42: rnlib="/usr/local/lib/rn"
        !            43: ;;
        !            44: esac
        !            45: 
        !            46: # your organization name
        !            47: orgname="University of California, Berkeley"
        !            48: # what pager you use--if you have kernal paging use cat
        !            49: pager="${PAGER-/usr/ucb/more}"
        !            50: # how you derive full names, bsd, usg, or other
        !            51: nametype="bsd"
        !            52: # default editor
        !            53: defeditor="/usr/ucb/vi"
        !            54: # how not to echo with newline
        !            55: n="-n"
        !            56: c=""
        !            57: 
        !            58: # You should also look at the distribution warnings below marked !DIST!
        !            59: # to make sure any distribution regions you are a member of are included.
        !            60: # The following are some prototypical distribution groups.  If you do not
        !            61: # use them all set the unused ones to a non-null string such as 'none'.
        !            62: loc="local"
        !            63: org="ucb"
        !            64: city="ba"
        !            65: state="ca"
        !            66: cntry="usa"
        !            67: cont="na"
        !            68: 
        !            69: test=/bin/test
        !            70: sed=sed
        !            71: echo=echo
        !            72: cat=cat
        !            73: egrep=/usr/bin/egrep
        !            74: grep=grep
        !            75: rm=rm
        !            76: tr=tr
        !            77: inews=/usr/spool/news/lib/inews
        !            78: 
        !            79: if $test -f ${DOTDIR-${HOME-$LOGDIR}}/.pnewsexpert; then
        !            80:     expertise=expert
        !            81: else
        !            82:     $cat <<'EOM'
        !            83: I see you've never used this version of Pnews before.  I will give you extra
        !            84: help this first time through, but then you must remember what you learned.
        !            85: If you don't understand any question, type h and a CR (carriage return) for
        !            86: help.
        !            87: 
        !            88: If you've never posted an article to the net before, it is HIGHLY recommended
        !            89: that you read the netiquette document found in net.announce.newusers so
        !            90: that you'll know to avoid the commonest blunders.  To do that, interrupt
        !            91: Pnews, and get to the top-level prompt of rn.  Say "g net.announce.newusers"
        !            92: and you are on your way.
        !            93: 
        !            94: EOM
        !            95:     expertise=beginner
        !            96: fi
        !            97: 
        !            98: case $cntry in
        !            99:   can) stpr=Province ;;
        !           100:   *)   stpr=State ;;
        !           101: esac
        !           102: 
        !           103: tmpart=/tmp/article$$
        !           104: 
        !           105: headerfile=""
        !           106: case $# in
        !           107: 0) ;;
        !           108: *)  case $1 in
        !           109:     -h)
        !           110:        headerfile="$2"
        !           111:        shift
        !           112:        shift
        !           113:        case $# in
        !           114:        0)
        !           115:            oldart=""
        !           116:            ;;
        !           117:        *)
        !           118:            oldart="$1"
        !           119:            shift
        !           120:            ;;
        !           121:        esac
        !           122:        ;;
        !           123:     esac
        !           124:     ;;
        !           125: esac
        !           126: 
        !           127: case $headerfile in
        !           128: '')
        !           129:     . $rnlib/Pnews.header
        !           130:     ;;
        !           131: *)
        !           132:     $cat < $headerfile  > $tmpart
        !           133:     ;;
        !           134: esac
        !           135:     rescue="sleep 1; $cat $tmpart >>${HOME-$LOGDIR}/dead.article ; $echo saved in ${HOME-$LOGDIR}/dead.article ; $rm -f $tmpart; exit"
        !           136:     trap "$rescue" 1
        !           137:     trap "$rescue" 2
        !           138: 
        !           139: $echo ""
        !           140: set X `$sed < $tmpart -n -e '/^Distribution: /{' -e p -e q -e '}' -e '/^$/q'`
        !           141: shift
        !           142: case $# in
        !           143: 0|1)
        !           144:     set X `$sed < $tmpart -n -e '/^Newsgroups: /{' -e p -e q -e '}'`
        !           145:     shift
        !           146:     case $# in
        !           147:     0|1)
        !           148:        set "x net.whatever"
        !           149:        ;;
        !           150:     esac
        !           151:     ;;
        !           152: *)
        !           153:     set $1 $2.whatever
        !           154:     ;;
        !           155: esac
        !           156: shift
        !           157: 
        !           158: #: play recorded message
        !           159: #if $test -s ${lib}/recording ; then
        !           160: #     ng=`$echo $1 | $sed "s/,.*//"`
        !           161: #    _rec1=${lib}/`$sed -n "/^$ng/s/^.*        //p" ${lib}/recording`
        !           162: #    _tmp=`$echo $ng |$sed "s/\..*//"`
        !           163: #    _rec2=${lib}/`$cat -s ${lib}/recording|$grep ${_tmp}.all|$sed "s/^.*      //"`
        !           164: #    if $test -f ${_rec1} ; then
        !           165: #      $cat -s ${_rec1}
        !           166: #    fi
        !           167: #    if $test -f ${_rec2} ; then
        !           168: #      $cat -s ${_rec2}
        !           169: #    fi
        !           170: #fi
        !           171: 
        !           172: # tell them what we think they are doing... !DIST!
        !           173: case $1 in
        !           174: net.*)
        !           175:     $echo 'This program posts news to many hundreds of machines throughout the world.'
        !           176:     ;;
        !           177: $cont.*)
        !           178:     $echo 'This program posts news to many machines throughout the continent.'
        !           179:     ;;
        !           180: $cntry.*)
        !           181:     $echo 'This program posts news to many machines throughout the country.'
        !           182:     ;;
        !           183: $state.*)
        !           184:     $echo 'This program posts news to many machines throughout the state.'
        !           185:     ;;
        !           186: $city.*)
        !           187:     $echo 'This program posts news to many machines throughout the city.'
        !           188:     ;;
        !           189: $org.*)
        !           190:     $echo 'This program posts news to machines throughout the organization.'
        !           191:     ;;
        !           192: $loc.*)
        !           193:     $echo 'This program posts news to machines throughout the local organization.'
        !           194:     ;;
        !           195: *.*)
        !           196:     $echo 'This program may post news to many machines.'
        !           197:     ;;
        !           198: *)
        !           199:     $echo 'This program posts news to everyone on the machine.'
        !           200:     ;;
        !           201: esac
        !           202: ans=""
        !           203: while $test "$ans" = "" ; do
        !           204:     $echo $n "Are you absolutely sure that you want to do this? [ny] $c"
        !           205:     read ans
        !           206:     case $ans in
        !           207:     y*) ;;
        !           208:     f*) suppressmess=y ;;
        !           209:     h*) $cat <<'EOH'
        !           210: 
        !           211: Type n or CR to exit, y to post.
        !           212: 
        !           213: EOH
        !           214:        ans="" ;;
        !           215:     *) exit ;;
        !           216:     esac
        !           217: done
        !           218: 
        !           219: file=h
        !           220: while $test "$file" = h ; do
        !           221:     $echo ""
        !           222:     $echo $n "Prepared file to include [none]: $c"
        !           223:     read file
        !           224:     case $file in
        !           225:     h)
        !           226:        $cat <<'EOH'
        !           227: 
        !           228: If you have already produced the body of your article, type the filename
        !           229: for it here.  If you just want to proceed directly to the editor, type a
        !           230: RETURN.  In any event, you will be allowed to edit as many times as you
        !           231: want before you send off the article.
        !           232: EOH
        !           233:        ;;
        !           234:     '')
        !           235:        $echo "" >> $tmpart
        !           236:        state=edit
        !           237:        ;;
        !           238:     *)
        !           239:        $cat $file >>$tmpart
        !           240:        state=ask
        !           241:        ;;
        !           242:     esac
        !           243: done
        !           244: 
        !           245: $echo ""
        !           246: 
        !           247: while true ; do
        !           248:     case $state in
        !           249:     edit)
        !           250:        case $expertise in
        !           251:        beginner)
        !           252:            $cat </dev/null >${DOTDIR-${HOME-$LOGDIR}}/.pnewsexpert
        !           253:            $cat <<'EOMessage'
        !           254: A temporary file has been created for you to edit.  Be sure to leave at
        !           255: least one blank line between the header and the body of your message.
        !           256: (And until a certain bug is fixed all over the net, don't start the body of
        !           257: your message with any indentation, or it may get eaten.)
        !           258: 
        !           259: Within the header may be fields that you don't understand.  If you don't
        !           260: understand a field (or even if you do), you can simply leave it blank, and
        !           261: it will go away when the article is posted.
        !           262: 
        !           263: Type return to get the default editor, or type the name of your favorite
        !           264: editor.
        !           265: 
        !           266: EOMessage
        !           267:            ;;
        !           268:        esac
        !           269:        case "${VISUAL-${EDITOR-}}" in
        !           270:        '')
        !           271:            tmp=h
        !           272:            ;;
        !           273:        *)
        !           274:            tmp=''
        !           275:            ;;
        !           276:        esac
        !           277:        while $test "$tmp" = h ; do
        !           278:            $echo $n "Editor [${VISUAL-${EDITOR-$defeditor}}]: $c"
        !           279:            read tmp
        !           280:            case $tmp in
        !           281:            h)
        !           282:                $cat <<'EOH'
        !           283: 
        !           284: Type a return to get the default editor, or type the name of the editor you
        !           285: prefer.  The default editor depends on the VISUAL and EDITOR environment
        !           286: variables.
        !           287: 
        !           288: EOH
        !           289:                ;;
        !           290:            '')
        !           291:                ;;
        !           292:            *)
        !           293:                VISUAL=$tmp
        !           294:                export VISUAL
        !           295:                ;;
        !           296:            esac
        !           297:        done
        !           298:        trap : 2
        !           299:        ${VISUAL-${EDITOR-$defeditor}} $tmpart $oldart
        !           300:        trap "$rescue" 2
        !           301:        state=ask
        !           302:        ;;
        !           303:        
        !           304:     ask)
        !           305:        $echo ""
        !           306:        $echo $n "Send, abort, edit, or list? $c"
        !           307:        read ans
        !           308:        
        !           309:        case $ans in
        !           310:        a*)
        !           311:            state=rescue
        !           312:            ;;
        !           313:        e*)
        !           314:            state=edit
        !           315:            ;;
        !           316:        l*)
        !           317:            $pager $tmpart
        !           318:            state=ask
        !           319:            ;;
        !           320:        s*)
        !           321:            state=send
        !           322:            ;;
        !           323:        h*)
        !           324:            $cat <<'EOH'
        !           325: 
        !           326: Type s to send the article, a to abort and append the article to dead.article,
        !           327: e to edit the article again, or l to list the article.
        !           328: EOH
        !           329:        esac
        !           330:        ;;
        !           331:     
        !           332:     send)
        !           333:        set X `$sed < $tmpart -n -e '/^Newsgroups: /{' -e p -e q -e '}'`
        !           334:        shift
        !           335:        case $# in
        !           336:        2)
        !           337:            state=cleanup
        !           338:            if $test -f $lib/moderators; then
        !           339:                tryinews=no
        !           340:                shift
        !           341:                case "$1" in
        !           342:                *,*) set `$echo $1 | tr ',' ' '`;;
        !           343:                esac
        !           344:                for newsgroup in $*; do
        !           345: # the following screwy sed should prevent Eunice from hanging on no match
        !           346:                    moderator=`$sed <$lib/moderators \
        !           347:                    -e "/^$newsgroup[   ]/!s/.*//" \
        !           348:                    -e "s/^$newsgroup[  ]//"`
        !           349:                    case ${moderator}X in
        !           350:                    X)  tryinews=yes
        !           351:                        ;;
        !           352:                    *)
        !           353:                        $echo Mailing to moderator $moderator
        !           354:                        case "$mailer" in
        !           355:                        *recmail)
        !           356:                            $echo To: $moderator | $cat - $tmpart | $mailer
        !           357:                            ;;
        !           358:                        *)
        !           359:                            $mailer $moderator < $tmpart
        !           360:                            ;;
        !           361:                        esac
        !           362:                        case $? in
        !           363:                        0) ;;
        !           364:                        *)
        !           365:                            $echo Unable to mail to moderator $moderator
        !           366:                            state=rescue
        !           367:                            ;;
        !           368:                        esac
        !           369:                        ;;
        !           370:                    esac
        !           371:                done
        !           372:            else
        !           373:                tryinews=yes
        !           374:            fi
        !           375:            case "$tryinews" in
        !           376:            yes)
        !           377:                if $inews -h < $tmpart ; then
        !           378:                    : null
        !           379:                else
        !           380:                    state=rescue
        !           381:                fi
        !           382:                ;;
        !           383:            esac
        !           384:            ;;
        !           385:        *)
        !           386:            $echo ""
        !           387:            $echo "Malformed Newsgroups line."
        !           388:            $echo ""
        !           389:            sleep 1
        !           390:            state=edit
        !           391:            ;;
        !           392:        esac
        !           393:        ;;
        !           394:     rescue)
        !           395:        $cat $tmpart >> ${HOME-$LOGDIR}/dead.article
        !           396:        $echo "Article saved to ${HOME-$LOGDIR}/dead.article"
        !           397:        state=cleanup
        !           398:        ;;
        !           399:     cleanup)
        !           400:        $rm -f $tmpart
        !           401:        exit
        !           402:        ;;
        !           403:     esac
        !           404: done

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.