[net.sources] rn version 4.1, part 8 of 8

lwall@sdcrdcf.UUCP (Larry Wall) (10/13/84)

#! /bin/sh

# Make a new directory for the rn sources, cd to it, and run kits 1 thru 8 
# through sh.  When all 8 kits have been run, read README.

echo "This is rn kit 8 (of 8).  If kit 8 is complete, the line"
echo '"'"End of kit 8 (of 8)"'" will echo at the end.'
echo ""
export PATH || (echo "You didn't use sh, you clunch." ; kill $$)
echo Extracting mbox.saver.SH
cat >mbox.saver.SH <<'!STUFFY!FUNK!'
case $CONFIG in
    '') . config.sh ;;
esac
echo "Extracting mbox.saver (with variable substitutions)"
$spitshell >mbox.saver <<!GROK!THIS!
$startsh
# $Header: mbox.saver.SH,v 4.1 84/09/24 12:00:56 lwall Exp $
# 
# $Log:	mbox.saver.SH,v $
# Revision 4.1  84/09/24  12:00:56  lwall
# Real baseline.
# 
# Revision 4.0.1.2  84/09/12  15:21:16  lwall
# Check for sh interpretation.
# 
# Revision 4.0.1.1  84/09/04  15:09:34  lwall
# Fixed for Eunice "symbolic" links.
# 
# Revision 4.0  84/09/04  09:51:29  lwall
# Baseline for netwide release
# 
# 
#	Arguments:
#	1 Full name of article (%A)
#	2 Public news spool directory (%P)
#	3 Directory of current newsgroup (%c)
#	4 Article number (%a)
#	5 Where in article to start (%B)
#	6 Newsgroup name (%C)
#	7 Save destination (%b)
#	8 First line of message, normally From...
#
export PATH || (echo "OOPS, this isn't sh.  Desperation time.  I will feed myself to sh."; sh \$0; kill \$\$)

( $echo "\$8"
  $echo "Article \$4 of \$6:"
  $tail +\$5c \$1 | $sed "s/^From/>From/"
  $echo ""
  $echo "" ) >> \$7
!GROK!THIS!
$eunicefix mbox.saver
chmod 755 mbox.saver
!STUFFY!FUNK!
echo Extracting norm.saver.SH
cat >norm.saver.SH <<'!STUFFY!FUNK!'
case $CONFIG in
    '') . config.sh ;;
esac
echo "Extracting norm.saver (with variable substitutions)"
$spitshell >norm.saver <<!GROK!THIS!
$startsh
# $Header: norm.saver.SH,v 4.1 84/09/24 12:03:58 lwall Exp $
# 
# $Log:	norm.saver.SH,v $
# Revision 4.1  84/09/24  12:03:58  lwall
# Real baseline.
# 
# Revision 4.0.1.3  84/09/12  15:24:45  lwall
# Check for sh interpretation.
# 
# Revision 4.0.1.2  84/09/06  11:33:39  lwall
# Fixed last fix.
# 
# Revision 4.0.1.1  84/09/04  15:10:13  lwall
# Fixed for Eunice "symbolic" links.
# 
# Revision 4.0  84/09/04  09:51:55  lwall
# Baseline for netwide release
# 
# 
#	Arguments:
#	1 Full name of article (%A)
#	2 Public news spool directory (%P)
#	3 Directory of current newsgroup (%c)
#	4 Article number (%a)
#	5 Where in article to start (%B)
#	6 Newsgroup name (%C)
#	7 Save destination (%b)
#
export PATH || (echo "OOPS, this isn't sh.  Desperation time.  I will feed myself to sh."; sh \$0; kill \$\$)

( $echo "Article \$4 of \$6:"
  $tail +\$5c \$1
  $echo ""
  $echo "" ) >> \$7
!GROK!THIS!
$eunicefix norm.saver
chmod 755 norm.saver
!STUFFY!FUNK!
echo Extracting artsrch.h
cat >artsrch.h <<'!STUFFY!FUNK!'
/* $Header: artsrch.h,v 4.1 84/09/24 11:42:37 lwall Exp $
 *
 * $Log:	artsrch.h,v $
 * Revision 4.1  84/09/24  11:42:37  lwall
 * Real baseline.
 * 
 * Revision 4.0.1.1  84/09/10  15:05:40  lwall
 * Delinted.
 * 
 * Revision 4.0  84/09/04  09:49:37  lwall
 * Baseline for netwide release
 * 
 */

#ifndef NBRA
#include "search.h"
#endif

#ifdef ARTSEARCH

#define SRCH_ABORT 0
#define SRCH_INTR 1
#define SRCH_FOUND 2
#define SRCH_NOTFOUND 3
#define SRCH_DONE 4
#define SRCH_SUBJDONE 5
#define SRCH_ERROR 6
#endif

EXT char *lastpat INIT(nullstr);	/* last search pattern */
#ifdef ARTSEARCH
    EXT COMPEX sub_compex;		/* last compiled subject search */
    EXT COMPEX art_compex;		/* last compiled normal search */
#   ifdef CONDSUB
	EXT COMPEX *bra_compex INIT(&art_compex);
					/* current compex with brackets */
#   endif
    EXT char art_howmuch;		/* search just the subjects */
    EXT bool art_doread;		/* search read articles? */
#endif

void	artsrch_init();
#ifdef ARTSEARCH
    int		art_search();
    bool	wanted();	/* return TRUE if current article matches pattern */
#endif
!STUFFY!FUNK!
echo Extracting ng.h
cat >ng.h <<'!STUFFY!FUNK!'
/* $Header: ng.h,v 4.1 84/09/24 12:02:37 lwall Exp $
 *
 * $Log:	ng.h,v $
 * Revision 4.1  84/09/24  12:02:37  lwall
 * Real baseline.
 * 
 * Revision 4.0.1.1  84/09/10  15:19:40  lwall
 * Delinted.
 * 
 * Revision 4.0  84/09/04  09:51:42  lwall
 * Baseline for netwide release
 * 
 */

EXT ART_NUM art INIT(0);	/* current or prospective article # */

EXT int checkcount INIT(0);	/* how many articles have we read */
			/*   in the current newsgroup since */
			/*   the last checkpoint? */
EXT int docheckwhen INIT(20);	/* how often to do checkpoint */

#ifdef MAILCALL
EXT int mailcount INIT(0);			/* check for mail when 0 mod 10 */
#endif
EXT char *mailcall INIT(nullstr);

EXT bool forcelast INIT(FALSE);			/* ought we show "End of newsgroup"? */
EXT bool forcegrow INIT(FALSE);		/* do we want to recalculate size */
				    /* of newsgroup, e.g. after posting? */

void    ng_init();
int	do_newsgroup();
int	art_switch();
#ifdef MAILCALL
    void	setmail();
#endif
void	setdfltcmd();
!STUFFY!FUNK!
echo Extracting intrp.h
cat >intrp.h <<'!STUFFY!FUNK!'
/* $Header: intrp.h,v 4.1 84/09/24 11:58:13 lwall Exp $
 *
 * $Log:	intrp.h,v $
 * Revision 4.1  84/09/24  11:58:13  lwall
 * Real baseline.
 * 
 * Revision 4.0.1.2  84/09/10  15:15:55  lwall
 * Delinted.
 * 
 * Revision 4.0.1.1  84/09/06  08:21:04  lwall
 * Swiped sitename from respond.h.
 * 
 * Revision 4.0  84/09/04  09:50:54  lwall
 * Baseline for netwide release
 * 
 */

EXT char *lib INIT(Nullch);		/* news library */
EXT char *rnlib INIT(Nullch);		/* private news program library */
EXT char *origdir INIT(Nullch);		/* cwd when rn invoked */
EXT char *homedir INIT(Nullch);		/* login directory */
EXT char *dotdir INIT(Nullch);		/* where . files go */
EXT char *logname INIT(Nullch);		/* login id */
EXT char *sitename INIT(Nullch);	/* host name */

#ifdef NEWSADMIN
    EXT char newsadmin[] INIT(NEWSADMIN);/* news administrator */
    EXT int newsuid INIT(0);
#endif

void    intrp_init();
char	*filexp();
char	*dointerp();
void	interp();
void	refscpy();
char	*getrealname();
!STUFFY!FUNK!
echo Extracting util.h
cat >util.h <<'!STUFFY!FUNK!'
/* $Header: util.h,v 4.1 84/09/24 12:11:33 lwall Exp $
 *
 * $Log:	util.h,v $
 * Revision 4.1  84/09/24  12:11:33  lwall
 * Real baseline.
 * 
 * Revision 4.0.1.1  84/09/10  15:35:28  lwall
 * Delinted.
 * 
 * Revision 4.0  84/09/04  09:53:08  lwall
 * Baseline for netwide release
 * 
 */

EXT bool waiting INIT(FALSE);		/* are we waiting for subprocess (in doshell)? */
EXT int len_last_line_got INIT(0);
			/* strlen of some_buf after */
			/*  some_buf = get_a_line(bufptr,buffersize,fp) */

/* is the string for makedir a directory name or a filename? */

#define MD_DIR 0
#define MD_FILE 1

void	util_init();
int	doshell();
char	*safemalloc();
char	*saferealloc();
char	*safecpy();
char	*safecat();
char	*cpytill();
char	*instr();
#ifdef SETUIDGID
    int		eaccess();
#endif
char	*getwd();
void	cat();
void	prexit();
char	*get_a_line();
char	*savestr();
int	makedir();
void	setenv();
int	envix();
void	notincl();
char	*getval();
void	growstr();
void	setdef();
!STUFFY!FUNK!
echo Extracting rn.h
cat >rn.h <<'!STUFFY!FUNK!'
/* $Header: rn.h,v 4.1 84/09/24 12:07:44 lwall Exp $
 *
 * $Log:	rn.h,v $
 * Revision 4.1  84/09/24  12:07:44  lwall
 * Real baseline.
 * 
 * Revision 4.0.1.1  84/09/10  15:29:46  lwall
 * Delinted.
 * 
 * Revision 4.0  84/09/04  09:52:20  lwall
 * Baseline for netwide release
 * 
 */

EXT char *ngname INIT(Nullch);		/* name of current newsgroup */
EXT int ngnlen INIT(0);			/* current malloced size of ngname */
EXT char *ngdir INIT(Nullch);		/* same thing in directory name form */
EXT int ngdlen INIT(0);			/* current malloced size of ngdir */

EXT NG_NUM ng INIT(0);		/* current newsgroup index into rcline and toread */
EXT NG_NUM current_ng INIT(0);	/* stable current newsgroup so we can ditz with ng */
EXT NG_NUM starthere INIT(0);   /* set to the first newsgroup with unread news on startup */
EXT char *spool INIT(Nullch);		/* public news spool directory */

void	rn_init();
void	main();
void	set_ngname();
char	*getngdir();
!STUFFY!FUNK!
echo Extracting kittrailer
cat >kittrailer <<'!STUFFY!FUNK!'
#! /bin/sh
# $Header: kittrailer,v 4.1 84/09/24 11:58:57 lwall Exp $
#
# $Log:	kittrailer,v $
# Revision 4.1  84/09/24  11:58:57  lwall
# Real baseline.
# 
# Revision 4.0.1.2  84/09/07  08:31:06  lwall
# Added exit at end in case of .signature.
# 
# Revision 4.0.1.1  84/09/05  09:28:36  lwall
# Made use sh instead of csh.
# 
# Revision 4.0  84/09/04  09:51:08  lwall
# Baseline for netwide release
# 

rangelist=`range 1 $3`
cat >>$1 <<EOT
echo ""
echo "End of kit $2 (of $3)"
cat /dev/null >kit${2}isdone
config=true
for iskit in $rangelist; do
    if test -f kit\${iskit}isdone; then
	echo "You have run kit \${iskit}."
    else
	echo "You still need to run kit \${iskit}."
	config=false
    fi
done
case \$config in
    true)
	echo "You have run all your kits.  Please read README and then type Configure."
	chmod 755 Configure
	;;
esac
: I do not append .signature, but someone might mail this.
exit
EOT
!STUFFY!FUNK!
echo Extracting makekit
cat >makekit <<'!STUFFY!FUNK!'
#!/bin/sh
# $Header: makekit,v 4.1 84/09/24 11:59:59 lwall Exp $
#
# $Log:	makekit,v $
# Revision 4.1  84/09/24  11:59:59  lwall
# Real baseline.
# 
# Revision 4.0.1.1  84/09/07  08:38:16  lwall
# Uses sed if file contains an orphan '.'.
# 
# Revision 4.0  84/09/04  09:51:24  lwall
# Baseline for netwide release
# 

numkits=$#
for kitlist in $*; do
    kit=`basename $kitlist .list`
    kitnum=`expr "$kit" : 'kit\([0-9][0-9]*\)'`
    echo "*** Making $kit ***"
    kitleader "$kit" "$kitnum" "$numkits"
    for file in `/bin/cat $kitlist`; do
	echo $file
	echo "echo Extracting $file" >> $kit
	if egrep '^\.$' $file; then
	    echo "sed >$file <<'!STUFFY!FUNK!' -e 's/X//'" >> $kit
	    sed <$file >>$kit -e 's/^/X/'
	else
	    echo "cat >$file <<'!STUFFY!FUNK!'" >> $kit
	    /bin/cat $file >> $kit
	fi
	echo "!STUFFY!FUNK!" >> $kit
    done
    kittrailer "$kit" "$kitnum" "$numkits"
done
!STUFFY!FUNK!
echo Extracting artstate.h
cat >artstate.h <<'!STUFFY!FUNK!'
/* $Header: artstate.h,v 4.1 84/09/24 11:42:44 lwall Exp $
 *
 * $Log:	artstate.h,v $
 * Revision 4.1  84/09/24  11:42:44  lwall
 * Real baseline.
 * 
 * Revision 4.0.1.1  84/09/10  15:05:48  lwall
 * Delinted.
 * 
 * Revision 4.0  84/09/04  09:49:43  lwall
 * Baseline for netwide release
 * 
 */

EXT bool reread INIT(FALSE);		/* consider current art temporarily */
				    /* unread? */
EXT bool do_fseek INIT(FALSE);	/* should we back up in article file? */

EXT bool oldsubject INIT(FALSE);	/* not 1st art in subject thread */
EXT ART_LINE topline INIT(-1);		/* top line of current screen */
EXT bool do_hiding INIT(TRUE);		/* hide header lines with -h? */
#ifdef ROTATION
EXT bool rotate INIT(FALSE);		/* has rotation been requested? */
#endif
EXT char *prompt;			/* pointer to current prompt */

EXT char *firstline INIT(Nullch);			/* special first line? */
!STUFFY!FUNK!
echo Extracting artio.h
cat >artio.h <<'!STUFFY!FUNK!'
/* $Header: artio.h,v 4.1 84/09/24 11:42:11 lwall Exp $
 *
 * $Log:	artio.h,v $
 * Revision 4.1  84/09/24  11:42:11  lwall
 * Real baseline.
 * 
 * Revision 4.0.1.2  84/09/10  15:05:21  lwall
 * Delinted.
 * 
 * Revision 4.0.1.1  84/09/04  15:14:25  lwall
 * LINKART option for Eunice sites.
 * 
 * Revision 4.0  84/09/04  09:49:33  lwall
 * Baseline for netwide release
 * 
 */

EXT ART_POS artpos INIT(0);	/* byte position in article file */

EXT ART_LINE artline INIT(0);		/* current line number in article file */
EXT FILE *artfp INIT(Nullfp);		/* current article file pointer */
EXT ART_NUM openart INIT(0);		/* what is the currently open article number? */
#ifdef LINKART
    EXT char *linkartname INIT(nullstr);/* real name of article for Eunice */
#endif

void	artio_init();
FILE	*artopen();			/* open an article unless already opened */
!STUFFY!FUNK!
echo Extracting final.h
cat >final.h <<'!STUFFY!FUNK!'
/* $Header: final.h,v 4.1 84/09/24 11:47:00 lwall Exp $
 * 
 * $Log:	final.h,v $
 * Revision 4.1  84/09/24  11:47:00  lwall
 * Real baseline.
 * 
 * Revision 4.0.1.1  84/09/10  15:11:00  lwall
 * Delinted.
 * 
 * Revision 4.0  84/09/04  09:50:16  lwall
 * Baseline for netwide release
 * 
 */

/* cleanup status for fast exits */

EXT bool panic INIT(FALSE);		/* we got hung up or something-- */
					/*  so leave tty alone */
EXT bool rc_changed INIT(FALSE);	/* need we rewrite .newsrc? */
EXT bool doing_ng INIT(FALSE);		/* do we need to reconstitute */
					/* current rc line? */

EXT char int_count INIT(0);		/* how many interrupts we've had */

/* signal catching routines */

void	int_catcher();
void	sig_catcher();
#ifdef SIGTSTP
    void	stop_catcher();
    void	cont_catcher();
#endif

void	final_init();
void	finalize();
!STUFFY!FUNK!
echo Extracting kitleader
cat >kitleader <<'!STUFFY!FUNK!'
#! /bin/sh
# $Header: kitleader,v 4.1 84/09/24 11:58:35 lwall Exp $
#
# $Log:	kitleader,v $
# Revision 4.1  84/09/24  11:58:35  lwall
# Real baseline.
# 
# Revision 4.0.1.3  84/09/12  15:39:33  lwall
# Check for sh interpretation.
# 
# Revision 4.0.1.2  84/09/07  09:06:02  lwall
# Anti-clunch check.
# 
# Revision 4.0.1.1  84/09/05  09:28:02  lwall
# Made use sh instead of csh.
# 
# Revision 4.0  84/09/04  09:50:59  lwall
# Baseline for netwide release
# 

cat >$1 <<EOT
#! /bin/sh

# Make a new directory for the rn sources, cd to it, and run kits 1 thru $3 
# through sh.  When all $3 kits have been run, read README.

echo "This is rn kit $2 (of $3).  If kit $2 is complete, the line"
echo '"'"End of kit $2 (of $3)"'" will echo at the end.'
echo ""
export PATH || (echo "You didn't use sh, you clunch." ; kill \$\$)
EOT
!STUFFY!FUNK!
echo Extracting Wishlist
cat >Wishlist <<'!STUFFY!FUNK!'
Generalized article set manipulation, with interface to subject listing.
Separation of .newsrc functions and newsgroup functions to separate processes
	communicating via pipes (to make fit on non-separate-I-and-D pdp11,
	or unreasonable facsimiles).
Personal archive perusal.
%`command`, %"prompt".
Merge Pnews and postnews.  (Add -h to postnews, mostly.)
Virtual article abstract type to allow personalized header munging via % subs.
Vnews duplicate suppression algorithm for sites that can't do Xref patch.
Parent command.
Dynamic allocation of stuff currently restricted by MAXRCLINE.
	(And pull parallel arrays into array of structs).
Buffer overflow checking on % subs.
Allow CR optionally.
Macros?
Keymaps?
Faster!!!
Smaller!!!
More general!!!
!STUFFY!FUNK!
echo Extracting manimake
cat >manimake <<'!STUFFY!FUNK!'
#!/bin/sh
# $Header: manimake,v 4.1 84/09/24 12:00:48 lwall Exp $
#
# $Log:	manimake,v $
# Revision 4.1  84/09/24  12:00:48  lwall
# Real baseline.
# 
# Revision 4.0  84/09/04  09:51:28  lwall
# Baseline for netwide release
# 

: make MANIFEST and MANIFEST.pre say the same thing
if test -f MANIFEST.new; then
    cat <<'EOH' > MANIFEST
After all the rn kits are run you should have the following files:

Filename	Kit Description
--------	--- -----------
EOH
    sort MANIFEST.new >.mani
    grep . kit*.list | sed 's/^kit\(.*\)\.list:\$*\(.*\)$/\2 |\1|/' | \
	sort | \
	join -a1 - .mani | \
	awk -F'|' '{printf "%-16s%2s %s\n",$1,$2,$3}' | \
	unexpand >> MANIFEST
    rm .mani
else
    echo "You don't have a MANIFEST.new file.  Run manifake."
fi
!STUFFY!FUNK!
echo Extracting ngdata.h
cat >ngdata.h <<'!STUFFY!FUNK!'
/* $Header: ngdata.h,v 4.1 84/09/24 12:03:00 lwall Exp $
 *
 * $Log:	ngdata.h,v $
 * Revision 4.1  84/09/24  12:03:00  lwall
 * Real baseline.
 * 
 * Revision 4.0.1.1  84/09/10  15:20:30  lwall
 * Delinted.
 * 
 * Revision 4.0  84/09/04  09:51:46  lwall
 * Baseline for netwide release
 * 
 */

EXT FILE *actfp INIT(Nullfp);	/* the active file */
EXT bool writesoft INIT(FALSE);	/* rewrite the soft pointer file? */
EXT int softtries INIT(0), softmisses INIT(0);

#ifdef CACHEFIRST
    EXT ART_NUM abs1st[MAXRCLINE];	/* 1st real article in newsgroup */
#else
# ifdef MININACT
    EXT ART_NUM abs1st INIT(0);
# endif
#endif


void	ngdata_init();
ART_NUM	getngsize();
ART_NUM	getabsfirst();
ART_NUM	getngmin();
!STUFFY!FUNK!
echo Extracting respond.h
cat >respond.h <<'!STUFFY!FUNK!'
/* $Header: respond.h,v 4.1 84/09/24 12:07:03 lwall Exp $
 *
 * $Log:	respond.h,v $
 * Revision 4.1  84/09/24  12:07:03  lwall
 * Real baseline.
 * 
 * Revision 4.0.1.2  84/09/10  15:28:54  lwall
 * Delinted.
 * 
 * Revision 4.0.1.1  84/09/06  08:21:24  lwall
 * Gave sitename to interp.h.
 * 
 * Revision 4.0  84/09/04  09:52:15  lwall
 * Baseline for netwide release
 * 
 */

EXT char *savedest INIT(Nullch);	/* value of %b */
EXT ART_POS savefrom INIT(0);		/* value of %B */
EXT char *headname INIT(Nullch);

#define SAVE_ABORT 0
#define SAVE_DONE 1

void	respond_init();
int	save_article();
int	cancel_article();
void	reply();
void	followup();
void	invoke();
!STUFFY!FUNK!
echo Extracting header.h.pat
cat >header.h.pat <<'!STUFFY!FUNK!'
NOTE: the preceding context may be different under 2.10.2, but you should
be able to figure it out anyway.

*** header.old.h	Fri Apr 27 11:30:49 1984
--- header.h	Thu May 10 15:19:55 1984
***************
*** 34,38
  	int	intnumlines;		/* Integer version	*/
  	char	keywords[BUFLEN];	/* Keywords:		*/
  	char	approved[BUFLEN];	/* Approved:		*/
  	char	*unrec[NUNREC];		/* unrecognized lines	*/
  };

--- 34,41 -----
  	int	intnumlines;		/* Integer version	*/
  	char	keywords[BUFLEN];	/* Keywords:		*/
  	char	approved[BUFLEN];	/* Approved:		*/
+ #ifdef DOXREFS
+ 	char	xref[BUFLEN];		/* Xref:		*/
+ #endif
  	char	*unrec[NUNREC];		/* unrecognized lines	*/
  };
!STUFFY!FUNK!
echo Extracting kfile.h
cat >kfile.h <<'!STUFFY!FUNK!'
/* $Header: kfile.h,v 4.1 84/09/24 11:58:29 lwall Exp $
 *
 * $Log:	kfile.h,v $
 * Revision 4.1  84/09/24  11:58:29  lwall
 * Real baseline.
 * 
 * Revision 4.0.1.1  84/09/10  15:16:14  lwall
 * Delinted.
 * 
 * Revision 4.0  84/09/04  09:50:57  lwall
 * Baseline for netwide release
 * 
 */

#define KF_GLOBAL 0
#define KF_LOCAL 1

#ifdef KILLFILES
EXT FILE *globkfp INIT(Nullfp);		/* global article killer file */
EXT FILE *localkfp INIT(Nullfp);	/* local (for this newsgroup) */
					/*  article killer file */
#endif

void	kfile_init();
int	do_kfile();
void	kill_unwanted();
int	edit_kfile();
void	open_kfile();
void    kf_append();
void	setthru();

!STUFFY!FUNK!
echo Extracting backpage.h
cat >backpage.h <<'!STUFFY!FUNK!'
/* $Header: backpage.h,v 4.1 84/09/24 11:43:08 lwall Exp $
 *
 * $Log:	backpage.h,v $
 * Revision 4.1  84/09/24  11:43:08  lwall
 * Real baseline.
 * 
 * Revision 4.0.1.1  84/09/10  15:06:36  lwall
 * Delinted.
 * 
 * Revision 4.0  84/09/04  09:49:50  lwall
 * Baseline for netwide release
 * 
 */

/* things for doing the 'back page' command */

EXT int varyfd INIT(0);			/* virtual array file for storing  */
					/* file offsets */
EXT ART_POS varybuf[VARYSIZE];		/* current window onto virtual array */

EXT long oldoffset INIT(-1);		/* offset to block currently in window */

void	backpage_init();
ART_POS	vrdary();
void	vwtary();
!STUFFY!FUNK!
echo Extracting rcln.h
cat >rcln.h <<'!STUFFY!FUNK!'
/* $Header: rcln.h,v 4.1 84/09/24 12:04:59 lwall Exp $
 *
 * $Log:	rcln.h,v $
 * Revision 4.1  84/09/24  12:04:59  lwall
 * Real baseline.
 * 
 * Revision 4.0.1.2  84/09/13  11:19:19  lwall
 * addartnum() now returns int.
 * 
 * Revision 4.0.1.1  84/09/10  15:24:05  lwall
 * Delinted.
 * 
 * Revision 4.0  84/09/04  09:52:05  lwall
 * Baseline for netwide release
 * 
 */

#ifdef DEBUGGING
ART_NUM ngmax[MAXRCLINE];
#endif

void    rcln_init();
#ifdef CATCHUP
    void	catch_up();
#endif
int	addartnum();
#ifdef MCHASE
    void	subartnum();
#endif
void	prange();
void	set_toread();
void	checkexpired();
!STUFFY!FUNK!
echo Extracting ngsrch.h
cat >ngsrch.h <<'!STUFFY!FUNK!'
/* $Header: ngsrch.h,v 4.1 84/09/24 12:03:13 lwall Exp $
 *
 * $Log:	ngsrch.h,v $
 * Revision 4.1  84/09/24  12:03:13  lwall
 * Real baseline.
 * 
 * Revision 4.0.1.1  84/09/10  15:21:01  lwall
 * Delinted.
 * 
 * Revision 4.0  84/09/04  09:51:49  lwall
 * Baseline for netwide release
 * 
 */

#ifdef NGSEARCH
#define NGS_ABORT 0
#define NGS_FOUND 1
#define NGS_INTR 2
#define NGS_NOTFOUND 3

EXT bool ng_doread INIT(FALSE);		/* search read newsgroups? */
#endif

void	ngsrch_init();
#ifdef NGSEARCH 
    int		ng_search();
    bool	ng_wanted();
#endif
#ifdef NGSORONLY
    char	*ng_comp();
#endif
!STUFFY!FUNK!
echo Extracting cheat.h
cat >cheat.h <<'!STUFFY!FUNK!'
/* $Header: cheat.h,v 4.1 84/09/24 11:44:21 lwall Exp $
 *
 * $Log:	cheat.h,v $
 * Revision 4.1  84/09/24  11:44:21  lwall
 * Real baseline.
 * 
 * Revision 4.0.1.1  84/09/10  15:08:49  lwall
 * Delinted.
 * 
 * Revision 4.0  84/09/04  09:50:07  lwall
 * Baseline for netwide release
 * 
 */

#ifdef ARTSEARCH
EXT ART_NUM srchahead INIT(0); 	/* are we in subject scan mode? */
				/* (if so, contains art # found or -1) */
#endif

#ifdef PENDING
#   ifdef CACHESUBJ
	EXT ART_NUM subj_to_get;
#   endif
#endif

void	cheat_init();
void	look_ahead();
void	collect_subjects();
!STUFFY!FUNK!
echo Extracting last.h
cat >last.h <<'!STUFFY!FUNK!'
/* $Header: last.h,v 4.1 84/09/24 11:59:17 lwall Exp $
 *
 * $Log:	last.h,v $
 * Revision 4.1  84/09/24  11:59:17  lwall
 * Real baseline.
 * 
 * Revision 4.0.1.1  84/09/10  15:16:28  lwall
 * Delinted.
 * 
 * Revision 4.0  84/09/04  09:51:14  lwall
 * Baseline for netwide release
 * 
 */

EXT char *lastngname INIT(Nullch);	/* last newsgroup read, from .rnlast file */
EXT long lasttime INIT(0);	/* time last rn was started up */
EXT long lastactsiz INIT(0);	/* size of active file when rn last started up */

void	last_init();
void    writelast();
!STUFFY!FUNK!
echo Extracting manifake
cat >manifake <<'!STUFFY!FUNK!'
#!/bin/sh
# $Header: manifake,v 4.1 84/09/24 12:00:12 lwall Exp $
#
# $Log:	manifake,v $
# Revision 4.1  84/09/24  12:00:12  lwall
# Real baseline.
# 
# Revision 4.0  84/09/04  09:51:25  lwall
# Baseline for netwide release
# 

: make MANIFEST and MANIFEST.new say the same thing
if test ! -f MANIFEST.new; then
    if test -f MANIFEST; then
	sed <MANIFEST >MANIFEST.new \
	    -e '1,/---/d' \
	    -e 's/\([ 	][ 	]*\)[0-9]*  */\1/'
    else
	echo "Make a MANIFEST.new file, with names and descriptions."
    fi
fi
!STUFFY!FUNK!
echo Extracting art.h
cat >art.h <<'!STUFFY!FUNK!'
/* $Header: art.h,v 4.1 84/09/24 11:41:29 lwall Exp $
 *
 * $Log:	art.h,v $
 * Revision 4.1  84/09/24  11:41:29  lwall
 * Real baseline.
 * 
 * Revision 4.0.1.1  84/09/10  15:04:54  lwall
 * Delinted.
 * 
 * Revision 4.0  84/09/04  09:49:27  lwall
 * Baseline for netwide release
 * 
 */

/* do_article() return values */

#define DA_NORM 0
#define DA_RAISE 1
#define DA_CLEAN 2
#define DA_TOEND 3

void	art_init();
int	do_article();
int	page_switch();
bool	innermore();
!STUFFY!FUNK!
echo Extracting ngstuff.h
cat >ngstuff.h <<'!STUFFY!FUNK!'
/* $Header: ngstuff.h,v 4.1 84/09/24 12:03:43 lwall Exp $
 *
 * $Log:	ngstuff.h,v $
 * Revision 4.1  84/09/24  12:03:43  lwall
 * Real baseline.
 * 
 * Revision 4.0.1.1  84/09/10  15:22:05  lwall
 * Delinted.
 * 
 * Revision 4.0  84/09/04  09:51:53  lwall
 * Baseline for netwide release
 * 
 */

#define NN_NORM 0
#define NN_INP 1
#define NN_REREAD 2
#define NN_ASK 3

void	ngstuff_init();
int	escapade();
int	switcheroo();
int	numnum();
int	perform();
!STUFFY!FUNK!
echo Extracting sw.h
cat >sw.h <<'!STUFFY!FUNK!'
/* $Header: sw.h,v 4.1 84/09/24 12:10:35 lwall Exp $
 *
 * $Log:	sw.h,v $
 * Revision 4.1  84/09/24  12:10:35  lwall
 * Real baseline.
 * 
 * Revision 4.0.1.1  84/09/10  15:33:02  lwall
 * Delinted.
 * 
 * Revision 4.0  84/09/04  09:52:50  lwall
 * Baseline for netwide release
 * 
 */

#ifdef INNERSEARCH
EXT int gline INIT(0);
#endif

void    sw_init();
void    sw_list();
void	decode_switch();
void	pr_switches();
void	cwd_check();
!STUFFY!FUNK!
echo Extracting init.h
cat >init.h <<'!STUFFY!FUNK!'
/* $Header: init.h,v 4.1 84/09/24 11:56:56 lwall Exp $
 *
 * $Log:	init.h,v $
 * Revision 4.1  84/09/24  11:56:56  lwall
 * Real baseline.
 * 
 * Revision 4.0.1.1  84/09/10  15:13:28  lwall
 * Delinted.
 * 
 * Revision 4.0  84/09/04  09:50:47  lwall
 * Baseline for netwide release
 * 
 */

EXT char *lockname INIT(nullstr);

bool	initialize();
void	lock_check();
void	newsnews_check();
void	version_check();
!STUFFY!FUNK!
echo Extracting help.h
cat >help.h <<'!STUFFY!FUNK!'
/* $Header: help.h,v 4.1 84/09/24 11:48:51 lwall Exp $
 *
 * $Log:	help.h,v $
 * Revision 4.1  84/09/24  11:48:51  lwall
 * Real baseline.
 * 
 * Revision 4.0.1.1  84/09/10  15:12:29  lwall
 * Delinted.
 * 
 * Revision 4.0  84/09/04  09:50:30  lwall
 * Baseline for netwide release
 * 
 */

void	help_init();
void	help_ng();
void	help_art();
void	help_page();
#ifdef ESCSUBS
    void	help_subs();
#endif
!STUFFY!FUNK!
echo Extracting addng.h
cat >addng.h <<'!STUFFY!FUNK!'
/* $Header: addng.h,v 4.1 84/09/24 11:39:57 lwall Exp $
 *
 * $Log:	addng.h,v $
 * Revision 4.1  84/09/24  11:39:57  lwall
 * Real baseline.
 * 
 * Revision 4.0.1.1  84/09/10  14:57:35  lwall
 * Delinted.
 * 
 * Revision 4.0  84/09/04  09:49:20  lwall
 * Baseline for netwide release
 * 
 */

void	addng_init();
#ifdef FINDNEWNG
    bool	newlist();
    long	birthof();
    bool	scanactive();
#endif
!STUFFY!FUNK!
echo Extracting EXTERN.h
cat >EXTERN.h <<'!STUFFY!FUNK!'
/* $Header: EXTERN.h,v 4.1 84/09/24 11:36:47 lwall Exp $
 *
 * $Log:	EXTERN.h,v $
 * Revision 4.1  84/09/24  11:36:47  lwall
 * Real baseline.
 * 
 * Revision 4.0.1.1  84/09/10  14:57:16  lwall
 * Delinted.
 * 
 * Revision 4.0  84/09/04  09:48:26  lwall
 * Baseline for netwide release
 * 
 */

#undef EXT
#define EXT extern

#undef INIT
#define INIT(x)

#undef DOINIT
!STUFFY!FUNK!
echo Extracting INTERN.h
cat >INTERN.h <<'!STUFFY!FUNK!'
/* $Header: INTERN.h,v 4.1 84/09/24 11:37:08 lwall Exp $
 *
 * $Log:	INTERN.h,v $
 * Revision 4.1  84/09/24  11:37:08  lwall
 * Real baseline.
 * 
 * Revision 4.0.1.1  84/09/10  14:57:30  lwall
 * Delinted.
 * 
 * Revision 4.0  84/09/04  09:48:33  lwall
 * Baseline for netwide release
 * 
 */

#undef EXT
#define EXT

#undef INIT
#define INIT(x) = x

#define DOINIT
!STUFFY!FUNK!
echo ""
echo "End of kit 8 (of 8)"
cat /dev/null >kit8isdone
config=true
for iskit in 1 2 3 4 5 6 7 8; do
    if test -f kit${iskit}isdone; then
	echo "You have run kit ${iskit}."
    else
	echo "You still need to run kit ${iskit}."
	config=false
    fi
done
case $config in
    true)
	echo "You have run all your kits.  Please read README and then type Configure."
	chmod 755 Configure
	;;
esac
: I do not append .signature, but someone might mail this.
exit