From:	SMTP%"bailey@HMIVAX.HUMGEN.UPENN.EDU" 26-MAY-1994 09:45:43.06
To:	EVERHART
CC:	
Subj:	Re: Curiosity questions on 6.1b9

Message-Id: <9405260631.AA28161@uu7.psi.com>
Date:         Wed, 25 May 1994 12:12:45 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: Curiosity questions on 6.1b9
To: Multiple recipients of list ANU-NEWS <ANU-NEWS@VM1.NoDak.EDU>

In article <1994May25.005317@hmivax>, bailey@genetics.upenn.edu (Charles Bailey)
 writes:
> For those interested in further tinkering with file usage by the NNTP server,
> I've included a patch below with a number of goodies.  Basically, it contains
> those optimizations posted by Saul Tannenbaum in his original patch
> 930723_nntp_server.c!saul@hnrc.tufts.edu which weren't incorporated into
> NNTP_Server.C by Mark Martinec when he revised the file handling.  This
> includes the following:
>1. Adds const to various constant string declarations.
>2. Moves various compile-time constants to NewsSite.H
>3. Calculates initial allocation quantity for various files.
>4. Allows specification of maximum incoming batch file size (in bytes) via
>   the logical name NEWS_NNTP_SERVER_BATCH_SIZE, subject to the limits imposed
>   by compile-time constants.  This value is used when processing transferred
>   items only; processing of posted items always uses NEWS_BATCH_SIZE_LOWLIM.
>5. Allows sites to keep batch files open until full, using fflush() and fsync()
>   to flush buffers.  This is the default behavior, unless disabled by
>   defining the logical name NEWS_NNTP_SERVER_BATCH_FLUSH_DISABLE to translate
>   to a value considered true by DCL (i.e. odd decimal number or string
>   beginning with one of TtYy.

It has been pointed out to me that the version of this patch posted last night
contained three typos, which rendered it unusable (very red face).  I'd fixed
tham while testing the patch here, but it looks like I VMS Shared the wrong
version, and posted the errors.  The copy in the patch archive here is the
correct version.

Appended to this message is the correct version of the patch.  (I've cancelled
the previous posting, so if the parent of this item isn't on your system,
you're not missing much.)

I apologize for any inconvenience the corrupted patch may have caused.

Sigh.

                    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 : 940524_NNTP_SERVER.PATCH
$!  By   : bailey@genetics.upenn.edu
$!  Date : 25-MAY-1994 12:10:30.31
$!  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. 940524_NNTP_SERVER.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:`20940524_nntp_server.c!bailey@genetics.upenn.edu
XDate:`2024-May-1994
XAuthor:`20Charles`20Bailey`20`20bailey@genetics.upenn.edu
XNews`20Version:`206.1beta9
XNews`20Files:`20NNTP_Server.C,`20NewsSite.H
XDescription:`20Incorporates`20(with`20some`20changes)`20those`20optimizations
V`20found`20in
Xpatch`20930723_nntp_server.c!saul@hnrc.tufts.edu`20which`20were`20not`20alread
Vy`20folded
Xinto`20the`206.1beta9`20distribution.`20`20This`20includes`20the`20following:
V
X1.`20Adds`20const`20to`20various`20constant`20string`20declarations.
X2.`20Moves`20various`20compile-time`20constants`20to`20NewsSite.H
X3.`20Calculates`20initial`20allocation`20quantity`20for`20various`20files.
X4.`20Allows`20specification`20of`20maximum`20incoming`20batch`20file`20size`20
V(in`20bytes)`20via
X`20`20`20the`20logical`20name`20NEWS_NNTP_SERVER_BATCH_SIZE,`20subject`20to`20
Vthe`20limits`20imposed
X`20`20`20by`20compile-time`20constants.`20`20This`20value`20is`20used`20when
V`20processing`20transferred
X`20`20`20items`20only;`20processing`20of`20posted`20items`20always`20uses`20NE
VWS_BATCH_SIZE_LOWLIM.
X5.`20Allows`20sites`20to`20keep`20batch`20files`20open`20until`20full,`20using
V`20fflush()`20and`20fsync()
X`20`20`20to`20flush`20buffers.`20`20This`20is`20the`20default`20behavior,`20un
Vless`20disabled`20by
X`20`20`20defining`20the`20logical`20name`20NEWS_NNTP_SERVER_BATCH_FLUSH_DISABL
VE`20to`20translate
X`20`20`20to`20a`20value`20considered`20true`20by`20DCL`20(i.e.`20odd`20decimal
V`20number`20or`20string
X`20`20`20beginning`20with`20one`20of`20TtYy.
XReplaces:`20930723_nntp_server.c!saul@hnrc.tufts.edu`20for`20use`20with`20vers
Vion
X6.1beta9.`20930723_nntp_server.c!saul@hnrc.tufts.edu`20remains`20current`20for
V`20use
Xwith`20previous`20versions.
X***`20nntp_server.c
X---`20nntp_server_new.c
X**************
X***`20219,221
X`20`20**
X`20`20**--
X`20`20**/
X---`20219,224`20-----
X+`20**`09V6.1b9`0924-May-1994`20`20Charles`20Bailey`20`20bailey@genetics.upenn
V.edu
X+`20**`09`20`20-`20added`20further`20file`20optimizations`20based`20on`20patch
V`20noted`20in
X+`20**`09`20`20`20`20previous`20comment`20(930723_nntp_server.c!saul@hnrc.tuft
Vs.edu).
X`20`20**
X`20`20**--
X`20`20**/
X**************
X***`20231,236
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
V`20`20`20`20/*`20system`20definitions`20*/
X`20`20#include`20"newsinclude.h"
X`20`20#include`20"newsdefine.h"
X`20`20
X`20`20#if`200/*vax11c*/
X`20`20#include`20maildef
X---`20234,240`20-----
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
V`20`20`20`20/*`20system`20definitions`20*/
X`20`20#include`20"newsinclude.h"
X`20`20#include`20"newsdefine.h"
X+`20#include`20"newssite.h"
X`20`20
X`20`20#if`200/*vax11c*/
X`20`20#include`20maildef
X**************
X***`20269,282
X`20`20void`20newscmd()`20`7B`7D`20`20`20/*`20hack`20to`20substitute`20for`20gl
Vobaldef`20-`20see`20above`20*/
X`20`20#endif
X`20`20
X-`20#define`20LOGGING`201`20/*`20set`20to`201`20to`20produce`20LOGGING`20outpu
Vt`20to`20file`20NEWS_NNTP_LOG`20*/
X-`20
X-`20#define`20LOG_TABLE`20`20`20`20"LNM$SYSTEM"
X-`20
X-`20#define`20NEWSBATCH`20`20`20`20"NEWS_MANAGER:NNTP_%s_%X.%sBATCH"`20`20`20
V`20`20`20`20`20`20`20/*`20file`20names`20*/
X-`20
X-`20#define`20NEWS_BATCH_SIZE`201000000
X-`20
X`20`20/*
X`20`20`20*`20Define`20macros`20READ_MBF`20and`20WRITE_MBF`20as`20empty`20to`20
Vdisable`20multibuffering,
X`20`20`20*`20or`20specify`20appropriate`20MBF`20options
X---`20273,278`20-----
X`20`20void`20newscmd()`20`7B`7D`20`20`20/*`20hack`20to`20substitute`20for`20gl
Vobaldef`20-`20see`20above`20*/
X`20`20#endif
X`20`20
X`20`20/*
X`20`20`20*`20Define`20macros`20READ_MBF`20and`20WRITE_MBF`20as`20empty`20to`20
Vdisable`20multibuffering,
X`20`20`20*`20or`20specify`20appropriate`20MBF`20options
X**************
X***`20379,385
X`20`20DIST_ENTRY_T`20*distfile`20=`200;
X`20`20
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
V`20`20`20`20/*`20server`20response`20table`20*/
X!`20static`20
X`20`20char`20*msg`5B`5D`20=`20`20`20`20`20`20`20`20`7B"100`20help`20text`20fol
Vlows`5Cr`5Cn",
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20"199
V`20debug`20output`5Cr`5Cn",
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20"200
V`20ANU`20NEWS/NNTP`20server`20%s`20(V%s).`20Ready`20at`20%s`20(%s).`5Cr`5Cn",
V
X---`20375,381`20-----
X`20`20DIST_ENTRY_T`20*distfile`20=`200;
X`20`20
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
V`20`20`20`20/*`20server`20response`20table`20*/
X!`20static`20const
X`20`20char`20*msg`5B`5D`20=`20`20`20`20`20`20`20`20`7B"100`20help`20text`20fol
Vlows`5Cr`5Cn",
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20"199
V`20debug`20output`5Cr`5Cn",
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20"200
V`20ANU`20NEWS/NNTP`20server`20%s`20(V%s).`20Ready`20at`20%s`20(%s).`5Cr`5Cn",
V
X**************
X***`20425,431
X`20`20`09`09`20`20`20`20`20`20"503`20fatal`20program`20fault`20-`20closing`20c
Vonnection`5Cr`5Cn",
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20".`5Cr
V`5Cn"`7D;
X`20`20
X!`20static
X`20`20char`20*help_cmds`5B`5D`20=`20`7B
X`20`20`20`20`20`20"ARTICLE`20<message-id>`20Send`20article`20referenced`20by
V`20id.`5Cr`5Cn",
X`20`20`20`20`20`20"ARTICLE`20<nnn>`20`20`20`20`20`20`20`20Send`20article,`20nu
Vmber`20<nnn>`20from`20current`20newsgroup.`5Cr`5Cn",
X---`20421,427`20-----
X`20`20`09`09`20`20`20`20`20`20"503`20fatal`20program`20fault`20-`20closing`20c
Vonnection`5Cr`5Cn",
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20".`5Cr
V`5Cn"`7D;
X`20`20
X!`20static`20const
X`20`20char`20*help_cmds`5B`5D`20=`20`7B
X`20`20`20`20`20`20"ARTICLE`20<message-id>`20Send`20article`20referenced`20by
V`20id.`5Cr`5Cn",
X`20`20`20`20`20`20"ARTICLE`20<nnn>`20`20`20`20`20`20`20`20Send`20article,`20nu
Vmber`20<nnn>`20from`20current`20newsgroup.`5Cr`5Cn",
X**************
X***`20636,642
X`20`20
X`20`20#define`20MAX_UNK`20`2050
X`20`20
X!`20static
X`20`20char`20*header_keyw`5B`5D`20=`20`7B
X`20`20`20`20`20`20`20`20`20`20`20`20"path",
X`20`20`20`20`20`20`20`20`20`20`20`20"newsgroups",
X---`20632,638`20-----
X`20`20
X`20`20#define`20MAX_UNK`20`2050
X`20`20
X!`20static`20const
X`20`20char`20*header_keyw`5B`5D`20=`20`7B
X`20`20`20`20`20`20`20`20`20`20`20`20"path",
X`20`20`20`20`20`20`20`20`20`20`20`20"newsgroups",
X**************
X***`201257,1262
X`20`20`20`20`20`20if`20(!*itm_fname)`20`7B
X`20`20`20`20`20`20`20`20int`20header`20=`201;
X`20`20
X`20`20`20`20`20`20`20`20sprintf(itm_fname,Itm_template,util_dir(newsgrp.grp_na
Vme),cre_itm`5Bi`5D);
X`20`20`20`20`20`20`20`20if`20(!(ofile`20=`20fopen(itm_fname,OPEN_WRITE_OPT1,
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
V`20`20`20`20`20`20`20`20`20`20`20`20"deq=16","fop=cbt,tef")))`20`7B
X---`201253,1266`20-----
X`20`20`20`20`20`20if`20(!*itm_fname)`20`7B
X`20`20`20`20`20`20`20`20int`20header`20=`201;
X`20`20
X+`20`20`20`20`20`20`20/*`207/21/93`20saul@hnrc.tufts.edu`20-`20calculate`20app
Vroximate`20output`20size
X+`20`20`20`20`20`20`20`20*`20based`20upon`20the`20size`20in`20bytes`20of`20the
V`20input`20file`20and`20pre-extend
X+`20`20`20`20`20`20`20`20*`20the`20file`20*/
X+`20
X+`20`20`20`20`20`20`20char`20alloc_size`5B32`5D;
X+`20`20`20`20`20`20`20sprintf`20(alloc_size,`20"alq=%d",`20((sbuffer.st_size+5
V11)/512));
X+`20
X+`20
X`20`20`20`20`20`20`20`20sprintf(itm_fname,Itm_template,util_dir(newsgrp.grp_na
Vme),cre_itm`5Bi`5D);
X`20`20`20`20`20`20`20`20if`20(!(ofile`20=`20fopen(itm_fname,OPEN_WRITE_OPT1,al
Vloc_size,
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
V`20`20`20`20`20`20`20`20`20`20`20`20"deq=16","fop=cbt,tef")))`20`7B
X**************
X***`201258,1264
X`20`20`20`20`20`20`20`20int`20header`20=`201;
X`20`20
X`20`20`20`20`20`20`20`20sprintf(itm_fname,Itm_template,util_dir(newsgrp.grp_na
Vme),cre_itm`5Bi`5D);
X!`20`20`20`20`20`20`20if`20(!(ofile`20=`20fopen(itm_fname,OPEN_WRITE_OPT1,
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
V`20`20`20`20`20`20`20`20`20`20`20`20"deq=16","fop=cbt,tef")))`20`7B
X`20`20`20`20`20`20`20`20`20`20strcpy(no_new_item,"Cannot`20open`20output`20fil
Ve`20(write`20access)");
X`20`20`20`20`20`20`20`20`20`20failure`20=`201;
X---`201262,1268`20-----
X`20`20
X`20`20
X`20`20`20`20`20`20`20`20sprintf(itm_fname,Itm_template,util_dir(newsgrp.grp_na
Vme),cre_itm`5Bi`5D);
X!`20`20`20`20`20`20`20if`20(!(ofile`20=`20fopen(itm_fname,OPEN_WRITE_OPT1,allo
Vc_size,
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
V`20`20`20`20`20`20`20`20`20`20`20`20"deq=16","fop=cbt,tef")))`20`7B
X`20`20`20`20`20`20`20`20`20`20strcpy(no_new_item,"Cannot`20open`20output`20fil
Ve`20(write`20access)");
X`20`20`20`20`20`20`20`20`20`20failure`20=`201;
X**************
X***`201411,1416
X`20`20`20`20int`20`20approval_required`20=`200,
X`20`20`20`20`20`20`20`20`20posted`20=`200,`20cur_time;
X`20`20`20`20struct`20tm`20*stme;
X`20`20
X`20`20`20`20time(`26cur_time);
X`20`20`20`20p`20=`20ctime(`26cur_time);
X---`201415,1421`20-----
X`20`20`20`20int`20`20approval_required`20=`200,
X`20`20`20`20`20`20`20`20`20posted`20=`200,`20cur_time;
X`20`20`20`20struct`20tm`20*stme;
X+`20`20`20struct`20stat`20stat_buffer;
X`20`20
X`20`20`20`20time(`26cur_time);
X`20`20`20`20p`20=`20ctime(`26cur_time);
X**************
X***`201446,1451
X`20`20`20`20`20`20while`20(!strchr(xfrbuf,'`5Cn')`20`26`26`20fgets(xfrbuf,size
Vof(xfrbuf),fpr));
X`20`20`20`20`20`20`7D
X`20`20`20`20fseek(fpr,0,0);
X`20`20
X`20`20`20`20while`20(fgets(xfrbuf,sizeof(xfrbuf),fpr))`20`7B
X`20`20`20`20`20`20if`20(*xfrbuf`20==`20'`5Cn')`20break;
X---`201451,1459`20-----
X`20`20`20`20`20`20while`20(!strchr(xfrbuf,'`5Cn')`20`26`26`20fgets(xfrbuf,size
Vof(xfrbuf),fpr));
X`20`20`20`20`20`20`7D
X`20`20`20`20fseek(fpr,0,0);
X+`20`20`20/*`20save`20the`20size`20for`20pre-extending`20the`20output`20file
X+`20`20`20`20*`20saul@hnrc.tufts.edu`207/22/93`20*/
X+`20`20`20`20`20fstat`20(fileno(fpr),`20`26stat_buffer);
X`20`20
X`20`20`20`20while`20(fgets(xfrbuf,sizeof(xfrbuf),fpr))`20`7B
X`20`20`20`20`20`20if`20(*xfrbuf`20==`20'`5Cn')`20break;
X**************
X***`201522,1530
X`20`20`20`20get_post_defaults(`26newsgroups_header,`26distribution_header,`26f
Vollowup_to_header);
X`20`20
X`20`20`20`20mail_add_expiry`20=`20parse_expiry_date(expires_header);
X!`20
X!`20`20`20fpw`20=`20fopen(scrfile,OPEN_WRITE_OPT1,"deq=16","fop=cbt,tef");
X!`20`20`20_ck_open_w(fpw,scrfile);
X`20`20`20`20fprintf(fpw,"Relay-Version:`20%s`20%s`20VAX/VMS;`20site`20%s`5Cn",
V
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20NEWS_VERSION,NEWS_DDATE,news_n
Vode);
X`20`20
X---`201530,1543`20-----
X`20`20`20`20get_post_defaults(`26newsgroups_header,`26distribution_header,`26f
Vollowup_to_header);
X`20`20
X`20`20`20`20mail_add_expiry`20=`20parse_expiry_date(expires_header);
X!`20`20`20`7B
X!`20`20`20`20`20/*`20open`20the`20file`20and`20prextend`20it`20to`20the`20size
V`20of`20existing`20file`20
X!`20`20`20`20`20`20*`20saul@hnrc.tufts.edu`207/22/93`20*/
X!`20`20`20`20`20char*`20alloc_size`5B32`5D;
X!`20`20`20`20`20sprintf(alloc_size,"alq=%d",((stat_buffer.st_size+511)/512));
V
X!`20`20`20`20`20fpw`20=`20fopen(scrfile,OPEN_WRITE_OPT2,alloc_size,"fop=cbt,te
Vf");
X!`20`20`20`20`20_ck_open_w(fpw,scrfile);
X!`20`20`20`20`20`7D
X`20`20`20`20fprintf(fpw,"Relay-Version:`20%s`20%s`20VAX/VMS;`20site`20%s`5Cn",
V
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20NEWS_VERSION,NEWS_DDATE,news_n
Vode);
X`20`20
X**************
X***`201613,1619
X`20`20`20`20`20`20`7D
X`20`20`20`20else`20`7B
X`20`20`20`20`20`20if`20(control_header`20`7C`7C`20always_spool)`20`7B
X!`20`20`20`20`20`20`20posted`20=`20spool_add_item(scrfile,0,msg,stm);
X`20`20`20`20`20`20`20`20`7D
X`20`20`20`20`20`20else`20`7B
X`20`20`20`20`20`20`20`20if`20(!sys_local_accept(newsgroups_header,distribution
V_header))
X---`201626,1632`20-----
X`20`20`20`20`20`20`7D
X`20`20`20`20else`20`7B
X`20`20`20`20`20`20if`20(control_header`20`7C`7C`20always_spool)`20`7B
X!`20`20`20`20`20`20`20posted`20=`20spool_add_item(scrfile,0,msg,stm,POST);
X`20`20`20`20`20`20`20`20`7D
X`20`20`20`20`20`20else`20`7B
X`20`20`20`20`20`20`20`20if`20(!sys_local_accept(newsgroups_header,distribution
V_header))
X**************
X***`201642,1648
X`20`20`20*`20spool_add_item
X`20`20`20*
X`20`20`20*/
X!`20spool_add_item(filename,buf,msg,stm)
X`20`20`20`20char`20*filename;`09/*`20name`20of`20temp`20file`20containing`20ar
Vticle`20(1st`20char`20NUL`20if`20none)`20*/
X`20`20`20`20char`20*buf;`09`09/*`20ptr`20to`20article`20in`20memory`20(only`20
Vused`20if`20no`20temp`20file)`20*/
X`20`20`20`20char`20*msg;`09`09/*`20where`20to`20store`20an`20error`20message
V`20*/
X---`201655,1664`20-----
X`20`20`20*`20spool_add_item
X`20`20`20*
X`20`20`20*/
X!`20
X!`20static`20int`20max_batch`20=`200;
X!`20
X!`20spool_add_item(filename,buf,msg,stm,mode)
X`20`20`20`20char`20*filename;`09/*`20name`20of`20temp`20file`20containing`20ar
Vticle`20(1st`20char`20NUL`20if`20none)`20*/
X`20`20`20`20char`20*buf;`09`09/*`20ptr`20to`20article`20in`20memory`20(only`20
Vused`20if`20no`20temp`20file)`20*/
X`20`20`20`20char`20*msg;`09`09/*`20where`20to`20store`20an`20error`20message
V`20*/
X**************
X***`201647,1652
X`20`20`20`20char`20*buf;`09`09/*`20ptr`20to`20article`20in`20memory`20(only`20
Vused`20if`20no`20temp`20file)`20*/
X`20`20`20`20char`20*msg;`09`09/*`20where`20to`20store`20an`20error`20message
V`20*/
X`20`20`20`20int`20stm;
X`20`20`7B
X`20`20`20`20time_t`20time_now;
X`20`20`20`20char`20xfrbuf`5BIO_SIZE`5D;
X---`201663,1671`20-----
X`20`20`20`20char`20*buf;`09`09/*`20ptr`20to`20article`20in`20memory`20(only`20
Vused`20if`20no`20temp`20file)`20*/
X`20`20`20`20char`20*msg;`09`09/*`20where`20to`20store`20an`20error`20message
V`20*/
X`20`20`20`20int`20stm;
X+`20`20`20int`20mode;`09`09/*`20POST`20-`20we're`20spooling`20a`20posting
X+`20`09`09`09`20`20`20FEED`20-`20we're`20spooling`20a`20newsfeed`20`20-`20used
V`20only`20to
X+`20`09`09`09`20`20`20`20`20`20estimate`20spool`20file`20size`20*/
X`20`20`7B
X`20`20`20`20time_t`20time_now;
X`20`20`20`20char`20*batch_logical`20=`20NULL;
X**************
X***`201649,1654
X`20`20`20`20int`20stm;
X`20`20`7B
X`20`20`20`20time_t`20time_now;
X`20`20`20`20char`20xfrbuf`5BIO_SIZE`5D;
X`20`20`20`20FILE`20*fpr`20=`200;
X`20`20`20`20int`20spool_flush_batch();
X---`201668,1674`20-----
X`20`20`09`09`09`20`20`20`20`20`20estimate`20spool`20file`20size`20*/
X`20`20`7B
X`20`20`20`20time_t`20time_now;
X+`20`20`20char`20*batch_logical`20=`20NULL;
X`20`20`20`20char`20xfrbuf`5BIO_SIZE`5D;
X`20`20`20`20FILE`20*fpr`20=`200;
X`20`20`20`20int`20spool_flush_batch();
X**************
X***`201659,1664
X`20`20`20`20`20`20`20`20return(0);
X`20`20`20`20`20`20`20`20`7D
X`20`20`20`20`20`20`7D
X`20`20
X`20`20`20`20if`20(leave_spool_open)`20`7B
X`20`20`20`20`20`20sys$cantim(spool_flush_batch,`200);
X---`201679,1699`20-----
X`20`20`20`20`20`20`20`20return(0);
X`20`20`20`20`20`20`20`20`7D
X`20`20`20`20`20`20`7D
X+`20`20`20max_batch`20=`200;
X+`20`20`20if`20(mode`20==`20FEED)`20`7B`20/*`20if`20we're`20spooling`20an`20in
Vcoming`20newsfeed,`20calculate
X+`20`09`09`09`20the`20batch`20size`20*/
X+`20`20`20`20`20if`20((batch_logical`20=`20news_getenv("NEWS_NNTP_SERVER_BATCH
V_SIZE",0))`20!=`20NULL)
X+`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20sscanf(batch_logical,"%d",`26max
V_batch);
X+`20`20`20`20`20if`20(max_batch`20==`200)`20max_batch`20=`20NEWS_BATCH_SIZE;
X+`20`20`20`20`20else`20if`20(max_batch`20<`20NEWS_BATCH_SIZE_LOWLIM)
X+`20`20`20`20`20`20`20max_batch`20=`20NEWS_BATCH_SIZE_LOWLIM;
X+`20`20`20`20`20else`20if`20(max_batch`20>`20NEWS_BATCH_SIZE_HIGHLIM)
X+`20`20`20`20`20`20`20max_batch`20=`20NEWS_BATCH_SIZE_HIGHLIM;
X+`20`20`20`20`20`7D
X+`20`20`20else`20`7B`20`20`20`20`20/*`20otherwise,`20we're`20spooling`20a`20si
Vngle`20posting,`20so`20use`20a
X+`20`09`09more`20conservative`20size`20*/
X+`20`20`20`20`20`20`20max_batch`20=`20NEWS_BATCH_SIZE_LOWLIM;
X+`20`20`20`20`20`7D
X`20`20
X`20`20`20`20if`20(leave_spool_open)`20`7B
X`20`20`20`20`20`20sys$cantim(spool_flush_batch,`200);
X**************
X***`201662,1669
X`20`20
X`20`20`20`20if`20(leave_spool_open)`20`7B
X`20`20`20`20`20`20sys$cantim(spool_flush_batch,`200);
X!`20`20`20`20`20if`20(fpb`20`26`26`20(batch_size`20>`20NEWS_BATCH_SIZE))
X!`20`20`20`20`20`20`20spool_flush_batch();
X`20`20`20`20`20`20if`20(!fpb)`20`7B
X`20`20`20`20`20`20`20`20sprintf(batchname,NEWSBATCH,time_str(),getpid(),"");
X`20`20`20`20`20`20`20`20sprintf(batchname_tmp,NEWSBATCH,time_str(),getpid(),"I
VNCOMING_");
X---`201697,1703`20-----
X`20`20
X`20`20`20`20if`20(leave_spool_open)`20`7B
X`20`20`20`20`20`20sys$cantim(spool_flush_batch,`200);
X!`20`20`20`20`20if`20(fpb)`20spool_flush_batch();
X`20`20`20`20`20`20if`20(!fpb)`20`7B
X`20`20`20`20`20`20`20`20char`20alloc_size`5B32`5D;
X`20`20`20`20`20`20`20`20sprintf`20(alloc_size,`20"alq=%d",`20(max_batch+511)/5
V12);
X**************
X***`201665,1670
X`20`20`20`20`20`20if`20(fpb`20`26`26`20(batch_size`20>`20NEWS_BATCH_SIZE))
X`20`20`20`20`20`20`20`20spool_flush_batch();
X`20`20`20`20`20`20if`20(!fpb)`20`7B
X`20`20`20`20`20`20`20`20sprintf(batchname,NEWSBATCH,time_str(),getpid(),"");
X`20`20`20`20`20`20`20`20sprintf(batchname_tmp,NEWSBATCH,time_str(),getpid(),"I
VNCOMING_");
X`20`20`20`20`20`20`20`20fpb`20=`20fopen(batchname_tmp,OPEN_WRITE_OPT2,"fop=cbt
V");
X---`201699,1706`20-----
X`20`20`20`20`20`20sys$cantim(spool_flush_batch,`200);
X`20`20`20`20`20`20if`20(fpb)`20spool_flush_batch();
X`20`20`20`20`20`20if`20(!fpb)`20`7B
X+`20`20`20`20`20`20`20char`20alloc_size`5B32`5D;
X+`20`20`20`20`20`20`20sprintf`20(alloc_size,`20"alq=%d",`20(max_batch+511)/512
V);
X`20`20`20`20`20`20`20`20sprintf(batchname,NEWSBATCH,time_str(),getpid(),"");
X`20`20`20`20`20`20`20`20sprintf(batchname_tmp,NEWSBATCH,time_str(),getpid(),"I
VNCOMING_");
X`20`20`20`20`20`20`20`20fpb`20=`20fopen(batchname_tmp,OPEN_WRITE_OPT2,alloc_si
Vze,"fop=cbt");
X**************
X***`201667,1673
X`20`20`20`20`20`20if`20(!fpb)`20`7B
X`20`20`20`20`20`20`20`20sprintf(batchname,NEWSBATCH,time_str(),getpid(),"");
X`20`20`20`20`20`20`20`20sprintf(batchname_tmp,NEWSBATCH,time_str(),getpid(),"I
VNCOMING_");
X!`20`20`20`20`20`20`20fpb`20=`20fopen(batchname_tmp,OPEN_WRITE_OPT2,"fop=cbt")
V;
X`20`20`20`20`20`20`20`20batch_size`20=`200;
X`20`20`20`20`20`20`20`20`7D
X`20`20`20`20`20`20`7D
X---`201703,1709`20-----
X`20`20`20`20`20`20`20`20sprintf`20(alloc_size,`20"alq=%d",`20(max_batch+511)/5
V12);
X`20`20`20`20`20`20`20`20sprintf(batchname,NEWSBATCH,time_str(),getpid(),"");
X`20`20`20`20`20`20`20`20sprintf(batchname_tmp,NEWSBATCH,time_str(),getpid(),"I
VNCOMING_");
X!`20`20`20`20`20`20`20fpb`20=`20fopen(batchname_tmp,OPEN_WRITE_OPT2,alloc_size
V,"fop=cbt");
X`20`20`20`20`20`20`20`20batch_size`20=`200;
X`20`20`20`20`20`20`20`20`7D
X`20`20`20`20`20`20`7D
X**************
X***`201678,1684
X`20`20`20`20`20`20`20`20`7D
X`20`20
X`20`20`20`20`20`20rename(batchname,batchname_tmp);
X!`20`20`20`20`20if`20(!*batchname`20`7C`7C`20(batch_size`20>`20NEWS_BATCH_SIZE
V)`20`7C`7C
X`20`20`20`20`20`20`20`20`20!(fpb`20=`20fopen(batchname_tmp,OPEN_APPEND_OPT2)))
V`20`7B
X`20`20`20`20`20`20`20`20sprintf(batchname,NEWSBATCH,time_str(),getpid(),"");
X`20`20`20`20`20`20`20`20sprintf(batchname_tmp,NEWSBATCH,time_str(),getpid(),"I
VNCOMING_");
X---`201714,1720`20-----
X`20`20`20`20`20`20`20`20`7D
X`20`20
X`20`20`20`20`20`20rename(batchname,batchname_tmp);
X!`20`20`20`20`20if`20(!*batchname`20`7C`7C`20(batch_size`20>`20max_batch)`20
V`7C`7C
X`20`20`20`20`20`20`20`20`20!(fpb`20=`20fopen(batchname_tmp,OPEN_APPEND_OPT2)))
V`20`7B
X`20`20`20`20`20`20`20`20char`20alloc_size`5B32`5D;
X`20`20`20`20`20`20`20`20sprintf`20(alloc_size,`20"alq=%d",`20(max_batch+511)/5
V12);
X**************
X***`201680,1685
X`20`20`20`20`20`20rename(batchname,batchname_tmp);
X`20`20`20`20`20`20if`20(!*batchname`20`7C`7C`20(batch_size`20>`20NEWS_BATCH_SI
VZE)`20`7C`7C
X`20`20`20`20`20`20`20`20`20!(fpb`20=`20fopen(batchname_tmp,OPEN_APPEND_OPT2)))
V`20`7B
X`20`20`20`20`20`20`20`20sprintf(batchname,NEWSBATCH,time_str(),getpid(),"");
X`20`20`20`20`20`20`20`20sprintf(batchname_tmp,NEWSBATCH,time_str(),getpid(),"I
VNCOMING_");
X`20`20`20`20`20`20`20`20fpb`20=`20fopen(batchname_tmp,OPEN_WRITE_OPT2);
X---`201716,1723`20-----
X`20`20`20`20`20`20rename(batchname,batchname_tmp);
X`20`20`20`20`20`20if`20(!*batchname`20`7C`7C`20(batch_size`20>`20max_batch)`20
V`7C`7C
X`20`20`20`20`20`20`20`20`20!(fpb`20=`20fopen(batchname_tmp,OPEN_APPEND_OPT2)))
V`20`7B
X+`20`20`20`20`20`20`20char`20alloc_size`5B32`5D;
X+`20`20`20`20`20`20`20sprintf`20(alloc_size,`20"alq=%d",`20(max_batch+511)/512
V);
X`20`20`20`20`20`20`20`20sprintf(batchname,NEWSBATCH,time_str(),getpid(),"");
X`20`20`20`20`20`20`20`20sprintf(batchname_tmp,NEWSBATCH,time_str(),getpid(),"I
VNCOMING_");
X`20`20`20`20`20`20`20`20fpb`20=`20fopen(batchname_tmp,OPEN_WRITE_OPT2,alloc_si
Vze,"fop=cbt");
X**************
X***`201682,1688
X`20`20`20`20`20`20`20`20`20!(fpb`20=`20fopen(batchname_tmp,OPEN_APPEND_OPT2)))
V`20`7B
X`20`20`20`20`20`20`20`20sprintf(batchname,NEWSBATCH,time_str(),getpid(),"");
X`20`20`20`20`20`20`20`20sprintf(batchname_tmp,NEWSBATCH,time_str(),getpid(),"I
VNCOMING_");
X!`20`20`20`20`20`20`20fpb`20=`20fopen(batchname_tmp,OPEN_WRITE_OPT2);
X`20`20`20`20`20`20`20`20batch_size`20=`200;
X`20`20`20`20`20`20`20`20`7D
X`20`20`20`20`20`20`7D
X---`201720,1726`20-----
X`20`20`20`20`20`20`20`20sprintf`20(alloc_size,`20"alq=%d",`20(max_batch+511)/5
V12);
X`20`20`20`20`20`20`20`20sprintf(batchname,NEWSBATCH,time_str(),getpid(),"");
X`20`20`20`20`20`20`20`20sprintf(batchname_tmp,NEWSBATCH,time_str(),getpid(),"I
VNCOMING_");
X!`20`20`20`20`20`20`20fpb`20=`20fopen(batchname_tmp,OPEN_WRITE_OPT2,alloc_size
V,"fop=cbt");
X`20`20`20`20`20`20`20`20batch_size`20=`200;
X`20`20`20`20`20`20`20`20`7D
X`20`20`20`20`20`20`7D
X**************
X***`201705,1712
X`20`20`20`20`20`20sys$setimr(0,`20daytim,`20spool_flush_batch,`20spool_flush_b
Vatch,`200);
X`20`20`20`20`20`20`7D
X`20`20`20`20else`20`7B
X!`20`20`20`20`20fclose(fpb);
X!`20`20`20`20`20rename(batchname_tmp,batchname);
X`20`20`20`20`20`20`7D
X`20`20`20`20strcpy(msg,"Item`20successfully`20spooled.");
X`20`20`20`20return(1);
X---`201743,1749`20-----
X`20`20`20`20`20`20sys$setimr(0,`20daytim,`20spool_flush_batch,`20spool_flush_b
Vatch,`200);
X`20`20`20`20`20`20`7D
X`20`20`20`20else`20`7B
X!`20`20`20`20`20spool_flush_batch();
X`20`20`20`20`20`20`7D
X`20`20`20`20strcpy(msg,"Item`20successfully`20spooled.");
X`20`20`20`20return(1);
X**************
X***`201714,1720
X`20`20
X`20`20spool_flush_batch()
X`20`20`7B
X!`20`20`20`20`20if`20(fpb)`20`7B
X`20`20`20`20`20`20`20`20if`20(fclose(fpb))`20_ck_close(fpb);
X`20`20`20`20`20`20`20`20rename(batchname_tmp,batchname);
X`20`20`20`20`20`20`20`20fpb`20=`20NULL;
X---`201751,1772`20-----
X`20`20
X`20`20spool_flush_batch()
X`20`20`7B
X!`20`20`20int`20always_close;
X!`20`20`20char`20*noflush;
X!`20
X!`20`20`20if`20(noflush`20=`20news_getenv("NEWS_NNTP_SERVER_BATCH_FLUSH_DISABL
VE",0))`20`7B
X!`20`20`20`20`20if`20(isdigit(*noflush))
X!`20`20`20`20`20`20`20always_close`20=`20(1`20`26`20strtol(noflush,`20NULL,`20
V0));
X!`20`20`20`20`20else`20`7B
X!`20`20`20`20`20`20`20noflush`5B1`5D`20=`20'`5C0';
X!`20`20`20`20`20`20`20noflush`5B0`5D`20=`20tolower(noflush`5B0`5D);
X!`20`20`20`20`20`20`20always_close`20=`20strspn(noflush,`20"ty");
X!`20`20`20`20`20`20`20`7D
X!`20`20`20`20`20`7D
X!`20`20`20else`20always_close`20=`20!leave_spool_open;
X!`20
X!`20`20`20if`20(fpb)`20`7B
X!`20`20`20`20`20if`20(always_close`20`7C`7C`20batch_size`20>=`20max_batch)`20
V`7B
X`20`20`20`20`20`20`20`20if`20(fclose(fpb))`20_ck_close(fpb);
X`20`20`20`20`20`20`20`20rename(batchname_tmp,batchname);
X`20`20`20`20`20`20`20`20fpb`20=`20NULL;
X**************
X***`201719,1724
X`20`20`20`20`20`20`20`20rename(batchname_tmp,batchname);
X`20`20`20`20`20`20`20`20fpb`20=`20NULL;
X`20`20`20`20`20`20`20`20`7D
X`20`20`7D
X`20`20`0C
X`20`20/*
X---`201771,1781`20-----
X`20`20`20`20`20`20`20`20rename(batchname_tmp,batchname);
X`20`20`20`20`20`20`20`20fpb`20=`20NULL;
X`20`20`20`20`20`20`20`20`7D
X+`20`20`20`20`20else`20`7B
X+`20`20`20`20`20`20`20fflush(fpb);
X+`20`20`20`20`20`20`20fsync(fileno(fpb));
X+`20`20`20`20`20`20`20`7D
X+`20`20`20`20`20`7D
X`20`20`7D
X`20`20`0C
X`20`20/*
X**************
X***`201744,1750
X`20`20`20`20`20`20`7D
X`20`20`20`20else`20*filename`20=`20'`5C0';
X`20`20`20`20if`20(mode`20==`20POST)`20retval`20=`20post_add_item(filename,buf,
Vmsgbuf,stm);
X!`20`20`20else`20retval`20=`20spool_add_item(filename,buf,msgbuf,stm);
X`20`20`20`20if`20(*filename)`20while`20(!delete(filename));
X`20`20`20`20return(retval);
X`20`20`7D
X---`201801,1807`20-----
X`20`20`20`20`20`20`7D
X`20`20`20`20else`20*filename`20=`20'`5C0';
X`20`20`20`20if`20(mode`20==`20POST)`20retval`20=`20post_add_item(filename,buf,
Vmsgbuf,stm);
X!`20`20`20else`20retval`20=`20spool_add_item(filename,buf,msgbuf,stm,FEED);
X`20`20`20`20if`20(*filename)`20while`20(!delete(filename));
X`20`20`20`20return(retval);
X`20`20`7D
X**************
X***`203781,3787
X`20`20
X`20`20server_shut()
X`20`20`7B
X!`20`20`20if`20(leave_spool_open)`20spool_flush_batch();
X`20`20`20`20if`20(grp_file_open)`20`20`7B`20sys_close(`26grpfab);`20`20grp_fil
Ve_open`20=`200;`20`7D
X`20`20`20`20if`20(itm_file_open)`20`20`7B`20sys_close(`26itmfab);`20`20itm_fil
Ve_open`20=`200;`20`7D
X`20`20`20`20if`20(hist_file_open)`20`7B`20sys_close(`26histfab);`20hist_file_o
Vpen`20=`200;`20`7D
X---`203838,3844`20-----
X`20`20
X`20`20server_shut()
X`20`20`7B
X!`20`20`20if`20(leave_spool_open)`20`7B`20max_batch`20=`200;`20spool_flush_bat
Vch();`20`7D
X`20`20`20`20if`20(grp_file_open)`20`20`7B`20sys_close(`26grpfab);`20`20grp_fil
Ve_open`20=`200;`20`7D
X`20`20`20`20if`20(itm_file_open)`20`20`7B`20sys_close(`26itmfab);`20`20itm_fil
Ve_open`20=`200;`20`7D
X`20`20`20`20if`20(hist_file_open)`20`7B`20sys_close(`26histfab);`20hist_file_o
Vpen`20=`200;`20`7D
X***`20newssite.h
X---`20newssite_new.h
X**************
X***`2030,37
X`20`20#define`20GRP_TIME`20`20`20`20`20`20`20`2060
X`20`20
X`20`20/*
X!`20`20*`20`20NEWS_BATCH_SIZE
X!`20`20*`20`20This`20is`20the`20maximum`20size`20of`20news`20batch`20files`20(
Vin`20bytes`20-`20not`20blocks)
X`20`20`20*/
X`20`20
X`20`20#define`20NEWS_BATCH_SIZE`20250000
X---`2030,38`20-----
X`20`20#define`20GRP_TIME`20`20`20`20`20`20`20`2060
X`20`20
X`20`20/*
X!`20`20*`20`20NEWSBATCH
X!`20`20*`20`20This`20is`20the`20template`20used`20by`20the`20NNTP`20server`20t
Vo`20create`20file
X!`20`20*`20`20names`20for`20incoming`20batches.
X`20`20`20*/
X`20`20
X`20`20#ifndef`20NEWSBATCH
X**************
X***`2034,40
X`20`20`20*`20`20This`20is`20the`20maximum`20size`20of`20news`20batch`20files
V`20(in`20bytes`20-`20not`20blocks)
X`20`20`20*/
X`20`20
X!`20#define`20NEWS_BATCH_SIZE`20250000
X`20`20
X`20`20/*
X`20`20`20*`20`20RECHECK_TIMER
X---`2035,68`20-----
X`20`20`20*`20`20names`20for`20incoming`20batches.
X`20`20`20*/
X`20`20
X!`20#ifndef`20NEWSBATCH
X!`20#define`20NEWSBATCH`20`20`20`20"NEWS_MANAGER:NNTP_%s_%X.%sBATCH"`20`20`20
V`20`20`20`20`20`20`20/*`20file`20names`20*/
X!`20#endif
X!`20/*
X!`20`20*`20`20NEWS_BATCH_SIZE
X!`20`20*`20`20This`20is`20the`20default`20maximum`20size`20of`20news`20batch
V`20files`20(in`20bytes`20-
X!`20`20*`20`20not`20blocks).`20`20This`20value`20may`20be`20overridden`20via
V`20the`20logical`20name
X!`20`20*`20`20NEWS_NNTP_SERVER_BATCH_SIZE.
X!`20`20*`20`20NEWS_BATCH_SIZE_LOWLIM
X!`20`20*`20`20This`20is`20the`20lowest`20value`20that`20can`20be`20used`20as
V`20a`20maximum`20batch`20file`20size,
X!`20`20*`20`20regardless`20of`20the`20value`20specified`20by`20the`20NEWS_NNTP
V_SERVER_BATCH_SIZE
X!`20`20*`20`20logical`20name.`20`20It`20is`20also`20the`20maximum`20batch`20fi
Vle`20size`20used`20when`20spooling
X!`20`20*`20`20single`20postings.
X!`20`20*`20`20NEWS_BATCH_SIZE_HIGHLIM
X!`20`20*`20`20This`20is`20the`20highest`20value`20that`20can`20be`20used`20as
V`20a`20maximum`20batch`20file`20size,
X!`20`20*`20`20regardless`20of`20the`20value`20specified`20by`20the`20News_NNTP
V_Server_Batch_Size
X!`20`20*`20`20logical`20name.
X!`20`20*/
X!`20
X!`20#ifndef`20NEWS_BATCH_SIZE
X!`20#define`20NEWS_BATCH_SIZE`20(500*512)
X!`20#endif
X!`20#ifndef`20NEWS_BATCH_SIZE_LOWLIM
X!`20#define`20NEWS_BATCH_SIZE_LOWLIM`20(10*512)
X!`20#endif
X!`20#ifndef`20NEWS_BATCH_SIZE_HIGHLIM
X!`20#define`20NEWS_BATCH_SIZE_HIGHLIM`20(10000*512)
X!`20#endif
X`20`20
X`20`20/*
X`20`20`20*`20`20RECHECK_TIMER
X***`20patchlist.h;-1
X---`20patchlist.h
X**************
X***`201,1
X`20`20=+=+=`20End`20=+=+=
X---`201,2`20-----
X+`20940524_nntp_server.c!bailey@genetics.upenn.edu
X`20`20=+=+=`20End`20=+=+=
$ call unpack 940524_NNTP_SERVER.PATCH -
 1677919405 "FORMAT STREAM_LF;CARRIAGE_CONTROL CARRIAGE_RETURN" 38 1 1
$ v=f$verify(v)
$ exit
