*BSD News Article 10877


Return to BSD News archive

Received: by minnie.vk1xwt.ampr.org with NNTP
	id AA847 ; Mon, 08 Feb 93 11:02:55 EST
Newsgroups: comp.unix.bsd
Path: sserve!manuel.anu.edu.au!munnari.oz.au!spool.mu.edu!think.com!rpi!ghost.dsi.unimi.it!serini
From: serini@ghost.dsi.unimi.it (Piero Serini)
Subject: nn config files
Keywords: news, nn
Organization: Computer Science Dep. - Milan University
Date: Sun, 7 Feb 1993 11:51:16 GMT
Message-ID: <1993Feb7.115116.23580@ghost.dsi.unimi.it>
Lines: 659

Hi all.
Please find here enclosed m-i386.h, s-386BSD.h, config.h
and Makefile I used to compile nn under 386BSD.
I have it up and running with no other modifications.

As ref.tfs.com doesn't ping from here, and my box is still down,
the whole nn.tar.Z ready to unpack and compile will appear later.

Have fun with this

------------------------------------------ Piero Serini -----------
Computer Science Dept.            E-mail: serini@ghost.dsi.unimi.it   
Univ. Statale - Milano - ITALY    or: piero@strider.st.dsi.unimi.it
--------------- PUBLIC KEY AVAILABLE VIA finger(1) ----------------


----------------------------------------------------------------
This is the m-i80386.h file with small mods.
----------------------------------------------------------------

/************** Machine (and compiler) dependent definitions. **************
 *
 *	This file is for 80386 based UNIX/XENIX systems.
 */


/*      MACHINE TYPE	DEFINED TYPE		VALUE RANGE	*/

typedef unsigned char	int8;		/*        0 ..     255 */
typedef short		int16;		/*  -10,000 ..  10,000 */
typedef long		int32;		/* -100,000 .. 100,000 */
typedef unsigned long	uint32;		/* 	  0 ..  2^31-1 */


#ifdef NETWORK_DATABASE

#undef NETWORK_BYTE_ORDER	/* THEY ARE NOT */

#endif	/* NETWORK DATABASE */

----------------------------------------------------------------
This is the s-386BSD.h file
----------------------------------------------------------------

/*
 *	This version is for 386BSD systems
 */


/*
 *	Include header files containing the following definitions:
 *
 * 		off_t, time_t, struct stat
 */

#include <sys/types.h>
#include <sys/stat.h>


/*
 *	Define if your system has system V like ioctls
 */

#undef	HAVE_TERMIO			/* */

/*
 *	Define to use terminfo database.
 *	Otherwise, termcap is used
 */

#undef	USE_TERMINFO			/* */

/*
 *	Specify the library (or libraries) containing the termcap/terminfo
 *	routines.
 *
 *	Notice:  nn only uses the low-level terminal access routines
 *	(i.e. it does not use curses).
 */

#define TERMLIB	-ltermlib

/*
 *	Define HAVE_STRCHR if strchr() and strrchr() are available
 */

#ifdef USE_STRINGS_H
#undef USE_STRINGS_H
#include <strings.h>
#else
#include <string.h>
#endif

/*
 *	Define if a signal handler has type void (see signal.h)
 */

#undef	SIGNAL_HANDLERS_ARE_VOID	/* */

/*
 *	Define if your system has BSD like job control (SIGTSTP works)
 */

#define HAVE_JOBCONTROL			/* */

/*
 *	Define if your system provides the "directory(3X)" access routines
 *
 *	If true, include the header file(s) required by the package below
 *	(remember that <sys/types.h> or equivalent is included above)
 *	Also typedef Direntry to the proper struct type.
 */

#define	HAVE_DIRECTORY			/* */
#include <sys/dir.h>			/* BSD */
typedef struct direct Direntry;		/* BSD */

/*
 *	Define if your system has a mkdir() library routine
 */

#define	HAVE_MKDIR			/* */

/*
 *	Define if your system provides a BSD like gethostname routine.
 *	Otherwise, define HAVE_UNAME if uname() is avaiable.
 */

#define	HAVE_GETHOSTNAME	/* BSD systems */

/*
 *	Define HAVE_MULTIGROUP if system has simultaneous multiple group
 *	membership capability (BSD style).
 */

#define HAVE_MULTIGROUP

/*
 *	Define DETATCH_TERMINAL to be a command sequence which
 *	will detatch a process from the control terminal
 *	Also include system files needed to perform this HERE.
 *	If not possible, just define it (empty)
 */

#include <sys/file.h>	/* for O_RDONLY */
#include <sys/ioctl.h>	/* for TIOCNOTTY */

#define	DETATCH_TERMINAL \
    { int t = open("/dev/tty", O_RDONLY); \
	  if (t >= 0) ioctl(t, TIOCNOTTY, (int *)0), close(t); }


/*
 *	Specify where the Bourne Shell is.
 */

#define SHELL		"/bin/sh"

/*
 *	Specify the default mailer to be invoked by nnmail
 */

#define	MAILX	"/usr/bin/Mail"		/* BSD */

/*
 *	Define the maximum length of any pathname that may occur
 */

#define	FILENAME 	256

/*
 *      Define MICRO_ALARM to timeout in 0.1 seconds if possible
 */

#undef  MICRO_ALARM
#define MICRO_ALARM()   ualarm(100000,0)        /* BSD 4.3 */

/*
 *      Define if your system has a 4.3BSD like syslog library.
 */

#define HAVE_SYSLOG


------------------------------------------------------------------
This is the config.h
------------------------------------------------------------------

/**************************** 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>
#include <sys/param.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 */


/***************** 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-386bsd.h"

/*
 *	Define DEFAULT_PAGER as the initial value of the 'pager' variable.
 *	nnadmin pipes shell command output though this command.
 */

#define DEFAULT_PAGER	"more"

/*
 *	DEFAULT_PRINTER is the initial value of the 'printer' variable.
 *	nn's :print command pipes text into this command.
 */

#define DEFAULT_PRINTER	"lpr -p -JNEWS"

/*
 * 	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-i80386.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/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"

-----------------------------------------------------------------------
This is the Makefile
-----------------------------------------------------------------------

#
# Makefile for nn release 6.4
#
# Specify your favourite compiler, preprocessor, and compiler flags:
#
# Some alternatives for CPP might be /lib/cpp and $(CC) -P
# Common values for CFLAGS are '-O -s' or '-g'
#

CC =		cc
CPP =		$(CC) -E
CFLAGS =	-O -traditional
MAKE =		make

#
# Before compiling, read the instructions in the file INSTALLATION!
# -----------------------------------------------------------------
#
#	make all	compile programs
#	make clean	remove all make'd files from source directory
#
# no changes are needed below this line
#

SHELL = /bin/sh

all: ymakefile
	$(MAKE) $(MFLAGS) -f ymakefile all

touch: ymakefile
	$(MAKE) -f ymakefile -t all

dbg: ymakefile
	$(MAKE) $(MFLAGS) -f ymakefile nn1

nn: ymakefile
	$(MAKE) $(MFLAGS) -f ymakefile nn

master: ymakefile
	$(MAKE) $(MFLAGS) -f ymakefile master

lint: ymakefile
	$(MAKE) -f ymakefile lint

client: ymakefile
	$(MAKE) $(MFLAGS) -f ymakefile client

ymakefile: Makefile xmakefile config.h
	cp xmakefile MF.c
	$(CPP) -DCOMPILER="$(CC)" -DPREPROC="$(CPP)" \
	       -DCDEBUG="$(CFLAGS)" -Iconf MF.c | \
	sed -e '1,/MAKE WILL CUT HERE/d' \
	    -e '/^#/d' \
	    -e '/^[ \f	]$$/d' \
	    -e '/^[ \/]*[*]/d' | \
	sed -n -e '/^..*$$/p' > ymakefile
	rm -f MF.c

#
# clean up
#	Will remove object and executeable files.
#

clean:	ymakefile
	make -f ymakefile clean
	rm -f *.o *~ ymakefile

#
# distribution
#

distrib: man/nn.1.D
	[ -d DIST ] || mkdir DIST
	rm DIST/Part.*
	makekit -m -k30 -s55000 -nDIST/Part.

tar: man/nn.1.D
	chmod +x FILES
	rm -f /tmp/nn64tar*
	tar cf /tmp/nn64tar `FILES`
	cd /tmp && compress nn64tar

split: tar
	rm -f /tmp/nn64z*
	cd /tmp && bsplit -b40000 -pnn64z -v < nn64tar.Z

man/nn.1.D: man/nn.1
	sh SPLITNN1