nestor patch #02 (high priority) Part 01/01

Edwin Kremer edwin at cs.ruu.nl
Wed Jun 12 20:08:36 AEST 1991


Here is a SHARred high-priority patch for the  ``nestor''  program.   It
fixes a couple of bugs (one serious) and has some cosmetic improvements.
  If  you  are  currently using nestor 1.0PL1 please apply this patch to
upgrade from 1.0PL1 to 1.0PL2.  If  you're  unfamiliar  with  nestor  or
running  a  pre-1.0PL1  version  of  nestor, I encourage you to pickup a
complete new release from our archive -- see details below.


  We, Computer Science department, Utrecht University,  are  running  an
anonymous  FTP  server  on  one  of  our systems. In addition to the FTP
service we're also running a mail  server,  for  those  of  you  without
direct Internet access.


--> How to get 'nestor' via anonymous FTP:

	Site:		archive.cs.ruu.nl  [131.211.80.5]
	Login:		"anonymous" or "ftp"
	Password:	your own email address (you at your_domain)
	File:		UNIX/nestor.tar.Z


--> How to get 'nestor' via e-mail from our mail-server:

    NOTE: In the following I have assumed that your mail address is
	  "fred_flintstone at stone.age.edu"; of course you must substitute
	  your own address for this.
	  ** PLEASE USE VALID DOMAIN ADDRESSES. DO NOT USE ADDRESSES **
	  ** WITH ! and @ MIXED !!!! BITNETTERS USE USER at HOST.BITNET **


    Send the following message to
		mail-server at cs.ruu.nl
    or the old-fashioned path alternative
		uunet!mcsun!hp4nl!ruuinf!mail-server


      begin
      path fred_flintstone at stone.age.edu (SUBSTITUTE *YOUR* ADDRESS)
      send UNIX/nestor.tar.Z
      end


The path command can be deleted if we receive a valid from address in your
message. If this is the first time you use our mail server, we suggest you
first issue the request:

      send HELP


  A complete "ls-lR" listing of the archive is  kept  in  the  top-level
directory, it will be updated every night. To get it, issue the command:

     send ls-lR.Z



  That's all for now. If you encounter problems using  the  FTP  service
and/or the mail-server, feel free to drop me a line (by e-mail, please).


=================================CUT===HERE===================================
#!/bin/sh
# This is a shell archive (shar 3.32)
# made 06/12/1991 09:44 UTC by edwin at cs.ruu.nl
#
# existing files WILL be overwritten
#
# This shar contains:
# length  mode       name
# ------ ---------- ------------------------------------------
#  11667 -rw-r----- Patch02
#
if touch 2>&1 | fgrep 'amc' > /dev/null
 then TOUCH=touch
 else TOUCH=true
fi
# ============= Patch02 ==============
echo "x - extracting Patch02 (Text)"
sed 's/^X//' << 'SHAR_EOF' > Patch02 &&
X*** ../1.0PL1/Changes	Mon Jun  3 15:00:00 1991
X--- Changes	Wed Jun 12 11:30:14 1991
X***************
X*** 60,62 ****
X--- 60,106 ----
X  From:	EHK
X  Added:	Patch #1 [nestor.c scan.c]
X  
X+ 
X+ Nestor -- 1.0 PL2
X+ =================
X+ Patch #2 was posted in "news.software.nntp" and  "comp.sources.bugs"  on
X+ June 12, 1991.
X+ 
X+ Topic:	Typo in the manual page and change in presentation of usage information
X+ From:	Bart Muyzer <bartm at cv.ruu.nl>
X+ Added:	Patch #2 [nestor.1 nestor.c]
X+ 
X+ Topic:	Also install the manual page during a `make install'
X+ From:	Bart Muyzer <bartm at cv.ruu.nl>
X+ Added:	Patch #2 [Makefile README]
X+ 
X+ Topic:	nestor memory/segmentation faults on certain input lines
X+ From:	Nike Horton <horton at cse.ogi.edu>
X+ Added:	Patch #2 [nestor.h scan.c]
X+ 
X+ Topic:	current time was always reported as 'statistics end date'
X+ From:	EHK   [on request from Ian Dickinson <vato at warwick.ac.uk>]
X+ Added:	Patch #2 [nestor.h nestor.c]
X+ 
X+ 	Even on old logfiles, the current time was reported as  end  time
X+ 	of  the  statistics  --  this is not what you want. So, at EOF we
X+ 	want to remember the last nntp/nntpxmit syslog  entry.   Since  I
X+ 	don't  want  to  strcpy()  every  entry,  I  decided  to  use two
X+ 	alternating buffers while reading the syslog  file.   This  makes
X+ 	sure that we always still have the last entry of interest at EOF.
X+ 
X+ Topic:	'nntplink' not fully supported -- now documented
X+ From:	EHK   [on report by John Palkovic <palkovic at linac.fnal.gov>]
X+ Added:	Patch #2 [nestor.1]
X+ 
X+ 	Besides 'nntpxmit', there's  another  program  to  take  care  of
X+ 	Usenet  news  transmissions: NNTPLINK.  Although nestor correctly
X+ 	picks up the statistics that are logged  by  'nntplink',  verbose
X+ 	mode ('-v') will show that it doesn't like many of the additional
X+ 	'nntplink' log entries. This is now documented in the manual page
X+ 	in the "CAVEATS" section.
X+ 	  I  hope  to better support 'nntplink' in future versions, but I
X+ 	have to dig into 'nntplink'  first  in  order  to  find  out  its
X+ 	perculiarities.
X+ 
X+ 
X
X*** ../1.0PL1/Makefile	Mon Jun  3 15:00:00 1991
X--- Makefile	Wed Jun 12 10:39:09 1991
X***************
X*** 1,8 ****
X  #
X  #	Makefile	1.1	04-Apr-91	EHK
X  #
X  
X! BINDIR	=  /usr/local/bin
X  CC	= cc
X  CFLAGS	= -O
X  LDFLAGS	= -s
X--- 1,10 ----
X  #
X  #	Makefile	1.1	04-Apr-91	EHK
X+ #	Makefile	1.2	12-Jun-91	EHK	Also install man page
X  #
X  
X! BINDIR	= /usr/local/bin
X! MANDIR	= /usr/local/man/man1
X  CC	= cc
X  CFLAGS	= -O
X  LDFLAGS	= -s
X***************
X*** 18,26 ****
X  
X  $(OBJFILES)	: defs.h nestor.h
X  
X! install		: nestor
X  		cp $? $(BINDIR)
X! 		chmod 711 $(BINDIR)/$?
X  
X  tags		:
X  		ctags -t -w $(SRCFILES)
X--- 20,34 ----
X  
X  $(OBJFILES)	: defs.h nestor.h
X  
X! install		: inst_prg inst_man
X! 
X! inst_prg	: nestor
X  		cp $? $(BINDIR)
X! 		-chmod 711 $(BINDIR)/$?
X! 
X! inst_man	: nestor.1
X! 		cp $? $(MANDIR)
X! 		-chmod 644 $(MANDIR)/$?
X  
X  tags		:
X  		ctags -t -w $(SRCFILES)
X
X*** ../1.0PL1/README	Mon Jun  3 15:00:00 1991
X--- README	Wed Jun 12 10:41:29 1991
X***************
X*** 57,64 ****
X  HOW TO INSTALL
X  ==============
X  1) Take a quick look at the "Makefile". You might want to change the
X!    value of "BINDIR". (you might even be unhappy with CFLAGS and/or
X!    LDFLAGS -- change them at will).
X  
X  2) Make a site specific copy of the "defs.h.dist" file by doing:
X  
X--- 57,64 ----
X  HOW TO INSTALL
X  ==============
X  1) Take a quick look at the "Makefile". You might want to change the
X!    values of "BINDIR" and "MANDIR".  (you might even be unhappy with
X!    CFLAGS and/or LDFLAGS -- change them at will).
X  
X  2) Make a site specific copy of the "defs.h.dist" file by doing:
X  
X
X*** ../1.0PL1/nestor.1	Mon Jun  3 15:00:00 1991
X--- nestor.1	Wed Jun 12 10:40:22 1991
X***************
X*** 1,15 ****
X! .TH NESTOR 1L "RUU-CS"
X  .SH NAME
X  nestor \- NEws STatistics ORganizer
X  .SH SYNOPSIS
X! \fBnestor\fP  [ \fI-ainorvxV\fP ]  [ filename ]
X  .SH DESCRIPTION
X  \fBNestor\fP parses and analyses the statistics as produced by the
X  \fINNTP\fP Usenet News Transfer Agent. Statistics from both sides of
X  the NNTP protocol, receiver (nntpd) and transmitter (nntpxmit), are
X  examined.
X  .PP
X! After scanning through the logfiles, \fBnestor\fP will generete some nice
X  reports on what it found. The reports are printed on \fIstdout\fP; diagnostic
X  error messages are printed on \fIstderr\fP.
X  .PP
X--- 1,15 ----
X! .TH NESTOR 1L "RUU-CS Version 1.0PL2"
X  .SH NAME
X  nestor \- NEws STatistics ORganizer
X  .SH SYNOPSIS
X! \fBnestor\fP  \fI-ainorvxV\fP  [ filename ]
X  .SH DESCRIPTION
X  \fBNestor\fP parses and analyses the statistics as produced by the
X  \fINNTP\fP Usenet News Transfer Agent. Statistics from both sides of
X  the NNTP protocol, receiver (nntpd) and transmitter (nntpxmit), are
X  examined.
X  .PP
X! After scanning through the logfiles, \fBnestor\fP will generate some nice
X  reports on what it found. The reports are printed on \fIstdout\fP; diagnostic
X  error messages are printed on \fIstderr\fP.
X  .PP
X***************
X*** 66,71 ****
X--- 66,81 ----
X  .SH CAVEATS
X  This program is based on the statistics produced by the NNTP
X  version 1.5.11 package; note that this may change in the future.
X+ .sp
X+ Besides 'nntpxmit', there's another program to handle Usenet news
X+ transmissions: \fInntplink\fP. Although nestor correctly picks up the
X+ statistics that are logged by \fInntplink\fP, verbose mode ('-v') will
X+ show that it doesn't like many of the additional \fInntplink\fP log entries.
X+ .br
X+ Also, with \fInntplink\fP, the extreme values in the 'elapsed time' column
X+ in the the 'Outgoing Articles' report section ('-o') might cause some
X+ confusion: this is because \fInntplink\fP keeps the connection open even
X+ after a short period (a couple of minutes) of idle time.
X  .SH "SEE ALSO"
X  nntpd(8), nntpxmit(8), syslog(3)
X  .br
X
X*** ../1.0PL1/nestor.c	Mon Jun  3 15:00:00 1991
X--- nestor.c	Tue Jun 11 21:18:44 1991
X***************
X*** 73,79 ****
X  Usage(prog)
X  	char	*prog;
X  {
X!    fprintf(stderr, "Usage: %s   [ -ainorvxV ]   [ filename ]\n", prog);
X     fprintf(stderr, "\
X        -i  report Incoming statistics\n\
X        -o  report Outgoing statistics only\n\
X--- 73,79 ----
X  Usage(prog)
X  	char	*prog;
X  {
X!    fprintf(stderr, "Usage: %s   -ainorvxV   [ filename ]\n", prog);
X     fprintf(stderr, "\
X        -i  report Incoming statistics\n\
X        -o  report Outgoing statistics only\n\
X***************
X*** 99,110 ****
X  	extern int	optind;		/* for getopt() support		*/
X  	register FILE	*logfp;		/* open logfile filepointer	*/
X  	register char	*service_match;	/* service name  in logentry	*/	
X  	register int	ch,		/* options parsing character	*/
X  			n_input_lines;	/* number of lines read in log	*/
X  	char		*logfile;	/* logfile we're parsing	*/
X- 	long		now;		/* the current time		*/
X  
X! 	opts = num_nntp_hosts = n_input_lines = 0;
X  	service_match = start_date = NIL_CHAR;
X  
X  	while ( (ch = getopt(argc, argv, "ainorvxV")) != EOF )
X--- 99,110 ----
X  	extern int	optind;		/* for getopt() support		*/
X  	register FILE	*logfp;		/* open logfile filepointer	*/
X  	register char	*service_match;	/* service name  in logentry	*/	
X+ 	register short	buf_idx;	/* buffer index; only be 0 or 1	*/
X  	register int	ch,		/* options parsing character	*/
X  			n_input_lines;	/* number of lines read in log	*/
X  	char		*logfile;	/* logfile we're parsing	*/
X  
X! 	opts = num_nntp_hosts = n_input_lines = buf_idx = 0;
X  	service_match = start_date = NIL_CHAR;
X  
X  	while ( (ch = getopt(argc, argv, "ainorvxV")) != EOF )
X***************
X*** 153,167 ****
X  		if ( (logfp = fopen(logfile, "r")) == NULL )
X  			perror("fopen_logfile"), exit(-1);
X  
X! 	while ( fgets(logbuff, BUFSIZ, logfp) != NULL )
X  	{
X! 		service_match = (char *) strstr(logbuff, " nntp");
X  		if ( service_match != NIL_CHAR )
X  		{
X  			if ( n_input_lines == 0 )
X! 				start_date = (char *) StrSave(logbuff);
X! 			if ( ScanLine(logbuff, service_match) != -1 )
X  				++n_input_lines;
X  		}
X  	}
X  
X--- 153,169 ----
X  		if ( (logfp = fopen(logfile, "r")) == NULL )
X  			perror("fopen_logfile"), exit(-1);
X  
X! 	while ( fgets(logbuff[buf_idx], BUFSIZ, logfp) != NULL )
X  	{
X! 		service_match = (char *) strstr(logbuff[buf_idx], " nntp");
X  		if ( service_match != NIL_CHAR )
X  		{
X  			if ( n_input_lines == 0 )
X! 				start_date = (char *) StrSave(logbuff[buf_idx]);
X! 			if ( ScanLine(logbuff[buf_idx], service_match) != -1 )
X  				++n_input_lines;
X+ 
X+ 			buf_idx ^= 0x01;
X  		}
X  	}
X  
X***************
X*** 174,185 ****
X  
X  	if ( start_date )
X  	{
X- 		time(&now);
X  		printf("\n\
X     -- Statistics (%d lines) from %15.15s till %15.15s --\n",
X  			n_input_lines,
X  			start_date,
X! 			ctime(&now) + 4);
X  	}
X  
X  	if ( opts & OPT_INCOMING )
X--- 176,186 ----
X  
X  	if ( start_date )
X  	{
X  		printf("\n\
X     -- Statistics (%d lines) from %15.15s till %15.15s --\n",
X  			n_input_lines,
X  			start_date,
X! 			logbuff[buf_idx]);
X  	}
X  
X  	if ( opts & OPT_INCOMING )
X
X*** ../1.0PL1/nestor.h	Mon Jun  3 15:00:00 1991
X--- nestor.h	Tue Jun 11 21:17:46 1991
X***************
X*** 2,7 ****
X--- 2,9 ----
X   *	nestor.h	1.0	18-Mar-91	EHK
X   *	nestor.h	1.1	26-Mar-91	EHK	Changed data structure
X   *	nestor.h	1.2	29-Mar-91	EHK	Added program options
X+  *	nestor.h	1.3	10-Jun-91	EHK	BUFSIZ must be defined
X+  *	nestor.h	1.4	11-Jun-91	EHK	Use two buffers now
X   */
X  
X  #include <stdio.h>
X***************
X*** 25,30 ****
X--- 27,36 ----
X  #	include <strings.h>
X  #endif	/* SYSV || hpux	*/
X  
X+ #ifndef BUFSIZ
X+ #	define BUFSIZ	1024
X+ #endif /* BUFSIZ */
X+ 
X  /*
X   *	Commonly used macro definitions
X   */
X***************
X*** 124,129 ****
X  
X  EXTERN nntp_t	nntps[NUM_NNTP_HOSTS];	/* hosts statistics array	*/
X  
X! EXTERN char	*logbuff[BUFSIZ],	/* buffer for a syslog entry	*/
X  		*start_date;		/* date/time of logging start	*/
X  
X--- 130,135 ----
X  
X  EXTERN nntp_t	nntps[NUM_NNTP_HOSTS];	/* hosts statistics array	*/
X  
X! EXTERN char	*logbuff[2][BUFSIZ],	/* buffers for syslog entries	*/
X  		*start_date;		/* date/time of logging start	*/
X  
X
X*** ../1.0PL1/patchlevel.h	Mon Jun  3 15:00:00 1991
X--- patchlevel.h	Tue Jun 11 21:37:50 1991
X***************
X*** 13,20 ****
X   *	23-May-91 EHK	Fixed stupid bug in supplied 'strstr'	0.5-beta PL0
X   *	23-May-91 EHK	Prepared UseNet community release	1.0 PL0
X   *	03-Jun-91 EHK	Various problem fixes; better parsing	1.0 PL1
X   *
X   *---------------------------------------------------------------------------
X   */
X  
X! #define PATCHLEVEL	1
X--- 13,21 ----
X   *	23-May-91 EHK	Fixed stupid bug in supplied 'strstr'	0.5-beta PL0
X   *	23-May-91 EHK	Prepared UseNet community release	1.0 PL0
X   *	03-Jun-91 EHK	Various problem fixes; better parsing	1.0 PL1
X+  *	11-Jun-91 EHK	Safer mem alloc; real-logging period 	1.0 PL2
X   *
X   *---------------------------------------------------------------------------
X   */
X  
X! #define PATCHLEVEL	2
X
X*** ../1.0PL1/scan.c	Mon Jun  3 15:00:00 1991
X--- scan.c	Mon Jun 10 08:50:52 1991
X***************
X*** 2,7 ****
X--- 2,8 ----
X   *	scan.c	1.0	18-Mar-91 EHK
X   *	scan.c	1.01	09-Apr-91 EHK	Grrmmbbll, Ultrix syslog format
X   *	scan.c	1.02	03-Jun-91 EHK	mod. algorithm to filter garbage better
X+  *	scan.c	1.03	10-Jun-91 EHK	memory faults; increase some buffers
X   */
X  
X  #include "nestor.h"
X***************
X*** 39,46 ****
X  	register char	*cp;
X  	register nntp_t	*np;
X  	register int	key_lookup_result;
X! 	char		hostname[HOSTLEN],
X! 			keyword[KEYWLEN];
X  
X  	if ( (cp = index(service_match, ':')) == NIL_CHAR )	/* -1-	*/
X  		return( -1 );
X--- 40,47 ----
X  	register char	*cp;
X  	register nntp_t	*np;
X  	register int	key_lookup_result;
X! 	char		hostname[BUFSIZ],
X! 			keyword[BUFSIZ];
X  
X  	if ( (cp = index(service_match, ':')) == NIL_CHAR )	/* -1-	*/
X  		return( -1 );
X
SHAR_EOF
$TOUCH -am 0612113291 Patch02 &&
chmod 0640 Patch02 ||
echo "restore of Patch02 failed"
set `wc -c Patch02`;Wc_c=$1
if test "$Wc_c" != "11667"; then
	echo original size 11667, current size $Wc_c
fi
exit 0


-- 
Edwin Kremer, systems and network administrator.  [NIC-Whois handle: EHK3]
     Department of Computer Science,  Utrecht University,  The Netherlands
     Email: edwin at cs.ruu.nl  | UUCP to: ...!uunet!mcsun!hp4nl!ruuinf!edwin



More information about the Comp.sources.bugs mailing list