From:	SMTP%"bailey@HMIVAX.HUMGEN.UPENN.EDU" 15-JAN-1994 10:01:12.27
To:	EVERHART
CC:	
Subj:	Patch + Re: Diskless Client via MultiNet problems

Message-Id: <9401150236.AA19365@uu7.psi.com>
Date:         Fri, 14 Jan 1994 17:06:30 EST
Reply-To: Charles Bailey <bailey@HMIVAX.HUMGEN.UPENN.EDU>
Sender: ANU-NEWS Discussion <ANU-NEWS@VM1.NoDak.EDU>
From: Charles Bailey <bailey@HMIVAX.HUMGEN.UPENN.EDU>
Organization: HHMI/Human Genetics, Univ of Pa.
Subject:      Patch + Re: Diskless Client via MultiNet problems
To: Multiple recipients of list ANU-NEWS <ANU-NEWS@VM1.NoDak.EDU>

In article <CJL6E4.12D@space.physics.uiowa.edu>, dyson@sunfish.physics.uiowa.edu
 (Richard L. Dyson) writes:
> But, what happens when you have two different TCP protocols on a cluster
> of VAX computers and a user that may want to use NEWS from any member
> with the same NEWSRC file info when the entire cluster is a client of
> another TCP connected server?  It would be better (IMHO) to not include
> the protocol definition in the NEWSRC file (or at least over-ride it
> with either the command line or System Logical name.  I have to agree
> with Bob S. and Bruce G. that when there is a specific command line or
> System logical name set to use a different protocol than the one
> imbedded in the NEWSRC, there is probably a GOOD reason... :)

My thought with the order I proposed is that the logical definitions ona system
constitute a sort of default, which can be overridden by the user when
accessing multiple servers.  Thus, the protocol connected with a particular
server in the NewsRC file for that server would override the logical name
definition.  On the other hand, if the user bothers to explicitly specify a
protocol on the command line, I assume he or she knows what's up and the
specification should be honored.  In the case you describe, I'd just define the
symbol
$ News == "$News_Manager:News/NetProtocol=foo"
where "foo" is the appropriate transport for that node.  The user could still
override this, by typing
$ News/NetProtocol=bar

I can see arguments for placing the logical names above or below the NewsRC
file in precedence; the point I'd strongly advocate is that the command line
overrides both.

I took a look at the code, and it seems my first post wasn't quite correct.  At
present, if you specify both /NetServer and /Net Protocol on the CL, News
honors the qualifiers, but if you specify just /NetProtocol, the value stored
in the NewsRC file for the default server overrides the /NetProtocol qualifier.
Appended to this post is a patch which changes the order of precedence to the
one I proposed (CL qualifier > NewsRC > logical name) for both the server name
and protocol.  This is a quick hack, so it hasn't been tested extensively, but
it appears to work.  (There're probably several other changes which culd be
made to clean up this part of the code, someday . . .)  Don't be put off by the
size of the patch; much of it is just resetting the indentation levels of
blocks as they got moved around.

I'd appreciate any feedback about the patch or better ways to set up the order
of precedence.

                    Regards,
                    Charles Bailey

!-------------------------------------------------------------------------------
!              Computational Biology and Informatics Laboratory
!         Dept. of Genetics, Univ. of Pennsylvania School of Medicine
!              Philadelphia, PA USA 19104     Tel. (215) 573-3112
!          Internet: bailey@genetics.upenn.edu  (IN 128.91.200.37)
!-------------------------------------------------------------------------------
$! ------------------ CUT HERE -----------------------
$ v='f$verify(f$trnlnm("SHARE_UNPACK_VERIFY"))'
$!
$! This archive created:
$!  Name : 940114_NEWS.PATCH
$!  By   : bailey@genetics.upenn.edu
$!  Date : 14-JAN-1994 15:53:41.73
$!  Using: VMS_SHARE 8.4, (C) 1993 Andy Harper, Kings College London UK
$!
$! Credit is due to these people for their original ideas:
$!    James Gray, Michael Bednarek
$!
$! TO UNPACK THIS SHARE FILE, CONCATENATE ALL PARTS IN ORDER
$! AND EXECUTE AS A COMMAND PROCEDURE  (  @name  )
$!
$! THE FOLLOWING FILE(S) WILL BE CREATED AFTER UNPACKING:
$!       1. 940114_NEWS.PATCH
$!
$ set="set"
$ set symbol/scope=(nolocal,noglobal)
$ f=f$parse("SHARE_UNPACK_TEMP","SYS$SCRATCH:."+f$getjpi("","PID"))
$ e="write sys$error  ""%UNPACK"", "
$ w="write sys$output ""%UNPACK"", "
$ if .not. f$trnlnm("SHARE_UNPACK_LOG") then $ w = "!"
$ if f$getsyi("CPU") .gt. 127 then $ goto start
$ ve=f$getsyi("version")
$ if ve-f$extract(0,1,ve) .ges. "4.4" then $ goto start
$ e "-E-OLDVER, Must run at least VMS 4.4"
$ v=f$verify(v)
$ exit 44
$unpack: subroutine ! P1=filename, P2=checksum, P3=attributes,P4=size
$ if f$parse(P1) .nes. "" then $ goto dirok
$ dn=f$parse(P1,,,"DIRECTORY")
$ w "-I-CREDIR, Creating directory ''dn'"
$ create/dir 'dn'
$ if $status then $ goto dirok
$ e "-E-CREDIRFAIL, Unable to create ''dn' File skipped"
$ delete 'f'*
$ exit
$dirok:
$ x=f$search(P1)
$ if x .eqs. "" then $ goto file_absent
$ e "-W-HIGHVERS, Creating higher version of ", P1
$file_absent:
$ w "-I-UNPACK, Unpacking ", P5, " of ", P6, " - ", P1, " - ", P4, " Blocks"
$ n=P1
$ if P3 .nes. "" then $ n=f
$ if .not. f$verify() then $ define/user sys$output nl:
$ EDIT/TPU/NOSEC/NODIS/COM=SYS$INPUT/NOJOURNAL 'f'/OUT='n'
PROCEDURE GetHex(s,p)LOCAL x1,x2;x1:=INDEX(t,SUBSTR(s,p,1))-1;x2:=INDEX(t,
SUBSTR(s,p+1,1))-1;RETURN 16*x1+x2;ENDPROCEDURE;PROCEDURE SkipPartsep LOCAL m;
LOOP m:=MARK(NONE);EXITIF m=END_OF(b);DELETE(m);EXITIF INDEX(ERASE_LINE,
"-+-+-+-+-+-+-+-+")=1;ENDLOOP;ENDPROCEDURE;PROCEDURE ProcessLine LOCAL c,s,l,b,
n,p;c := ERASE_CHARACTER(1);s := ERASE_LINE;IF c = "X" THEN SPLIT_LINE; ENDIF;
MOVE_HORIZONTAL(-1);l := LENGTH(s);p := 1;LOOP EXITIF p > l;c := SUBSTR(s,p,1);
p := p+1;CASE c FROM ' ' TO '`' ['`']: COPY_TEXT(ASCII(GetHex(s,p))); p:=p+2;[
' ']: p:=p+1;[INRANGE,OUTRANGE]: COPY_TEXT(c);ENDCASE;ENDLOOP;ENDPROCEDURE;
PROCEDURE Decode LOCAL m;POSITION(BEGINNING_OF(b));LOOP m:=MARK(NONE);EXITIF m=
END_OF(b);DELETE(m);IF INDEX(CURRENT_LINE,"+-+-+-+-+-+-+-+-")=
1 THEN SkipPartSep;ELSE ProcessLine;MOVE_HORIZONTAL(1);ENDIF;ENDLOOP;
ENDPROCEDURE;SET(FACILITY_NAME,"UNPACK");SET(SUCCESS,OFF);SET(INFORMATIONAL,
OFF);t:="0123456789ABCDEF";f:=GET_INFO(COMMAND_LINE,"file_name");b:=
CREATE_BUFFER(f,f);Decode;WRITE_FILE(b,GET_INFO(COMMAND_LINE,"output_file"));
QUIT;
$ if p3 .eqs. "" then $ goto dl
$ open/write fdl &f
$ write fdl "RECORD"
$ write fdl P3
$ close fdl
$ w "-I-CONVRFM, Converting record format to ", P3
$ convert/fdl=&f &f-1 &P1
$dl: delete 'f'*
$ checksum 'P1'
$ if checksum$checksum .nes. P2 then $ -
  e "-E-CHKSMFAIL, Checksum of ''P1' failed."
$ exit
$ endsubroutine
$start:
$!
$ create 'f'
XANU`20News`20Patch
XPatch`20ID:`20940114_news.c!bailey@genetics.upenn.edu
XDate:`2014-Jan-1994
XAuthor:`20Charles`20Bailey`20`20bailey@genetics.upenn.edu
XNews`20Version:`206.1beta8
XNews`20Files:`20News.C
XDescription:`20Changes`20order`20of`20precedence`20for`20determining`20NNTP`20
Vserver`20and
Xtransport`20protocol`20so`20that`20for`20server`20name,
X/Netserver=nodename`20>`20name`20in`20NewsRC`20file`20>`20logical`20News_NNTP_
VServer
Xand`20for`20NNTP`20protocol`20name
X/NetProtocol=nodename`20>`20code`20in`20NewsRC`20file`20>`20logical`20News_NNT
VP_Protocol.
X***`20news.c
X---`20news_new.c
X**************
X***`2044,46
X`20`20**--
X`20`20**/
X`20`20`0C
X---`2044,49`20-----
X+`20**`09V6.1b8`0914-Jan-1994`09Charles`20Bailey`20`20bailey@genetics.upenn.ed
Vu
X+`20**`09`20`20-`20changed`20handling`20of`20/NetServer`20and`20/NetProtocol
V`20qualifiers
X+`20**`09`20`20`20`20so`20they`20override`20values`20stored`20in`20NewsRC`20fi
Vle
X`20`20**--
X`20`20**/
X`20`20`0C
X**************
X***`20117,130
X`20`20`20`20`20`20`20`20`20`20lower_case(nntp_node);
X`20`20`20`20`20`20`20`20`20`20nntp_sts`20=`202;
X`20`20`20`20`20`20`20`20`20`20`7D
X!`20`20`20`20`20`20`20if`20(cli$get_value(c$dsc("NETPROTOCOL"),`26usr_inp_dsc,
V`26usr_inp_l)`20`26`201)`20`7B
X!`20`20`20`20`20`20`20`20`20explicit_proto`20=`20usr_inp_l;
X!`20`20`20`20`20`20`20`20`20usr_inp`5Busr_inp_l`5D`20=`20'`5C0';
X!`20`20`20`20`20`20`20`20`20`7D
X!`20`20`20`20`20`20`20if`20(!explicit_proto)`20`7B
X!`20`09if`20(gotenv`20=`20news_getenv("NEWS_NNTP_PROTOCOL",0))`20strcpy(usr_in
Vp,gotenv);
X!`20`20`20`20`20`20`20`20`20else`20*usr_inp`20=`20'`5C0';
X!`20`20`20`20`20`20`20`20`20`7D
X`20`20
X`20`20`20`20`20`20`20`20if`20(*usr_inp)`20`7B`20
X`20`20`20`20`20`20`20`20`20`20nntp_sts`20+=`202;
X---`20122,131`20-----
X`20`20`20`20`20`20`20`20`20`20lower_case(nntp_node);
X`20`20`20`20`20`20`20`20`20`20nntp_sts`20=`202;
X`20`20`20`20`20`20`20`20`20`20`7D
X!`20`20`20`20`20`20`20`7D
X!`20`20`20`20`20else`20if`20(sts`20==`20CLI$_NEGATED)`20`7B
X!`20`20`20`20`20`20`20nntp_sts`20=`20-1;
X!`20`20`20`20`20`20`20`7D
X`20`20
X`20`20`20`20`20`20if`20((nntp_sts`20!=`20-1)`20`26`26
X`20`20`20`20`20`20`20`20`20`20(cli$get_value(c$dsc("NETPROTOCOL"),`26usr_inp_d
Vsc,`26usr_inp_l)`20`26`201))`20`7B
X**************
X***`20126,143
X`20`20`20`20`20`20`20`20`20`20else`20*usr_inp`20=`20'`5C0';
X`20`20`20`20`20`20`20`20`20`20`7D
X`20`20
X!`20`20`20`20`20`20`20if`20(*usr_inp)`20`7B`20
X!`20`20`20`20`20`20`20`20`20nntp_sts`20+=`202;
X!`20`20`20`20`20`20`20`20`20lower_case(usr_inp);
X!`20`20`20`20`20`20`20`20`20usr_inp_l`20=`20strlen(usr_inp);
X!`20`20`20`20`20`20`20`20`20if`20(!*usr_inp)`20nntp_proto`20=`200;
X!`20`20`20`20`20`20`20`20`20else`20if`20(!strncmp(usr_inp,"decnet",usr_inp_l))
V`20nntp_proto=`200;
X!`20`20`20`20`20`20`20`20`20else`20if`20(!strncmp(usr_inp,"cmutcp",usr_inp_l))
V`20nntp_proto=`201;
X!`20`20`20`20`20`20`20`20`20else`20if`20(!strncmp(usr_inp,"wintcp",usr_inp_l))
V`20nntp_proto`20=`202;
X!`20`20`20`20`20`20`20`20`20else`20if`20(!strncmp(usr_inp,"multinettcp",usr_in
Vp_l))`20nntp_proto`20=`203;
X!`20`20`20`20`20`20`20`20`20else`20if`20(!strncmp(usr_inp,"ucxtcp",usr_inp_l))
V`20nntp_proto`20=`204;
X!`20`20`20`20`20`20`20`20`20else`20if`20(!strncmp(usr_inp,"exostcp",usr_inp_l)
V)`20nntp_proto`20=`205;
X!`20`20`20`20`20`20`20`20`20else`20if`20(!strncmp(usr_inp,"tcp",usr_inp_l))
X`20`20#if`20MULTINET
X`20`20`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`203;
X`20`20#elif`20TWG
X---`20127,153`20-----
X`20`20`20`20`20`20`20`20nntp_sts`20=`20-1;
X`20`20`20`20`20`20`20`20`7D
X`20`20
X!`20`20`20`20`20if`20((nntp_sts`20!=`20-1)`20`26`26
X!`20`20`20`20`20`20`20`20`20(cli$get_value(c$dsc("NETPROTOCOL"),`26usr_inp_dsc
V,`26usr_inp_l)`20`26`201))`20`7B
X!`20`20`20`20`20`20`20explicit_proto`20=`20usr_inp_l;
X!`20`20`20`20`20`20`20usr_inp`5Busr_inp_l`5D`20=`20'`5C0';
X!`20`20`20`20`20`20`20`7D
X!`20`20`20`20`20if`20(!explicit_proto)`20`7B
X!`20`20`20`20`20`20`20if`20(gotenv`20=`20news_getenv("NEWS_NNTP_PROTOCOL",0))
V`20strcpy(usr_inp,gotenv);
X!`20`20`20`20`20`20`20else`20*usr_inp`20=`20'`5C0';
X!`20`20`20`20`20`20`20`7D
X!`20`20`20`20`20if`20(*usr_inp)`20`7B`20
X!`20`20`20`20`20`20`20nntp_sts`20=`20(nntp_sts`20==`202)`20?`204`20:`203;
X!`20`20`20`20`20`20`20lower_case(usr_inp);
X!`20`20`20`20`20`20`20usr_inp_l`20=`20strlen(usr_inp);
X!`20`20`20`20`20`20`20if`20(!*usr_inp)`20nntp_proto`20=`200;
X!`20`20`20`20`20`20`20else`20if`20(!strncmp(usr_inp,"decnet",usr_inp_l))`20nnt
Vp_proto=`200;
X!`20`20`20`20`20`20`20else`20if`20(!strncmp(usr_inp,"cmutcp",usr_inp_l))`20nnt
Vp_proto=`201;
X!`20`20`20`20`20`20`20else`20if`20(!strncmp(usr_inp,"wintcp",usr_inp_l))`20nnt
Vp_proto`20=`202;
X!`20`20`20`20`20`20`20else`20if`20(!strncmp(usr_inp,"multinettcp",usr_inp_l))
V`20nntp_proto`20=`203;
X!`20`20`20`20`20`20`20else`20if`20(!strncmp(usr_inp,"ucxtcp",usr_inp_l))`20nnt
Vp_proto`20=`204;
X!`20`20`20`20`20`20`20else`20if`20(!strncmp(usr_inp,"exostcp",usr_inp_l))`20nn
Vtp_proto`20=`205;
X!`20`20`20`20`20`20`20else`20if`20(!strncmp(usr_inp,"tcp",usr_inp_l))
X`20`20#if`20MULTINET
X`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`203;
X`20`20#elif`20TWG
X**************
X***`20139,145
X`20`20`20`20`20`20`20`20`20`20else`20if`20(!strncmp(usr_inp,"exostcp",usr_inp_
Vl))`20nntp_proto`20=`205;
X`20`20`20`20`20`20`20`20`20`20else`20if`20(!strncmp(usr_inp,"tcp",usr_inp_l))
V
X`20`20#if`20MULTINET
X!`20`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`203;
X`20`20#elif`20TWG
X`20`20`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`202;
X`20`20#elif`20UCX
X---`20149,155`20-----
X`20`20`20`20`20`20`20`20else`20if`20(!strncmp(usr_inp,"exostcp",usr_inp_l))`20
Vnntp_proto`20=`205;
X`20`20`20`20`20`20`20`20else`20if`20(!strncmp(usr_inp,"tcp",usr_inp_l))
X`20`20#if`20MULTINET
X!`20`20`20`20`20`20`20`20`20nntp_proto`20=`203;
X`20`20#elif`20TWG
X`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`202;
X`20`20#elif`20UCX
X**************
X***`20141,147
X`20`20#if`20MULTINET
X`20`20`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`203;
X`20`20#elif`20TWG
X!`20`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`202;
X`20`20#elif`20UCX
X`20`20`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`204;
X`20`20#elif`20EXOS
X---`20151,157`20-----
X`20`20#if`20MULTINET
X`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`203;
X`20`20#elif`20TWG
X!`20`20`20`20`20`20`20`20`20nntp_proto`20=`202;
X`20`20#elif`20UCX
X`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`204;
X`20`20#elif`20EXOS
X**************
X***`20143,149
X`20`20#elif`20TWG
X`20`20`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`202;
X`20`20#elif`20UCX
X!`20`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`204;
X`20`20#elif`20EXOS
X`20`20`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`205;
X`20`20#elif`20TCPWARE
X---`20153,159`20-----
X`20`20#elif`20TWG
X`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`202;
X`20`20#elif`20UCX
X!`20`20`20`20`20`20`20`20`20nntp_proto`20=`204;
X`20`20#elif`20EXOS
X`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`205;
X`20`20#elif`20TCPWARE
X**************
X***`20145,151
X`20`20#elif`20UCX
X`20`20`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`204;
X`20`20#elif`20EXOS
X!`20`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`205;
X`20`20#elif`20TCPWARE
X`20`20`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`206;
X`20`20#else
X---`20155,161`20-----
X`20`20#elif`20UCX
X`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`204;
X`20`20#elif`20EXOS
X!`20`20`20`20`20`20`20`20`20nntp_proto`20=`205;
X`20`20#elif`20TCPWARE
X`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`206;
X`20`20#else
X**************
X***`20147,153
X`20`20#elif`20EXOS
X`20`20`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`205;
X`20`20#elif`20TCPWARE
X!`20`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`206;
X`20`20#else
X`20`20`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`201;
X`20`20#endif
X---`20157,163`20-----
X`20`20#elif`20EXOS
X`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`205;
X`20`20#elif`20TCPWARE
X!`20`20`20`20`20`20`20`20`20nntp_proto`20=`206;
X`20`20#else
X`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`201;
X`20`20#endif
X**************
X***`20149,155
X`20`20#elif`20TCPWARE
X`20`20`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`206;
X`20`20#else
X!`20`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`201;
X`20`20#endif
X`20`20`20`20`20`20`20`20`20`20else`20if`20(!strncmp(usr_inp,"tcpware",usr_inp_
Vl))`20nntp_proto`20=`206;
X`20`20/*
X---`20159,165`20-----
X`20`20#elif`20TCPWARE
X`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`206;
X`20`20#else
X!`20`20`20`20`20`20`20`20`20nntp_proto`20=`201;
X`20`20#endif
X`20`20`20`20`20`20`20`20else`20if`20(!strncmp(usr_inp,"tcpware",usr_inp_l))`20
Vnntp_proto`20=`206;
X`20`20/*
X**************
X***`20151,157
X`20`20#else
X`20`20`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`201;
X`20`20#endif
X!`20`20`20`20`20`20`20`20`20else`20if`20(!strncmp(usr_inp,"tcpware",usr_inp_l)
V)`20nntp_proto`20=`206;
X`20`20/*
X`20`20`20`20`20Since`20string`20"TCP"`20is`20a`20leading`20substring`20in`20"T
VCPWARE"
X`20`20`20`20`20a`20match`20for`20generic`20"TCP"`20should`20be`20made`20before
V`20trying`20to`20match`20"TCPWARE"`20.
X---`20161,167`20-----
X`20`20#else
X`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`201;
X`20`20#endif
X!`20`20`20`20`20`20`20else`20if`20(!strncmp(usr_inp,"tcpware",usr_inp_l))`20nn
Vtp_proto`20=`206;
X`20`20/*
X`20`20`20`20`20Since`20string`20"TCP"`20is`20a`20leading`20substring`20in`20"T
VCPWARE"
X`20`20`20`20`20a`20match`20for`20generic`20"TCP"`20should`20be`20made`20before
V`20trying`20to`20match`20"TCPWARE"`20.
X**************
X***`20156,165
X`20`20`20`20`20Since`20string`20"TCP"`20is`20a`20leading`20substring`20in`20"T
VCPWARE"
X`20`20`20`20`20a`20match`20for`20generic`20"TCP"`20should`20be`20made`20before
V`20trying`20to`20match`20"TCPWARE"`20.
X`20`20*/
X!`20`20`20`20`20`20`20`20`20else`20`7B
X!`20`20`20`20`20`20`20`20`20`20`20printf("NEWS/NETPROTOCOL=%s:`20Not`20a`20val
Vid`20NNTP`20transport`20protocol`20code`5Cn",usr_inp);
X!`20`20`20`20`20`20`20`20`20`20`20exit(1);
X!`20`20`20`20`20`20`20`20`20`20`20`7D
X`20`20`20`20`20`20`20`20`20`20`7D
X`20`20`20`20`20`20`20`20`7D
X`20`20`20`20`20`20else`20if`20(sts`20==`20CLI$_NEGATED)`20`7B
X---`20166,174`20-----
X`20`20`20`20`20Since`20string`20"TCP"`20is`20a`20leading`20substring`20in`20"T
VCPWARE"
X`20`20`20`20`20a`20match`20for`20generic`20"TCP"`20should`20be`20made`20before
V`20trying`20to`20match`20"TCPWARE"`20.
X`20`20*/
X!`20`20`20`20`20`20`20else`20`7B
X!`20`20`20`20`20`20`20`20`20printf("NEWS/NETPROTOCOL=%s:`20Not`20a`20valid`20N
VNTP`20transport`20protocol`20code`5Cn",usr_inp);
X!`20`20`20`20`20`20`20`20`20exit(1);
X`20`20`20`20`20`20`20`20`20`20`7D
X`20`20`20`20`20`20`20`20`7D
X`20`20
X**************
X***`20162,170
X`20`20`20`20`20`20`20`20`20`20`20`20`7D
X`20`20`20`20`20`20`20`20`20`20`7D
X`20`20`20`20`20`20`20`20`7D
X-`20`20`20`20`20else`20if`20(sts`20==`20CLI$_NEGATED)`20`7B
X-`20`20`20`20`20`20`20nntp_sts`20=`20-1;
X-`20`20`20`20`20`20`20`7D
X`20`20
X`20`20`20`20`20`20if`20(cli$present(c$dsc("SCAN"))`20`26`201)`20`7B
X`20`20`20`20`20`20`20`20*scangroups`20=`20'`5C0';
X---`20171,176`20-----
X`20`20`20`20`20`20`20`20`20`20exit(1);
X`20`20`20`20`20`20`20`20`20`20`7D
X`20`20`20`20`20`20`20`20`7D
X`20`20
X`20`20`20`20`20`20if`20(cli$present(c$dsc("SCAN"))`20`26`201)`20`7B
X`20`20`20`20`20`20`20`20*scangroups`20=`20'`5C0';
X**************
X***`20204,210
X`20`20`20`20`20`20`20`20`7D
X`20`20`20`20`20`20`7D
X`20`20`20`20
X!`20`20`20/*`20if`20news_root`20is`20not`20defined`20then`20look`20to`20see`20
Vabout`20news_nntp_server`20and
X`20`20`20`20`20`20`20assume`20that`20an`20nntp`20session`20is`20whats`20requir
Ved`20*/
X`20`20`20`20if`20(!news_getenv("NEWS_ROOT",1))`20`7B
X`20`20`20`20`20`20if`20(nntp_sts`20==`200`20`26`26`20(gotenv`20=`20news_getenv
V("NEWS_NNTP_SERVER",0))`20!=`200)`20`7B
X---`20210,216`20-----
X`20`20`20`20`20`20`20`20`7D
X`20`20`20`20`20`20`7D
X`20`20`20`20
X!`20`20`20/*`20if`20news_root`20is`20not`20defined`20then`20
X`20`20`20`20`20`20`20assume`20that`20an`20nntp`20session`20is`20whats`20requir
Ved`20*/
X`20`20`20`20if`20(!nntp_sts`20`26`26`20!news_getenv("NEWS_ROOT",1))`20`7B
X`20`20`20`20`20`20if`20((gotenv`20=`20news_getenv("NEWS_NNTP_SERVER",0))`20!=
V`200)`20`7B
X**************
X***`20206,213
X`20`20`20`20
X`20`20`20`20/*`20if`20news_root`20is`20not`20defined`20then`20look`20to`20see
V`20about`20news_nntp_server`20and
X`20`20`20`20`20`20`20assume`20that`20an`20nntp`20session`20is`20whats`20requir
Ved`20*/
X!`20`20`20if`20(!news_getenv("NEWS_ROOT",1))`20`7B
X!`20`20`20`20`20if`20(nntp_sts`20==`200`20`26`26`20(gotenv`20=`20news_getenv("
VNEWS_NNTP_SERVER",0))`20!=`200)`20`7B
X`20`20`20`20`20`20`20`20strcpy(nntp_node,gotenv);
X`20`20`20`20`20`20`20`20lower_case(nntp_node);
X`20`20`20`20`20`20`20`20nntp_sts`20=`202;
X---`20212,219`20-----
X`20`20`20`20
X`20`20`20`20/*`20if`20news_root`20is`20not`20defined`20then`20
X`20`20`20`20`20`20`20assume`20that`20an`20nntp`20session`20is`20whats`20requir
Ved`20*/
X!`20`20`20if`20(!nntp_sts`20`26`26`20!news_getenv("NEWS_ROOT",1))`20`7B
X!`20`20`20`20`20if`20((gotenv`20=`20news_getenv("NEWS_NNTP_SERVER",0))`20!=`20
V0)`20`7B
X`20`20`20`20`20`20`20`20strcpy(nntp_node,gotenv);
X`20`20`20`20`20`20`20`20lower_case(nntp_node);
X`20`20`20`20`20`20`20`20nntp_sts`20=`202;
X**************
X***`20211,229
X`20`20`20`20`20`20`20`20strcpy(nntp_node,gotenv);
X`20`20`20`20`20`20`20`20lower_case(nntp_node);
X`20`20`20`20`20`20`20`20nntp_sts`20=`202;
X!`20`20`20`20`20`20`20if`20(gotenv`20=`20news_getenv("NEWS_NNTP_PROTOCOL",0))
V`20`7B
X!`20`20`20`20`20`20`20`20`20strcpy(usr_inp,gotenv);
X!`20`20`20`20`20`20`20`20`20nntp_sts`20+=`202;
X!`20`20`20`20`20`20`20`20`20lower_case(usr_inp);
X!`20`20`20`20`20`20`20`20`20usr_inp_l`20=`20strlen(usr_inp);
X!`20`20`20`20`20`20`20`20`20if`20(!*usr_inp)`20nntp_proto`20=`200;
X!`20`20`20`20`20`20`20`20`20else`20if`20(!strncmp(usr_inp,"decnet",usr_inp_l))
V`20nntp_proto=`200;
X!`20`20`20`20`20`20`20`20`20else`20if`20(!strncmp(usr_inp,"cmutcp",usr_inp_l))
V`20nntp_proto=`201;
X!`20`20`20`20`20`20`20`20`20else`20if`20(!strncmp(usr_inp,"wintcp",usr_inp_l))
V`20nntp_proto`20=`202;
X!`20`20`20`20`20`20`20`20`20else`20if`20(!strncmp(usr_inp,"multinettcp",usr_in
Vp_l))`20nntp_proto`20=`203;
X!`20`20`20`20`20`20`20`20`20else`20if`20(!strncmp(usr_inp,"ucxtcp",usr_inp_l))
V`20nntp_proto`20=`204;
X!`20`20`20`20`20`20`20`20`20else`20if`20(!strncmp(usr_inp,"exostcp",usr_inp_l)
V)`20nntp_proto`20=`205;
X!`20`20`20`20`20`20`20`20`20else`20if`20(!strncmp(usr_inp,"tcp",usr_inp_l))
X`20`20#if`20MULTINET
X`20`20`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`203;
X`20`20#elif`20TWG
X---`20217,236`20-----
X`20`20`20`20`20`20`20`20strcpy(nntp_node,gotenv);
X`20`20`20`20`20`20`20`20lower_case(nntp_node);
X`20`20`20`20`20`20`20`20nntp_sts`20=`202;
X!`20`20`20`20`20`20`20`7D
X!`20`20`20`20`20if`20(gotenv`20=`20news_getenv("NEWS_NNTP_PROTOCOL",0))`20`7B
V
X!`20`20`20`20`20`20`20strcpy(usr_inp,gotenv);
X!`20`20`20`20`20`20`20nntp_sts`20=`20nntp_sts`20?`204`20:`203;
X!`20`20`20`20`20`20`20lower_case(usr_inp);
X!`20`20`20`20`20`20`20usr_inp_l`20=`20strlen(usr_inp);
X!`20`20`20`20`20`20`20if`20(!*usr_inp)`20nntp_proto`20=`200;
X!`20`20`20`20`20`20`20else`20if`20(!strncmp(usr_inp,"decnet",usr_inp_l))`20nnt
Vp_proto=`200;
X!`20`20`20`20`20`20`20else`20if`20(!strncmp(usr_inp,"cmutcp",usr_inp_l))`20nnt
Vp_proto=`201;
X!`20`20`20`20`20`20`20else`20if`20(!strncmp(usr_inp,"wintcp",usr_inp_l))`20nnt
Vp_proto`20=`202;
X!`20`20`20`20`20`20`20else`20if`20(!strncmp(usr_inp,"multinettcp",usr_inp_l))
V`20nntp_proto`20=`203;
X!`20`20`20`20`20`20`20else`20if`20(!strncmp(usr_inp,"ucxtcp",usr_inp_l))`20nnt
Vp_proto`20=`204;
X!`20`20`20`20`20`20`20else`20if`20(!strncmp(usr_inp,"exostcp",usr_inp_l))`20nn
Vtp_proto`20=`205;
X!`20`20`20`20`20`20`20else`20if`20(!strncmp(usr_inp,"tcp",usr_inp_l))
X`20`20#if`20MULTINET
X`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`203;
X`20`20#elif`20TWG
X**************
X***`20225,231
X`20`20`20`20`20`20`20`20`20`20else`20if`20(!strncmp(usr_inp,"exostcp",usr_inp_
Vl))`20nntp_proto`20=`205;
X`20`20`20`20`20`20`20`20`20`20else`20if`20(!strncmp(usr_inp,"tcp",usr_inp_l))
V
X`20`20#if`20MULTINET
X!`20`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`203;
X`20`20#elif`20TWG
X`20`20`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`202;
X`20`20#elif`20UCX
X---`20232,238`20-----
X`20`20`20`20`20`20`20`20else`20if`20(!strncmp(usr_inp,"exostcp",usr_inp_l))`20
Vnntp_proto`20=`205;
X`20`20`20`20`20`20`20`20else`20if`20(!strncmp(usr_inp,"tcp",usr_inp_l))
X`20`20#if`20MULTINET
X!`20`20`20`20`20`20`20`20`20nntp_proto`20=`203;
X`20`20#elif`20TWG
X`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`202;
X`20`20#elif`20UCX
X**************
X***`20227,233
X`20`20#if`20MULTINET
X`20`20`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`203;
X`20`20#elif`20TWG
X!`20`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`202;
X`20`20#elif`20UCX
X`20`20`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`204;
X`20`20#elif`20EXOS
X---`20234,240`20-----
X`20`20#if`20MULTINET
X`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`203;
X`20`20#elif`20TWG
X!`20`20`20`20`20`20`20`20`20nntp_proto`20=`202;
X`20`20#elif`20UCX
X`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`204;
X`20`20#elif`20EXOS
X**************
X***`20229,235
X`20`20#elif`20TWG
X`20`20`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`202;
X`20`20#elif`20UCX
X!`20`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`204;
X`20`20#elif`20EXOS
X`20`20`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`205;
X`20`20#elif`20TCPWARE
X---`20236,242`20-----
X`20`20#elif`20TWG
X`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`202;
X`20`20#elif`20UCX
X!`20`20`20`20`20`20`20`20`20nntp_proto`20=`204;
X`20`20#elif`20EXOS
X`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`205;
X`20`20#elif`20TCPWARE
X**************
X***`20231,237
X`20`20#elif`20UCX
X`20`20`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`204;
X`20`20#elif`20EXOS
X!`20`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`205;
X`20`20#elif`20TCPWARE
X`20`20`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`206;
X`20`20#else
X---`20238,244`20-----
X`20`20#elif`20UCX
X`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`204;
X`20`20#elif`20EXOS
X!`20`20`20`20`20`20`20`20`20nntp_proto`20=`205;
X`20`20#elif`20TCPWARE
X`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`206;
X`20`20#else
X**************
X***`20233,239
X`20`20#elif`20EXOS
X`20`20`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`205;
X`20`20#elif`20TCPWARE
X!`20`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`206;
X`20`20#else
X`20`20`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`201;
X`20`20#endif
X---`20240,246`20-----
X`20`20#elif`20EXOS
X`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`205;
X`20`20#elif`20TCPWARE
X!`20`20`20`20`20`20`20`20`20nntp_proto`20=`206;
X`20`20#else
X`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`201;
X`20`20#endif
X**************
X***`20235,241
X`20`20#elif`20TCPWARE
X`20`20`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`206;
X`20`20#else
X!`20`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`201;
X`20`20#endif
X`20`20`20`20`20`20`20`20`20`20else`20if`20(!strncmp(usr_inp,"tcpware",usr_inp_
Vl))`20nntp_proto`20=`206;
X`20`20/*
X---`20242,248`20-----
X`20`20#elif`20TCPWARE
X`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`206;
X`20`20#else
X!`20`20`20`20`20`20`20`20`20nntp_proto`20=`201;
X`20`20#endif
X`20`20`20`20`20`20`20`20else`20if`20(!strncmp(usr_inp,"tcpware",usr_inp_l))`20
Vnntp_proto`20=`206;
X`20`20/*
X**************
X***`20237,243
X`20`20#else
X`20`20`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`201;
X`20`20#endif
X!`20`20`20`20`20`20`20`20`20else`20if`20(!strncmp(usr_inp,"tcpware",usr_inp_l)
V)`20nntp_proto`20=`206;
X`20`20/*
X`20`20`20`20`20Since`20string`20"TCP"`20is`20a`20leading`20substring`20in`20"T
VCPWARE"
X`20`20`20`20`20a`20match`20for`20generic`20"TCP"`20should`20be`20made`20before
V`20trying`20to`20match`20"TCPWARE"`20.
X---`20244,250`20-----
X`20`20#else
X`20`20`20`20`20`20`20`20`20`20nntp_proto`20=`201;
X`20`20#endif
X!`20`20`20`20`20`20`20else`20if`20(!strncmp(usr_inp,"tcpware",usr_inp_l))`20nn
Vtp_proto`20=`206;
X`20`20/*
X`20`20`20`20`20Since`20string`20"TCP"`20is`20a`20leading`20substring`20in`20"T
VCPWARE"
X`20`20`20`20`20a`20match`20for`20generic`20"TCP"`20should`20be`20made`20before
V`20trying`20to`20match`20"TCPWARE"`20.
X**************
X***`20242,251
X`20`20`20`20`20Since`20string`20"TCP"`20is`20a`20leading`20substring`20in`20"T
VCPWARE"
X`20`20`20`20`20a`20match`20for`20generic`20"TCP"`20should`20be`20made`20before
V`20trying`20to`20match`20"TCPWARE"`20.
X`20`20*/
X!`20`20`20`20`20`20`20`20`20else`20`7B
X!`20`20`20`20`20`20`20`20`20`20`20printf("NEWS/NETPROTOCOL=%s:`20Not`20a`20val
Vid`20NNTP`20transport`20protocol`20code`5Cn",usr_inp);
X!`20`20`20`20`20`20`20`20`20`20`20exit(1);
X!`20`20`20`20`20`20`20`20`20`20`20`7D
X`20`20`20`20`20`20`20`20`20`20`7D
X`20`20`20`20`20`20`20`20`7D
X`20`20`20`20`20`20`7D
X---`20249,257`20-----
X`20`20`20`20`20Since`20string`20"TCP"`20is`20a`20leading`20substring`20in`20"T
VCPWARE"
X`20`20`20`20`20a`20match`20for`20generic`20"TCP"`20should`20be`20made`20before
V`20trying`20to`20match`20"TCPWARE"`20.
X`20`20*/
X!`20`20`20`20`20`20`20else`20`7B
X!`20`20`20`20`20`20`20`20`20printf("NEWS/NETPROTOCOL=%s:`20Not`20a`20valid`20N
VNTP`20transport`20protocol`20code`5Cn",usr_inp);
X!`20`20`20`20`20`20`20`20`20exit(1);
X`20`20`20`20`20`20`20`20`20`20`7D
X`20`20`20`20`20`20`20`20`7D
X`20`20`20`20`20`20`7D
X**************
X***`20308,314
X`20`20`20`20`20`20`20`20`20`20else`20nntp_sts`20=`204;
X`20`20`20`20`20`20`20`20`20`20`7D
X`20`20
X!`20`20`20`20`20`20`20if`20(cp`20`26`26`20nntp_sts`20<`203)`20`7B
X`20`20`09nntp_proto`20=`20atoi(cp);
X`20`20`20`20`20`20`20`20`20`20nntp_sts`20=`204;
X`20`20`09`7D
X---`20314,320`20-----
X`20`20`20`20`20`20`20`20`20`20else`20nntp_sts`20=`204;
X`20`20`20`20`20`20`20`20`20`20`7D
X`20`20
X!`20`20`20`20`20`20`20if`20(cp`20`26`26`20!explicit_proto)`20`7B
X`20`20`09nntp_proto`20=`20atoi(cp);
X`20`20`20`20`20`20`20`20`20`20nntp_sts`20=`204;
X`20`20`09`7D
X***`20patchlist.h;-1
X---`20patchlist.h
X**************
X***`201,1
X`20`20=+=+=`20End`20=+=+=
X---`201,2`20-----
X+`20940114_news.c!bailey@genetics.upenn.edu
X`20`20=+=+=`20End`20=+=+=
$ call unpack 940114_NEWS.PATCH -
 1711985821 "FORMAT STREAM_LF;CARRIAGE_CONTROL CARRIAGE_RETURN" 28 1 1
$ v=f$verify(v)
$ exit
