From:	SMTP%"bailey@HMIVAX.HUMGEN.UPENN.EDU" 19-JAN-1994 08:46:08.46
To:	EVERHART
CC:	
Subj:	Patch^2: Re: Patch + Re: Diskless Client via MultiNet problems

Message-Id: <9401190751.AB17616@uu7.psi.com>
Date:         Wed, 19 Jan 1994 02:08:37 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^2: Re: Patch + Re: Diskless Client via MultiNet problems
To: Multiple recipients of list ANU-NEWS <ANU-NEWS@VM1.NoDak.EDU>

In article <1994Jan14.170630.1@hmivax>, bailey@hmivax.humgen.upenn.edu (Charles
Bailey) writes:
> 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 th
e
> size of the patch; much of it is just resetting the indentation levels of
> blocks as they got moved around.

I have discovered that the patch I posted a few days ago introduced a bug into
the selection of a local or remote session.  (Sigh -- at least I *said* it was
a quick hack.)   Specifically, if the logical name News_NNTP_Protocol is
defined and any parameters or qualifiers are specified when News is invoked,
News will attempt to start a session as a client reader, regardless of whether
News_Root is defined, or /NoNetServer is on the comand line.  This came about
because I was passing through a block of code unconditionally which should have
been dependent on the presence of /NetProtocol on the command line.  The patch
appended to this message fixes  the bug (and again most of the bulk is
unadjusting indentation of a block which the original patch moved).

If you want to change the precedence for NNTP server and protocol selection to
  CL qualifier > NewsRC value > logical names
you should apply both patches to News.C.  They're in the patch archive here as
940114_News.Patch and 940118_News.Patch.

If anyone else spots any (more :-() bugs, I'd appreciate hearing about them.  I
apologize for any problems the flawed patch may have caused.

                    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 : 940118_NEWS.PATCH
$!  By   : bailey@genetics.upenn.edu
$!  Date : 18-JAN-1994 23:21:05.90
$!  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. 940118_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:`20940118_news.c!bailey@genetics.upenn.edu
XDate:`2018-Jan-1994
XAuthor:`20Charles`20Bailey`20`20bailey@genetics.upenn.edu
XNews`20Version:`206.1beta8
XNews`20Files:`20News.C
XDescription:`20Fixes`20bug`20introduced`20by`20940114_news.c!bailey@genetics.u
Vpenn.edu,
Xwhich`20caused`20News`20to`20start`20a`20remote`20session`20if`20any`20command
V`20line`20parameters`20or
Xqualifiers`20were`20specified`20and`20the`20logical`20name`20News_NNTP_Protoco
Vl`20was`20defined.
XRequires:`20940114_news.c!bailey@genetics.upenn.edu
X***`20news.c
X---`20news_new.c
X**************
X***`2047,49
X`20`20**--
X`20`20**/
X`20`20`0C
X---`2047,52`20-----
X+`20**`09V6.1b8`0918-Jan-1994`09Charles`20Bailey`20`20bailey@genetics.upenn.ed
Vu
X+`20**`09`20`20-`20fixed`20bug`20introduced`20by`2014-Jan-1994`20patch`20which
V`20causes`20remote
X+`20**`09`20`20`20`20session`20to`20occur`20even`20though`20News_Root`20is`20d
Vefined
X`20`20**--
X`20`20**/
X`20`20`0C
X**************
X***`20127,136
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`20`7D
X`20`20`20`20`20`20if`20(!explicit_proto)`20`7B
X`20`20`20`20`20`20`20`20if`20(gotenv`20=`20news_getenv("NEWS_NNTP_PROTOCOL",0)
V)`20strcpy(usr_inp,gotenv);
X---`20130,144`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`20(cli$present(c$dsc("NETP
VROTOCOL"))`20`26`201))`20`7B
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`20else`20`7B
X!`20`20`20`20`20`20`20`20`20if`20(gotenv`20=`20news_getenv("NEWS_NNTP_PROTOCOL
V",0))
X!`20`20`20`20`20`20`20`20`20`20`20strcpy(usr_inp,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`7D
X`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=`20(nntp_sts`20==`202)`20?`204`20:
V`203;
X**************
X***`20132,153
X`20`20`20`20`20`20`20`20explicit_proto`20=`20usr_inp_l;
X`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`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---`20140,157`20-----
X`20`20`20`20`20`20`20`20`20`20`20`20strcpy(usr_inp,gotenv);
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`7D
X!`20`20`20`20`20`20if`20(*usr_inp)`20`7B`20
X!`20`20`20`20`20`20`20`20`20nntp_sts`20=`20(nntp_sts`20==`202)`20?`204`20:`203
V;
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**************
X***`20149,155
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---`20153,159`20-----
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**************
X***`20151,157
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---`20155,161`20-----
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**************
X***`20153,159
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---`20157,163`20-----
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**************
X***`20155,161
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---`20159,165`20-----
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**************
X***`20157,163
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---`20161,167`20-----
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**************
X***`20159,165
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---`20163,169`20-----
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**************
X***`20161,167
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---`20165,171`20-----
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**************
X***`20166,174
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---`20170,179`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`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
X***`20patchlist.h;-1
X---`20patchlist.h
X**************
X***`201,1
X`20`20=+=+=`20End`20=+=+=
X---`201,2`20-----
X+`20940118_news.c!bailey@genetics.upenn.edu
X`20`20=+=+=`20End`20=+=+=
$ call unpack 940118_NEWS.PATCH -
 1361408667 "FORMAT STREAM_LF;CARRIAGE_CONTROL CARRIAGE_RETURN" 14 1 1
$ v=f$verify(v)
$ exit
