Subject: NN Frequently Asked Questions (FAQ) with Answers
From: Bill Wohler <[email-masked]>
Date: 21 Aug 1994 14:46:08 GMT
Newsgroups: news.software.nn,news.answers

Archive-name: nn-faq/part1
Last-modified: $Date: 1994/08/20 21:34:57 $
Version: $Revision: 94.8.1.2 $
Posting-Frequency: monthly

  This is a living list of frequently asked questions on the Usenet
  news reader NN (No News is Good News).  The point of this is to
  circulate existing information, and avoid rehashing old answers.
  Better to build on top than start again.  Please read this document
  before ever posting to this newsgroup.

  This article is posted monthly.  If it has already expired and
  you're not reading this, you can hope that you saved the last bit of
  question 1.3 so that you can get a copy yourself.

  Please do not post an answer when someone posts a frequently asked
  question, as I will always e-mail a reply.  This ensures that
  everybody gets their question answered fully and eliminates
  unnecessary traffic in this newsgroup.

  Your comments, additions and fixes to this list are welcome: please
  send them to Bill Wohler <[email-masked]>.

Subject: Table of Contents
From: Preface

Legend: + new, - deleted, ! changed
_______________

1. Introduction

 1.1  Why should I use nn?
 1.2  What is the current version/status of nn?
!1.3  Where can I get nn?
!1.4  What references exist for nn?
 1.5  How should I report bugs?
 1.6  How can I convert from rn to nn?
!1.7  How can I make life simpler when starting nn for the first time?
!1.8  Is there an X interface to nn?
______________

2. Building nn

 2.1  What machines does nn run on?
 2.2  Is it possible to restrict the groups that users have access to?
 2.3  Unofficial patches for various bugs
 2.4  Can I set up nn securely?
________________

3. Command Input
_________________

4. Selection Mode

 4.1  How come nn doesn't show the Lines count?
 4.2  Why does nn crash when a letter one past the highest letter is selected?
 4.3  How do I search for an author in a menu?
________________________

5. Reading Mode Commands

 5.1  How can I see the original article with the current subject?
 5.2  Why do articles without a Lines header appear empty?
 5.3  Can the article viewer/pager be changed?
 5.4  How can I read MIME (multi-media mail) articles?
+5.5  How can I read HTML (world wide web, mosaic) articles?
 5.6  Why am I reading cross-posted articles more than once?
__________________

6. Saving Articles

 6.1  How do I save files that I can read later with MH, elm, Mail, ...?
 6.2  What's the best way to save multi-part articles?
 6.3  When saving in +a/b/c keeps you from saving in +a/b.
+6.4  How can I change the default name of a save file?
+6.5  Can I save all unread articles non-interactively into a file?
_____________________

7. Folder Maintenance

 7.1  How can I remove old articles from folders?
_____________________________________

8. Posting and Responding to Articles

 8.1  How can I post prewritten articles with nn?
 8.2  How can nn automatically append my signature?
 8.3  How do I eliminate double signatures?
 8.4  Can the signature come from a different file or program?
 8.5  How do I save my posts and replies automatically?
+8.6  Can I use my editor to edit posts and replies?
 8.7  Can I use my mailer to send mail?
 8.8  Can nn use aliases when sending mail?
 8.9  How can I set a different Organization name?
 8.10 How can I make mail replies go to a different machine?
 8.11 How can I change how my real name appears?
 8.12 How can I customize my mail headers for mail and posting?
__________________________

9. Jumping to Other Groups

 9.1  How can I see which newsgroups are available?
________________________________

10. Automatic Kill and Selection

 10.1  Can all non-selected subjects be automatically placed in my kill file?
 10.2  Can I automatically kill articles based on the Newsgroups header?
 10.3  How can I find all articles having to do with a certain topic?
 10.4  How can I select one article in a thread with auto-select-subject set?
 10.5  Can one search for patterns in the entire article from the menu?
 10.6  How come more articles get selected than I expect?
 10.7  Any plans for trn-ish thread following?
_______________________________

11. The Format of the Kill File
__________________________

12. Miscellaneous Commands

 12.1  Can I choose newsgroups as I do articles, ie. with a menu?
 12.2  How do I unsubscribe to all groups?
+12.3  How can I get nn to stop adding new newsgroups?
__________________

13. The Init Files

 13.1  +How do I customize nn or change nn's behavior?
_________________________

14. Variables and Options

 14.1  Setting new-group-action to "ask before adding" doesn't work.
_____________________

15. Macro Definitions

 15.1  Is there a library of macros and other nn features?
________________

16. Key Mappings
__________________

17. Command Groups
_______________________________

18. Group Presentation Sequence
____________

19. NN Maintenance & nnmaster

 19.1  Why does nnmaster stop collecting articles at the "junk" group?
 19.2  How do I cope with "Incomplete MASTER file"?
 19.3  Why isn't nnmaster working?
!19.4  Why did nnmaster stop working?
 19.5  Why do I get ".../MASTER not found"?
 19.6  Why do I get "cannot open 'x' file"
 19.7  Why do I get "Lost connection to server foobar"
+19.8  Why doesn't nn display messages when not using NNTP?
+19.9  Why do I get "Notice: no news has arrived for the last n hours"?
________

Appendix

 Glossary, Acknowledgements, Copyright and Warranty
 pack_date.c
 news.c
 nn-use-mh
 nn_elm
 nnalias
+lynxify

Subject: Viewing This Article
From: Preface

  To skip to a particular question numbered xx, use "/^F.*xx" with most
  pagers.  In GNU Emacs type "M-C-s ^F.*xx", (or C-r to search backwards),
  followed by ESC to end the search.

  To skip to new or changed questions, use "/^S.*[!+]" with most pagers and
  "M-C-s ^S.*[!+]" in GNU Emacs.

  This article is in digest format.  Nn may have already broken this
  message into separate articles; if not, then type "G %".  In rn, use
  ^G to skip sections.

  This article is treated as an outline when edited by GNU Emacs.  Run
  "M-x describe-mode" to see available outline-mode commands.  Useful
  commands are "M-x hide-body",  "C-c C-s" (show-subtree) and "M-x
  show-all"

  Numbers in square brackets denote the month and year of the last
  update.

Subject: ***** Introduction *****
From: 1.

Subject: Why should I use nn?
From: 1.1

  nn is a menu based (point and shoot) netnews reader with a complete
  set of features to satisfy both the expert and the novice user.  Since
  its first release in Denmark in 1984 (!), in Europe in 1988, and the
  global release in June 1989, it has replaced rn and other well-known
  news readers at many sites.

  Some of the key features of nn are:

  * Menu-based article selection prior to reading the articles with the
    articles sorted according to subject and posting time.

    This significantly reduces the time spent on news reading.  No
    keystrokes are wasted on articles you don't want to read, and only
    the articles selected on the menu will be read.

  * Release 6.4 uses standard .newsrc, and can leave individual
    articles unread.

  * Digests are automatically split and presented as ordinary articles!
    You can transparently save and respond to individual subarticles.

  * Full folder support: read, save, and delete individual articles.

  * Online help and manual.

  * Built-in unshar and patch functions.
  * Built-in uudecode function which will automatically unpack,
    concatenate, and decode multi-part postings.

  * Easy remapping of keys with advanced macro definition features.

  * Automatic kill & selection of articles based on subject or author.

  * User specified presentation sequence of news groups based on the
    news group hierarchy.

  * Whole classes of news groups can easily be unsubscribed
    permanently, e.g. talk.all and all.politics

  * Related groups can be merged and presented as a single group, e.g.
    comp.emacs and all gnu.emacs groups.

  * Blindingly fast 'search for subject'.  On my Texas S1500 system, nn
    uses less than 20 seconds to find all articles on a specific
    subject among 64000 articles in all groups!

  * News collection and presentation is extremely fast, because nn uses
    its own database on top of the standard news system.

  * In a distributed environment, the database can be shared among all
    hosts on the network.  Only one daemon is needed on the news server
    for all hosts.  This works in a heterogenous environment as well.

  * NNTP is also supported (using a local database for speed).

  Because of the database, nn starts almost equally fast (in a few
  seconds), no matter whether you have 100 or 10000 unread articles!
  The database takes up some disk space, but dramatically improves speed
  and functionality.  The amount of disk space consumed is approx. 1Mb
  per 10000 articles.

Subject: What is the current version/status of nn?
From: 1.2

  The current version of nn is 6.4.18.

  Note: The development of nn has been taken over by Peter Wemm
  <[email-masked]>.  Bug reports, fixes and suggestions should be
  sent to [email-masked].

  Version 6.5.0 is in the final stages of beta testing.  It will
  include many bug fixes, full NOV capability, a means of
  automatically killing threads of unread articles as well as
  automatically selecting subjects to articles that you've read, a
  mouse sensitive xterm interface, and the program nnsub to subscribe
  to newsgroups.

  The adventurous are invited to obtain the beta version.  Please get
  the files README.FIRST and README.b3 in the beta directory, and
  report any bugs to Peter [Q1.3 "Where can I get nn"].  [10.93]

Subject: !Where can I get nn?
From: 1.3

  The current master site for nn is ftp.uwa.edu.au.

  If you should need the Internet address, use nslookup or dig if you
  have them, or send mail to [email-masked] with "help" for
  a Subject.

  via anonymous ftp:							[5.94]
    ftp.uwa.edu.au		      /pub/nn/nn-6.4.18.tar.Z		590k
  				      /pub/nn/nn-6.4.18.tar.gz		405k
				      /pub/nn/beta/nn-6.5.0.b3.tar.gz	515k
    nexus.yorku.ca		      /pub/linux/sources/news/nn-6.4.18.tar.Z
    ftp.uu.net			      /networking/news/readers/nn/
				      nn-6.4.18.tar.Z
    qiclab.scn.rain.com		      /pub/news/nn-6.4.18.tar.Z
    gumby.dsd.trw.com		      /pub/news/newsreaders/unix/
  				      nn-6.4.18.tar.Z
    mcsun.eu.net		      /news/readers/nn/nn-6.4.18.tar.Z
    sun.rz.tu-clausthal.de	      /pub/unix/network/apps/news/nn/
				      nn-6.4.18.tar.Z
    ftp.cs.ruu.nl		      /NN-6.4/nn-6.4.18.tar.gz
    chalmers.se			      /pub/unix/nn/nn6.4.18.tar.Z
    ftp.luth.se			      /pub/infosystems/news/readers/nn/
				      nn-6.4.18.tar.Z
    grasp1.univ-lyon1.fr	      /pub/nfs-mounted/ftp.univ-lyon1.fr/
				      mirrors/unix/nn/nn-6.4.18.tar.gz
    ftp.msen.com		      /pub/packages/news/nntp.1.5.11.tar.Z 210k
    ecs.soton.ac.uk		      /pub/news/nntp-1.5.11.tar.Z	210k

  via anonymous uucp:
    You can get the latest production release of NN via UUCP from UUNET.
    The file you would retrieve is:

	uunet!~/networking/news/readers/nn/nn.tar.Z

    This file is linked to the ftp.uu.net file listed above which
    should be the latest production release.  Use the uucp command
    to queue the transfer (typically "uucp -d -r FILE DESTINATION").
    UUNET subscribers would call as they would normally for mail.
    Other sites in the continental U.S. can access UUNET's archive
    using anonymous UUCP through a 900 number (1-900-GOT-SRCS).  The
    login name is "uucp" and there is no password requested.  The
    following is an example Systems/L.sys entry:

	uunet Any ACU 19200 19004687727 "" \d\r ogin:-\d\r-ogin: uucp

    The modems on the 900 lines are Telebit WorldBlazers negotiating
    V.32bis, V.32, 2400, 1200, and last with (Turbo)PEP tones.  The
    cost is 50 cents per minute (as of Jan 93) which will appear on on
    your next phone bill.  For more info, retrieve uunet!~/help or
    e-mail [email-masked] (uunet!help). --Eric Ziegast
    <[email-masked]> [8.94]

  via mail:
    Send a note to [email-masked] whose body contains "help"
    on a line by itself get information on getting ftp sources by
    mail.

    Send a note to [email-masked] with a body containing one or
    both of the following as desired:

      send news/nn/nn6.4.16.tar.Z				<- old
      send news/nntp/nntp.1.5.11.tar.Z

  mini-inews:

    As well as bringing mini-inews up to date, modifications have been
    made to remove the need for MINI_INEWS_HEADERS when setting up nn.
    Mini-inews will now create whatever headers are required including
    if desired, a Lines header or an incremental Message-ID numbering
    capability. --Jim Jagielski <[email-masked]>

    jagubox.gsfc.nasa.gov	/pub/misc/NN-6.5.patches.tar.gz   43k

Subject: !What references exist for nn?
From: 1.4

  Book:
    The Whole Internet User's Guide & Catalog (2nd Ed), Chapter 8.  Ed Krol.
    ISBN 1-56592-063-5.  $24.95.  543 pages.
    O'Reilly & Associates, Inc.
    Book Orders:
      US and Canada: 800-998-9938.  Fax: 707-829-0104.

    To get a list of non-US distributors, send a note to
    [email-masked] or call +1-707-829-0515.

  Usenet:
    news.software.nn

  On-line Documents:
    Gopher (Host/Port/Menu)
      unlhelp.unl.edu/2001/Electronic Communications->Applications->nn	[8.94]
    
    Mosaic
      gopher://unlhelp.unl.edu:2001/11/18menu/03menu/09menu		[8.94]

  Papers:
    "Intro to nn"
    ftp.cso.uiuc.edu		/doc/net/nn.<fmt>
    where <fmt> is one from doc(16k), ps(91k), tex(21k), jpn, and hqx.

    "A Short Guide to nn"
    ftp.unl.edu			/pub/crc/docs/UNLINFO.GUIDE/UNLINFO.06.nn.<fmt>
    where <fmt> is one from txt(57k), ps(1.17M), rtf(68k) and hqx(65k). [8.94]
    
    "nn Helpsheets"
    ftp.unl.edu			/pub/crc/docs/UNLINFO.HELPSHEETS/nn.<fmt>
    where <fmt> is one from 1.ps(636k), 2.ps(549k), hqx(209k).		[8.94]

  This document:
    via anonymous ftp:
      rtfm.mit.edu		/pub/usenet/news.answers/nn-faq
      ftp.uu.net		/archive/usenet/news.answers/nn-faq.Z
      ftp.cs.ruu.nl		/pub/NEWS.ANSWERS/nn-faq

    via uucp:
      uunet!/archive/usenet/news.answers/nn-faq.Z

    via mail:
      Each of the following addresses is following by commands which
      should be included as the body of the message.

      [email-masked]
        send /usenet/news.answers/nn-faq

      [email-masked]
	send /pub/NEWS.ANSWERS/nn-faq

  Mailing list:
    A mailing list for nn developers is [email-masked].  To join,
    please send a message to [email-masked].

  NN mailing list archives:

Subject: How should I report bugs?
From: 1.5

  Send them to [email-masked].  [10.93]

Subject: How can I convert from rn to nn?
From: 1.6

  Why bother?  On our system some people use nn and some people use
  rn.  In fact, since they both use the same .newsrc format, it is
  perfectly possible to use both.  --Ian Taylor <[email-masked]>

Subject: !How can I make life simpler when starting nn for the first time?
From: 1.7

  Use nnsub and eep.  See the enclosed documentation to see which you
  prefer. [note: only available in 6.5.0 beta] --Peter Wemm
  <[email-masked]> [10.93]

  The standard method is to run:

  	nngrep -a | sed -e 's/ *$/!/' > .newsrc		# add \ before ! in csh

  and then edit .newsrc, replacing the '!'  with a ':' for those
  groups you're interested in.  --Bill Wohler <[email-masked]> [8.94]

  I think a nice way is to use the catch-up facility.  Start nn -a0
  and let nn catch up automatically.  After some hours restart nn and
  unsubscribe to uninteresting groups having news articles.  Restart
  nn the following day and continue unsubscribing.

  After one week, you have a nice .newsrc.  --Joerg Napp
  <[email-masked]>

Subject: !Is there an X interface to nn?
From: 1.8

  This is an X version of nn that uses TCL and TK to provide the user
  interface. It adds two separate methods of newsgroup choice (list
  and cascading menus) as well as buttons, menus and selection using
  the mouse, but all the keyboard commands still work as well.

  It's still in alpha version, but all the nn functionality is there,
  if not in its final form. Tcl v7 and TK v3 are required to compile
  it. --Toivo Pedaste <[email-masked]> [8.94]

  ftp.uwa.edu.au	/pub/nn/contrib/nn-tk.alpha.tar.Z		935k
  
  In nn-6.5.0beta, there is a simple text panel, with highlighting and
  mouse sensitivity within an xterm. [10.93]

Subject: ***** Building nn *****
From: 2.

Subject: What machines does nn run on?
From: 2.1

  Please send updates to [email-masked]. [10.93]

  Operating systems:

  3b1 (UNIX-pc) with GCC		SunOS 3
  NeXT 1.0				SunOS 4.0
  AIX 2.2.1				SunOS 4.1 SysV environment
  A/UX 1.1				System V
  4.2 BSD and Ultrix systems		Motorola System V/88 Release 3
  4.3 BSD systems			Texas Instruments System 1500
  dnix 5.2 on DIAB DS90			NCR tower
  dnix 5.3 on DIAB DS90			ULTRIX systems (4.2 based)
  Dynix 3.0 on Symmetry			Mips running riscos 4.0 or greater
  Fortune 32:16				Riscos 4.5 and later
  HPUX (series 300)			Microport UNIX V.2
  HPUX 2.1 (series 800)			Amdahl UTS 2.0
  HPUX 3.0 (series 800)			SCO Xenix 2.2.1 (286) -- terminfo
  HPUX 6.5 or newer (series 300)	SCO Xenix 286 -- termcap
  HPUX 7.0				Xenix386 [termcap version]
  Interactive UNIX on 386		Xenix386 2.3.2 w/development system
  Dynix/PTX on symmetry			Tandy 68000/Xenix 3.2
  Pyramid (and Targon 35)
  SCO UNIX V on 386
  IRIX 3.1/3.2
  Siemens SINIX

  Hardware platforms:

  3b1 with GCC [no networking]		MIPS processors
  Amdahl 5890 (big iron)		Siemens MX300
  AT&T 3b2				Pyramid (and Targon 35)
  Convex				IBM 6150
  DECstation 3100			Silicon Graphics 4D series
  Gould PN6000				SPARC processors
  HP9000 series 320 and 800 (at least)	80386 based SUNs [have network support]
  Intel 80286 [no networking]		Sequent Symmetry
  Intel 80386 [no networking]		VAX family
  Motorola 68000 family
  Motorola 88000 risc

Subject: Is it possible to restrict the groups that users have access to?
From: 2.2

  Create a new group for the people who can read the special groups.
  Call it "privnews", for example. (In /etc/group put the userid of
  each person who's in that group on that group's line.)  Then change
  the group of the spool directory which contains the restricted
  newsgroup to "privnews" (leaving the owner as news), and set the
  mode to 750. --Alexis Rosen <[email-masked]>

  Note that this only works if you are not using NNTP to read news.
  There is currently no mechanism that will allow this to work with
  NNTP. --Steve Simmons <[email-masked]> [1.93]

Subject: Unofficial patches for various bugs
From: 2.3

  Several bugs have been reported and fixed and the patches are
  available here for those not patient enough to wait until the next
  release.

  Remember, these are *unofficial* patches so back them out before
  patching in the next release of nn.  You do not have to strip the
  two leading spaces before these patches.  In fact you can run "patch
  -s -N < this-entire-faq", within the newsreader even!

  The patch in Appendix "pack_date.c" fixes NN dateline parsing.
  Also, NN mishandles non-GMT time zones near short month boundaries
  due to NN's, er, somewhat unusual time stamp encoding.  It is
  included in nn version 6.5.0.  --Paul Eggert <[email-masked]>
  [10.93]

Subject: Can I set up nn securely?
From: 2.4

  Diffs are unfortunately not included, but this is what you can do:

  o Set shell-restrictions in the setup file.
  o Set and lock *every* variable which is used to execute commands.
  o Modify the source to avoid display/save/print files above the
    home-directory if shell-restrictions is set (mainly in save.c).
  o Modify the source to avoid changing directories if shell-restrictions
    is set.
  o Modify the source to avoid showing the contents of locked variables.

  In particular, the following variables should be locked:

  backup-folder-path, backup-suffix, bug-report-address, decode-header-file,
  editor, folder, inews, mail, mail-record, mailer, news-record, newsrc,
  pager, patch-command, printer, record, spell-checker, unshar-header-file

Subject: ***** Command Input *****
From: 3.

Subject: ***** Selection Mode *****
From: 4.

Subject: How come nn doesn't show the Lines count?
From: 4.1

  Karl Kleinpaste writes:
    C News sites can turn on Lines: header creation (we do here), but
    the default has it turned off.  I wish more would turn it on, as
    several newsreaders put it to use, and it's the most easily
    available metric of article size when showing the user a menu of
    available articles.

  Henry Spencer replies:
    We're unenthusiastic about Lines:, which is why it's off by default
    and little-documented.  *The* most easily available metric of
    article size is not line count -- which is often slightly wrong, by
    the way -- but byte count, which is available without even parsing
    the headers.

    You can tell C News to add Lines: headers to articles *posted*
    locally, but C News has no provision for adding headers to traffic
    coming in from other sites.  [Specifically, search for the string
    "uncomment" in inews, and uncomment those lines. --bw]

  But Paul Eggert <[email-masked]> and Luc Rooijakkers
  <[email-masked]> provide a solution:

    Remember, these are *unofficial* patches so back them out before
    patching in the next release of nn.  You do not have to strip the
    two leading spaces before these patches.  In fact you can run
    "patch -s -N < this-entire-faq", within the newsreader even!  A
    variation of this patch is included in nn version 6.5.0.  See
    Appendix "news.c" [10.93]

  Finally, Peter Wemm <[email-masked]> says that you'll always get
  the lines header if you run INN.

Subject: Why does nn crash when a letter one past the highest letter is selected?
From: 4.2

  This is fixed in patch 17.  [9.92]

  Your terminal modes will be screwed up after such an event, so
  you'll have to type ^J (or LINE-FEED) repeatedly until a prompt is
  seen, and then run

	stty -sane^J

  or

	reset

Subject: How do I search for an author in a menu?
From: 4.3

  Add the following macro to your init file (~/.nn/init) and invoke
  via '_' (underscore).

  # _ does search on sender (as = does a search on subject)
  map menu _ (
	:set select-on-sender
	find input
	:unset select-on-sender
	message
  )

  [1.93]

Subject: ***** Reading Mode Commands *****
From: 5.

Subject: How can I see the original article with the current subject?
From: 5.1

  While reading an article, use "G RET RET RET".

Subject: Why do articles without a Lines header appear empty?
From: 5.2

  This problem only shows up if you have header-lines set to a string
  that includes "L".  It is suspected that having the line count patch
  sets something that makes nn think there is a Lines header and then
  the header-string is telling it to display the Lines header but
  there isn't one and things get messed up.  --Gary Morris
  <[email-masked]>

Subject: Can the article viewer/pager be changed?
From: 5.3

  No.  And for good reason.  There are too many commands in nn's pager
  that less, for example, doesn't know anything about.

Subject: How can I read MIME (multi-media mail) articles?
From: 5.4

  Using metamail, you can do one of the following:

  "Print" the message.  Use the "P" command and:

	set printer metamail

  "save" the message.  Use "s" and specify "|metamail" as a filename.

  metamail can be found at:

  thumper.bellcore.com		/pub/nsb/mm2.7.tar.Z

  [5.94]

Subject: +How can I read HTML (world wide web, mosaic) articles?
From: 5.5

  Add the following to ~/.nn/init.  The "lynxify" script is in the
  Appendix.

	map show ^F (
		save-full "|lynxify"
		redraw
	)

  When reading the article with HTML references, use C-f.  Note that
  just "ftp://ftp.ii.com/pub/ii" won't be enough; you'd need to see
  something like <A HREF="ftp://ftp.ii.com/pub/ii">Nancy McGough,
  Infinite Ink</A> for lynx to pick it up.

Subject: Why am I reading cross-posted articles more than once?
From: 5.6

  If you are using nnmaster and the cross-post detection is broken,
  then something's wrong that I'm not aware of.

  If you are using the NOV .overview database, and are not storing the
  full Xref header, then that will cause it.  --Peter Wemm
  <[email-masked]> [5.94]

  If you're running INN, edit /usr/lib/news/overview.fmt and uncomment
  the line with 'Xref:full' in it.  If you're running Cnews with the
  NOV patches, you'll have to edit mkov.c (I think) appropriately and
  recompile; the code for putting Xref: in the NOV database is in
  there, just commented out. --Richard Todd
  <[email-masked]> [5.94]

Subject: ***** Saving Articles *****
From: 6.

Subject: How do I save files that I can read later with MH, elm, Mail, ...?
From: 6.1

  MH:
     Save your files with +$F/$N.  For example, if you save message 10
     in news.software.nn in this way, you will create a file called
     ~/News/news/software/nn/10.  If you have a symbolic link from
     ~/Mail/news to ~/News, then you can look at your saved nn
     messages with "scan +news/news/software/nn".

  Mail
     Add "set mail-format" to your init file.

Subject: What's the best way to save multi-part articles?
From: 6.2

  All you have to do is to save the articles from the menu, e.g.

	W(rite) +file.* a b c d... <space>

  where a b c d... are the articles on the menu you want to save.  You
  can also save the selected articles on the menu with * (only on
  current page) or + (on all menu pages).  --Kim Storm <[email-masked]>

Subject: When saving in +a/b/c keeps you from saving in +a/b.
From: 6.3

  This happens when default-save-file is $F.  Try changing
  default-save-file to $F/$N (my favorite) to get, for example,
  +news/software/nn/1022, or $G to put everything in
  +news.software.nn.  Finally, if you really did want the behavior of
  +$F, a compromise would be to use +$F. (Andrew's favorite) instead
  (one can use anything other than '.'). --Bill Wohler
  <[email-masked]> & Andrew Swann <[email-masked]>

  Alternatively, use +$F/$L, to place articles for news.software.nn in
  the file +/news/software/nn/nn.  This has two advantages:
  1) You can later read through the folder "nn" and save some of the
    articles under new folder names having to do with the topic.  For
    example, you might save auto-select topics under +$F/auto-sel,
    that is, +/news/software/nn/auto-sel.
  2) If at a later date, a new newsgroup is added below nn, articles
    can still be saved under that subgroup since +/news/software/nn is
    already a directory, not a folder.  --Harry Herman <[email-masked]>

Subject: +How can I change the default name of a save file?  
From: 6.4

  The variable default-save-file controls how files are named.  By
  default, the value of default-save-file is +$F (components of the
  newsgroup become directories, last component is the file name--[Q6.3
  When saving in +a/b/c keeps you from saving in +a/b] discusses why
  this isn't a good idea).  However, most sites change that to +$G
  (file has the same name as the newsgroup) in the system init file.
  --Bill Wohler <[email-masked]> [8.94]

  You can also set default save files on a per-newsgroup level.  To do
  this, add the default save file to the newsgroup in your sequence
  (in ~/.nn/init).  For example,

	news.software.nn		+nn

  --Sven Guckes <[email-masked]> [8.94]

  If you don't want to have any default at all, add 

	unset suggest-default-save

  to ~/.nn/init. --Alex Martelli <[email-masked]> [8.94]

Subject: +Can I save all unread articles non-interactively into a file?
From: 6.5

  rn has some options to do this.  See the man page for details.

  Henrik Roseno <[email-masked]> writes that
  alt.usenet.offline-reader provides some programs that are designed
  just for this purpose.  Uqwk gathers the articles (into a SOUP or
  BlueWave packet ?), and Yarn is a program that lets you read them
  once you've downloaded them to your PC.  Use archie to find them
  nearby. --Bill Wohler <[email-masked]> [8.94]

Subject: ***** Folder Maintenance *****
From: 7.

Subject: How can I remove old articles from folders?
From: 7.1

  Just open the folder in the usual way and C(ancel) the articles you
  want to remove from the folder.  When you leave the folder, nn will
  rewrite the folder with the "cancel"ed articles removed.  --Kim
  Storm <[email-masked]>

Subject: ***** Posting and Responding to Articles *****
From: 8.

Subject: How can I post prewritten articles with nn?
From: 8.1

  nnpost will construct the header for the posted article, so it
  requires several arguments to be specified before the article is
  posted, e.g. a newsgroup name and a subject.  If some arguments are
  missing, nnpost will prompt for the missing arguments.

  If your pre-written article includes a full header, then you should
  not use nnpost; instead you should feed the article to "inews -h"
  directly (which is what nnpost does after building the header from
  the arguments).  --Kim Storm <[email-masked]>

Subject: How can nn automatically append my signature?
From: 8.2

  Put your signature in a file called .signature in your home
  directory, and use:

	set append-signature-post
	set append-signature-mail	# if desired
	set query-signature		# if you want confirmation.

  See also [Q8.3 "How do I eliminate double signatures?"] and [Q8.4
  "Can the signature come from a different file or program?"] [3.93]

Subject: How do I eliminate double signatures?
From: 8.3

  Double signatures occur when both nn and inews append $HOME/.signature.

  If you want just inews to append your signature, use:

	unset append-signature-post

  This is actually the default, but you can unset this variable if
  your nn administrator has mistakenly turned it on.

  If you want just nn to append your signature, move your signature to
  some other place than $HOME/.signature.  Then see, [Q8.4 "Can the
  signature come from a different file or program?"]

Subject: Can the signature come from a different file or program?
From: 8.4

  If you want nn to append your .signature file, you can copy nn's aux
  file (ie. /usr/local/lib/nn/aux) to your .nn directory and set the
  mail-script and news-script variables to ~/.nn/aux.  In your copy of
  the aux script, you can either specify a different place for your
  .signature file (like $HOME/.nn/signature) or you can get fancy: you
  can use specific .signatures for certain groups (saved in variable
  "G"), or use the output of a program.  --Bill Wohler <[email-masked]>

  Tired of the same old signature?  Want different signatures for
  different newsgroups?  Here's a program to help you out.

  The way it works is to have .signature be a named pipe, so if you
  don't have named points, just say 'n'.

  The sigrand program then feeds stuff down the pipe everytime someone
  wants to read it.  That way it works for more than just news, but
  for anything that wants to read your .signature, like a mailer.

  You have your choice of three kinds of signatures:

      1) random (short) fortune from "fortune -s"; you get these if
	 you don't have a global sig file.
      2) random fortune from ~/News/SIGNATURES [global sig file]
      3) random fortune form ~/News/(newsgroup)/SIGNATURES [local sig files]

  Ask Tom Christiansen <[email-masked]> for more details.

Subject: How do I save my posts, followups and replies automatically?
From: 8.5

  In your nn init file, use the following lines:

	set news-record file
	set mail-record file

  to place posts and followups in one file and replies in another, or
  to put everything in a single file, use:

	set record file

  Replace "file" with the absolute path (~ == home directory ok) of
  your desired file.  All files are saved in mailbox format.  --Don
  Mullins <[email-masked]> [9.92]

Subject: +Can I use my editor to edit posts and replies?
From: 8.6

  Yes.  Set the environment variable EDITOR as desired.  If you like
  emacs:

	$ EDITOR=emacs; export EDITOR			# sh, ksh, bash
  	% setenv EDITOR emacs				# csh, tcsh.

  Alternatively, you can add:

	set editor emacs

  to ~/.nn/init. --Bill Wohler <[email-masked]> [8.94]

Subject: Can I use my mailer to send mail?
From: 8.7

  Yes.  See the variables mail-script, mailer, and mailer-pipe-input.
  The following show how you can have nn use elm and MH to mail
  messages.  Note that this does not replace the internal mailer: the
  message is passed on to the selected mailer for further delivery.  [5.94]

  The original idea of using MH (namely, comp) to send mail from nn
  came from Jaap Vermeulen <[email-masked]>, but he wouldn't
  recognize what I did to it.  I also used a suggestion from John
  Romine <[email-masked]> and Tom McCain <[email-masked]>.

  Add

	set mail-script nn-use-mh

  to your init file.  See Appendix "nn-use-mh" for the script.

  In addition, you can contact Ray Davis <[email-masked]> for some
  scripts that sort of turn nn into a MH front end by providing macros
  to save, delete and refile articles in MH folders.

  To use elm to send the messages, add the following to ~/.nn/init:

	set   mailer              nn_elm
	unset mailer-pipe-input

  and see Appendix "nn_elm" for the script. [1.93]

Subject: Can nn use aliases when sending mail?
From: 8.8

  Yes.  See the variable mail-alias-expander, and use the script in
  Appendix "nnalias."  [1.93]

Subject: How can I set a different Organization name?
From: 8.9

  See [Q8.11 "How can I customize my mail headers for mail and
  posting?"] [9.92]

Subject: How can I make mail replies go to a different machine?
From: 8.10

  See [Q8.11 "How can I customize my mail headers for mail and
  posting?"]  [9.92]

Subject: How can I change how my real name appears?
From: 8.11

  On BSD UNIX systems, you can run the command chfn(1) to change your
  real name.  If you don't want to do this, or can't, please see [Q8.11
  "How can I customize my mail headers for mail and posting?"]  [9.92]

Subject: How can I customize my mail headers for mail and posting?
From: 8.12

  Headers can be modified or appended to by creating the variables
  mail-header (for replies) and news-header (for posts and followups)
  in the init file. You can include any headers that you want;
  separate multiple headers with semi-colons.  For example:

  set mail-header From: Joe Smith <[email-masked]>;Reply-To: [email-masked];
		  Organization: CC University
  set news-header From: Joe Smith <[email-masked]>;Reply-To: [email-masked];
		  Organization: CC University

  Note that these lines are split for readability--the value of these
  variables must appear on a single line.  In addition, do not insert a
  space between semi-colons and the next header.

  A Reply-To header is useful when your system generates either an
  unwanted or blatantly wrong return address for you.  If this header
  is present, then mailers use it instead of the system generated From
  header.

  A From header is useful when you want to change how your real name
  appears to nn readers, but you don't want to change it (or can't) on
  your system.  Warning: only do this if you're sure you can create a
  RFC 822 compliant From header.  [9.92]

Subject: ***** Jumping to Other Groups *****
From: 9.

Subject: How can I see which newsgroups are available?
From: 9.1

  To see a list of all news groups with a short description, use the
  command ":post" and type '?'.  To list groups that match a regular
  expression (ie. pattern), use "/pattern" instead of '?'.  --<Sven
  Guckes> [email-masked]

  Also try using '?' when going to a group with the 'G' command.  Note
  that successive '?'s will display more groups when there is not
  enough room to display all choices at once.  Group completion is
  achieved with ' ' (space).

  Finally, the programs "nnsub" or "eep" can be used to easily view
  newsgroup names and descriptions and also to subscribe to groups.
  These programs are in the "contrib" area of the sources in 6.5.0.

  [10.93]

Subject: ***** Automatic Kill and Selection *****
From: 10.

Subject: Can all non-selected subjects be automatically placed in my kill file?
From: 10.1

  The two variables, ignore-re and auto-select-rw, accomplish this
  task.  They are available in version 6.5.0.  In the meantime,
  patches may be obtained from dkuug.dk:/pub/nn6.4/nn6.4.killunread.
  --Keld J|rn Simonsen <[email-masked]>. [1.93]

Subject: Can I automatically kill articles based on the Newsgroups header?
From: 10.2

  This is how one can automatically kill crossposted articles, etc.

  First, manually either add the following to your .newsrc to mark all
  articles read forever:

	alt.flame: 1-2147483647

  or add the following to your .nn/kill file to kill all articles in
  the group:

	alt.flame:!s/:^

  The former method may break down if you ever use nngoback to reset
  numbers in your .newsrc.  The latter method could cause difficulty
  if you ever actually want to read articles in that group.

  Near the top of your sequence in your init file put

	!alt.flame.
	alt.flame

  This makes alt.flame, but not its subgroups, be included as the first
  thing in your sequence; so all articles in it are killed before they
  appear in any other groups.  You might want to put NEW above this so
  you can see if new groups are getting off to a bad start with lots of
  alt.flame crossposting.  Later in the sequence put

	% alt %

  This allows the rest of the alt hierarchy, including subgroups such
  as alt.flame.spelling (if you subscribe to it), to get included at
  that point in the sequence.

  Along with using the default settings of cross-filter-seq=true and
  cross-post=false, this works fine to nuke the crossposted articles.
  --Richard M. Mathews <[email-masked]> & Dave Shaver <[email-masked]>

Subject: How can I find all articles having to do with a certain topic?
From: 10.3

  nngrab invokes nn on all articles whose subject or keyword fields
  contain a desired keyword.  This shows one how important it is to
  use descriptive subjects and keywords when posting articles.  For
  more information, read the manual page.

Subject: How can I select one article in a thread with auto-select-subject set?
From: 10.4

  Define the following macro to toggle auto-select-subject.  --Steven
  Grady <[email-masked]>

	map menu A (
		:local auto-select-subject
		:toggle auto-select-subject
		?auto-select-subject=on echo "Auto-select on"
		?auto-select-subject=off echo "Auto-select off"
	)

  Use the '.' command.

Subject: Can one search for patterns in the entire article from the menu?
From: 10.5

  No.  However, in 6.5.0, there will be an additional option under the
  'G' command to create a submenu containing articles that contain the
  desired string.  As it is not yet well tested, it will be a compile
  time feature.  --Peter Wemm <[email-masked]> [10.93]

Subject: How come more articles get selected than I expect?
From: 10.6

  Check the setting of subject-match-parts. If this is on, then your subjects
  are considered matched if they match up to the first digit. For example
  if subject-match-parts is on, the subjects:

	someprogram Part 1/5
	someprogram Part 2/5

  are considered matches. So are

	v12345: someprogram Part 1/5
	v12346: anotherprogram Part 1/23

  as the "v" is identical up to the first digit. If you want to use
  subject-match-parts in a "comp.sources" type group, set
  subject-match-offset (the character position that matches are
  started from) to be beyond any digits that might appear in the first
  part of the subject.  --Dave Hayes <[email-masked]>

Subject: Any plans for trn-ish thread following?
From: 10.7

  "Yes, it's planned."  --Peter Wemm <[email-masked]> [10.93]

Subject: ***** The Format of the Kill File *****
From: 11.

Subject: ***** Miscellaneous Commands *****
From: 12.

Subject: Can I choose newsgroups as I do articles, ie. with a menu?
From: 12.1

  No, not yet.  Sorry.  However, progress in this direction has been
  made--if you care to finish the work, please contact Peter Wemm
  <[email-masked]>. [12.92]

  See also [Q9.1 "How can see which newsgroups are available?"]  [1.93]

  Outside of nn, you may wish to check out eep which is in the
  contributed area in 6.5.0.  --Peter Wemm <[email-masked]> [10.93]

Subject: How do I unsubscribe to all groups?
From: 12.2

  The file .newsrc in your home directory contains the information
  about the newsgroups, their subscription status and the numbers of
  the read articles.  A colon (':') indicates a subscribed group, and
  an exclamation mark ('!') indicates an unsubscribed group.  All you
  need to do for unsubscribing to all newsgroups is to edit .newsrc.
  You can do this with your favourite editor, or

	sed -e 's/:/!/' $HOME/.newsrc > foo
	mv foo .newsrc

  If you use csh, you have to escape the '!' with a '\'.  --Sven
  Guckes <[email-masked]> [3.93]

Subject: +How can I get nn to stop adding new newsgroups?
From: 12.3

  Add

	set new-group-action 0

  to ~/.nn/init. --Jason A Chase <[email-masked]> [8.94]

  However, what you might want to do instead is not see new groups in
  selected hierarchies.  I've added the following to my sequence (in
  ~/.nn/init):

	# Don't bother with new groups in these hierarchies.
	!:N alt,de,u3b,vmsnet,eunet,bionet,bit,biz,trial,psi,k12,nirvana

  The key one is alt!  --Bill Wohler <[email-masked]> [8.94]

Subject: ***** The Init Files *****
From: 13.

Subject: +How do I customize nn or change nn's behavior?
From: 13.1

  Modify the file ~/.nn/init.  See the section "The Init Files" in the
  man page for more details.  So that you know what else might be
  affecting nn, here's the beginning of that chapter:

  The init files are used to customize nn's behaviour to local
  conventions and restrictions and to satisfy each user's personal
  taste.  Normally, nn reads up to three init files on start-up if
  they exist (all init files are optional):

  $LIB/setup 
	A system-wide file located in the library directory. This file
	is always loaded before any other init file (even when the -I
	option is specified).  It cannot contain a group presentation
	sequence.

  $LIB/init
	Another system-wide (global) init file located in the library
	directory.  This file may be ignored via the -I option.

  ~/.nn/init
	The private init file located in the user's .nn directory. It
	is read after the global init file to allow the user to change
	the default setup.

Subject: ***** Variables and Options *****
From: 14.

Subject: Setting new-group-action to "ask before adding" doesn't work.
From: 14.1

  Take NEW out of your sequence--it's redundant.

  There was also a small bug (fixed in 6.5.0) which caused it to
  not to work in certain situations. --Peter Wemm <[email-masked]>
  [10.93]

Subject: ***** Macro Definitions *****
From: 15.

Subject: Is there a library of macros and other nn features?
From: 15.1

  When complete, it will be a companion posting to this one.  If you
  have not mailed me <[email-masked]> your init file, or you have
  made substantial changes since the last time, please send it in.  If
  anyone is handy in perl or awk and would like to write some scripts
  to reduce multiple init files to variable summaries (like the one I
  posted a long time ago), macro definitions and presentation sequence
  tricks, I would like to talk to you.

Subject: ***** Key Mappings *****
From: 16.

Subject: ***** Command Groups *****
From: 17.

Subject: ***** Group Presentation Sequence *****
From: 18.

Subject: ***** NN Maintenance & nnmaster *****
From: 19.

Subject: Why does nnmaster stop collecting articles at the "junk" group?
From: 19.1

  This can occur when you access news via NNTP.  Older nntp servers
  have a limitation of 4000 articles in a group, and junk may easily
  exceed this which makes the nntp server crash.

  To overcome the problem, edit the GROUPS file to add the X flag on
  the junk group, run nnmaster -G, and then nnmaster will ignore the
  junk group.  --Kim Storm <[email-masked]>

  In nntp_dir/common/conf.h, you can either increase MAX_GROUPS
  (normally 4096) or you can set #define DYNAMIC_ART_ARRAY (normally
  #undefed).  In either case, you obviously have to recompile nntp.

  Normally, new groups are added as they come in, but the news
  administrator should monitor the junk newsgroup and either make new
  newsgroups for the orphan messages, or ensure that the feed stops
  sending bogus messages.  --Mark Rawling
  <[email-masked]> [3.93]

Subject: How do I cope with "Incomplete MASTER file"?
From: 19.2

  See [Q19.3 "Why isn't nnmaster working?"]

Subject: Why isn't nnmaster working?
From: 19.3

  After the make, did you remember to:

	Run ./inst <options> to install the files?
	Run ./inst INIT to initialize the database?

  Nnmaster mails error messages to the user who owns him (typically
  "news").  Check this mailbox for clues.

  If nnmaster -r or -D did not work, then neither did nnmaster -I (or
  ./inst INIT from the install directory).  Once you fix the
  permissions (see Paul's answer below), you need to rerun the
  initialization step.  --Stew Ellis <[email-masked]>

  If nnmaster dies and updates the Log file with "Incomplete MASTER
  file", it could be you're not running the latest version.  --David
  R. Hieb <[email-masked]>

  If, when you start your nnmaster, it just exits quietly, it could be
  that your permissions are incorrect.  Ensure that all directories in
  the nn library are owned by news (or the owner that you configured
  nn with).  --Paul Bickerstaff <[email-masked]>

  Make sure that there is a 'news' entry in passwd and group since
  nnmaster is run setuid/setgid to news and the files and directories
  that nnmaster needs to access are owned and writable by news.  --Jim
  Jagielski <[email-masked]> [9.92]

  Another problem could be in the way it is started.  Two related
  solutions are presented.

  /etc/rc exits before the child has had the chance to setpgrp().
  Putting "sleep 5" at the end of /etc/rc fixed it. --David B. Thomas
  <[email-masked]>

  Another similar solution involved inserting a "sleep 10" at the
  beginning of /etc/daemons/nnmaster.init file.
  --Jeffery Small <[email-masked]>

  It could be you're not running the latest version.  --David R. Hieb
  <[email-masked]>

Subject: !Why did nnmaster stop working?
From: 19.4

  Perhaps you have a corrupted database that can't be fixed.  In this
  case, run "./inst INIT" from the installation procedure.  --Phil
  Howard <[email-masked]> [5.94]

  nnmaster may exit when it encounters a corrupt header in an article
  from a nntpserver.  Restart nnmaster in debug mode (nnmaster -D) to
  see which group contains the offending article.  Ignore this group
  until the offending article has expired by editing the GROUPS file,
  adding the `X' flag to the newsgroup and running "nnmaster -G".
  Restart collection of the newsgroup by removing the `X' flag and
  running "nnmaster -G".  --Stew Ellis <[email-masked]> [8.94]

  See also [Q19.3 "Why isn't nnmaster working?"]

Subject: Why do I get ".../MASTER not found"?
From: 19.5

  The problem of the NN port to the Atari ST is, that you have to
  build an "active" file (NN format, not HERMES-like!!) in
  /usr/lib/news before running nnadmin -I.

  You can build this file by using the included "buildact.tos."
  Buildact.tos creates a UNIX-like /usr/lib/news/active from
  /usr/lib/hermes/active. [9.92]

Subject: Why do I get "cannot open 'x' file"
From: 19.6

  If you get a message like,

	Fatal system error:
	alt.activism (6): cannot open 'x' file (mode=82, errno=2)

  you haven't initialized your database.  As root, run the following
  command "./inst INIT" in the nn source directory.  See the file
  INSTALLATION for more information.  --Sami Tikka <[email-masked]>
  [1.93]

Subject: Why do I get "Lost connection to server foobar"
From: 19.7

  It's possible that the two database files for a newsgroup (nnn.x and
  nnn.d) don't exist.  Go into nnadmin and force a recollect of the
  newsgroup.  Most of the newsgroups (which are missing nnn.x and
  nnn.d files) after the first problem newsgroup might be
  automatically collected without a problem.  If there are a large
  number of these problem groups, it might be easier just to rebuild
  the whole database: kill nnmaster, run "./inst INIT" as root in the
  source directory and restart nnmaster.  --Jeff Beckley
  <[email-masked]>

  If the group in question has too many articles (>4000), it will
  cause older NNTP implementations to choke.  See [Q19.1 "Why does
  nnmaster stop collecting articles at the "junk" group?"] for a
  fix. [3.93]

Subject: +Why doesn't nn display messages when not using NNTP?
From: 19.8

  If the database was built with NNTP, then nn has to use NNTP to read
  the messages.  This is not true in the other direction: nn clients
  can use NNTP to read the messages from a database built via NFS.
  The moral: build the database via NFS if you intend to use nn with
  either NFS or NNTP. --Michael Masterson <[email-masked]>
  [8.94] 

Subject: +Why do I get "Notice: no news has arrived for the last n hours"?
From: 19.9

  See [Q19.4 "Why did nnmaster stop working?"]. [8.94]

Subject: Glossary
From: Appendix

  MIME		Multi-purpose Internet Mail Extensions (see RFC ?)
  NNTP		Network News Transport Protocol (see RFC 977)
  INN		Inter-Network News

Subject: Acknowledgements
From: Appendix

I'd like to thank the following people for providing ideas on the
layout of this article:

Joe Wells <[email-masked]>	      Richard M. Stallman <[email-masked]>
David Elliott <[email-masked]>     Tom Christiansen <[email-masked]>
Eugene N. Miya <[email-masked]>

We are also grateful to the individuals mentioned below and in the
text of this document who have provided answers or other information
to make this a better document.  I regret that it is possible that
some names have been accidently omitted.  I would also like to thank
all the readers of news.software.nn.

Kim Storm <[email-masked]>           Sven Guckes <[email-masked]>

Subject: Copyright and Warranty
From: Appendix

  Copyright 1994 Bill Wohler

  This article is free; you can redistribute it and/or modify it under
  the terms of the GNU General Public License as published by the Free
  Software Foundation; either version 2, or (at your option) any later
  version.

  This article is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details which can be found
  in prep.ai.mit.edu:/pub/gnu/COPYING.

Subject: pack_date.c
From: Appendix

  *** old/pack_date.c	Wed Apr 17 01:32:40 1991
  --- new/pack_date.c	Thu Jun  4 20:03:02 1992
  ***************
  *** 4,9 ****
  --- 4,11 ----
     *	Calculate an approximate "time_stamp" value for a date
     *	string.  The actual value is not at all critical,
     *	as long as the "ordering" is ok.
  +  *	The current algorithm mishandles non-GMT time zones near
  +  *	short month boundaries, but this is rare in real news.
     *
     *	The result is NOT a time_t value, i.e. ctime() will
     *	not produce the original Date string.
  ***************
  *** 256,262 ****
        res *= 24 * 60;
        res += (hour * 60) + min;

  !     return res + tzone(date);
    }

  --- 258,264 ----
        res *= 24 * 60;
        res += (hour * 60) + min;

  !     return res - tzone(date);
    }

Subject: news.c
From: Appendix

  RCS file: news.c,v
  retrieving revision 1.1
  diff -c2 -r1.1 news.c
  *** news.c	1990/10/23 21:37:38	1.1
  --- news.c	1992/06/19 23:17:05
  ***************
  *** 231,235 ****
        char *parse_header();
        struct stat statb;
  !     int retry;
        FILE *f;
    #ifdef NNTP
  --- 231,235 ----
        char *parse_header();
        struct stat statb;
  !     int c, retry;
        FILE *f;
    #ifdef NNTP
  ***************
  *** 300,309 ****
    	body = parse_header(f, art_hdr_field, modes, buffer1);

  - 	news.ng_lines = news.ng_xlines ? atoi(news.ng_xlines) : -1;
    	if (news.ng_from == NULL) news.ng_from = news.ng_sender;

  ! 	if (modes & FILL_OFFSETS) {
    	    art->fpos = news.ng_fpos = ftell(f);

    	    fseek(f, (off_t)0, 2);
    	    news.ng_lpos = ftell(f);
  --- 300,328 ----
    	body = parse_header(f, art_hdr_field, modes, buffer1);

    	if (news.ng_from == NULL) news.ng_from = news.ng_sender;

  ! 	if (modes & FILL_OFFSETS)
    	    art->fpos = news.ng_fpos = ftell(f);

  + 	if (news.ng_xlines)
  + 	    news.ng_lines = atoi(news.ng_xlines);
  + 	else {
  + #ifdef NNTP
  + 	    if (use_nntp && lazy) {
  + 		off_t fpos = ftell(f);
  + 		fclose(f);
  + 		f = nntp_get_article(art->a_number, 2);
  + 		if (f == NULL) return NULL;
  + 		lazy = 0;
  + 		fseek(f, fpos, 0);
  + 	    }
  + #endif
  + 	    news.ng_lines = 0;
  + 	    while ((c = getc(f)) != EOF)
  + 		if (c == '\n')
  + 		    news.ng_lines++;
  + 	}
  +
  + 	if (modes & FILL_OFFSETS) {
    	    fseek(f, (off_t)0, 2);
    	    news.ng_lpos = ftell(f);

Subject: nn-use-mh
From: Appendix

#!/bin/sh

# Obtain value of $WORK and $RECORD
. ${HOME}/.nn/.param

# Append Fcc: +folder to headers.  The folder is specified in
# mail-record.
if [ "$RECORD" != "" ]; then
      awk '
      {
	      if ($0 == "" && !done) {
		      print "Fcc: +'$RECORD'";
		      done = 1;
	      }
	      print;
      }' $WORK > /tmp/aux.$$ && mv /tmp/aux.$$ $WORK
fi

# Compose and send the mail
comp -form $WORK

Subject: nn_elm
From: Appendix

#!/bin/sh
#
# nn_elm
#
# 07 Aug 91             V1.0
#
# Massage a mail message from nn into a form that elm can use
# (c) 1991 Phil Kernick <[email-masked]> Wizard Software
#

eval `awk '
BEGIN {
  FS = ":";
  dq = sprintf("%c", 34);

  headers = 0;
  to = "";
  subject = "";
}

/^.*: / {
  headers++;
  if($1 == "To")
    to = dq substr($0, 5) dq;
  if($1 == "Subject")
    subject = dq substr($0, 10) dq;
}

/^$/ {
    printf("tail +%d %s | elm -s %s %s > /dev/null\n", headers+2, mail, subject, to);
    exit;
}' mail=$1 $1`

exit $?

Subject: nnalias
From: Appendix

#!/bin/sh
#
# nnalias -- expands aliases from ~/.mailrc file for nn.
#
# To use, put the following in your ~/.nn/init file:
#
#	set mail-alias-expander nnalias
# and put this file somewhere in your path, making it executable.  I use
#	set mail-alias-expander /usr/local/lib/nnalias
# but the choice is up to you.
#
# Written by Scott Hannahs, Bitter National Magnet Lab, MIT, August 1991
# Complaints, comments, ideas to [email-masked]
# Tested on Silicon Graphics, IRIX 3.3.1
#
# Minor banging by <[email-masked]> to handle alias value fields
# which contain doublequote characters, e.g.
#
#	alias Foo "Foobar the Great <[email-masked]>"
#
# (the doublequotes are stripped in the expansion), and to handle multiple
# spaces after the token "alias".
#
# Also added some error detection and signal traps; tested on SunOS 4.1.1.
#
#	Exit codes: 	0 -- normal termination
#			1 -- parm error
#			2 -- file does not exist
#			3 -- trap
#
# Thanks to bug reports from
#  Andy Jacobs and others
#
if [ z$1 = z ]; then
  myname=`basename $0`
  echo "$myname: usage is  $myname workfile"
  exit 1
fi

if [ ! -f $1 ]; then
  myname=`basename $0`
  echo "$myname: $1 does not exist or is a directory"
  exit 2
fi

TMP_DIR=/usr/tmp

trap "rm -f ${TMP_DIR}/nn.alias.$$ ; exit 3" 0 1 2 3 15

ALIAS_LIST=""
ADDRESS_LIST="`head -1 $1 | sed -e s/To://`"
until [ "$ALIAS_LIST" = "$ADDRESS_LIST" ] ; do
  ALIAS_LIST="`echo "$ADDRESS_LIST"| sed -e 's/,/ /g' `"
  ADDRESS_LIST=""
    for ALIAS in $ALIAS_LIST ; do
      ADDRESS=`grep '^[ 	]*alias[ 	][ 	]*'"$ALIAS"'[ 	]' ${HOME}/.mailrc |\
      sed      -e s/'^[ 	]*alias[ 	][ 	]*'"$ALIAS"'[ 	][ 	]*'// |\
      sed -e s/'"'//g`
      if [ "$ADDRESS" ] ; then
	ADDRESS_LIST="$ADDRESS_LIST $ADDRESS"
      else
	ADDRESS_LIST="$ADDRESS_LIST $ALIAS"
#      for elm alias expansion use the following line instead of the previous.
#      ADDRESS_LIST="$ADDRESS_LIST "`elm -c "$ALIAS" | cut -f3 -d\ `
      fi
    done
  done
echo "To:${ADDRESS_LIST}" > ${TMP_DIR}/nn.alias.$$
tail +2 $1 >> ${TMP_DIR}/nn.alias.$$
mv -f ${TMP_DIR}/nn.alias.$$ $1

exit 0

Subject: +lynxify
From: Appendix

#!/bin/sh
# Author: Dr. Richard Botting <[email-masked]>
# Posted to comp.infosystems.www.users on 9 June 94
# Prepare input with embedded html tags for lynx and then view it

file=/tmp/mailynx.${$}.html
(echo "<pre>" ; cat ; echo "</pre>" )> $file
lynx $file < /dev/tty
rm $file

Local Variables:
mode: outline
outline-regexp: "^Subject:"
fill-prefix: "  "
End: