			    KNOWN PROBLEMS
			    --------------

Here is a collection of some of the problems people have had with
installation and operation of nn in the past.  Some of these may no
longer be completely valid since release 6.4 has changed quite a
number of things since release 6.3, but there may still be some hints
to solving the problems you might encounter.


			 RUNNING NN ON 80286
			 -------------------

The system and machine file for a '286 running Microport UNIX V/AT are
s-uport2-2.h and m-i80286.h, but to get it running you probably have
to do the following things as well:

- tgetstr.o in libcurses is broken in 2.4.
  Get an old version (e.g. 1.3) and replaced tgetstr.o.

- Use the m286 malloc posted recently to comp.sources.misc

Thanks to Wietse Z. Venema and Miek Grenier for a lot of work on
locating and fixing 16/32 bit problems in nn 6.3 which caused it not
to work on the '286.  (I hope I haven't introduced new problems in
6.4, but I cannot promise it).

			    NNTP PROBLEMS
			    -------------

Other problems with the current NNTP support are described in the NNTP
file.


			   FILE PERMISSIONS
			   ----------------

You should run as root when installing the package & db, because some
directories might be created in places where ordinary users are not
allowed to write, and secondly because it is not allowed to change the
owner of a file (nnmaster) on some systems.

Specifically, nnmaster will report "nnmaster already running" if it
doesn't have write access to the MASTER_DIRECTORY.

This might be the cause of your problems.


In general, the permissions and ownership of the various programs
should be set to allow the following access:

- To let the nnmaster READ the news directory (no problem since
  /usr/spool/news normally has mode 755),

- To let the nnmaster WRITE in the db-directory and files

- To let ordinary users programs (i.e. nn) READ the db-directory.

For example,
  			owner   group   mode
  db-directory & files:	news	news	755
  nnmaster:		news	news	4755 (suid)
  nn etc:		storm	other	755


	     EXPIRED ARTICLES STILL SHOW UP ON THE MENUS
	     -------------------------------------------

This happens if expiration has not been performed on the database
after expire has been run on the news system (or NNTP server).

To run expire on the database regularly, inserting the following
command in the crontab to be executed at a suitable time (with
permissions of the owner of nnmaster).  Preferably it should run
immediately after normal expire has *completed*:
	/usr/local/bin/nnadmin =EYW

This expire is relatively cheap on a local system (< 10 minutes), but
via NNTP, it may be more expensive, so there it is recommended to only
run once a week or so.  I have some directions for a patch to the NNTP
server which will cure this problem -- see NNTP and nntp.c!


			 ABOUT BLOCKED GROUPS
			 --------------------

A group is blocked while the nnmaster is collecting new articles in
that group.  In a newly initialized database, all groups will be
blocked until the nnmaster has collected them the first time, which
may take an hour or so the first time you run nnmaster -r.

This means that there may not be any news to read for a while after
you have just started the nnmaster the first time.

If you run nnmaster with only a selection of groups on the command
line, you may also see some blocked groups among the groups that are
not collected.


			PROBLEMS SENDING MAIL
			---------------------

Some people have experienced problems sending mail.

The unfortunate thing about this is that the report about the problems
is sent to the user *by mail* - sort of catch-22.

The most common cause of these problems is that the definition of
REC_MAIL in config.h is not correct.  Either it is an invalid path or
program name, or the command does not read its standard input to
get the letter (for example, MMDF's `post' command wants the letter in
a file).  The 'inst' script will check that the REC_MAIL and INEWS
programs exist, but not that they actually work.

In another case, uux was not silent causing the trace file (in the aux
script) to be non-empty which fooled nn to think that nothing had been
sent (although it did).  If you get failed reply/follow-up messages
look for a line saying something like "uucp job XXXXX" - This is
caused by the environment setting JOBNO=ON.

In one case, the recmail program was corrupted.

Also notice that some recmail programs may treat a line consisting of
a single period in the first position as end-of-file.

If you don't have any program which can be used as recmail, there is
one possible candidate in the contrib/ directory.


		       ACCESSING NEWS REMOTELY
		       -----------------------

I have received the following problem description which seems to
indicate a network problem.  You can now set the variable
	retry-on-error
to the number of times nn should try to open an article (you may
want to do this in the global init file!):

   We are running on a VAXstation 2000, with the news accessed
   remotely, so I get a lot of "can't read" errors.  It seems to
   me these errors should ALWAYS require acknowledgement before
   clearing the message, and should offer the possibility to
   re-try the operation (which usually then works for us).

There is a similar option [-y] to nnmaster which can be set to have
the nnmaster perform retries as well.


		    GROUPS BECOME OR REMAIN EMPTY
		    -----------------------------

It has been observed on a few occations that some groups are not
collected correctly.  We have seldom managed to track down the actual
problem, but in practically all cases, NNTP and/or NFS has been
involved, either accessing the news spool files remotely, or nnmaster
updating the database on another machine, or both.

It is very much recommended that nnmaster runs on the system when the
database is placed, and if at all possible that this is also the
system on which the news spool files are located.  Furthermore, this
is by far the most efficient way to run things.

In any case, don't hesistate to tell me if you see this problem with
release 6.4.


			TERMINAL I-O PROBLEMS
			---------------------

nn does not echo the characters you type except when you are entering
a string, e.g. a file name.  Instead it attempts to make a significant
change to the data displayed on the screen.  On a slow system this may
be seen as a drawback; on fast systems it is an intended feature!

If CBREAK is available, nn will use it, but when CBREAK is not avaiable
nn uses raw mode when reading from the keyboard and cooked mode when
printing on the screen (it flips forth and back).  [This behaviour can
be disabled by unsetting the flow-control variable]  This has caused
problems on some systems (e.g. the 3B2) where the tty driver is
located on a dedicated IO-processor, which for some reason handles
ioctl's "out of band".  I have tried to work around these problems by
outputting \r\n sequences where \n should have been sufficient.

nn also intentionally discards type-ahead at certain points, but only
if CBREAK mode is not supported, and the flow-control variable is set.

On some systems, TCSETAF also flushes the output queue; you may try to
replace it by TCSETAW followed by TCFLSH.

On terminals where the arrow keys send single characters, nn will not
recognize the arrow keys as arrows if they send a character which is
already recognized by nn for another purpose.  For example, on the
wyse 50, the left arrow key sends the same code as the backspace key
which is the default erase-key.  Therefore, the left arrow key will be
interpreted as the erase-key.  (This is contrary to 6.3 where the
normal function of the erase-key was - erroneously - inhibited and
interpreted as the arrow key).


				Cnews
				-----

nn wants articles to contain Lines: headers, but Cnews doesn't
generate these in the default setup.  You may uncomment the
Lines: code in the inews script.

The requirement for Cnews to update the 'min' field in the active
field has been removed in release 6.4.


		NNMASTER WILL NOT START OR IS LOOPING
		-------------------------------------

If no nnmaster is running, and nnmaster refuses to start up, you
should check for the existence of the MPID file in the LIB directory,
If it exists, it should be removed.

If nnmaster starts looping, you should check the permissions on the
LIB directory and notice if a GATE file exists which nnmaster is not
allowed to unlink.


			NNMASTER DIES RANDOMLY
			----------------------

The definition DETATCH_TERMINAL in the s- file you use may not work
(it is a no-op on some systems).  This will cause a hangup signal to
be sent to the master when you logout, and that will terminate the
master.  This may explain why the nnmaster seems to die for no
apparant reason!

If nnmaster accesses news via NNTP, you should be aware of an NNTP
limitation which may cause problems to the nnmaster:  Groups with more
than 4096 articles may cause the nntp server to crash!   The easiest
way to circumvent this problem is run expire on the large groups more
frequently.  (Thanks to Scott Hankin for this information).


		     WARNINGS DURING COMPILATION
		     ---------------------------

If you get a syntax error when compiling the folder.c file, you
probably have defined HAVE_DIRECTORY in the s- file, but even though
the include file exists, it does not define the DIR type.  Either get
hold of a public domain directory package (look in the gnu
distribution), or just undefine HAVE_DIRECTORY which causes nn to use
(much slower) shell commands for file name completion (and disables
the ?-help for file names).

If the linker complains about not finding the function `strcspn'
(which should be in most standard libraries these days), define the
symbol STRCSPN in the m- file (or config.h) to use the version in
regexp.c.


			FORMATTING THE MANUALS
			----------------------

Many versions of the -man package may have problems handling the `@'
characters as hanging tags (.TP).  Fix your man package by
substituting ALL occurrences of the @ character in tmac.an (or perhaps
tmac.an.new) by a BEL (^G) character.


			       RESIZING
			       --------

Resizing only works with termcap (on BSD systems)!  It may also work
on System V, but then you will probably also have to define the symbol
SYSV_RESIZING in config.h (see term.c).

If resizing occurs while reading an article, the article is repositioned
on the first page of the article.


		NNMASTER AND NN DOES NOT FIND ANY NEWS
		--------------------------------------

All known occurrences of this problem have been identified and fixed,
or somehow "explained" as being a NFS networking problem.

Be careful about the 'limit' and 'old' variables.  Setting them in the
init file may cause nn to behave strangely (as documented :-)


	THE DATABASE BECOMES CORRUPTED FOR NO APPARENT REASON
	-----------------------------------------------------

This has been seen on some systems in the past.

- The expire problem in release 6.3 has been fixed, since the code
  to perform the expiration has been rewritten and optimized.  No
  known bugs exist in this code.

- Some .o files had not been recompiled by make after modifying the
  config.h file (this happened on SunOS 4.0 which seems to forget to
  update file modification times for some files (has anybody seen this
  before?)).


			    8 BIT SUPPORT
			    -------------

I am rather embarrassed to admit that a program leaving Denmark in
1990 still does not fully support 8 bit character sets - however, that
is the plain truth.  Currently, all characters typed on the keyboard
are stripped to 7 bits, but articles displayed on the screen can be
shown either in 7 or 8 bit mode via the data-bits variable.

With patch #6 installed, nn does indeed support 8 bit input if
data-bits = 8.  However, the positions 0x80 through 0x9f are reserved
for internal use, so only the various ISO 8859/* character sets are
*fully* supported, while some PC code pages may overlay some national
characters with function keys.


			     MAIL RECORDS
			     ------------

There are some things you have to consider in connection with the mail
and news record files:

 - When you :mail to yourself, a copy is not saved in the mail-record.

 - If the mail/post fails, the message is saved in ~/dead.letter instead

 - Since the posting is performed in the background and it may take
   upto a minute to complete posting an article, updating news-record
   will not happen instantly.

 - In previous releases the mail header created by nn in the record
   files are not recognized by the digest splitting code in nn, i.e.
   they always appear to contain a single article.  This was fixed in
   release 6.3, but you may have some very old folders which nn will
   not be able to split (there is no From: line).


			 OLD AWK vs. NEW AWK
			 -------------------

Some scripts will not run with 'new awk'.  If your system's `awk' is
the new awk, you must define the symbol OLD_AWK to the path name of
the old awk program (normally `oawk').  See s-template.h.


			    NN ON APOLLOS
			    -------------

Apollo's C-preprocessor may not make a working ymakefile, because it
may convert leading tabs to spaces, and thus confusing make.  You'll
have to reconstruct the tabs somehow, e.g. using something like
	sed 's/^  */TAB/' < ymakefile > ...	(not tested!!)

Also notice that releases prior to SR10 will not handle directories
with more than 1300 entries, thus giving problems if you have more
than 650 groups in the database directory (d+x file).  Leaving
DB_DIRECTORY undefined should fix this.

Patch #13 contains some patches which should allow nn to run under
Domain OS (with included s-apollo.h).


		     RUNNING nn VIA SUNLINK X.25
		     ---------------------------

For logins via Sunlink X.25, the article selection display may be all
messed up.  This is because, on entry to cooked mode, Sunlink X.25
sends the screen width parameter to the PAD, and the PAD dumbly
inserts CR/LF after every 80 characters of output.  Not all PADs are
this dumb.  To fix it, insert `set noflow-control' in the global init
file.  Thanks to mills@ccu.umanitoba.ca (Gary Mills) for the info.


			    OTHER PROBLEMS
			    --------------

The 'master flags' set on a group with nnadmin are forgotten if the
database is reinitialized with nnmaster -I.  To set these flags
permanently, you should set them in the GROUPS file.
