From:	SMTP%"bailey@HMIVAX.HUMGEN.UPENN.EDU" 28-MAY-1994 11:37:59.31
To:	EVERHART
CC:	
Subj:	Re: READ/PARENT ACCVIO with 6.1b9?

Message-Id: <9405280553.AA28152@uu7.psi.com>
Date:         Fri, 27 May 1994 23:07:03 EDT
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:      Re: READ/PARENT ACCVIO with 6.1b9?
To: Multiple recipients of list ANU-NEWS <ANU-NEWS@VM1.NoDak.EDU>

In article <1994May27.165027.1@spcvxb.spc.edu>, terry@spcvxb.spc.edu (Terry Kenn
edy, Operations Mgr.) writes:
> In article <1994May27.103134.64676@kuhub.cc.ukans.edu>, sloane@kuhub.cc.ukans.
edu (Bob Sloane) writes:
>> I can't seem to duplicate this problem here. I have done quite a few
>> READ/PARENT commands, and all of them worked as expected. Some of the
>> tests had parent article and some didn't.
>
>   Perhaps it only happens when running as an NNTP client.

OK, found it.   It happens only to NNTP clients, and is, as expected, the
result of chasing a null pointer.  A patch which fixes this is appended to this
posting.  (It only adds 8 characters to NewsUtility.C, so the size of the VMS
share file is amusing or annoying, depending on your perspective, but it's
necessary to avoid making some mailers on the list unhappy.)

                    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 : 940527_NEWSUTILITY.PATCH
$!  By   : bailey@genetics.upenn.edu
$!  Date : 27-MAY-1994 23:04:55.98
$!  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. 940527_NEWSUTILITY.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:`20940527_newsutility.c!bailey@genetics.upenn.edu
XDate:`2027-May-1994
XAuthor:`20Charles`20Bailey`20`20bailey@genetics.upenn.edu
XNews`20Version:`206.1beta9
XNews`20Files:`20NewsUtility.C
XDescription:`20Checks`20that`20the`20idmap`20lookaside`20list`20exists`20for
V`20a`20newsgroup`20before
Xtrying`20to`20use`20it`20to`20find`20a`20missing`20item.
X***`20newsutility.c
X---`20newsutility_new.c
X**************
X***`20101,103
X`20`20**--
X`20`20**/
X`20`20`0C
X---`20101,105`20-----
X+`20**`09V6.1b9`20`2027-May-1994`20`20Charles`20Bailey`20`20bailey@genetics.up
Venn.edu
X+`20**`09`20-`20check`20that`20group`20has`20idmap`20list`20before`20using`20i
Vt`20in`20get_itm_by_ident()
X`20`20**--
X`20`20**/
X`20`20`0C
X**************
X***`201711,1717
X`20`20`20`20`20`20if`20(!s_inum)`20`7B
X`20`20`20`20`20`20`20`20IDMAP_PTR`20tmp`20=`20ga`5Bg`5D->grp_idhead;
X`20`20
X!`20`20`20`20`20`20`20do`20`7B
X`20`20`20`20`20`20`20`20`20`20if`20(!news_strncasecmp(tmp->id,id,0))`20`7B
X`20`20`20`20`20`20`20`20`20`20`20`20s_inum`20=`20tmp->itm_num;
X`20`20`20`20`20`20`20`20`20`20`20`20tmp->itm_num`20=`20(ga`5Bg`5D->grp_idtail)
V->itm_num;
X---`201713,1719`20-----
X`20`20`20`20`20`20if`20(!s_inum)`20`7B
X`20`20`20`20`20`20`20`20IDMAP_PTR`20tmp`20=`20ga`5Bg`5D->grp_idhead;
X`20`20
X!`20`20`20`20`20`20`20if`20(tmp)`20do`20`7B
X`20`20`20`20`20`20`20`20`20`20if`20(!news_strncasecmp(tmp->id,id,0))`20`7B
X`20`20`20`20`20`20`20`20`20`20`20`20s_inum`20=`20tmp->itm_num;
X`20`20`20`20`20`20`20`20`20`20`20`20tmp->itm_num`20=`20(ga`5Bg`5D->grp_idtail)
V->itm_num;
X***`20patchlist.h;-1
X---`20patchlist.h
X**************
X***`201,1
X`20`20=+=+=`20End`20=+=+=
X---`201,2`20-----
X+`20940527_newsutility.c!bailey@genetics.upenn.edu
X`20`20=+=+=`20End`20=+=+=
$ call unpack 940527_NEWSUTILITY.PATCH -
 472076959 "FORMAT STREAM_LF;CARRIAGE_CONTROL CARRIAGE_RETURN" 3 1 1
$ v=f$verify(v)
$ exit
