From:	SMTP%"bailey@HMIVAX.HUMGEN.UPENN.EDU" 20-SEP-1993 12:50:43.04
To:	EVERHART
CC:	
Subj:	Re: A couple of questions...

Message-Id: <9309182307.AA23780@uu7.psi.com>
Date:         Fri, 17 Sep 1993 16:55:40 GMT
Reply-To: Charles Bailey <bailey@HMIVAX.HUMGEN.UPENN.EDU>
Sender: ANU-NEWS Discussion <ANU-NEWS@VM1.NoDak.EDU>
Comments:     Warning -- original Sender: tag was news@NETNEWS.UPENN.EDU
From: Charles Bailey <bailey@HMIVAX.HUMGEN.UPENN.EDU>
Organization: HHMI/Human Genetics, Univ of Pa.
Subject:      Re: A couple of questions...
To: Multiple recipients of list ANU-NEWS <ANU-NEWS@VM1.NoDak.EDU>

In article <Don.Rainwater-160993082511@ucrain.san.uc.edu>, Don.Rainwater@UC.Edu
(Don Rainwater, Systems Manager) writes:
> I'm running 6.1b8 + the RMS performance patches.  It looks like the nntp
> server is now creating incoming news batch files at about 1000 blocks each,
> pre-extended.  This is great for a large batch file that uses all the space
> that it has been allocated, but I've noticed that I have quite a few files
> that are showing up with sizes of, say, 32/1000.  Would it be possible to
> have the file truncated on close?

>From what I can see, this shouldn't be a problem, since the performance patch
also insures the file isn't closed until the server is finished with it.  I've
appended to this post a small patch which adds tef to the fop argument used
when the batch file is opened.  Since I don't have much nntp traffic here, I'd
appreciate comments from other sites if they encounter problems with the patch.

> Also, does the nntp server have to be installed with privs to be able to
> use the cache?  I can't remember if I saw something about this posted or
> listed somewhere or not...

It needs SysLck and SysGbl to use the cache.  It may be easier in some cases to
make these process privs for the server process,  but installing the image with
these privs should work as well.

                    Regards,
                    Charles Bailey

!-------------------------------------------------------------------------------
!             Dept. of Genetics / Howard Hughes Medical Institute
! University of Pennsylvania School of Medicine  Rm. 430 Clinical Research Bldg.
!     422 Curie Blvd.  Philadelphia, PA 19104 USA      Tel. (215) 898-1699
!          Internet: bailey@genetics.upenn.edu  (IN 128.91.200.37)
!-------------------------------------------------------------------------------
$! ------------------ CUT HERE -----------------------
$ v='f$verify(f$trnlnm("SHARE_UNPACK_VERIFY"))'
$!
$! This archive created:
$!  Name : 930917_NNTP_SERVER.PATCH
$!  By   : bailey@hmivax.humgen.upenn.edu
$!  Date : 17-SEP-1993 11:53:40.64
$!  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. 930917_NNTP_SERVER.PATCH;2
$!
$ 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-EXISTS, File ''P1' exists. Skipped"
$ delete 'f'*
$ exit
$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:`20930917_nntp_server.c!bailey@genetics.upenn.edu
XDate:`2017-Sep-1993
XAuthor:`20Charles`20Bailey`20`20bailey@genetics.upenn.edu
XNews`20Version:`206.1beta8
XNews`20Files:`20NNTP_Server.C
XDescription:`20Adds`20tef`20to`20fop`20argument`20in`20fopen()`20call`20for`20
Vincoming`20batch`20file
Xfrom`20930723_NNTP_Server.Patch.`20Since`20batchfile`20is`20now`20flushed`20by
V
Xfflush()/fsync(),`20and`20closed`20only`20when`20done,`20this`20should`20not
V`20cause`20a`20problem,
Xand`20should`20recover`20on`20close`20unused`20space`20from`20the`20initial`20
Vlarge`20allocation.
XRequires:`20930723_nntp_server.c!saul@hnrc.tufts.edu
X***`20nntp_server.c
X---`20nntp_server_new.c
X**************
X***`20185,187
X`20`20**
X`20`20**--
X`20`20**/
X---`20185,189`20-----
X+`20**`09V6.1b8`0917-Sep-1993`09Charles`20Bailey`20`20bailey@genetics.upenn.ed
Vu
X+`20**`09`20`20-`20add`20fop=tef`20to`20batchfile`20fopen()
X`20`20**
X`20`20**--
X`20`20**/
X**************
X***`201633,1639
X`20`20`20`20`20`20sprintf`20(alloc_size,`20"alq=%d",`20(max_batch+511)/512);
X`20`20`20`20`20`20sprintf(batch,NEWSBATCH,time_str(),getpid());
X`20`20`20`20`20`20fpb`20=`20fopen(batch,
X!`20`20`20`20`20`20"w",alloc_size,"deq=100","fop=cbt","rop=wbh","mbc=32","mbf=
V2");
X`20`20`20`20`20`20batch_size`20=`200;
X`20`20`20`20`20`20`7D
X`20`20
X---`201635,1641`20-----
X`20`20`20`20`20`20sprintf`20(alloc_size,`20"alq=%d",`20(max_batch+511)/512);
X`20`20`20`20`20`20sprintf(batch,NEWSBATCH,time_str(),getpid());
X`20`20`20`20`20`20fpb`20=`20fopen(batch,
X!`20`20`20`20`20`20"w",alloc_size,"deq=100","fop=cbt,tef","rop=wbh","mbc=32","
Vmbf=2");
X`20`20`20`20`20`20batch_size`20=`200;
X`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+`20930917_nntp_server.c!bailey@genetics.upenn.edu
X`20`20=+=+=`20End`20=+=+=
$ call unpack 930917_NNTP_SERVER.PATCH;2 -
 981095207 "FORMAT STREAM_LF;CARRIAGE_CONTROL CARRIAGE_RETURN" 3 1 1
$ v=f$verify(v)
$ exit
