about summary refs log tree commit diff stats
path: root/utils/inews
diff options
context:
space:
mode:
Diffstat (limited to 'utils/inews')
-rw-r--r--utils/inews/Makefile69
-rw-r--r--utils/inews/Manifest11
-rw-r--r--utils/inews/README55
-rw-r--r--utils/inews/README.NN83
-rw-r--r--utils/inews/clientlib.c525
-rw-r--r--utils/inews/clientlib.h11
-rw-r--r--utils/inews/conf.h146
-rw-r--r--utils/inews/config.h392
-rw-r--r--utils/inews/config.h-dist392
-rw-r--r--utils/inews/inews.c392
-rw-r--r--utils/inews/nntp.h73
-rw-r--r--utils/inews/version.c5
12 files changed, 0 insertions, 2154 deletions
diff --git a/utils/inews/Makefile b/utils/inews/Makefile
deleted file mode 100644
index 0380e783..00000000
--- a/utils/inews/Makefile
+++ /dev/null
@@ -1,69 +0,0 @@
-# Makefile for NN version of mini inews.
-#
-# @RCSfile: Makefile,v @	@Revision: 1.3 @
-#
-# @Author: news @	@Date: 89/12/21 17:59:52 @
-#
-# @State: Exp @	@Locker:  @
-#
-# @Log:	Makefile,v @
-# Revision 1.3  89/12/21  17:59:52  news
-# Added kit processing, cleanups.
-#
-
-TARGET	= inews
-
-BINDIR	= /usr/lib/news/
-SHELL	= /bin/sh
-
-CC	= cc
-# General definitions here which apply to all -- form -DDEF
-DEFS	= -DFOR_NN
-# Link libraries -- form -lLIB
-LIBS	= -lsocket -lnsl -lucb
-# Lint definitions -- same as DEFS, but form -D DEF
-LDEFS	= -D lint -D FOR_NN
-# Lint libraries -- same as LIBS, but form -l LIB
-LLIBS	=
-# Set to -g for debugging, -O for optimise, or both if compiler handles it
-DEBUG	= -O
-CFLAGS	= $(DEBUG) $(DEFS) -I.. -I../conf -L/usr/ucblib
-
-SRCS	= inews.c clientlib.c version.c
-OBJS	= inews.o clientlib.o version.o
-CLUDES	= clientlib.h conf.h nntp.h
-KIT	= Makefile README README.NN $(SRCS) $(CLUDES)
-
-$(TARGET): $(OBJS)
-	$(CC) $(CFLAGS) -o $(TARGET) $(OBJS) $(LIBS)
-
-$(OBJS):	$(CLUDES)
-
-all:	$(TARGET)
-
-Manifest:	$(KIT)
-	touch Manifest
-	rm -f foo
-	ls -ls Manifest $(KIT) > foo
-	mv foo Manifest
-	ls -ls Manifest $(KIT) > foo
-	mv foo Manifest
-
-kit:	Manifest
-	shar Manifest $(KIT) > inews.shar
-
-clean:
-	rm -f $(OBJS) core lint tags
-
-clobber:	clean
-	rm -f $(TARGET) Make.Log Manifest $(KIT)
-
-lint:	$(SRCS)
-	lint -D lint $(LLIBES) $(LDEFS) $(SRCS) > lint
-
-tags:	$(SRCS)
-	ctags $(SRCS)
-
-install:	$(TARGET)
-	../inst inews $(TARGET)
-#	install -o news -g news -m 511 -s -c $(TARGET) $(BINDIR)
diff --git a/utils/inews/Manifest b/utils/inews/Manifest
deleted file mode 100644
index c3d99bcf..00000000
--- a/utils/inews/Manifest
+++ /dev/null
@@ -1,11 +0,0 @@
-   2 -r--r--r--  1 news         1406 Dec 21 18:00 Makefile
-   1 -rw-r--r--  1 news          649 Dec 21 18:00 Manifest
-   3 -r--r--r--  1 news         2391 Dec 21 18:00 README
-   2 -r--r--r--  1 news         1863 Dec 21 18:00 README.NN
-  11 -r--r--r--  1 news        11154 Dec 21 18:00 clientlib.c
-   1 -r--r--r--  1 news          230 Dec 21 18:00 clientlib.h
-   4 -r--r--r--  1 news         3106 Dec 21 18:00 conf.h
-   8 -r--r--r--  1 news         7983 Dec 21 18:00 inews.c
-   3 -r--r--r--  1 news         2530 Dec 21 18:00 nntp.h
-   3 -r--r--r--  1 news         2167 Dec 21 18:00 uname.c
-   1 -r--r--r--  1 news          103 Dec 21 18:00 version.c
diff --git a/utils/inews/README b/utils/inews/README
deleted file mode 100644
index 1ce496d6..00000000
--- a/utils/inews/README
+++ /dev/null
@@ -1,55 +0,0 @@
-
-     This is a "pseudo" inews which allows remote posting using
-the NNTP server.  Essentially it takes a bunch of arguments and ignores
-ones starting with "-", expecting to find at least one which is
-a file name.  If no files are specified, it uses standard input
-as the input file.
-
-     It then opens a connection to the NNTP server on the remote
-machine and blasts the article across.  It then closes the connection.
-If it doesn't find a From: or Path: line, it inserts them, in the
-default format
-
-	From: login@hostname.DOMAIN (Full_name)
-	Path: hostname!login
-
-where DOMAIN is a #define in ./conf.h, and should be changed to reflect
-your system.  A good choice is "UUCP" if you are not a member of the
-Internet.  "Full_name" understands the & hack in password files. If
-"HIDDENNET" is defined in ./conf.h, DOMAIN is used as the complete host
-name, and the format used is
-
-	From: login@DOMAIN (Full_name)
-	Path: login
-
-     "hostname" is figured out by what you've #defined in ../config.h.
-If you have defined GHNAME, it uses the gethostname() call.
-If you've defined UUNAME, it figured it out from the file
-/etc/uucpname.  Finally, if neither is defined it gets it from
-/usr/include/whoami.h.  If you have GHNAME defined and your
-gethostname() returns your fully-qualified Internet name,
-undefine DOMAIN.
-
-     The point here is that the thing looks like inews to any program
-which would care to post something (e.g., Pnews, postnews, what have
-you).  The difference is that the article will look like it was posted
-on the remote end, not on the local end.  Please note that "postnews"
-(nor any of the other standard news programs) is not required for
-rrn/nntp on client machines.
-
-     The "test*" files in this directory provide some good test
-material for inews; you can just redirect inews to take input from
-them or whatever.
-
-     Thanks to Steven Grady <grady@postgres.berkeley.edu> for
-writing this, and for wasting a lot of his valuable time dealing
-with the can-o'-worms that is the real inews.
-
-BUGS:
-
-     This version of inews doesn't handle real inews options.  As
-a result, some posting programs (notably the Gnumacs front end) will
-fail if they use this program.  In the interests of simplicity, I
-have no plans for modifying mini-inews to handle real-inews options.
-However, if you'd like to send me diffs I'll be more than happy to
-install them for the next release.
diff --git a/utils/inews/README.NN b/utils/inews/README.NN
deleted file mode 100644
index dea4036f..00000000
--- a/utils/inews/README.NN
+++ /dev/null
@@ -1,83 +0,0 @@
-From: Steve Simmons <scs%itivax@relay.EU.net>
-To: storm@texas.dk (Kim F. Storm)
-Date: Thu, 21 Dec 89 18:02:03 EDT
-Subject: Inews Kit For NN
-
-What Is This:
-
-This is a mini-inews, suitable for building client-only versions of NN
-that use NNTP for remote reading.  Some unknown (to me) person patched
-it to be driven on NNs config.h file.  I have taken those changes, reversed
-most of them and upgraded to NNTP release version 1.5.7.  This inews was
-a co-operative venture when Stan released it, and it's kind of fitting
-that it continues to be worked on by many hands.
-
-If you have a full installation of news where you're installing NN,
-you could care less about this.
-
-Copyrights:
-
-See individual files for authors.  I wrote conf.h and the
-Makefile, and explicitly put them in the public domain.  Other parts
-may have other copyrights, see the individual files.
-
-Maintenance:
-
-My less-than-humble opinion is that as Stan releases nntp patches, you will
-be able to apply them to this code with no changes whatsoever.  As Stan
-releases patches I will attempt to apply them and upgrade this source,
-but no guarantees.
-
-Why A Separate Release From NNTP:
-
-NN and NNTP both use configuration files to let you fit the software
-for your system.  Unfortunately, they used rather different methods.
-This release specificly reconciles NNs 'config.h' and NNTPs '../common/conf.h'
-by creating a local "conf.h" which maps 'config.h' to what NNTP inews needs.
-Result -- once you build the config.h for NN you're 98% done with NNTP inews.
-
-INSTALLATION:
-
-Ideally you went to your nn source directory and created a subdir
-named inews.  Then you unpacked this in that directory (I have already
-done that, ++Kim).
-
-All you should need to do is read conf.h, make any changes you feel
-like, and then type 'make'.  If things work, type 'make install'.  For
-more data on the inews itself, read the file README.  It's slightly
-edited from the NNTP version to reflect its separation from the rest
-of NNTP.
-
-For more data on the inews itself, read the file README.  It's
-slightly edited from the NNTP version to reflect its separation from
-the rest of NNTP.
-
-Steve Simmons
-scs@lokkur.dexter.mi.us
-December 21, 1989
-
-
---- Changes by Kim Storm, storm@texas.dk
-
-I have edited what Steve sent me a bit further to simplify the
-configuration and installation even more: It now uses nn's code to get
-the hostname, so this is now got for free, and it gets the location of
-the inews program from config.h as well.
-
-Makefile:
-	Added -I../conf to CFLAGS
-	nn's hostname.o is used instead of uname.o to get the hostname.
-	Installation uses nn's inst script (which will use the possible
-	definition of INEWS or NEWS_LIB_DIRECTORY in config.h).
-
-conf.h:
-	#defines to set the proper hostname removed.
-	#include "../config.h" line moved to start of file.
-	Documents optional #define USG to get bcopy function.
-
-clientlib.c, inews.c
-	Added tweaks using a FOR_NN #define to include/exclude
-	code to co-exist with nn's config.h file.
-
-uname.c:
-	Not used (so it is omitted from this distribution).
diff --git a/utils/inews/clientlib.c b/utils/inews/clientlib.c
deleted file mode 100644
index c06c3b6f..00000000
--- a/utils/inews/clientlib.c
+++ /dev/null
@@ -1,525 +0,0 @@
-#ifndef lint
-static char	*sccsid = "@(#)clientlib.c	1.11	(Berkeley) 10/27/89";
-#endif
-
-/*
- * NNTP client routines.
- */
-
-/*
- * Include configuration parameters only if we're made in the nntp tree.
- */
-
-#ifdef FOR_NN
-#include "conf.h"
-#endif
-
-#ifdef NNTPSRC
-#include "../config.h"
-#endif NNTPSRC
-
-#include <stdio.h>
-#ifndef FOR_NN
-#include <sys/types.h>
-#endif
-#ifdef FOR_NN
-#if !defined(NETWORK_DATABASE) || defined(NETWORK_BYTE_ORDER)
-#include <netinet/in.h>
-#endif
-#else
-#include <netinet/in.h>
-#endif
-#include <sys/socket.h>
-#ifndef EXCELAN
-# include <netdb.h>
-#endif /* !EXCELAN */
-
-#include <string.h>
-
-#ifdef EXCELAN
-# define	IPPORT_NNTP	119
-#endif
-
-#ifdef DECNET
-#include <netdnet/dn.h>
-#include <netdnet/dnetdb.h>
-#endif /* DECNET */
-
-#include "nntp.h"
-
-FILE	*ser_rd_fp = NULL;
-FILE	*ser_wr_fp = NULL;
-
-/*
- * getserverbyfile	Get the name of a server from a named file.
- *			Handle white space and comments.
- *			Use NNTPSERVER environment variable if set.
- *
- *	Parameters:	"file" is the name of the file to read.
- *
- *	Returns:	Pointer to static data area containing the
- *			first non-ws/comment line in the file.
- *			NULL on error (or lack of entry in file).
- *
- *	Side effects:	None.
- */
-
-char *
-getserverbyfile(file)
-char	*file;
-{
-	register FILE	*fp;
-	register char	*cp;
-	static char	buf[256];
-	char		*getenv();
-
-	if (cp = getenv("NNTPSERVER")) {
-		(void) strcpy(buf, cp);
-		return (buf);
-	}
-
-	if (file == NULL)
-		return (NULL);
-
-	fp = fopen(file, "r");
-	if (fp == NULL)
-		return (NULL);
-
-	while (fgets(buf, sizeof (buf), fp) != NULL) {
-		if (*buf == '\n' || *buf == '#')
-			continue;
-		cp = strchr(buf, '\n');
-		if (cp)
-			*cp = '\0';
-		(void) fclose(fp);
-		return (buf);
-	}
-
-	(void) fclose(fp);
-	return (NULL);			 /* No entry */
-}
-
-
-/*
- * server_init  Get a connection to the remote news server.
- *
- *	Parameters:	"machine" is the machine to connect to.
- *
- *	Returns:	-1 on error
- *			server's initial response code on success.
- *
- *	Side effects:	Connects to server.
- *			"ser_rd_fp" and "ser_wr_fp" are fp's
- *			for reading and writing to server.
- */
-
-server_init(machine)
-char	*machine;
-{
-	int	sockt_rd, sockt_wr;
-	char	line[256];
-#ifdef DECNET
-	char	*cp;
-
-	cp = strchr(machine, ':');
-
-	if (cp && cp[1] == ':') {
-		*cp = '\0';
-		sockt_rd = get_dnet_socket(machine);
-	} else
-		sockt_rd = get_tcp_socket(machine);
-#else
-	sockt_rd = get_tcp_socket(machine);
-#endif
-
-	if (sockt_rd < 0)
-		return (-1);
-
-	/*
-	 * Now we'll make file pointers (i.e., buffered I/O) out of
-	 * the socket file descriptor.  Note that we can't just
-	 * open a fp for reading and writing -- we have to open
-	 * up two separate fp's, one for reading, one for writing.
-	 */
-
-	if ((ser_rd_fp = fdopen(sockt_rd, "r")) == NULL) {
-		perror("server_init: fdopen #1");
-		return (-1);
-	}
-
-	sockt_wr = dup(sockt_rd);
-	if ((ser_wr_fp = fdopen(sockt_wr, "w")) == NULL) {
-		perror("server_init: fdopen #2");
-		ser_rd_fp = NULL;		/* from above */
-		return (-1);
-	}
-
-	/* Now get the server's signon message */
-
-	(void) get_server(line, sizeof(line));
-	return (atoi(line));
-}
-
-
-/*
- * get_tcp_socket -- get us a socket connected to the news server.
- *
- *	Parameters:	"machine" is the machine the server is running on.
- *
- *	Returns:	Socket connected to the news server if
- *			all is ok, else -1 on error.
- *
- *	Side effects:	Connects to server.
- *
- *	Errors:		Printed via perror.
- */
-
-get_tcp_socket(machine)
-char	*machine;
-{
-	int	s;
-	struct	sockaddr_in sin;
-#ifndef EXCELAN
-	struct	servent *getservbyname(), *sp;
-	struct	hostent *gethostbyname(), *hp;
-#ifdef h_addr
-	int	x = 0;
-	register char **cp;
-#endif h_addr
-
-	if ((sp = getservbyname("nntp", "tcp")) ==  NULL) {
-		fprintf(stderr, "nntp/tcp: Unknown service.\n");
-		return (-1);
-	}
-
-       /*
-        * Name resolution doesn't quite go as far as it should.  Take things
-        * one stage further to allow nnn.nnn.nnn.nnn addresses if all else
-        * fails.
-        */
-       if( (hp = gethostbyname( machine ) ) == NULL ) {
-               unsigned long inet_addr();
-               static struct hostent def;
-               static struct in_addr defaddr;
-               static char *alist[1];
-               static char namebuf[ 256 ];
-               defaddr.s_addr = inet_addr( machine );
-               if( defaddr.s_addr != -1 ) {
-                       strcpy( namebuf, machine );
-                       def.h_name = namebuf;
-#ifdef h_addr
-                       def.h_addr_list = alist;
-#endif
-                       def.h_addr = (char *)&defaddr;
-                       def.h_length = sizeof( struct in_addr );
-                       def.h_addrtype = AF_INET;
-                       def.h_aliases = 0;
-                       hp = &def;
-               }
-       }
-       if (hp == NULL) {
-		fprintf(stderr, "%s: Unknown host.\n", machine);
-		return (-1);
-	}
-
-	memset((char *) &sin, '\0', sizeof(sin));
-	sin.sin_family = hp->h_addrtype;
-	sin.sin_port = sp->s_port;
-#else
-	memset((char *) &sin, '\0', sizeof(sin));
-	sin.sin_family = AF_INET;
-	sin.sin_port = htons(IPPORT_NNTP);
-#endif /* !EXCELAN */
-
-	/*
-	 * The following is kinda gross.  The name server under 4.3
-	 * returns a list of addresses, each of which should be tried
-	 * in turn if the previous one fails.  However, 4.2 hostent
-	 * structure doesn't have this list of addresses.
-	 * Under 4.3, h_addr is a #define to h_addr_list[0].
-	 * We use this to figure out whether to include the NS specific
-	 * code...
-	 */
-
-#ifdef	h_addr
-
-	/* get a socket and initiate connection -- use multiple addresses */
-
-	for (cp = hp->h_addr_list; cp && *cp; cp++) {
-		s = socket(hp->h_addrtype, SOCK_STREAM, 0);
-		if (s < 0) {
-			perror("socket");
-			return (-1);
-		}
-	        memcpy(*cp, (char *)&sin.sin_addr, hp->h_length);
-
-		if (x < 0)
-			fprintf(stderr, "trying %s\n", inet_ntoa(sin.sin_addr));
-		x = connect(s, (struct sockaddr *)&sin, sizeof (sin));
-		if (x == 0)
-			break;
-                fprintf(stderr, "connection to %s: ", inet_ntoa(sin.sin_addr));
-		perror("");
-		(void) close(s);
-	}
-	if (x < 0) {
-		fprintf(stderr, "giving up...\n");
-		return (-1);
-	}
-#else	/* no name server */
-#ifdef EXCELAN
-	if ((s = rresvport(SO_KEEPALIVE)) < 0)
-	{
-		/* Get the socket */
-		perror("socket");
-		return (-1);
-	}
-	/* set up addr for the connect */
-	sin.sin_addr.s_addr = rhost(machine);
-	if (sin.sin_addr.s_addr < 0){
-		fprintf(stderr, "%s: Unknown host.\n", machine);
-		return (-1);
-	}
-	/* And then connect */
-
-	if (connect(s, &sin) < 0) {
-		perror("connect");
-		(void) close(s);
-		return (-1);
-	}
-#else
-	if ((s = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
-		perror("socket");
-		return (-1);
-	}
-
-	/* And then connect */
-
-	memcpy(hp->h_addr, (char *) &sin.sin_addr, hp->h_length);
-	if (connect(s, (struct sockaddr *) &sin, sizeof(sin)) < 0) {
-		perror("connect");
-		(void) close(s);
-		return (-1);
-	}
-
-#endif /* !EXCELAN */
-#endif
-
-	return (s);
-}
-
-#ifdef DECNET
-/*
- * get_dnet_socket -- get us a socket connected to the news server.
- *
- *	Parameters:	"machine" is the machine the server is running on.
- *
- *	Returns:	Socket connected to the news server if
- *			all is ok, else -1 on error.
- *
- *	Side effects:	Connects to server.
- *
- *	Errors:		Printed via nerror.
- */
-
-get_dnet_socket(machine)
-char	*machine;
-{
-	int	s, area, node;
-	struct	sockaddr_dn sdn;
-	struct	nodeent *getnodebyname(), *np;
-
-	memset((char *) &sdn, '\0', sizeof(sdn));
-
-	switch (s = sscanf( machine, "%d%*[.]%d", &area, &node )) {
-		case 1:
-			node = area;
-			area = 0;
-		case 2:
-			node += area*1024;
-			sdn.sdn_add.a_len = 2;
-			sdn.sdn_family = AF_DECnet;
-			sdn.sdn_add.a_addr[0] = node % 256;
-			sdn.sdn_add.a_addr[1] = node / 256;
-			break;
-		default:
-			if ((np = getnodebyname(machine)) == NULL) {
-				fprintf(stderr,
-					"%s: Unknown host.\n", machine);
-				return (-1);
-			} else {
-				memcpy(np->n_addr,
-					(char *) sdn.sdn_add.a_addr,
-					np->n_length);
-				sdn.sdn_add.a_len = np->n_length;
-				sdn.sdn_family = np->n_addrtype;
-			}
-			break;
-	}
-	sdn.sdn_objnum = 0;
-	sdn.sdn_flags = 0;
-	sdn.sdn_objnamel = strlen("NNTP");
-	memcpy("NNTP", &sdn.sdn_objname[0], sdn.sdn_objnamel);
-
-	if ((s = socket(AF_DECnet, SOCK_STREAM, 0)) < 0) {
-		nerror("socket");
-		return (-1);
-	}
-
-	/* And then connect */
-
-	if (connect(s, (struct sockaddr *) &sdn, sizeof(sdn)) < 0) {
-		nerror("connect");
-		close(s);
-		return (-1);
-	}
-
-	return (s);
-}
-#endif
-
-
-
-/*
- * handle_server_response
- *
- *	Print some informative messages based on the server's initial
- *	response code.  This is here so inews, rn, etc. can share
- *	the code.
- *
- *	Parameters:	"response" is the response code which the
- *			server sent us, presumably from "server_init",
- *			above.
- *			"server" is the news server we got the
- *			response code from.
- *
- *	Returns:	-1 if the error is fatal (and we should exit).
- *			0 otherwise.
- *
- *	Side effects:	None.
- */
-
-handle_server_response(response, server)
-int	response;
-char	*server;
-{
-    switch (response) {
-	case OK_NOPOST:		/* fall through */
-    		printf(
-	"NOTE: This machine does not have permission to post articles.\n");
-		printf(
-	"      Please don't waste your time trying.\n\n");
-
-	case OK_CANPOST:
-		return (0);
-		break;
-
-	case ERR_ACCESS:
-		printf(
-   "This machine does not have permission to use the %s news server.\n",
-		server);
-		return (-1);
-		break;
-
-	default:
-		printf("Unexpected response code from %s news server: %d\n",
-			server, response);
-		return (-1);
-		break;
-    }
-	/*NOTREACHED*/
-}
-
-
-/*
- * put_server -- send a line of text to the server, terminating it
- * with CR and LF, as per ARPA standard.
- *
- *	Parameters:	"string" is the string to be sent to the
- *			server.
- *
- *	Returns:	Nothing.
- *
- *	Side effects:	Talks to the server.
- *
- *	Note:		This routine flushes the buffer each time
- *			it is called.  For large transmissions
- *			(i.e., posting news) don't use it.  Instead,
- *			do the fprintf's yourself, and then a final
- *			fflush.
- */
-
-void
-put_server(string)
-char *string;
-{
-#ifdef DEBUG
-	fprintf(stderr, ">>> %s\n", string);
-#endif
-	fprintf(ser_wr_fp, "%s\r\n", string);
-	(void) fflush(ser_wr_fp);
-}
-
-
-/*
- * get_server -- get a line of text from the server.  Strips
- * CR's and LF's.
- *
- *	Parameters:	"string" has the buffer space for the
- *			line received.
- *			"size" is the size of the buffer.
- *
- *	Returns:	-1 on error, 0 otherwise.
- *
- *	Side effects:	Talks to server, changes contents of "string".
- */
-
-get_server(string, size)
-char	*string;
-int	size;
-{
-	register char *cp;
-
-	if (fgets(string, size, ser_rd_fp) == NULL)
-		return (-1);
-
-	if ((cp = strchr(string, '\r')) != NULL)
-		*cp = '\0';
-	else if ((cp = strchr(string, '\n')) != NULL)
-		*cp = '\0';
-#ifdef DEBUG
-	fprintf(stderr, "<<< %s\n", string);
-#endif
-
-	return (0);
-}
-
-
-/*
- * close_server -- close the connection to the server, after sending
- *		the "quit" command.
- *
- *	Parameters:	None.
- *
- *	Returns:	Nothing.
- *
- *	Side effects:	Closes the connection with the server.
- *			You can't use "put_server" or "get_server"
- *			after this routine is called.
- */
-
-void
-close_server()
-{
-	char	ser_line[256];
-
-	if (ser_wr_fp == NULL || ser_rd_fp == NULL)
-		return;
-
-	put_server("QUIT");
-	(void) get_server(ser_line, sizeof(ser_line));
-
-	(void) fclose(ser_wr_fp);
-	(void) fclose(ser_rd_fp);
-}
-
diff --git a/utils/inews/clientlib.h b/utils/inews/clientlib.h
deleted file mode 100644
index 0c1137f7..00000000
--- a/utils/inews/clientlib.h
+++ /dev/null
@@ -1,11 +0,0 @@
-/*
- * Definitions for NNTP client routines.
- *
- * @(#)clientlib.h	1.1	(Berkeley) 1/9/88
- */
-
-extern	char	*getserverbyfile();
-extern	int	server_init();
-extern	void	put_server();
-extern	int	get_server();
-extern	void	close_server();
diff --git a/utils/inews/conf.h b/utils/inews/conf.h
deleted file mode 100644
index 0e6849dc..00000000
--- a/utils/inews/conf.h
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * Configuration file for nn version of nntp inews.  Written by
- * Steve Simmons (scs@lokkur.dexter.mi.us), Dec 19, 1989.  Placed
- * in the public domain by the author.  This file rationalizes
- * the stock NNTP release of inews with the definitions for NN.
- * The rationalization was done as of NN version 6.3.10 and NNTP
- * version 1.5.7.
- *
- * You must edit this file to reflect your local configuration
- * and environment.
- *
- * Follow the instructions given in the comments.  See the file
- * README for more comments.
- *
- * $RCSfile: conf.h,v $	$Revision: 1.2 $
- *
- * $Author: tom $	$Date: 1997/07/28 00:39:05 $
- *
- * $State: Exp $	$Locker:  $
- *
- * $Log: conf.h,v $
- * Revision 1.2  1997/07/28 00:39:05  tom
- * 2.7.1ac-0.43
- *
- * Revision 1.1  1989/12/20 17:43:03  news
- * v2_6
- *
- * Revision 1.1  89/12/20  17:43:03  news
- * Initial revision
- *
- * May 1st, 1990, Kim Storm
- * Modifications to get hostname for free (see README.NN)
- */
-
-#ifndef	NNINEWSCONF_H
-#define	NNINEWSCONF_H
-
-/* #include	"config.h" */
-/*
- *  added by Montulli@ukanaix.cc.ukans.edu
- *  to replace the need for config.h
- */
-
-#include <stdio.h>
-#include <ctype.h>
-
-
-/*
- *      Define NNTP_SERVER to the name of a file containing the name of the
- *      nntp server.
- *
- *      It is vital that both the nnmaster and all nn users on a machine
- *      uses the same nntp server, because the nn database is synchronized
- *      with a specific news active file.
- *
- *      If the file name does not start with a slash, it is relative to
- *      LIB_DIRECTORY defined below.
- *      NOTE: If you plan to use the included inews, it MUST be a full pathname
- */
-
-#define NNTP_SERVER     "/usr/local/etc/nntpserver"
-/* #define NNTP_SERVER     "/usr/lib/nntp_server" */
-
-
-#ifndef NNTP
-/* WHY DO YOU WANT TO MAKE MINI-INEWS WHEN YOU DONT USE NNTP */
-#endif
-
-/*
- *  Define your local domain name.  You *must* define something, either
- *  here, in config.h, or elsewhere according to your local standards.
- *  See comment below on HIDDENNET.
- *
- *  You are not strictly *required* to have a domain name; nonetheless
- *  it's a good idea.  If you are on the Internet or otherwise have a
- *  valid domain name, use it (except see HIDDENNET below).  If you're
- *  a uucp-only site, use ".uucp" for now and go get a real name.
- *
- *  Note that if you imbed your domain name in the hostname and you don't
- *  use HIDDENNET, you may get a period on the end of your fully qualified
- *  domian name (FQDN) in postings.  In that case, use HIDDENNET and
- *  define DOMAIN to be your FQDN.
- */
-
-#define	DOMAIN	"cc.ukans.edu" 
-
-/*
- *  If you define this, the hostname will not appear in the posting
- *  data except on the path.  Items will be from user@DOMAIN (with
- *  DOMAIN as defined above).  If you don't want this, comment it out.
- */
-
-/* #define	HIDDENNET */
-
-/*
- *  There are a number of ways that inews will try to figure out the
- *  host name.  When used with nn, the definitions in ../config.h
- *  will specify this, so you don't have to do anything special here.
- */
-
-/*
- *  If you don't have bcopy, the following define will make one...
- */
-
-/* #define USG			/* */
-
-/*
- *  You shouldn't need to touch anything below this line.
- */
-
-/*
- *  This is the code needed to get the proper hostname.
- *
- *	nn provides a gethostname function for generic use.
- *	we fake uname() for inews.c using this:
- */
-
-#define	uname(str) gethostname(str, sizeof(str))
-
-/*
- *  Stock nntp inews and nn use some different #define names for the
- *  same general functions.  This synchronises them.
- */
-
-#define	SERVER_FILE	NNTP_SERVER
-
-/*
- *	Reverse engineering (nn got this the other way around)....
- */
-
-#ifdef HAVE_STRCHR
-#define	rindex strrchr
-#define index strchr
-#endif
-
-/*
- *  Sanity checks (You know.  Checks you get from Sanity Claus)
- */
-
-#ifdef	HIDDENNET
-#ifndef	DOMAIN
-YOU_BLEW_IT READ_THE_INSTRUCTIONS_AGAIN
-#endif
-#endif
-
-#endif	/* of ifdef NNINEWSCONF_H */
diff --git a/utils/inews/config.h b/utils/inews/config.h
deleted file mode 100644
index eacc4361..00000000
--- a/utils/inews/config.h
+++ /dev/null
@@ -1,392 +0,0 @@
-
-/**************************** NN CONFIGURATION ***************************
- *
- *      Configuration file for nn.
- *
- *      You must edit this file to reflect your local configuration
- *      and environment.
- *
- *      Before editing this file, read the licence terms in the README
- *      file and the installation guidelines in the INSTALLATION file.
- *
- *      (c) Copyright 1990, Kim F. Storm.  All rights reserved.
- */
-
-#define RELEASE         "6.4"
-
-#include <stdio.h>
-#include <ctype.h>
-
-
-/*********************** NETWORK DEPENDENT DEFINITIONS **********************
- *
- *      Define NETWORK_DATABASE if you share the database through NFS on
- *      a network with different, non-compatible machines, e.g. SUNs and
- *      VAXen, or SUN-3 and SUN-4, or if you are using different compilers
- *      on the same architecture.
- *
- *      In a homogenous network, you can leave it undefined for higher
- *      performance (no data conversion is needed).
- */
-
-/* #define NETWORK_DATABASE     /* */
-
-
-/********************************** NNTP *********************************
- *
- *      Define NNTP to enable nntp support.  If you are not using NNTP,
- *      just leave the following NNTP_* definitions as they are - they
- *      will be ignored anyway.
- *
- *      With NNTP, the nnmaster still maintains a local database of
- *      all article headers for fast access (and because NNTP does not
- *      support nn - yet), while the articles are fetched from the
- *      nntp server when they are read or saved.
- *
- *      You may still share this database through NFS locally (see the
- *      description of NETWORK_DATABASE above) if you don't want to
- *      have separate nn databases on all your local systems.
- *
- *      Consult the file NNTP for further information on the use of NNTP.
- */
-
-/* #define NNTP                 /* */
-
-/*
- *      Define NNTP_SERVER to the name of a file containing the name of the
- *      nntp server.
- *
- *      It is vital that both the nnmaster and all nn users on a machine
- *      uses the same nntp server, because the nn database is synchronized
- *      with a specific news active file.
- *
- *      If the file name does not start with a slash, it is relative to
- *      LIB_DIRECTORY defined below.
- *      NOTE: If you plan to use the included inews, it MUST be a full pathname
- */
-
-#define NNTP_SERVER     "/usr/lib/nntp_server"
-
-/*
- *      Define NNTP_POST if you want nn to reject attempts to post via
- *      NNTP to a server, that disallows postings.
- *
- *      You should define this, if you use the NNTP based mini-inews for
- *      postings from NNTP clients.  If you use another mechanism, that
- *      does not involve NNTP, you should leave it undefined.
- */
-
-#define NNTP_POST             /* */
-
-/*
- *      NNTP's mini-inews seems to require that messages contain a complete
- *      header with Message-ID, Path, and Date fields which the normal inews
- *      generates itself.  If your mini-inews requires these headers to
- *      be present, define NNTP_MINI_INEWS_HEADER below.
- */
-
-#define NNTP_MINI_INEWS_HEADER  /* uses "broken" mini-inews */
-
-/*
- *      Define NNTP_PATH_HOSTNAME to force a specific hostname into the
- *      Path: header generated when NNTP_MINI_INEWS_HEADER is defined.
- *      This is useful for multi-machine sites with one mail/news gateway.
- *
- *      If the string starts with a '/' it is taken as the name of a file
- *      from which the outgoing hostname should be read (at runtime).
- */
-
-/* #define NNTP_PATH_HOSTNAME   "puthostnamehere"       /* */
-
-
-/***************** OPERATING SYSTEM DEPENDENT DEFINITIONS *******************
- *
- *      Include the appropriate s- file for your system below.
- *
- *      If a file does not exist for your system, you can use
- *      conf/s-template.h as a starting point for writing you own.
- */
-
-#include "s-sys5.h"
-
-/*
- *      Define DEFAULT_PAGER as the initial value of the 'pager' variable.
- *      nnadmin pipes shell command output though this command.
- */
-
-#define DEFAULT_PAGER           "pg -n -s"      /* system V */
-/* #define DEFAULT_PAGER        "more"                  /* bsd */
-
-/*
- *      DEFAULT_PRINTER is the initial value of the 'printer' variable.
- *      nn's :print command pipes text into this command.
- */
-
-#define DEFAULT_PRINTER         "lp -s"         /* System V */
-/* #define DEFAULT_PRINTER      "lpr -p -JNEWS" /* bsd */
-
-/*
- *      Define RESIZING to make nn understand dynamic window-resizing.
- *      (It uses the TIOCGWINSZ ioctl found on most 4.3BSD systems)
- */
-
-/* #define RESIZING             /* */
-
-
-/********************** MACHINE DEPENDENT DEFINITIONS **********************
- *
- *      Include the appropriate m- file for your system below.
- *
- *      If a file does not exist for your system, you can use
- *      conf/m-template.h as a starting point for writing you own.
- */
-
-#include "m-m680x0.h"
-
-
-/***************************** OWNERSHIP ***************************
- *
- *      Specify owner and group for installed files and programs.
- *
- *      The nnmaster will run suid/sgid to this owner and group.
- *
- *      The only requirements are that the ownership allows the
- *      nnmaster to READ the news related files and directories, and
- *      the ordinary users to read the database and execute the nn*
- *      programs.
- *
- *      Common choices are:  (news, news)  and   (your uid, your gid)
- */
-
-#define OWNER   "news"
-#define GROUP   "news"
-
-
-/**************************** LOCALIZATION ****************************
- *
- *      Specify where programs and files are installed.
- *
- *      BIN_DIRECTORY    - the location of the user programs (mandatory)
- *
- *      LIB_DIRECTORY    - the location of auxiliary programs and files.
- *                         (mandatory UNLESS ALL of the following are defined).
- *
- *      MASTER_DIRECTORY - the location of the master program (on server)
- *                         (= LIB_DIRECTORY if undefined)
- *
- *      CLIENT_DIRECTORY - the location of auxiliary programs (on clients)
- *                         (= LIB_DIRECTORY if undefined)
- *
- *      HELP_DIRECTORY   - the location of help files, online manual, etc.
- *                         (= CLIENT_DIRECTORY/help if undefined)
- *
- *      CACHE_DIRECTORY  - if NNTP is used, nn uses this central directory
- *                         to store working copies of articles on the local
- *                         system.  If not defined, it stores the articles
- *                         in each user's ~/.nn directory.
- *
- *      TMP_DIRECTORY    - temporary file storage.  Overriden by $TMPDIR.
- *                         (= /usr/tmp if undefined).
- *
- *      LOG_FILE         - the location of nn's log file.
- *                         (= LIB_DIRECTORY/Log if undefined).
- */
-
-#define BIN_DIRECTORY   "/usr/local/bin"
-#define LIB_DIRECTORY   "/usr/local/lib/nn"
-
-
-/**************************** DATABASE LOCATION **************************
- *
- *      Specify where the nn database should be installed.
- *
- *      If none of the following symbols are defined, the database will
- *      be contained in the NEWS_DIRECTORY in a separate .nn directory for
- *      master files and in files named .nnx and .nnd in each group's
- *      spool directory.  To use this scheme, the OWNER specified above
- *      must have write permission on the news spool directories.
- *
- *      If you access news via NNTP, you will probably always have to
- *      give the database directory explicitly through DB_DIRECTORY
- *      (and DB_DATA_DIRECTORY), since the normal news spool directories
- *      are probably not available on the local system.
- *      The exception may be if nnmaster runs directly on the nntp server.
- *
- *      To change the default behaviour, you can define the following
- *      symbols:
- *
- *      DB_DIRECTORY       - the directory containing the master files.
- *
- *      DB_DATA_DIRECTORY  - the directory containing the per-group files
- *                           (default is DB_DIRECTORY/DATA if undefined).
- *
- *      DB_LONG_NAMES      - use group's name rather than number when
- *                           building file names in DB_DATA_DIRECTORY.
- *           (The file system must support long file names!!)
- */
-
-#define DB_DIRECTORY    "/usr/spool/nn"
-
-
-/*************************** NEWS TRANSPORT **************************
- *
- *      Specify the location of your news programs and files
- *      You only need to specify these if you are not
- *      satisfied with the default settings.
- *
- *      NEWS_DIRECTORY          - The news spool directory.
- *                                Default: /usr/spool/news
- *
- *      NEWS_LIB_DIRECTORY      - The news lib directory.
- *                                Default: /usr/lib/news
- *
- *      INEWS_PATH              - The location of the inews program.
- *                                Default: NEWS_LIB_DIR/inews
- *
- *      RMGROUP_PATH            - The location of the rmgroup program.
- *                                Default: NEWS_LIB_DIR/{rm,del}group
- */
-
-#define NEWS_DIRECTORY          "/usr/spool/news"       /* */
-#define NEWS_LIB_DIRECTORY      "/usr/lib/news"         /* */
-
-/* #define INEWS_PATH           "/usr/lib/news/inews"   /* */
-
-
-/*************************** MAIL INTERFACE *************************
- *
- *      Specify a mailer that accepts a letter WITH a header IN THE TEXT.
- *
- *      A program named 'recmail' program is normally delivered with
- *      the Bnews system, or you can use sendmail -t if you have it.
- *
- *      The contrib/ directory contains two programs which you might
- *      be able to use with a little tweaking.
- */
-
-#define REC_MAIL        "/usr/lib/news/recmail" /* non-sendmail */
-/* #define REC_MAIL     "/usr/lib/sendmail -t"  /* sendmail */
-
-
-/*
- *      Define HAVE_ROUTING if your mailer understands domain based
- *      adresses (...@...) and performs the necessary rerouting (e.g.
- *      Sendmail or Smail).
- *
- *      Otherwise, nn will provide a simple routing facility using
- *      routing information specified in the file LIB_DIRECTORY/routes.
- */
-
-#define HAVE_ROUTING                    /* */
-
-/*
- *      If HAVE_ROUTING is NOT defined, nn needs to know the name of
- *      your host.  To obtain the host name it will use either of the
- *      'uname' or 'gethostname' system calls as specified in the s-
- *      file included above.
- *
- *      If neither 'uname' nor 'gethostname' is available, you must
- *      define HOSTNAME to be the name of your host.  Otherwise, leave
- *      it undefined (it will not be used anyway).
- */
-
-/* #define HOSTNAME     "myhost"        /* Not used if HAVE_ROUTING */
-
-/*
- *      Define APPEND_SIGNATURE if you want nn to ask users to append
- *      ~/.signature to mail messages (reply/forward/mail).
- *
- *      If the mailer defined in REC_MAIL automatically includes .signature
- *      you should not define this (it will fool people to include it twice).
- *
- *      I think 'recmail' includes .signature, but 'sendmail -t' doesn't.
- */
-
-/* #define APPEND_SIGNATURE             /* */
-
-/*
- *      BUG_REPORT_ADDRESS is the initial value of the bug-report-address
- *      variable which is used by the :bug command to report bugs in
- *      the nn software.
- */
-
-#define BUG_REPORT_ADDRESS      "nn-bugs@dkuug.dk"
-
-
-/*************************** DOCUMENTATION ***************************
- *
- *      Specify directories for the user and system manuals
- *
- *      Adapt this to your local standards; the manuals will be named
- *              $(MAN_DIR)/program.$(MAN_SECTION)
- *
- *      USER_MAN        - nn, nntidy, nngrep, etc.
- *      SYS_MAN         - nnadmin
- *      DAEMON_MAN      - nnmaster
- */
-
-#define USER_MAN_DIR    "/usr/man/man1"
-#define USER_MAN_SECTION        "1"
-
-#define SYS_MAN_DIR     "/usr/man/man1"
-#define SYS_MAN_SECTION         "1m"
-
-#define DAEMON_MAN_DIR  "/usr/man/man8"
-#define DAEMON_MAN_SECTION      "8"
-
-
-/************************** LOCAL POLICY *****************************
- *
- *      Define STATISTICS if you want to keep a record of how much
- *      time the users spend on news reading.
- *
- *      Sessions shorter than the specified number of minutes are not
- *      recorded (don't clutter up the log file).
- *
- *      Usage statistics is entered into the $LOG_FILE with code U
- */
-
-/* #define STATISTICS   5 /* minutes */
-
-/*
- *      Define ACCOUNTING if you want to keep accumulated accounting
- *      based on the statistics in a separate 'acct' file.  In this
- *      case, the accounting figures will be secret, and not be
- *      written to the Log file.  And the users will not be able to
- *      "decrease" their own account.
- *
- *      See account.c for optional cost calculation parameters.
- */
-
-/* #define ACCOUNTING           /* */
-
-/*
- *      Define AUTHORIZE if you want to restrict the use of nn to
- *      certain users or certain periods of the day.  Define both
- *      this and ACCOUNTING if you want to impose a usage quota
- *
- *      See account.c for implementing various access policies.
- */
-
-/* #define AUTHORIZE    /* */
-
-/*
- *      Default folder directory
- */
-
-#define FOLDER_DIRECTORY        "~/News"
-
-/*
- *      Max length of authors name (in "edited" format).
- *      Also size of "Name" field on the article menus.
- *      You may want to increase this if your terminals are wider than
- *      80 columns.
- */
-
-#define NAME_LENGTH             16
-
-
-/************************ CONFIGURATION COMPLETED ************************/
-
-#include "global.h"
-
diff --git a/utils/inews/config.h-dist b/utils/inews/config.h-dist
deleted file mode 100644
index eacc4361..00000000
--- a/utils/inews/config.h-dist
+++ /dev/null
@@ -1,392 +0,0 @@
-
-/**************************** NN CONFIGURATION ***************************
- *
- *      Configuration file for nn.
- *
- *      You must edit this file to reflect your local configuration
- *      and environment.
- *
- *      Before editing this file, read the licence terms in the README
- *      file and the installation guidelines in the INSTALLATION file.
- *
- *      (c) Copyright 1990, Kim F. Storm.  All rights reserved.
- */
-
-#define RELEASE         "6.4"
-
-#include <stdio.h>
-#include <ctype.h>
-
-
-/*********************** NETWORK DEPENDENT DEFINITIONS **********************
- *
- *      Define NETWORK_DATABASE if you share the database through NFS on
- *      a network with different, non-compatible machines, e.g. SUNs and
- *      VAXen, or SUN-3 and SUN-4, or if you are using different compilers
- *      on the same architecture.
- *
- *      In a homogenous network, you can leave it undefined for higher
- *      performance (no data conversion is needed).
- */
-
-/* #define NETWORK_DATABASE     /* */
-
-
-/********************************** NNTP *********************************
- *
- *      Define NNTP to enable nntp support.  If you are not using NNTP,
- *      just leave the following NNTP_* definitions as they are - they
- *      will be ignored anyway.
- *
- *      With NNTP, the nnmaster still maintains a local database of
- *      all article headers for fast access (and because NNTP does not
- *      support nn - yet), while the articles are fetched from the
- *      nntp server when they are read or saved.
- *
- *      You may still share this database through NFS locally (see the
- *      description of NETWORK_DATABASE above) if you don't want to
- *      have separate nn databases on all your local systems.
- *
- *      Consult the file NNTP for further information on the use of NNTP.
- */
-
-/* #define NNTP                 /* */
-
-/*
- *      Define NNTP_SERVER to the name of a file containing the name of the
- *      nntp server.
- *
- *      It is vital that both the nnmaster and all nn users on a machine
- *      uses the same nntp server, because the nn database is synchronized
- *      with a specific news active file.
- *
- *      If the file name does not start with a slash, it is relative to
- *      LIB_DIRECTORY defined below.
- *      NOTE: If you plan to use the included inews, it MUST be a full pathname
- */
-
-#define NNTP_SERVER     "/usr/lib/nntp_server"
-
-/*
- *      Define NNTP_POST if you want nn to reject attempts to post via
- *      NNTP to a server, that disallows postings.
- *
- *      You should define this, if you use the NNTP based mini-inews for
- *      postings from NNTP clients.  If you use another mechanism, that
- *      does not involve NNTP, you should leave it undefined.
- */
-
-#define NNTP_POST             /* */
-
-/*
- *      NNTP's mini-inews seems to require that messages contain a complete
- *      header with Message-ID, Path, and Date fields which the normal inews
- *      generates itself.  If your mini-inews requires these headers to
- *      be present, define NNTP_MINI_INEWS_HEADER below.
- */
-
-#define NNTP_MINI_INEWS_HEADER  /* uses "broken" mini-inews */
-
-/*
- *      Define NNTP_PATH_HOSTNAME to force a specific hostname into the
- *      Path: header generated when NNTP_MINI_INEWS_HEADER is defined.
- *      This is useful for multi-machine sites with one mail/news gateway.
- *
- *      If the string starts with a '/' it is taken as the name of a file
- *      from which the outgoing hostname should be read (at runtime).
- */
-
-/* #define NNTP_PATH_HOSTNAME   "puthostnamehere"       /* */
-
-
-/***************** OPERATING SYSTEM DEPENDENT DEFINITIONS *******************
- *
- *      Include the appropriate s- file for your system below.
- *
- *      If a file does not exist for your system, you can use
- *      conf/s-template.h as a starting point for writing you own.
- */
-
-#include "s-sys5.h"
-
-/*
- *      Define DEFAULT_PAGER as the initial value of the 'pager' variable.
- *      nnadmin pipes shell command output though this command.
- */
-
-#define DEFAULT_PAGER           "pg -n -s"      /* system V */
-/* #define DEFAULT_PAGER        "more"                  /* bsd */
-
-/*
- *      DEFAULT_PRINTER is the initial value of the 'printer' variable.
- *      nn's :print command pipes text into this command.
- */
-
-#define DEFAULT_PRINTER         "lp -s"         /* System V */
-/* #define DEFAULT_PRINTER      "lpr -p -JNEWS" /* bsd */
-
-/*
- *      Define RESIZING to make nn understand dynamic window-resizing.
- *      (It uses the TIOCGWINSZ ioctl found on most 4.3BSD systems)
- */
-
-/* #define RESIZING             /* */
-
-
-/********************** MACHINE DEPENDENT DEFINITIONS **********************
- *
- *      Include the appropriate m- file for your system below.
- *
- *      If a file does not exist for your system, you can use
- *      conf/m-template.h as a starting point for writing you own.
- */
-
-#include "m-m680x0.h"
-
-
-/***************************** OWNERSHIP ***************************
- *
- *      Specify owner and group for installed files and programs.
- *
- *      The nnmaster will run suid/sgid to this owner and group.
- *
- *      The only requirements are that the ownership allows the
- *      nnmaster to READ the news related files and directories, and
- *      the ordinary users to read the database and execute the nn*
- *      programs.
- *
- *      Common choices are:  (news, news)  and   (your uid, your gid)
- */
-
-#define OWNER   "news"
-#define GROUP   "news"
-
-
-/**************************** LOCALIZATION ****************************
- *
- *      Specify where programs and files are installed.
- *
- *      BIN_DIRECTORY    - the location of the user programs (mandatory)
- *
- *      LIB_DIRECTORY    - the location of auxiliary programs and files.
- *                         (mandatory UNLESS ALL of the following are defined).
- *
- *      MASTER_DIRECTORY - the location of the master program (on server)
- *                         (= LIB_DIRECTORY if undefined)
- *
- *      CLIENT_DIRECTORY - the location of auxiliary programs (on clients)
- *                         (= LIB_DIRECTORY if undefined)
- *
- *      HELP_DIRECTORY   - the location of help files, online manual, etc.
- *                         (= CLIENT_DIRECTORY/help if undefined)
- *
- *      CACHE_DIRECTORY  - if NNTP is used, nn uses this central directory
- *                         to store working copies of articles on the local
- *                         system.  If not defined, it stores the articles
- *                         in each user's ~/.nn directory.
- *
- *      TMP_DIRECTORY    - temporary file storage.  Overriden by $TMPDIR.
- *                         (= /usr/tmp if undefined).
- *
- *      LOG_FILE         - the location of nn's log file.
- *                         (= LIB_DIRECTORY/Log if undefined).
- */
-
-#define BIN_DIRECTORY   "/usr/local/bin"
-#define LIB_DIRECTORY   "/usr/local/lib/nn"
-
-
-/**************************** DATABASE LOCATION **************************
- *
- *      Specify where the nn database should be installed.
- *
- *      If none of the following symbols are defined, the database will
- *      be contained in the NEWS_DIRECTORY in a separate .nn directory for
- *      master files and in files named .nnx and .nnd in each group's
- *      spool directory.  To use this scheme, the OWNER specified above
- *      must have write permission on the news spool directories.
- *
- *      If you access news via NNTP, you will probably always have to
- *      give the database directory explicitly through DB_DIRECTORY
- *      (and DB_DATA_DIRECTORY), since the normal news spool directories
- *      are probably not available on the local system.
- *      The exception may be if nnmaster runs directly on the nntp server.
- *
- *      To change the default behaviour, you can define the following
- *      symbols:
- *
- *      DB_DIRECTORY       - the directory containing the master files.
- *
- *      DB_DATA_DIRECTORY  - the directory containing the per-group files
- *                           (default is DB_DIRECTORY/DATA if undefined).
- *
- *      DB_LONG_NAMES      - use group's name rather than number when
- *                           building file names in DB_DATA_DIRECTORY.
- *           (The file system must support long file names!!)
- */
-
-#define DB_DIRECTORY    "/usr/spool/nn"
-
-
-/*************************** NEWS TRANSPORT **************************
- *
- *      Specify the location of your news programs and files
- *      You only need to specify these if you are not
- *      satisfied with the default settings.
- *
- *      NEWS_DIRECTORY          - The news spool directory.
- *                                Default: /usr/spool/news
- *
- *      NEWS_LIB_DIRECTORY      - The news lib directory.
- *                                Default: /usr/lib/news
- *
- *      INEWS_PATH              - The location of the inews program.
- *                                Default: NEWS_LIB_DIR/inews
- *
- *      RMGROUP_PATH            - The location of the rmgroup program.
- *                                Default: NEWS_LIB_DIR/{rm,del}group
- */
-
-#define NEWS_DIRECTORY          "/usr/spool/news"       /* */
-#define NEWS_LIB_DIRECTORY      "/usr/lib/news"         /* */
-
-/* #define INEWS_PATH           "/usr/lib/news/inews"   /* */
-
-
-/*************************** MAIL INTERFACE *************************
- *
- *      Specify a mailer that accepts a letter WITH a header IN THE TEXT.
- *
- *      A program named 'recmail' program is normally delivered with
- *      the Bnews system, or you can use sendmail -t if you have it.
- *
- *      The contrib/ directory contains two programs which you might
- *      be able to use with a little tweaking.
- */
-
-#define REC_MAIL        "/usr/lib/news/recmail" /* non-sendmail */
-/* #define REC_MAIL     "/usr/lib/sendmail -t"  /* sendmail */
-
-
-/*
- *      Define HAVE_ROUTING if your mailer understands domain based
- *      adresses (...@...) and performs the necessary rerouting (e.g.
- *      Sendmail or Smail).
- *
- *      Otherwise, nn will provide a simple routing facility using
- *      routing information specified in the file LIB_DIRECTORY/routes.
- */
-
-#define HAVE_ROUTING                    /* */
-
-/*
- *      If HAVE_ROUTING is NOT defined, nn needs to know the name of
- *      your host.  To obtain the host name it will use either of the
- *      'uname' or 'gethostname' system calls as specified in the s-
- *      file included above.
- *
- *      If neither 'uname' nor 'gethostname' is available, you must
- *      define HOSTNAME to be the name of your host.  Otherwise, leave
- *      it undefined (it will not be used anyway).
- */
-
-/* #define HOSTNAME     "myhost"        /* Not used if HAVE_ROUTING */
-
-/*
- *      Define APPEND_SIGNATURE if you want nn to ask users to append
- *      ~/.signature to mail messages (reply/forward/mail).
- *
- *      If the mailer defined in REC_MAIL automatically includes .signature
- *      you should not define this (it will fool people to include it twice).
- *
- *      I think 'recmail' includes .signature, but 'sendmail -t' doesn't.
- */
-
-/* #define APPEND_SIGNATURE             /* */
-
-/*
- *      BUG_REPORT_ADDRESS is the initial value of the bug-report-address
- *      variable which is used by the :bug command to report bugs in
- *      the nn software.
- */
-
-#define BUG_REPORT_ADDRESS      "nn-bugs@dkuug.dk"
-
-
-/*************************** DOCUMENTATION ***************************
- *
- *      Specify directories for the user and system manuals
- *
- *      Adapt this to your local standards; the manuals will be named
- *              $(MAN_DIR)/program.$(MAN_SECTION)
- *
- *      USER_MAN        - nn, nntidy, nngrep, etc.
- *      SYS_MAN         - nnadmin
- *      DAEMON_MAN      - nnmaster
- */
-
-#define USER_MAN_DIR    "/usr/man/man1"
-#define USER_MAN_SECTION        "1"
-
-#define SYS_MAN_DIR     "/usr/man/man1"
-#define SYS_MAN_SECTION         "1m"
-
-#define DAEMON_MAN_DIR  "/usr/man/man8"
-#define DAEMON_MAN_SECTION      "8"
-
-
-/************************** LOCAL POLICY *****************************
- *
- *      Define STATISTICS if you want to keep a record of how much
- *      time the users spend on news reading.
- *
- *      Sessions shorter than the specified number of minutes are not
- *      recorded (don't clutter up the log file).
- *
- *      Usage statistics is entered into the $LOG_FILE with code U
- */
-
-/* #define STATISTICS   5 /* minutes */
-
-/*
- *      Define ACCOUNTING if you want to keep accumulated accounting
- *      based on the statistics in a separate 'acct' file.  In this
- *      case, the accounting figures will be secret, and not be
- *      written to the Log file.  And the users will not be able to
- *      "decrease" their own account.
- *
- *      See account.c for optional cost calculation parameters.
- */
-
-/* #define ACCOUNTING           /* */
-
-/*
- *      Define AUTHORIZE if you want to restrict the use of nn to
- *      certain users or certain periods of the day.  Define both
- *      this and ACCOUNTING if you want to impose a usage quota
- *
- *      See account.c for implementing various access policies.
- */
-
-/* #define AUTHORIZE    /* */
-
-/*
- *      Default folder directory
- */
-
-#define FOLDER_DIRECTORY        "~/News"
-
-/*
- *      Max length of authors name (in "edited" format).
- *      Also size of "Name" field on the article menus.
- *      You may want to increase this if your terminals are wider than
- *      80 columns.
- */
-
-#define NAME_LENGTH             16
-
-
-/************************ CONFIGURATION COMPLETED ************************/
-
-#include "global.h"
-
diff --git a/utils/inews/inews.c b/utils/inews/inews.c
deleted file mode 100644
index 134dc460..00000000
--- a/utils/inews/inews.c
+++ /dev/null
@@ -1,392 +0,0 @@
-#ifndef lint
-static char *sccsid = "@(#)inews.c	1.16	(Berkeley) 8/27/89";
-#endif
-
-/*
- * Itty-bitty inews for talking to remote server.
- * Simply accept input on stdin (or via a named file) and dump this
- * to the server; add a From: and Path: line if missing in the original.
- * Print meaningful errors from the server.
- * Limit .signature files to MAX_SIGNATURE lines.
- * No processing of command line options.
- *
- * Original by Steven Grady <grady@ucbvax.Berkeley.EDU>, with thanks from
- * Phil Lapsley <phil@ucbvax.berkeley.edu>
- * Send bug reports to Stan Barber <sob@bcm.tmc.edu>
- */
-
-#include <stdio.h>
-#include <pwd.h>
-#include <ctype.h>
-#include "conf.h"
-#include "nntp.h"
-#include "clientlib.h"
-#include <string.h>
-
-#define	MAX_SIGNATURE	4
-
-extern	FILE	*ser_wr_fp;
-
-char	host_name[256];
-
-main(argc, argv)
-int	argc;
-char	*argv[];
-{
-	char	line[NNTP_STRLEN], s[NNTP_STRLEN];
-	int	seen_fromline, in_header, seen_header;
-	int	response;
-	char	*server;
-	char	*getserverbyfile();
-	register char	*cp;
-
-	++argv;
-	while (argc > 1)
-		if (*argv[0] == '-') {
-			++argv;
-			--argc;
-		} else
-			break;
-
-	if (argc > 1) {
-		if (freopen(*argv, "r", stdin) == NULL) {
-			perror(*argv);
-			exit(1);
-		}
-	}
-
-	uname(host_name);
-
-	server = getserverbyfile(SERVER_FILE);
-	if (server == NULL) {
-		fprintf(stderr,
-			"Can't get the name of the news server from %s.\n",
-			SERVER_FILE);
-		fprintf(stderr,
-	       "Either fix this file, or put NNTPSERVER in your enviroment.\n");
-		exit(1);
-	}
-
-	response = server_init(server);
-	if (response < 0) {
-		printf("Couldn't connect to %s news server, try again later.\n",
-			server);
-		exit(1);
-	}
-
-	if (handle_server_response(response, server) < 0
-	    || response == OK_NOPOST) {
-		close_server();
-		exit(1);
-	}
-
-	put_server("POST");
-	(void) get_server(line, sizeof(line));
-	if (*line != CHAR_CONT) {
-		if (atoi(line) == ERR_NOPOST) {
-			close_server();
-			fprintf(stderr,
-				"Sorry, you can't post from this machine.\n");
-			exit(1);
-		} else {
-			close_server();
-		        fprintf(stderr, "Remote error: %s\n", line);
-			exit(1);
-		}
-	}
-
-	in_header = 1;
-	seen_header = 0;
-	seen_fromline = 0;
-
-	while (fgets(s, sizeof(s), stdin) != NULL) {
-		if ((cp = strchr(s, '\n')) != NULL)
-		    *cp = '\0';
-		if (s[0] == '.')    /* Single . is eof, so put in extra one */
-			(void) fputc('.', ser_wr_fp);
-		if (in_header && strneql(s, "From:", sizeof("From:")-1)) {
-	                seen_header = 1;
-			seen_fromline = 1;
-		}
-		if (in_header && s[0] == '\0') {
-	                if (seen_header) {
-		                in_header = 0;
-			        if (!seen_fromline)
-				        gen_frompath();
-			} else {
-			        continue;
-			}
-		} else if (in_header) {
-		        if (valid_header(s))
-			        seen_header = 1;
-	                else
-                                continue;
-		}
-		fprintf(ser_wr_fp, "%s\r\n", s);
-	}
-
-	append_signature();
-
-	fprintf(ser_wr_fp, ".\r\n");
-	(void) fflush(ser_wr_fp);
-	(void) get_server(line, sizeof(line));
-	if (*line != CHAR_OK) {
-		if (atoi(line) == ERR_POSTFAIL) {
-			close_server();
-			printf("Article not accepted by server; not posted.\n");
-			for (cp = line + 4; *cp && *cp != '\r'; cp++)
-				if (*cp == '\\')
-					putchar('\n');
-				else
-					putchar(*cp);
-			exit(1);
-		} else {
-			close_server();
-			fprintf(stderr, "Remote error: %s\n", line);
-			exit(1);
-		}
-	}
-
-	/*
-	 * Close server sends the server a
-	 * "quit" command for us, which is why we don't send it.
-	 */
-
-	close_server();
-
-	exit(0);
-	return(0);
-}
-
-/*
- * append_signature -- append the person's .signature file if
- * they have one.  Limit .signature to MAX_SIGNATURE lines.
- * The rn-style DOTDIR environmental variable is used if present.
- */
-
-append_signature()
-{
-	char	line[256], sigfile[256];
-	char	*cp;
-	struct	passwd	*passwd;
-	FILE	*fp;
-	char	*getenv();
-	int	count = 0;
-	char	*dotdir;
-
-	passwd = getpwuid(getuid());
-	if (passwd == NULL)
-	  return;
-#ifdef DO_DOTDIR
-	if ((dotdir = getenv("DOTDIR")) == NULL)
-#endif
-	{
-	  dotdir = passwd->pw_dir;
-	}
-
-	if (dotdir[0] == '~') {
-	  (void) strcpy(sigfile, passwd->pw_dir);
-	  (void) strcat(sigfile, &dotdir[1]);
-	} else {
-	  (void) strcpy(sigfile, dotdir);
-	}
-	(void) strcat(sigfile, "/");
-	(void) strcat(sigfile, ".signature");
-
-#ifdef DEBUG
-  fprintf(stderr,"sigfile = '%s'\n", sigfile);
-#endif
-
-	fp = fopen(sigfile, "r");
-	if (fp == NULL)
-		return;
-
-#ifdef DEBUG
-  fprintf(stderr,"sigfile opened OK\n");
-#endif
-
-	fprintf(ser_wr_fp, "--\r\n");
-	while (fgets(line, sizeof (line), fp)) {
-		count++;
-		if (count > MAX_SIGNATURE) {
-			fprintf(stderr,
-	      "Warning: .signature files should be no longer than %d lines.\n",
-			MAX_SIGNATURE);
-			fprintf(stderr,
-			"(Only %d lines of your .signature were posted.)\n",
-			MAX_SIGNATURE);
-			break;
-		}
-		if (cp = strchr(line, '\n'))
-			*cp = '\0';
-		fprintf(ser_wr_fp, "%s\r\n", line);
-	}
-	(void) fclose(fp);
-#ifdef DEBUG
-	printf(".signature appended (from %s)\n", sigfile);
-#endif
-}
-
-
-/*
- * gen_frompath -- generate From: and Path: lines, in the form
- *
- *	From: user@host.domain (full_name)
- *	Path: host!user
- *
- * This routine should only be called if the message doesn't have
- * a From: line in it.
- */
-
-gen_frompath()
-{
-	char	*full_name;
-	char	*cp;
-	struct	passwd *passwd;
-	char	*getenv();
-
-	passwd = getpwuid(getuid());
-
-	full_name = getenv("NAME");
-	if (full_name == NULL) {
-		full_name = passwd->pw_gecos;
-		if ((cp = strchr(full_name, ',')))
-			*cp = '\0';
-	}
-
-#ifdef DOMAIN
-#ifdef HIDDENNET
-		fprintf(ser_wr_fp, "From: %s@%s (",
-			passwd->pw_name,
-			DOMAIN);
-#else /* HIDDENNET */
-
-	/* A heuristic to see if we should tack on a domain */
-
-	cp = strchr(host_name, '.');
-	if (cp)
-		fprintf(ser_wr_fp, "From: %s@%s (",
-			passwd->pw_name,
-			host_name);
-	else
-		fprintf(ser_wr_fp, "From: %s@%s.%s (",
-			passwd->pw_name,
-			host_name,
-			DOMAIN);
-#endif /* HIDDENNET */
-#else
-	fprintf(ser_wr_fp, "From: %s@%s (",
-		passwd->pw_name,
-		host_name);
-#endif
-
-	for (cp = full_name; *cp != '\0'; ++cp)
-		if (*cp != '&')
-			putc(*cp, ser_wr_fp);
-		else {		/* Stupid & hack.  God damn it. */
-			putc(toupper(passwd->pw_name[0]), ser_wr_fp);
-			fprintf(ser_wr_fp, passwd->pw_name+1);
-		}
-
-	fprintf(ser_wr_fp, ")\r\n");
-
-#ifdef HIDDENNET
-	/* Only the login name - nntp server will add uucp name */
-	fprintf(ser_wr_fp, "Path: %s\r\n", passwd->pw_name);
-#else /* HIDDENNET */
-	fprintf(ser_wr_fp, "Path: %s!%s\r\n", host_name, passwd->pw_name);
-#endif /* HIDDENNET */
-}
-
-
-/*
- * strneql -- determine if two strings are equal in the first n
- * characters, ignoring case.
- *
- *	Parameters:	"a" and "b" are the pointers
- *			to characters to be compared.
- *			"n" is the number of characters to compare.
- *
- *	Returns:	1 if the strings are equal, 0 otherwise.
- *
- *	Side effects:	None.
- */
-
-strneql(a, b, n)
-register char *a, *b;
-int	n;
-{
-	char	lower();
-
-	while (n && lower(*a) == lower(*b)) {
-		if (*a == '\0')
-			return (1);
-		a++;
-		b++;
-		n--;
-	}
-	if (n)
-		return (0);
-	else
-		return (1);
-}
-
-/*
- * lower -- convert a character to lower case, if it's
- *	upper case.
- *
- *	Parameters:	"c" is the character to be
- *			converted.
- *
- *	Returns:	"c" if the character is not
- *			upper case, otherwise the lower
- *			case eqivalent of "c".
- *
- *	Side effects:	None.
- */
-
-char lower(c)
-register char c;
-{
-	if (isascii(c) && isupper(c))
-		c = c - 'A' + 'a';
-	return(c);
-}
-
-
-/*
- * valid_header -- determine if a line is a valid header line
- *
- *	Parameters:	"h" is the header line to be checked.
- *
- *	Returns: 	1 if valid, 0 otherwise
- *
- *	Side Effects:	none
- *
- */
-
-int valid_header(h)
-register char *h;
-{
-  char *colon, *space;
-
-  /*
-   * blank or tab in first position implies this is a continuation header
-   */
-  if (h[0] == ' ' || h[0] == '\t')
-    return (1);
-
-  /*
-   * just check for initial letter, colon, and space to make
-   * sure we discard only invalid headers
-   */
-  colon = strchr(h, ':');
-  space = strchr(h, ' ');
-  if (isalpha(h[0]) && colon && space == colon + 1)
-    return (1);
-
-  /*
-   * anything else is a bad header -- it should be ignored
-   */
-  return (0);
-}
diff --git a/utils/inews/nntp.h b/utils/inews/nntp.h
deleted file mode 100644
index 4ec2f35b..00000000
--- a/utils/inews/nntp.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Response codes for NNTP server
- *
- * @(#)nntp.h	1.7	(Berkeley) 1/11/88
- *
- * First digit:
- *
- *	1xx	Informative message
- *	2xx	Command ok
- *	3xx	Command ok so far, continue
- *	4xx	Command was correct, but couldn't be performed
- *		for some specified reason.
- *	5xx	Command unimplemented, incorrect, or a
- *		program error has occured.
- *
- * Second digit:
- *
- *	x0x	Connection, setup, miscellaneous
- *	x1x	Newsgroup selection
- *	x2x	Article selection
- *	x3x	Distribution
- *	x4x	Posting
- */
-
-#define	CHAR_INF	'1'
-#define	CHAR_OK		'2'
-#define	CHAR_CONT	'3'
-#define	CHAR_ERR	'4'
-#define	CHAR_FATAL	'5'
-
-#define	INF_HELP	100	/* Help text on way */
-#define	INF_DEBUG	199	/* Debug output */
-
-#define	OK_CANPOST	200	/* Hello; you can post */
-#define	OK_NOPOST	201	/* Hello; you can't post */
-#define	OK_SLAVE	202	/* Slave status noted */
-#define	OK_GOODBYE	205	/* Closing connection */
-#define	OK_GROUP	211	/* Group selected */
-#define	OK_GROUPS	215	/* Newsgroups follow */
-#define	OK_ARTICLE	220	/* Article (head & body) follows */
-#define	OK_HEAD		221	/* Head follows */
-#define	OK_BODY		222	/* Body follows */
-#define	OK_NOTEXT	223	/* No text sent -- stat, next, last */
-#define	OK_NEWNEWS	230	/* New articles by message-id follow */
-#define	OK_NEWGROUPS	231	/* New newsgroups follow */
-#define	OK_XFERED	235	/* Article transferred successfully */
-#define	OK_POSTED	240	/* Article posted successfully */
-
-#define CONT_XFER	335	/* Continue to send article */
-#define	CONT_POST	340	/* Continue to post article */
-
-#define	ERR_GOODBYE	400	/* Have to hang up for some reason */
-#define	ERR_NOGROUP	411	/* No such newsgroup */
-#define	ERR_NCING	412	/* Not currently in newsgroup */
-#define	ERR_NOCRNT	420	/* No current article selected */
-#define	ERR_NONEXT	421	/* No next article in this group */
-#define	ERR_NOPREV	422	/* No previous article in this group */
-#define	ERR_NOARTIG	423	/* No such article in this group */
-#define ERR_NOART	430	/* No such article at all */
-#define ERR_GOTIT	435	/* Already got that article, don't send */
-#define ERR_XFERFAIL	436	/* Transfer failed */
-#define	ERR_XFERRJCT	437	/* Article rejected, don't resend */
-#define	ERR_NOPOST	440	/* Posting not allowed */
-#define	ERR_POSTFAIL	441	/* Posting failed */
-
-#define	ERR_COMMAND	500	/* Command not recognized */
-#define	ERR_CMDSYN	501	/* Command syntax error */
-#define	ERR_ACCESS	502	/* Access to server denied */
-#define ERR_FAULT	503	/* Program fault, command not performed */
-
-/* RFC 977 defines this; don't change it. */
-
-#define	NNTP_STRLEN	512
diff --git a/utils/inews/version.c b/utils/inews/version.c
deleted file mode 100644
index 0b9d4167..00000000
--- a/utils/inews/version.c
+++ /dev/null
@@ -1,5 +0,0 @@
-/*
- * Provide the version number of this release.
- */
-
-char	nntp_version[] = "1.5.8 (11 March 90)";