--- xfer/Makefile.orig	Thu Nov 17 19:15:22 1994
+++ xfer/Makefile	Sun Jan  9 10:21:54 2000
@@ -28,7 +28,8 @@
 nntpxfer.o: nntpxfer.c ../conf.h ../server/fakesyslog.h
 
 install: nntpxfer
-	cp nntpxfer ${BINDIR}
+	cp nntpxfer ${BINDIR}/nntpxfer
+	chmod 755 ${BINDIR}/nntpxfer
 
 clean:
 	-rm -f *.o nntpxfer make*.out *.BAK *.CKP *~
--- Makefile.orig	Tue Jan  9 08:30:24 1996
+++ Makefile	Sun Jan  9 09:35:59 2000
@@ -4,7 +4,7 @@
 # The program that knows how to deal with makefiles. [Uncomment if needed.]
 # MAKE=make
 # set CFLAGS to be -Ipath/to/special/includes if needed
-CFLAGS= -O 
+CFLAGS= -O -I/usr/local/include
 #Uncomment the following for Solaris (and similiar SVR4 systems)
 #NETLIBS   = -lsocket -lnsl 
 #Uncomment the following if the previous one does not work
@@ -13,6 +13,7 @@
 #DBLIBS	= -ldbz
 #DBLIBS	= /usr/local/lib/dbz.o #/usr/local/lib/dbzdbm.o
 #DBLIBS	= -ldbm
+DBLIBS	= /usr/local/lib/libcnews.a -lcrypt -lutil
 # add the resolver library if needed
 #RESLIB = -lresolv
 # add the kmem library if needed 
@@ -21,9 +21,9 @@
 #Uncomment the following for Solaris (and similiar SVR4 systems)
 #KVMLIB = -lelf
 # Where nntpd is going to live
-ETCDIR = /etc
+ETCDIR = /usr/local/sbin
 # Where nntpxmit and nntpxfer is going to live
-BINDIR = /usr/local/bin
+BINDIR = /usr/local/news/cnewsbin
 # Where manual pages live
 MANDIR = /usr/local/man
 #
--- server/common.h.orig	Thu Nov 17 19:15:18 1994
+++ server/common.h	Sun Jan  9 09:30:03 2000
@@ -161,7 +161,11 @@
 void debugup(), debugdown();
 #endif
 #ifdef SETPROCTITLE
+#ifdef HAVE_PROCTITLE
+#include <libutil.h>
+#else
 void setproctitle();
+#endif
 #endif
 
 extern	char	spooldir[];
--- conf.h.orig	Sun Jan  9 09:30:02 2000
+++ conf.h	Sun Jan  9 10:02:19 2000
@@ -8,10 +8,12 @@
  */
   
 
-#undef	ALONE		/* True if we're running without inetd */
+#define	ALONE		/* True if we're running without inetd */
 
 #ifdef ALONE
-#undef	FASTFORK        /* True if we don't want to read active file on start*/
+#define	FASTFORK        /* True if we don't want to read active file on start*/
+#define NEWS_GID 8
+#define NEWS_UID 8
 #endif
 
 #define LOAD 5	        /* Loadav above which server refuses connections */
@@ -40,23 +42,23 @@
 #undef TLI		/* Define this if you want to use TLI instead of */
 			/* sockets */
 
-#define NDBM		/* Use new-style (4.3) ndbm(3x) libraries */
+#undef NDBM		/* Use new-style (4.3) ndbm(3x) libraries */
 
 #undef	DBM		/* True if we want to use the old dbm(3x) libraries */
 			/* IF YOU DEFINE THIS, change CFLAGS in makefile to */
 			/* be -ldbm */
 
-#undef	DBZ		/* True if we want to use dbz libraries */
+#define	DBZ		/* True if we want to use dbz libraries */
 			/* IF YOU DEFINE THIS, change CFLAGS in makefile to */
 			/* be /usr/lib/dbz.o and install dbz.h */
 
 #undef	USGHIST		/* Use USG style history file (no DBM) */
 			/* IF YOU DO NOT DEFINE NDBM or DBM, this is DEFAULT!*/
 
-#undef CNEWS		/* define this if you are running C News */
-#undef CNEWS_CLEARTEXT	/* define this if you have a modern C News that handles
+#define CNEWS		/* define this if you are running C News */
+#define CNEWS_CLEARTEXT	/* define this if you have a modern C News that handles
 				input files ending in ".t" as cleartext */
-#undef BATCHED_INPUT	/* define if you want to support C News style 
+#define BATCHED_INPUT	/* define if you want to support C News style 
 				batched input (not supported by B-NEWS)  */
 #undef MSGID		/* define this if you want to run msgidd to keep
 				track of recent msgids via daemon */
@@ -70,7 +72,7 @@
 			/* typedefs for u_long */
 #define VOIDSIG		/* Newfangled signal() returns void, old returns int */
 
-#undef MMAP		/* if your OS supports mmap() */
+#define MMAP		/* if your OS supports mmap() */
 
 #undef DIRENT		/* If you have <dirent.h> define this */
 
@@ -89,7 +91,8 @@
 /*#define MINFILES  MINFREE/4*/
 			/* NNTP will not allow an XFER if there is less */
 			/* than this many inodes on the SPOOLDIR filesystem */
-#undef SETPROCTITLE	/* if you want status visable via ps */
+#define SETPROCTITLE	/* if you want status visable via ps */
+#define HAVE_PROCTITLE	/* if the OS has setproctitle() */
 
 #undef	IHAVE_DEBUG	/* Copious debugging output from ihave */
 
@@ -110,7 +113,7 @@
  * if you are running BNEWS. At least, not yet. :-)
  */
 
-/* #define UMASK 022 */
+#define UMASK 022
 
 /*
  * If you have the syslog library routine, define SYSLOG to
@@ -177,13 +180,13 @@
 #define XOVER		/* xover -- Return .overview data */
 #define OVER_XREFS	/* overview files have xref data in them */
 #define OVER_XREF_PREFIX /* the xref field (if present) includes xref: */
-#define OVER_FMT_FILE	"/usr/lib/news/overview.fmt"
+#define OVER_FMT_FILE	"/usr/local/news/lib/overview.fmt"
 
 /* Leave this undefined to indicate that overview files go in the spool
  * directory.  However, if you want a separate hierarchy of overview
  * files, define it here.
  */
-/*#define OVERVIEW_DIR "/usr/spool/overviews"	/* base directory */
+#define OVERVIEW_DIR "/var/news/over.view"	/* base directory */
 
 #define XROVER		/* xrover -- Return reference overview data */
 
@@ -191,10 +194,10 @@
  * spool directory.  However, if you want a separate hierarchy of rover
  * files, define it here.
  */
-/*#define ROVER_DIR "/usr/spool/overviews"	/* base directory */
+/*define ROVER_DIR "/var/news/r.over"	/* base directory */
 
 #undef XINDEX		/* Optional support for tin's index files */
-#define XINDEX_DIR	"/usr/spool/news/.index"
+#define XINDEX_DIR	"/var/news/.index"
 
 /* XTHREAD defines:  if XTHREAD is defined, THREAD_DIR controls where the
  * thread files will be read from.
@@ -244,27 +247,27 @@
 /*
  * This file is where access information is stored
  */
-#define ACCESS_FILE	"/usr/lib/news/nntp_access"
+#define ACCESS_FILE	"/usr/local/news/lib/nntp_access"
 
 /*
  * The file where the newgroup creation times are kept.  If you don't
  * have C News or INN, you can run acttimes (see the support directory)
  * to maintain an active.times file.
  */
-#define ACTIVE_TIMES_FILE	"/usr/lib/news/active.times"
+#define ACTIVE_TIMES_FILE	"/usr/local/news/lib/active.times"
 
 /*
  * Some commonly used programs and files.
  */
 
-#define	ACTIVE_FILE	"/usr/lib/news/active"
-#define DISTRIBUTIONS_FILE	"/usr/lib/news/distributions"
-#define SUBSCRIPTIONS_FILE	"/usr/lib/news/subscriptions"
-#define NEWSGROUPS_FILE	"/usr/lib/news/newsgroups"
-#define HISTORY_FILE	"/usr/lib/news/history"
-#define	SPOOLDIR	"/usr/spool/news"
-#define INEWS		"/usr/lib/news/inews"
-#define RNEWS		"/usr/bin/rnews"		/* Link to inews? */
+#define	ACTIVE_FILE	"/usr/local/news/lib/active"
+#define DISTRIBUTIONS_FILE	"/usr/local/news/lib/distributions"
+#define SUBSCRIPTIONS_FILE	"/usr/local/news/lib/subscriptions"
+#define NEWSGROUPS_FILE	"/usr/local/news/lib/newsgroups"
+#define HISTORY_FILE	"/usr/local/news/lib/history"
+#define	SPOOLDIR	"/var/news"
+#define INEWS		"/usr/local/news/lib/inews"
+#define RNEWS		"/usr/local/bin/rnews"		/* Link to inews? */
 
 /*
  * Support for C News style batching 
@@ -277,15 +280,15 @@
 #else
 #define TOOBIG 300000L		/* batch > TOOBIG bytes, kick rnews */
 #define TOOMANY 1024		/* batch > TOOMANY articles, kick rnews */
-#define NEWSRUN			"/usr/lib/newsbin/input/newsrun"
+#define NEWSRUN			"/usr/local/news/cnewsbin/input/newsrun"
 #endif
 #define TOOOLD (5*60)		/* batch > TOOOLD seconds old, kick rnews */
 #define COPYSIZE 8192		/* bytes to copy at one time */
 #define MAXDIGITS 25		/* lg(maxlongint) + epsilon */
 #define MAXSTR 1024
-#define INDIR			"/usr/spool/news/in.coming"
+#define INDIR			"/var/news/in.coming"
 /* You may wish to delete the pathname from the front of BATCH_FILE */
-#define BATCH_FILE		"/usr/spool/news/in.coming/nntp.XXXXXX"
+#define BATCH_FILE		"/var/news/in.coming/nntp.XXXXXX"
 
 /************************************************************************/
 /* We don't recommend that you make changes in anything after this line */
--- doc/config.sh.orig	Tue Nov  1 06:36:57 1994
+++ doc/config.sh	Sun Jan  9 09:30:03 2000
@@ -11,11 +11,11 @@
 # (modify these lines to suit your system)
 #
 # the location of inetd on your system (usually /etc/inetd)
-MINETD=/etc/inetd
+MINETD=/usr/sbin/inetd
 # the location of the inetd configuration file (usually /etc/inetd.conf)
 MINETDCONFIG=/etc/inetd.conf
 # the location of nntpd following installation (usually /etc/nntpd)
-MNNTPD=/etc/nntpd
+MNNTPD=/usr/local/sbin/nntpd
 # the location of the hosts file (usually /etc/hosts)
 MHOSTFILE=/etc/hosts
 # the location of the services file (usually /etc/services)
@@ -23,12 +23,12 @@
 # the location of the networks file (usually /etc/networks)
 MNETWORKFILE=/etc/networks
 # The location of the news spool directory (usually /usr/spool/news)
-MNEWSSPOOL=/usr/spool/news
+MNEWSSPOOL=/var/news
 # The location of the news library directory (usually /usr/lib/news)
-MNEWSLIB=/usr/lib/news
+MNEWSLIB=/usr/local/news/lib
 # The location of the file containing the name of the nntp server machine
 # (usually /usr/local/lib/rn/server)
-MSERVERFILE=/usr/local/lib/rn/server
+MSERVERFILE=/usr/local/etc/nntpserver
 # The location of rn's local library (usually /usr/local/lib/rn)
 MRNLIB=/usr/local/lib/rn
 #
--- server/main.c.orig	Thu Nov 17 19:15:19 1994
+++ server/main.c	Sun Jan  9 09:30:03 2000
@@ -35,8 +35,10 @@
 #endif
 
 #ifdef SETPROCTITLE
+#ifndef HAVE_PROCTITLE
 char	**Argv = NULL;		/* pointer to argument vector */
 char	*LastArgv = NULL;	/* end of argv */
+#endif
 #endif /* SETPROCTITLE */
 
 int
@@ -81,6 +83,22 @@
 
 #ifndef EXCELAN
 	sockt = get_socket();		/* should be fd 4 or 5 */
+	if ( getuid() == 0 ) {  /* Running as root */
+
+		if (setgid((gid_t) NEWS_GID) == -1) {
+#ifdef SYSLOG
+			syslog(LOG_ERR, "setgid: %m");
+#endif
+			exit(1);
+		}
+
+		if (setuid((uid_t) NEWS_UID) == -1) {
+#ifdef SYSLOG
+			syslog(LOG_ERR, "setuid: %m");
+#endif
+			exit(1);
+		}
+	}
 #ifdef USG
 	(void) signal(SIGCLD, SIG_IGN);
 #else /* !USG */
@@ -101,6 +119,7 @@
 #endif /* EXCELAN */
 
 #ifdef SETPROCTITLE
+#ifndef HAVE_PROCTITLE
 	/*
 	 *  Save start and extent of argv for setproctitle.
 	 */
@@ -113,6 +132,7 @@
 		envp++;
 	LastArgv = envp[-1] + strlen(envp[-1]);
 #endif /*SDD*/
+#endif
 #endif /* SETPROCTITLE */
 #if defined(LOAD) && defined(SETPROCTITLE)
 	/* If LOAD and SETPROCTITLE, display load before first accept() */
@@ -243,6 +263,7 @@
 	}
 #endif /* LOAD */
 #ifdef SETPROCTITLE
+#ifndef HAVE_PROCTITLE
 	/*
 	 *  Save start and extent of argv for setproctitle.
 	 */
@@ -255,6 +276,7 @@
 		envp++;
 	LastArgv = envp[-1] + strlen(envp[-1]);
 #endif /*SDD*/
+#endif
 #endif /* SETPROCTITLE */
 
 #ifdef USG
@@ -271,6 +293,7 @@
  * stolen from sendmail
  */
 #ifdef SETPROCTITLE
+#ifndef HAVE_PROCTITLE
 #if defined(sun) || defined(hpux)
 /*VARARGS*/
 void
@@ -330,4 +353,5 @@
 		*p++ = ' ';
 }
 #endif /* hpux */
+#endif
 #endif /* SETPROCTITLE */
--- xfer/nntpxfer.c.orig	Tue Jan  9 08:28:03 1996
+++ xfer/nntpxfer.c	Sun Jan  9 09:30:03 2000
@@ -60,6 +60,9 @@
 #include <sys/time.h>
 #endif
 
+#ifdef BSD_44
+#define _ANSI_SOURCE
+#endif
 #include <stdio.h>
 #include <errno.h>
 #include <ctype.h>
--- xmit/nntpxmit.c.orig	Sat Dec  3 23:37:58 1994
+++ xmit/nntpxmit.c	Sun Jan  9 10:13:10 2000
@@ -64,6 +64,9 @@
 */
 
 #include "../conf.h"
+#ifdef BSD_44
+#define _ANSI_SOURCE
+#endif
 #include <stdio.h>
 #include <errno.h>
 #include <ctype.h>
--- xmit/nntpxmit.h.orig	Thu Nov  3 04:51:34 1994
+++ xmit/nntpxmit.h	Sun Jan  9 09:30:04 2000
@@ -7,6 +7,7 @@
 */
 
 #ifdef MMAP
+#include <sys/types.h>
 #include <sys/mman.h>
 #include <sys/stat.h>
 #endif
--- xmit/shlock.c.orig	Tue Nov  1 06:54:32 1994
+++ xmit/shlock.c	Sun Jan  9 09:30:04 2000
@@ -28,7 +28,6 @@
 ** Erik E. Fair <fair@apple.com>, November 12, 1989
 */
 
-#include <stdio.h>
 #include <sys/types.h>
 #include <fcntl.h>			/* Needed on hpux */
 #include <sys/file.h>
@@ -36,6 +35,10 @@
 #ifdef NNTPSRC
 #include "../conf.h"
 #endif
+#ifdef BSD_44
+#define _ANSI_SOURCE
+#endif
+#include <stdio.h>
 
 #define	LOCK_SET	0
 #define	LOCK_FAIL	1
