2.9BSD/usr/contrib/notes/doc/man

 Technical report number UIUCDCS-R-82-1081









		    NOTESFILE REFERENCE	MANUAL





		       Raymond B. Essick, IV

			    Rob	Kolstad



			   June	17, 1982


			    Revised by

			Rick L Spickelmier

			    UC Berkeley


			    Lou	Salkind

				NYU





 ABSTRACT


	 The notesfile system coordinates discussion  forums.	It

 stores,  indexes,  sorts,  and	searches individual remarks.  This

 manual	describes the commands to install,  invoke,  and  use  the

 system.






 (C) 1982 University of	Illinois Board of Trustees, All	Rights Reserved


       This work partially funded by NASA grant	NAS-1-14472

       directed	by Roy H. Campbell, University of Illinois.






 1   _I_n_t_r_o_d_u_c_t_i_o_n.


	 Notesfiles support computer  managed  discussion  forums.
 Discussions  can  have	 many  different  purposes and scopes: the
 notesfile system has been designed to be flexible enough to  han-
 dle differing requirements.

	 Each notesfile	discusses a single topic.   The	 depth	of
 discussion  within  a	notesfile is ideally held constant.  While
 some users may	require	a general discussion of	personal  worksta-
 tions,	 a  different  group may desire	detailed discussions about
 the I/O bus structure of the WICAT 68000 (a  particular  worksta-
 tion).	  These	 discussions might well	be separated into two dif-
 ferent	notesfiles.

	 Each notesfile	contains a list	of  logically  independent
 notes (called base notes).  A note is a block of text with a com-
 ment or question intended to be seen by members of the	 notesfile
 community.   The  note	display	shows the text,	its creation time,
 its title, the	notesfile's title, the author's	name (some  notes-
 files	allow  anonymous  notes),  the	number of "responses", and
 optionally a "director	message".   Each  base	note  can  have	 a
 number	of "responses":	replies, retorts, further comments, criti-
 cism, or related questions concerning the  base  note.	  Thus,	 a
 notesfile  contains  an  ordered  list	 of  ordered  lists.  This
 arrangement has historically been more	convenient than	other pro-
 posals	 (e.g.,	trees were studied on the PLATO	(trademark of CDC)
 system).

	 The UNIX (trademark of	Bell Labs)  notesfile  system  was
 designed and implemented by Ray Essick	at the University of Illi-
 nois, Urbana-Champaign.  It provides users with the abilities	to
 read notes and	responses, write notes and responses, forward note
 text to other users (via mail)	or  other  notesfiles,	save  note
 text in their own files, and sequence through a set of	notesfiles
 seeing	just new text.	Each notesfile has a  set  of  "directors"
 who  manage  the  notesfile:  they delete old notes, compress the
 file when needed, grant and restrict access to	the notesfile, and
 set  different	 notesfile parameters (e.g., title, "director mes-
 sage",	policy note, whether notes'  authors  can  be  anonymous).
 Some  notesfiles  contain  correspondence  from  other	computers.
 Like the UNIX "USENET", notes and responses are exchanged  (often
 over  phone  lines)  with  remote machines.  The notesfile system
 provides automatic exchange and updating of  notes  in	 an  arbi-
 trarily connected network.

	 This document details the use of notesfiles from  invoca-
 tion  through intersystem notes exchanges.  The last chapter sum-
 marizes the entire set	of commands for	easy reference.


 2   _U_s_i_n_g _N_o_t_e_s_f_i_l_e_s.


	 The notesfile system is invoked  with	a  single  command
 line.	 Most  notesfile  commands require only	a single character
 (like the vi editor).	Those that do require more than	one  char-
 acter are terminated by a carriage return.





 Notesfile Reference Manual				    Page 2

 2.1   _I_n_v_o_c_a_t_i_o_n.

	 Invoke	the notesfile system with:

	 notes [ -sxi ]	[ -t termtype ]	[ -f nfile ] [ topic1 ]	 [
 topic2	... ]

 The topic list	(e.g., topic1) specifies the notesfiles	 to  read.
 Invoking the notes system with	NO arguments causes the	program	to
 look for a file called	'.notesrc' in your home	directory, and	if
 it  exists,  effectively  does	 'notes	-f ~/.notesrc'.	 When more
 than one topic	is  specified,	the  user  encounters  each  topic
 sequentially (i.e., topic2 is entered upon completion of topic1).

	 The -s	switch activates the "notesfile	 sequencer"  which
 is  discussed	in section 2.7.	 Specify  "-x" to use the extended
 sequencer.  The "-i" flag selects yet another sequencing mode.

	 The -t	option directs the notesfile system to use  "term-
 type"	as  the	 user's	 terminal  type, overriding the	TERM shell
 variable.

	 The -f	option directs the notesfile system  to	 read  the
 contents  of  the  file "nfile" for a list of notesfiles to read.
 See section 2.3 ("The -f Option") for	more  information  on  the
 format	of this	file.


 2.2   _N_o_t_e_s_f_i_l_e _N_a_m_e_s _a_n_d _W_i_l_d_c_a_r_d_s.

	 The notesfile system supports pattern matching	for  names
 in  the  same	manner	as  the	 shell.	  By using the shell meta-
 characters "*", "?", "[" and "]", the user can	specify	 a  number
 of  notesfiles	 with  a single	entry.	To read	all the	notesfiles
 that pertain to unix, enter the following line	 (the  quotes  are
 required  to  protect	the  asterisks	from interpretation by the
 shell):

	 notes "*unix*"

	 There are several ways	 to  read  the	notesfiles  test1,
 test2,	test3 and test4:

	 notes test1 test2 test3 test4

	 notes "test?"

	 notes "test[1234]"

	 This feature is available from	the normal  entry  (notes)
 and  the  automatic sequencer entry (see section 2.7);	it is also
 available to the network transmission and statistics programs.


 2.3   _T_h_e -_f _O_p_t_i_o_n.

	 The "-f" option of the	notesfile system specifies a  file
 of  notesfile names to	read.  The file	consists of lines contain-
 ing notesfile names:

	 nfgripes
	 net.unix-wizards
	 net.bob*
	 net.general
 Notesfile Reference Manual				    Page 3

	 fa.telecom
	 ucbcad.*
	 !ucbcad.test
	 !net.bob

 The names start at the	left margin; they are  indented	 here  for
 readibility.	The  sequencer	mode can be changed by inserting a
 line of the form:

	 -s

	 Again,	this starts at the left	margin.	 The  "s"  can	be
 any  of: "s", "x", "i", or "n".  When a line of this form is read
 from the file,	the sequencer mode is  set  to	the  corresponding
 mode:	The  normal  "s"equencer,  the	e"x"tended  sequencer, the
 "i"ndex sequencer, and	"n"o sequencer.

	 To always enter nfgripes, micronotes, and  bicycle  while
 only entering the networked notesfiles	"net.*"	when new notes are
 present, one might use	 "notes	 -f  myfile"  with  the	 following
 "myfile":

	 -x
	 nfgripes
	 micronotes
	 bicycle
	 -s
	 net.*
	 !net.misc



 2.4   _G_e_n_e_r_a_l.

	 Almost	all notesfile commands require exactly one charac-
 ter (no carriage return).  Only commands that are longer than one
 character  require  a	terminating  carriage  return  (currently,
 choosing  a  note  to	read is	the only non-single character com-
 mand).

	 The commands were chosen to be	easy to	 remember.   Upper
 case  forms  of  commands  usually function like their	lower case
 counterparts but with some additional feature or power	(i.e., "w"
 writes	a response, "W"	includes the current displayed text in the
 response).

	 Some commands are  available  almost  everywhere  in  the
 notesfile system.  These include those	for help, exiting, forking
 a shell, and making a comment for the suggestion box.

 2.4.1	 _H_e_l_p.

	 Typing	"?" anywhere will list the available options in	an
 abbreviated format.

 2.4.2	 _E_x_i_t_i_n_g.

	 Type "q" ("quit") to leave the	current	notesfile.   Capi-
 tal  "Q"  leaves the current notesfile	and refrains from entering
 your last entry time into the sequencer table (see  section  "The
 Sequencer").	The notesfile system proceeds to the next topic	in
 the invocation	list.  Use  control-D  ("signoff")  to	leave  the
 notesfile system completely (without updating entry time informa-
 tion).
 Notesfile Reference Manual				    Page 4

	 The "k" and "K" keys function exactly	as  "q"	 and  "Q".
	 The  "z"  key	updates	your sequencer table and exits the
 program.

 2.4.3	 _S_h_e_l_l_s.

	 Fork a	shell at any time by typing "!"	 (just	like  many
 other Unix programs).

 2.4.4	 _C_o_m_m_e_n_t_s & _S_u_g_g_e_s_t_i_o_n_s.

	 Type capital "B" ("suggestion Box") while  on	the  index
 page  or  reading notes to make a comment or suggestion about the
 notesfile program.  Your suggestion will  be  stored  in  another
 notesfile reviewed frequently by the notesfile	system manager.


 2.5   _T_h_e _I_n_d_e_x _P_a_g_e.

	 When the notes	system is invoked without the  -s  option,
 the  user  sees an index of the most recent notes.  A sample page
 is shown below:

	   Workstation Discussion		      2:03 pm  Jan 4, 1982

	   12/9/81  2 Stanford SUN		   4 horton
		    3*WICAT 68000		     kolstad
		    4 M68000			   1 horton
		    5 Dolphin			   3 duke!johnson
	   12/10    6 CDC Standalone		   1 smith
		    8 IBM Personal Computer	     henry
		    9 Personal computers harmful?  8 Anonymous
		   10 Ethernet interfaces 3 mhz?  23 essick
		   11 Requirements for uiucdcs	  10 botten
	   1/1/82  12 Happy New	Year!		   5 mjk


		     - - - - - - - - - - - - -


	 The upper left	corner shows the  notesfile's  title.	In
 this example, the notesfile discusses personal	workstations.  The
 current time and date are displayed in	the  upper  right  corner.
 Ten  note  titles  are	 displayed  (if	 available).  Each note	is
 displayed with	its date (if different from  the  previous  date),
 note  number,	title,	number	of responses (if any), and author.
 The first note	above was written by  user  "horton"  on  December
 9th.  It is titled "Stanford SUN" and has four	responses.  Note 7
 has been deleted for some reason  (by	either	its  author  or	 a
 notesfile  director).	Note 5 was written by user "johnson" whose
 signon	resides	on the "duke" system.  Note 9 was  written  by	an
 author	who preferred to remain	unidentified.  Notes with director
 messages (sometimes denoting importance) are displayed	with a "*"
 next to the note number (see note 3 above).

	 From the index	page the user may:

       o+ Scroll	the index forward or backward.
       o+ Read a	note.
       o+ Write a note.
       o+ Go to the next	unread note.
       o+ Search	for notes or responses after a specific	date/time.
       o+ Search	for keywords within notes' titles.
       o+ Search	for notes/responses by a specific author.
 Notesfile Reference Manual				    Page 5

       o+ Go to another notesfile.
       o+ Read the policy note.
       o+ Register a complaint/suggestion about notesfiles.
       o+ Fork a	shell.
       o+ Exit the notes	program.
       o+ Invoke	notesfile director  options  (if  the  user  is	 a
	   director).
       o+ Check whether the group is  networked	and  if	 anonymous
	   submissions can be made.
       o+ Unsubscribe from the notes group.

 2.5.1	 _S_c_r_o_l_l_i_n_g _t_h_e _I_n_d_e_x _P_a_g_e.

	 Scroll	the index page by:

	 +	 forward one page
	 *	 forward to the	most recent page (* is multiple	+'s)
	 -	 backward one page
	 =	 backward all the way (= is multiple -'s)
	 <return> forward one page
	 <space> forward one page

 2.5.2	 _C_h_o_o_s_i_n_g _N_o_t_e_s	& _R_e_s_p_o_n_s_e_s.

	 While on the index page, choose a note	to read	by  typing
 its number followed by	a carriage return.  (This is the only com-
 mand that requires a carriage return after it.) Usually the space
 bar is	used to	scan text.  To skip to a special note or response,
 use the features below.

	 While reading a note, ";" or "+" advances  to	the  first
 response of the note.	The next note is displayed if there are	no
 responses.  The number	keys ("1", "2",	... ,  "9")  advance  that
 many  responses.  If there are	fewer responses, the last response
 is displayed.	The return key skips the responses and goes to the
 next  note.   Press  "-" or backspace to see the previous page	of
 the current note; if the page currently displayed is  the  first,
 the  notesfile	 program  displays  the	first page of the previous
 note.

	 While a response is on	the screen, the	";" and	 "+"  keys
 display  the next response.  As with reading a	note, if there are
 no further responses these keys advance to the	 next  note.   The
 number	 keys ("1", ...	, "9") will advance the	appropriate number
 of responses.	If there are fewer responses, the last response	is
 displayed.   The  "-" or backspace keys display the previous page
 of the	current	response. If the current page is the first page	of
 the  response,	 these keys display the	first page of the previous
 response.  Enter "=" to see the base note  of	the  current  note
 string.  Press	the return key to proceed to the next note.


 2.6   _N_o_t_e_s & _R_e_s_p_o_n_s_e_s.

 2.6.1	 _R_e_a_d_i_n_g _N_o_t_e_s.

	 After selecting a note	from the index page  (or  entering
 the  notesfile	 with your "sequencer" on), the	note is	displayed.
 A sample display is shown below:





 Notesfile Reference Manual				    Page 6

 Note 15		   Workstation Discussion		 2 responses
 horton				WICAT 150	       4:03 pm	Dec 11,	1981

 Wicat System 150

 8 MHz 68000, Mem. mgmt, Multibus architecture,	256k to	1.5 Mb RAM
 16/32/64Kbyte EPROM,

 10 ms interval	timer, 2 RS232 (19.6k async, 56k sync),	16 bit parallel
 intelligent disk controller
 10 Mbyte winchester (5.25", 3600 rpm, access: 3 ms trk-trk, 70	avg, 150 max),
 960Kb floppy (5.25", 300 rpm, access 10 ms trk-trk, 267 avg, 583 max)

 Options: battery backed clock,	graphics with touch panel, video disk control,
 High Speed Serial Network Interface

 Unix/V7 avail,	Pascal,	C, APL,	ADA, Cobol, Fortran, Lisp, Basic, Asm

		 ======================================


	 This is note number 15	in  the	 "Workstation  Discussion"
 file.	User "horton" wrote this note at 4:03 pm on December 11th,
 1981.	Two responses have been	 written.   The	 note's	 title	is
 "WICAT	 150".	 If a director had written the note, the "director
 message" might	have been  displayed  beneath  the  note's  title.
 Director's  notes  sometimes contain important	information or new
 policies.

	 Notes and responses can be up to 65535	bytes  long  (2^32
 bytes	in  4.1c BSD), much more than can be displayed in a single
 screen.  The display routine pages text automatically.	  For  all
 but  the  last	 page  of a long note or response, the lower right
 corner	of the display	shows the percentage of	the note that  has
 been shown.  For all but the first page of long text, the message
 "[Continued]" appears in the upper left portion of  the  display.
 Use  the  space  bar  to  see	the  next  page	 of a long note	or
 response.  When the last page is displayed, the space	key  func-
 tions	as the ";" key:	it proceeds to the next	response.  The "-"
 and backspace keys back up the	 display  to  the  previous  page.
 Only  the first 10 pages of text are managed this way;	typing "-"
 from the eleventh page	on will	return to the tenth page.  The "r"
 ("replot") key	 goes back to the first	page of	the note.

	 While reading a note, it is possible to:

       o+ Display the next page of the note.
       o+ Display the first page	of the note.
       o+ Write a response to the displayed note.
       o+ Read next note	or previous note.
       o+ Read next unread response or note.
       o+ Return	to the index page.
       o+ Skip to a given response.
       o+ Delete	the note (if you are its author	or a  file  direc-
	   tor).
       o+ Edit the note's title (if it is yours).
       o+ Edit  the  note  (if  it  is  yours  and  there  are	no
	   responses).
       o+ Copy the note to another notesfile.
       o+ Save the note in your file space.
       o+ Mail the note to someone.
       o+ Talk ("write")	to the author of the note.
       o+ Search	for keywords in	note titles.
       o+ Search	for notes/responses by a particular author.
 Notesfile Reference Manual				    Page 7

       o+ Toggle	the director message (if privileged).
       o+ Fork a	shell.
       o+ Go to another notesfile.
       o+ Make a	comment	or suggestion about notesfiles.
       o+ Exit the notesfile program.
       o+ Unsubscribe from the notes group.

 2.6.2	 _R_e_a_d_i_n_g _R_e_s_p_o_n_s_e_s.

	 Response displays are similar to those	of main	notes with
 the  exception	 that "Response	x of y"	replaces the note's title.
 The first response to note 15 is shown	below:

 Note 15		   Workstation Discussion
 koehler		      Response 1 of 2	      11:53 pm	Dec 11,	1981

 Does anyone have any insight about the	relative speeds	of the Winchester
 disks available on these systems?  The	previous disk seems to have
 track to track	response times commensurate with reasonably fast 8"
 floppies.  I wonder if	some of	the manufacturers are using disks that
 will not meet reasonable specifications for response time for these
 kinds of applications.

 On the	other hand, with intelligent layout of file sectors, the I/O system
 could romp and	stomp on often used files...

		 ======================================


	 The commands for manipulating the text	of a long response
 are  the  same	 as those for looking at long notes.  Typing space
 will move to the next page.  Typing "-" or backspace will display
 the  previous	page,  within  the same	limitations as for reading
 notes (only 10	pages are kept).  Press	"r" ("replot") to go  back
 to the	first page of the text.

	 The options available while reading responses include:

       o+ Display the next page of the response.
       o+ Display the first page	of the response.
       o+ Go to a different response (usually the next one).
       o+ Go to the next	unread note/response.
       o+ Reread	the base note.
       o+ Reread	the previous note.
       o+ Return	to the index page.
       o+ Copy the response to another notesfile.
       o+ Mail the response to someone.
       o+ Save the response in your file	space.
       o+ Talk to the response's	author.
       o+ Write another response	to the note.
       o+ Search	for keywords in	note titles.
       o+ Search	for notes/responses by particular authors.
       o+ Delete	the response (if you are  its  author  or  a  file
	   director).
       o+ Edit the response (if it is yours and there are no  later
	   responses).
       o+ Fork a	shell
       o+ Go to another notesfile.
       o+ Register a suggestion or complaint  about  the	 notesfile
	   program.
       o+ Exit the notesfile program.
       o+ Unsubscribe from the notes group.


 Notesfile Reference Manual				    Page 8

 2.6.3	 _W_r_i_t_i_n_g _N_o_t_e_s & _R_e_s_p_o_n_s_e_s.

	 Write new base	notes by hitting  "w"  while  reading  the
 index page.  The notesfile system will	then invoke an editor (the
 default editor	is "ed", use either of the shell variables NFED	or
 EDITOR	 to change it).	 After the prompt, type	the insert command
 along with the	text you wish to enter.	 Write	the  text  to  the
 disk  and leave the editor.  The system will prompt you for vari-
 ous options if	they are available:  anonymity,	 director  message
 status, and the note's	title.

	 To write a response to	a note type "w"	while that note	or
 any of	its responses is displayed. The	same steps used	to write a
 base note should then be followed.

 2.6.4	 _M_a_i_l_i_n_g _N_o_t_e_s_f_i_l_e _T_e_x_t.

	 Both notes and	responses can be  mailed  to  other  users
 (with	optional appended text).  The capital "M" ("mail") command
 gives you the opportunity to edit the text then send it  to  any-
 one.  Its inferior counterpart, "m", allows you to mail a message
 to anyone.  To	mail to	the author of the text,	 use  capital  "P"
 ("Personal  comment") to send the text	and your comments; use "p"
 for a simple letter.

	 To use	a specific mail	program, set the environment vari-
 able  MAILER.	If  this  is not set, the standard mail	program	is
 used.

 2.6.5	 _F_o_r_w_a_r_d_i_n_g _T_e_x_t _T_o _O_t_h_e_r _N_o_t_e_s_f_i_l_e_s.

	 Capital "C" ("copy") prompts for a destination	 notesfile
 then  allows  editing of the note text	before it is copied to the
 other notesfile.  Lower case "c" sends	a note without the current
 displayed  text  (i.e.,  allows  you to write a comment in a dif-
 ferent	notesfile).  The forwarded text	can be entered as either a
 new  note  or	as  a response to an existing note.  In	the latter
 case, an index	page is	given to the user so that  he  may  choose
 the appropriate note to which he wishes to respond.

 2.6.6	 _S_a_v_i_n_g	_T_e_x_t _i_n	_L_o_c_a_l _F_i_l_e_s.

	 The "s" ("save") command appends  the	current	 displayed
 text  to a file of your choice	(which is created if not present).
 Notesfiles prompts for	the file  name;	 typing	 only  a  carriage
 return	 aborts	 the  command  --  no  text is saved.  Capital "S"
 appends the base note and all its responses.

 2.6.7	 _P_i_p_i_n_g	_T_e_x_t _t_h_r_o_u_g_h _C_o_m_m_a_n_d_s.

	 The "|" command pipes the current text	through	a command.
 The  "^"  command  pipes  the	base note and all of its responses
 through a command.   The  "%"	command	 pipes	the  current  text
 through a decrypter (rotation 13).

 2.6.8	 _D_e_l_e_t_i_o_n.

	 Capital "D" ("delete")	deletes	a note or response  if	it
 is  yours and has no subsequent responses.  Notes already sent	to
 the network can not be	deleted	by non-directors.   Directors  can
 delete	any note or response with the "Z" ("zap") command.



 Notesfile Reference Manual				    Page 9

 2.6.9	 _O_n_l_i_n_e	_C_o_m_m_u_n_i_c_a_t_i_o_n.

	 Typing	"t" ("talk") attempts to page the  author  of  the
 current  displayed  text.  The	Unix "write" command to	him/her	is
 issued	if the author is local and non-anonymous.

	 If the	environment variable WRITE is defined, the program
 it specifies is used to write to the author.

 2.6.10	  _E_d_i_t_i_n_g _N_o_t_e _T_i_t_l_e_s.

	 While reading a base note, type "e"  ("edit")	to  change
 the  note's  title  (provided you are the author of the note or a
 notesfile director).

 2.6.11	  _E_d_i_t_i_n_g _N_o_t_e_s/_R_e_s_p_o_n_s_e_s.

	 "E" allows editing of the text	of a note or response.	It
 is  impossible	 to edit an article if it has subsequent responses
 or if it has been sent	to the network.	 If the	"later	responses"
 are deleted, it is possible to	edit the original text.


 2.7   _O_t_h_e_r _C_o_m_m_a_n_d_s.

 2.7.1	 _R_e_t_u_r_n_i_n_g _t_o _t_h_e _I_n_d_e_x	_P_a_g_e.

	 Type "i" ("index") while reading notes	 or  responses	to
 return	to the index page.

 2.7.2	 _S_e_a_r_c_h_i_n_g _T_i_t_l_e_s _f_o_r _K_e_y_w_o_r_d_s.

	 Notesfiles can	search backwards for keywords appearing	in
 note  titles.	 Typing	"x" ("x	is the unknown title") prompts for
 the substring to be found.  Searching begins at the current  note
 (or  from  the	 last  note  shown on the index	page) and proceeds
 towards note 1.  Upper/lower case information is ignored  in  the
 search.   Use	upper case "X" to continue the search.	The search
 can be	aborted	by hitting the RUBOUT (or DELETE) key.

 2.7.3	 _S_e_a_r_c_h_i_n_g _f_o_r _A_u_t_h_o_r_s.

	 The "a" command searches backwards for	notes or responses
 written by a specific author.	Notesfiles prompts for the authors
 name. The "A"	command	 continues  the	 search	  backwards.   The
 author	name may be preceded by	an optional `system!'.	If no sys-
 tem is	specified, local authorship is assumed.	 Abort the  search
 by hitting the	RUBOUT (or DELETE) key.

 2.7.4	 _S_t_a_c_k_i_n_g _N_o_t_e_s_f_i_l_e_s.

	 Sometimes it is useful	to be able to  glance  at  another
 notesfile  while  reading  notes.   Using  "n", the user can save
 (stack) his current place and peruse another notesfile.

	 When on the index page	or while reading  notes/responses,
 type  "n" ("nest") to read another notesfile.	Notesfiles prompts
 for the notesfile to read.  If	the notesfile exists, the place	is
 marked	in the old notesfile and the new one's index is	displayed.

	 Type any of the standard keys to leave	the nested  notes-
 file.	 Both "q" and "Q" leave	the nested notesfile and return	to
 the previously	stacked	notesfile.  Control-d ("signoff") and  "z"
 causes	 the  notesfile	program	to exit	regardless of the depth	of
 Notesfile Reference Manual				   Page	10

 nesting.

	 Sequencing is turned off in the new notesfile	regardless
 of  its  state	 in  the old notesfile.	 The depth of the stack	of
 notesfiles is limited only by the amount of memory  available	to
 the user.

 2.7.5	 _P_o_l_i_c_y	_N_o_t_e.

	 A notesfile director can write	an optional policy note	to
 describe  the	purpose	 of  a notesfile.  Read	the policy note	by
 typing	"p" ("policy") from the	index page.


 2.8   _T_h_e _S_e_q_u_e_n_c_e_r.

	 Most users prefer to scan notesfiles and see  only  those
 notes	 written   since   their   last	 reading.   The	 notesfile
 "sequencer" provides this capability.	It is activated	by the	"-
 s"  option ("sequencer") on the command line.	When the sequencer
 is activated, the notesfile system  automatically  remembers  the
 last  time  the  user	read  notes in each notesfile.	Subsequent
 entries to the	notesfile can use the "last time"  information	to
 show  only new	notes and responses.  If there is nothing new in a
 notesfile, the	sequencer proceeds to the next notesfile specified
 in the	command	line.

	 The normal sequencer does not give the	user a	chance	to
 read  the notesfile if	there are no new notes or responses; some-
 times it is desirable to be able to do	so.  Use the  "-x"  option
 to  enable  the  sequencer and	enter the  notesfile even if there
 are no	new notes.

	 No keys need be pressed if there are no new notes in  the
 entire	 list  and  the	 normal	("-s") sequencer mode is selected.
 With the extended ("-x") sequencer, the user must type	"q",  "Q",
 or  control-d	for each notesfile regardless of whether there are
 new notes.

	 The "-i" mode of sequencing is	similar	to the "-s"  mode.
 Using	the  "-i"  mode, notesfiles with no new	entries	are passed
 over.	The user is placed on the index	page of	 notesfiles  which
 contain new notesfiles.

 2.8.1	 _S_e_e_i_n_g	_N_e_w _N_o_t_e_s _a_n_d _R_e_s_p_o_n_s_e_s.

	 The sequencer always shows the	base note  of  a  modified
 note string, whether or not is	has been shown before, in order	to
 establish the context of the new response(s).	 The  "j"  command
 skips to the next modified text (note or response).

	 If the	rest of	a particular note string seems uninterest-
 ing,  skip  to	 the  next modified note string	with the "J" ("big
 Jump")	command.  This skips any new responses on the current note
 string.  It is	common to follow in detail only	a few note strings
 and skip others with the "J" command.

	 To modify the "last entry" time (used for searches),  use
 the "o" ("oldest notes	to read") command.  This command  modifies
 the "last entry" time for the current notesfile.  The	"o",  "j",
 and  "J" commands function whether the	sequencer is on	or off but
 never change the sequencer's memory of	the last entry time.  When
 the  sequencer	is off,	the "last entry" time is set to	January	1,
 1970.
 Notesfile Reference Manual				   Page	11

	 When no more new notes	or responses exist, both  the  "j"
 and  "J"  commands will take the user to the index page.  To exit
 the notesfile,	use the	"q" command.  Exiting with "q" will update
 the  user's "last entry" time.	 Exiting with capital "Q" will NOT
 modify	the "last entry" time (neither will control-D).

 2.8.2	 _A_u_t_o_m_a_t_i_c _S_e_q_u_e_n_c_i_n_g.

	 An alternate entry to the notes program allows	 the  user
 to  invoke  notes with	the sequencer enabled and a list of notes-
 files to be scanned with a single, simple command.  The "autoseq"
 command is invoked by typing

	 autoseq

	 The automatic sequencer uses the "-s" mode of sequencing,
 the  user  does  not enter notesfiles which have no new text.	By
 specifying "-x" or "-i" on the	command	line, the user can use the
 appropriate sequencer mode.


 2.9   _E_n_v_i_r_o_n_m_e_n_t _V_a_r_i_a_b_l_e_s.

	 The notesfile program reads several environment variables
 to  tailor the	system to the user's preferences.  Below is a list
 of the	variables, their purpose, and their default values.

       o+ "NFED"	specifies which	editor will be	invoked	 when  the
	   user	writes a note or response. If this variable is not
	   specified, the notesfile system looks for the  environ-
	   ment	variable "EDITOR" (which many other programs use).
	   If neither "NFED" nor "EDITOR" are defined,	a  default
	   editor is used (/bin/ed).
       o+ "PAGER" is the	paging program	("more",  "pg")	 which	is
	   used	 for scrolling the help	files.	The default paging
	   program is /usr/ucb/more.
       o+ "MAILER" determines the mail program  to  use.	 If  unde-
	   fined, this defaults	to /usr/ucb/mail.
       o+ "WRITE" is used to specify the	program	for  communication
	   between  users.  If undefined, the Unix program "write"
	   is used.
       o+ "TERM"	determines the type of terminal	in use.	This  must
	   be set for notes to know what screen	addressing conven-
	   tions to use. In most cases the value will be correctly
	   initialized by the system at	login time.
       o+ "SHELL" specifies which shell the user	is running.   This
	   will	almost always be set by	the operating system.


 3   _M_a_n_a_g_i_n_g _N_o_t_e_s_f_i_l_e_s.


	 The notesfile system is installed by a	user who is  known
 as  the  "owner"  of  the notesfiles (UIUCDCS uses user "notes").
 This user can create, delete, rename, and initiate networking	of
 notesfiles.  Each notesfile is	assigned a set of "directors" (who
 may or	may not	be associated  with  owner  of	notesfiles).   The
 directors have	special	privileges for managing	the notesfile (see
 below).  The "owner" rarely manages the day to	day aspects  of	 a
 notesfile,  although  he  has	director, read,	write and response
 privileges  to	 all  notesfiles  for  handling	 emergencies   and
 failures.


 Notesfile Reference Manual				   Page	12

 3.1   _D_i_r_e_c_t_o_r	_O_p_t_i_o_n_s.

	 The director can:

       o+ Change	the access permissions.
       o+ Write the policy note.
       o+ Change	the notesfile title and	director message.
       o+ Open or close the notesfile.
       o+ Allow the notesfile to	be networked.
       o+ Permit	or restrict anonymous notes.
       o+ Compress the notesfile.
       o+ Delete	notes and responses.
       o+ Toggle	director message on any	note or	response.

	 The director can delete notes or toggle the director mes-
 sage above them while reading the notes.  Access other	options	by
 typing	"d" on the index page.	A display like this results:

		       Workstation Discussion
		 *** Your Director Message Here	***
 Anonymous: ON		  Notefile: OPEN		 Networked: YES






			     Option:

		 = = = = = = = = = = = = = = = = = =


	 Options available on this page	 include:   access  lists,
 policy	note writing, title & director messages, open/close notes-
 file, network enabling, anonymous notes, notesfile compress,  and
 delete	a list of notes.

 3.1.1	 _A_c_c_e_s_s	_L_i_s_t_s.

	 The notesfile system allows directors to  allow  or  res-
 trict	access	to  each  notesfile.  The access list can allow	or
 deny read, write, respond, and	 director  options  to	any  user,
 group,	 or  system.   Type  "p"  ("permissions")  on the director
 options page to enter the access list editor.	The system prompts
 for  an  option:  "m" to modify an extant entry, "d" to delete	an
 entry,	"i" to insert a	new entry, "r" to replot the list, "q"	to
 quit editing the access list, and capital "Q" to quit editing the
 access	list and  IGNORE  ANY  CHANGES	MADE.	Delete	or  modify
 entries  by  entry number.  Scroll the	entries	using "+" and "-".
 [As distributed, the list is configured  for  a  single  page	of
 entries]  After  typing  "i"  to  insert  a new entry,	the system
 prompts for a user type ("u" for user,	"g"  for  group,  "s"  for
 system).   The	 system	 then  prompts	for  the name of the user,
 group,	or system.  (Users and groups must  be	valid  names)  The
 default  access  options  are then displayed: read, write, answer
 (for responses).  Use the keys	"r", "w", "a", and "d"	to  toggle
 the  read,  write,  answer, and director privileges respectively.
 Some options automatically enable others (e.g., "w"  for  writing
 automatically	enables	"a" for	answering).  It	is not possible	to
 remove	answer access while write access is enabled.  The "n"  key
 will  remove  all privileges ("no access").  Type return (or "q")
 when the correct options have been entered.  The  system  prompts
 for  another  user.  Press return at the prompt to exercise other
 access	list options.
 Notesfile Reference Manual				   Page	13

	 The access machinery checks user  names  before  checking
 group	names.	 If  user  "john" explicitly has no access but his
 group does, he	will nevertheless be denied access  to	the  file.
 The current implementation of system access enforcement is naive.
 The network software will send	to a system only if  it	 has  read
 permission.   Reception  allows  intermediaries  to pass on notes
 even if they are not allowed write access to the  notesfile;  the
 access	 permission  is	 determined from the originating system	of
 each note or response.	 The name "Other"  (capital  "O")  matches
 any  name  in	the  class not mentioned explicitly (n.b.:  if you
 include a user	named "Other", that user's  access  will  override
 all group access checks since it is checked first).

	 Many notesfiles allow several users and  groups  to  have
 read/write access, a single user to have director access, and all
 other users no	access.

 3.1.2	 _P_o_l_i_c_y	_N_o_t_e.

	 Type "w" ("write policy") on the director option page	to
 write a policy	note (just like	writing	any other note though lim-
 ited to a single page).

 3.1.3	 _T_i_t_l_e & _D_i_r_e_c_t_o_r _M_e_s_s_a_g_e_s.

	 Change	the notesfile title with "t", the director message
 with  "m".   The system prompts for a new message.  Typing only a
 carriage return will not change the old message.

 3.1.4	 _O_p_e_n/_C_l_o_s_e.

	 Type "o" ("open")  to	toggle	the  availability  of  the
 notesfile  (subject  to  the access list).  Closed notesfiles are
 unavailable to	non-directors.

 3.1.5	 _N_e_t_w_o_r_k _O_p_t_i_o_n_s.

	 Type "n" ("network") to toggle	the  availability  of  the
 notesfile  for	 networking.   Arrangements  must be made with the
 notesfile system "owner" to do	the network transfers.

 3.1.6	 _A_n_o_n_y_m_o_u_s _N_o_t_e_s.

	 Type "a" ("anonymous")	 to  toggle  the  availability	of
 anonymous  notes  in  the  notesfile.	 The  availability  of the
 anonymous option may provoke slanderous attacks from users (whose
 anonymity is completely protected).

 3.1.7	 _C_o_m_p_r_e_s_s_i_o_n.

	 Type "c" ("compress")	to  compress  the  notesfile.	As
 notes	are  deleted, their text and index space is not	reclaimed.
 This command reclaims the space.  The notesfile must  be  closed.
 On  a	VAX  11/780, 20	seconds	of real	time (on a slightly loaded
 system) is required to	reclaim	the space of a notesfile  with	50
 remaining  notes  (compression	 time  is  dependent  on remaining
 notes).  Notesfiles should be compressed whenever many	 of  their
 notes	have been deleted.  The	notesfile archiver and cron(8) can
 be used to automate this process.





 Notesfile Reference Manual				   Page	14

 3.1.8	 _M_a_s_s_i_v_e _D_e_l_e_t_i_o_n_s.

	 Type  "z"  ("zap")  to	 delete	 many  notes  (and   their
 responses)  quickly.  Enter a list of note numbers or note ranges
 (aa-bb) separated by spaces.  Confirm with "y".  It is	economical
 and  prudent  to compress the notesfile shortly thereafter.  Note
 that deleting notes in	a networked notesfile  makes  those  notes
 unavailable  to  those	 who  poll  your  system for new notes and
 responses.

 3.1.9	 _D_i_r_e_c_t_o_r _O_p_t_i_o_n_s _f_o_r _N_o_t_e_s.

	 Directors may put a "director	message"  above	 any  note
 they  write.	There is one single line director message for each
 notesfile.  Typical director messages	are:  "New  Policy",  "***
 This problem fixed or ignored ***", or	"-- Eat	Flaming	Death Fas-
 cist Pigs --".	 Directors can also toggle the director	message	on
 a  note  being	read ("d" for "director	message").  A director can
 delete	a note (and all	its responses) or any response while read-
 ing  the  text	 of  the note or response by typing "Z"	("zap this
 one") and confirming with "y".


 3.2   _C_r_e_a_t_i_o_n	& _D_e_l_e_t_i_o_n _o_f _N_o_t_e_s_f_i_l_e_s.

	 Only the "owner"  of  the  notesfile  system  can  create
 notesfiles.  Create notesfiles	with the mknf command:

	 mknf [	-aon ] topic1 [	... ]

	 The created notesfiles	have  default  status  of  closed,
 non-networked,	 and  no anonymous notes permitted.  Specify -a	to
 permit	anonymous notes	in the new notesfiles.	Use -o to have the
 notesfiles  marked  open  for	general	 use  and the -n option	to
 enable	the notesfiles'	network	availability.  These status  flags
 can all be modified from the directors	page at	later times.

	 Delete	notesfiles with	rmnf:

	 rmnf [-f] topic1 [ ...	]

 Each notesfile	to be removed must be verified with  "y"  after	 a
 prompt	-- anything else will leave that notesfile intact.  The	-f
 option	forces the removal, similar to 'rm -f'.

	 The file /usr/spool/notes/.utilities/avail.notes contains
 a  list  of  the  public  notesfiles.	The notesfile owner should
 update	this file when he creates new notesfiles.  The contents	of
 the file are up to the	discretion of the notesfile system owner.


 3.3   _I_n_t_e_r_s_y_s_t_e_m _N_o_t_e_s_f_i_l_e_s.

	 The notesfile system provides for intersystem	notesfiles
 in  an	arbitrary connected network.  Copies of	a shared notesfile
 must exist on each of the systems wishing to read notes for  that
 notesfile.  The contents are kept in synchrony	through	occasional
 exchanges over	a network (UIUCDCS uses	uucp).	Notesfiles  to	be
 shared	 must  have  their  "network status" enabled (see director
 options).


	 Duplication of	notes and responses is	prevented  by  the
 use of	unique identifiers.  Each note and response in a notesfile
 Notesfile Reference Manual				   Page	15

 is assigned a unique number.  The networking software checks each
 note as it arrives to see if a	copy already exists.  In the event
 of duplication, the extra copy	 is  discarded	and  the  fact	is
 logged	in the statistics and the network log.

	 In the	(hopefully) rare event that a response arrives	at
 a system before the base note does, the network reception program
 will generate a "foster parent" for the orphaned response.   When
 the  true  parent arrives, the	foster parent will be overwritten.
 A count of orphaned responses	received  is  kept  and	 available
 through use of	the nfstats program (see section 4.4).

 3.3.1	 _T_r_a_n_s_m_i_t_t_i_n_g _N_o_t_e_s_f_i_l_e	_U_p_d_a_t_e_s.

	 The nfxmit program gathers the	new notes and responses	in
 specified  notesfiles	and  sends  them to a specified	site.  The
 notesfile "owner" must	occasionally enter the	following  command
 (or  have it entered for him by cron) to update remote	notesfiles
 with new notes	and receive new	remote notes:

	 nfxmit	-dsitename [-tmmddyy] [-r] [-a]	[-f  file]  topic1
 [...]

 The "sitename"	is the name of the remote site to receive the  new
 notes.	  The  remote  site  should have notesfiles matching those
 specified by the topic1 parameter.  For  remote  notesfiles  with
 different names, see the section below	on Name	Mapping.

	 The optional -t specifies that	all  notes  and	 responses
 since	that  date  should be sent (normally -t	is omitted and the
 notesfile system sends	only new notes and responses).

	 The -r	option specifies  that	the  remote  notes  system
 should	 not  only  receive  the current changes but also reply	in
 kind.	This is	useful if the remote system does not automatically
 run the nfxmit	program.

	 The -a	option specifies that articles inserted	 from  the
 news(I)  system  are to be sent also. Normally	these articles are
 not sent because the receiver probably	has them; the primary  use
 of this switch	is for sites that do not run news(I).

	 Using the -f switch tells nfxmit to read the file  speci-
 fied for a list of notesfiles to transmit; multiple -f	parameters
 are permitted and can be freely intermixed with  `topic'  parame-
 ters.	 Notesfile  name  pattern  matching  is	 performed on both
 `topic' parameters and	the entries in a file specified	by the	-f
 option.

 3.3.2	 _N_e_t_w_o_r_k _T_r_a_n_s_a_c_t_i_o_n _L_o_g.

	 The network software maintains	a log of all transactions,
 including  time, date,	number of notes	and responses transferred,
 direction  of	transfer,  and	number	of  notes  replicated	by
 transfer.   This  log	is  placed  in a file called `net.log' and
 resides  in  the  notesfile  utility	directory   (by	  default:
 /usr/spool/notes/.utilities).







 Notesfile Reference Manual				   Page	16

 3.3.3	 _N_o_n-_S_t_a_n_d_a_r_d _L_i_n_k_s.

	 Some systems will be unable to	keep the notesfile network
 software  in  a public	directory (such	as /usr/bin).  Other sites
 will have non-uucp links.  The	`net.how' file is for these cases.
 `Net.how'   is	  kept	 in   the   notesfile	utility	 directory
 (/usr/spool/notes/.utilities) and contains information	on linking
 to remote systems.  Entries in	the file are made for systems with
 non-standard links and	have the following format:

	 system:direction:::command string

	 The system field  is  self  explanatory.   The	 direction
 field contains	either an `x' or `r' (no quotes) and specifies the
 direction that	the line is for. An `x'	specifies that the command
 string	 is for	sending	notes to the remote site; an `r' specifies
 that the command string is used in coercing the remote	system	to
 send its new notes and	responses back.

	 The command string is a printf	 control  string  (without
 quotes)  with	two `%s' entries.  The first is	for filling in the
 name of the notesfile,	the second is for the local  system  name.
 Many  entries	in  the	 `net.how' file	will be	to place different
 paths on the `nfrcv' and `nfxmit' commands.  The default  command
 line is:

	 uux -z	- system\!nfrcv	%s %s

 for the `x' entry and for the `r' entry:

	 uux system\!nfxmit %s -d%s

 A sample from the uiucdcs net.how file:

	 uicsovax:x:::uux - uicsovax!/mnt/dcs/essick/.commands/nfrcv %s	%s
	 uicsovax:r:::uux uicsovax!/mnt/dcs/essick/.commands/nfxmit %s -d%s

 A sample  from	 the  ucbcad  net.how  file  (4.1c  BSD,  ethernet
 transmission):

 ucbmonet:x:::rsh ucbmonet -l ricks /usr/local/lib/notes/nfrcv %s %s
 ucbmonet:r:::rsh ucbmonet -l ricks /usr/local/lib/notes/nfxmit	%s -d%s

 3.3.4	 _N_o_t_e_s_f_i_l_e _N_a_m_e	_M_a_p_p_i_n_g.

	 To provide flexibility	in the naming of notesfile  across
 systems,   the	  network   software   looks   in   the	 directory
 /usr/spool/notes/.utilities/net.aliases  for  mappings	 of  local
 notesfile  names  to  remote  notesfile  names.  Each file in the
 directory is named after a system  (e.g.,  pur-ee  or	uicsovax).
 Each  of  these files contains	lines which specify the	mapping	of
 local notesfiles to the particular systems notesfiles.	 Lines	in
 the files look	like:

	 local_nf:remote_nf

	 If there is no	entry for a particular	notesfile  or  the
 file for that system is missing, the local name is used.






 Notesfile Reference Manual				   Page	17

 3.4   _I_n_i_t_i_a_l _I_n_s_t_a_l_l_a_t_i_o_n & _P_a_r_a_m_e_t_e_r_s.

	 Installation of the notesfile system requires the follow-
 ing:

       o+ A working familiarity with version 7 UNIX (and	 UUCP  for
	   intersystem transfers).
       o+ The notesfile distribution tape.
       o+ A signon for the  notesfile  owner.   This  should  be	 a
	   member of the same group as the uucp	signons.
       o+ The ability to	 write	into  the  directories	where  the
	   notesfile binaries and data base are	to live.

	 Appendix A  ("Notesfile  Installation	Checklist")  is	 a
 helpful guide for installing the notesfile system.

	 First:	read in	the distribution tape.	The tape is a  TAR
 format	tape. This will	read in	several	directories worth of data.
 The src directory contains all	source code for	the notesfile sys-
 tem  and the internal help files.  The	doc directory contains the
 nroff sources for the user manual and the macros that	were  used
 to  generate  it, along with the man pages.  The Sample directory
 is a collection of various system files from  our  machine;  they
 are included to provide examples in setting the matching files	on
 your system.

	 After the tape	has been read in, select  the  appropriate
 parameters.

 3.4.1	 _S_e_l_e_c_t_i_n_g _A_p_p_r_o_p_r_i_a_t_e _C_o_n_s_t_a_n_t_s.

	 Go to the src directory and edit the file `parms.h'.  The
 parameters should be modified as follows:

       o+ "Sysname" should be the local system name.  For  compati-
	   bility  with	the rest of the	world, this should be 9	or
	   fewer characters. (e.g., uiucdcs)
       o+ "MSTDIR" should be the	 directory  where  the	notesfiles
	   will	be kept.  We use /usr/spool/notes.
       o+ "ARCHDIR" is where the	archived notes are sent.   Placing
	   ARCHDIR  and	 MSTDIR	 on  the  same	file system is not
	   recommended unless you have lots of disk space.
       o+ "NOTESRC" is the default ".notesrc" file name.
       o+ "ARCHTIME" is the default number of days that a  note	is
	   allowed  to	go  unmodified	before	it is eligible for
	   archival.  Nfarchive	allows this to	be  overridden	on
	   its command line.
       o+ "NOTESUID" is the uid of the notesfile	 "owner".  On  our
	   system  we  have  a	user "notes" which owns	the notes-
	   files.
       o+ "ANONUID" is the uid used for anonymous notes.	 This  uid
	   is not allowed to run notesfiles.  We made a	dummy user
	   in our password file	whose uid  we  set  this  constant
	   equal  to.  If you are on a PDP-11 and have no free uid
	   slots, pick your worst enemy.
       o+ "DFLTSH" is the default shell for forking.  /bin/sh  will
	   usually  suffice.   The environment variable	SHELL will
	   override this for any user.
       o+ "DFLTED" is the editor	that notesfiles	uses  for  writing
	   notes. Each user can	specify	his preference by the NFED
	   or EDITOR environment variables.
       o+ "AUTOSEQ" is the pseudonym (a la the Unix  program  `ln')
	   of the notes	program	used for automatic sequencing.	We
	   use "autoseq".
 Notesfile Reference Manual				   Page	18

       o+ "MAILER" defines the mail  program  used  by  notesfiles.
	   Because the notesfile system	does not maintain the full
	   pathname to remote authors, it is recommended that  the
	   'uumail'  program which is included in the distribution
	   be used.
       o+ "OLDGROUP" is the number of days to wait before  expiring
	   a group.
       o+ "AUTOCREATE" should be	defined	if you wish  notes  groups
	   to be created automatically by newsinput.
       o+ "NEWS"	should be defined if your machine runs news.
       o+ "DEMANDNEWS" should be	defined	if you	wish  "newsoutput"
	   to be forked	immediately on a submission.

	 If you	are running on a PDP-11	or other  machine  with	 8
 bit  user  ids,  then	the  following line should be added to the
 `parms.h' file:

 #define PDP11	 1				 /* running on PDP-11 */

	 If you	wish the notesfile system to  use  a  prompt,  you
 should	 define	 the  string PROMPT as follows (use any	string you
 prefer):

 #define PROMPT	 "? "				 /* command prompt */

	 There are several other definitions that might	need to	be
 changed.  See appendix	A ("Notesfile Installation Checklist") for
 a list	of these.

	 Once these changes have been made, the	next  step  is	to
 update	the Makefile. The values which should be checked are:

       o+ "DESTDIR" is where the	 programs notes, nfprint, nfstats,
	   and nfpipe are installed. We	use /usr/local.
       o+ "MSTDIR" must match the value given in	`parms.h'.
       o+ "ARCHDIR" must	also match the value given in `parms.h'.
       o+ "NET" is the extant directory where  the  notesfile  net-
	   working software is kept.  This must	be somewhere along
	   the	 default   search   rule   for	 uucp.	  We   use
	   /usr/local/lib/notes.
       o+ "AUTOSEQ" is the name of the link to  the  notes  program
	   used	 for  automatic	 sequencing.   This must match the
	   value given in `parms.h'.
       o+ "NOTES" is the	user name of the notesfile system "owner".
	   This	 should	 match	the NOTESUID in	`parms.h'.  (e.g.,
	   NOTESUID=144, NOTES=notes)
       o+ "NOTESGRP" is the group of the	notesfile  "owner".   This
	   should be the same group as the uucp	signon.

 3.4.2	 _C_o_m_p_i_l_i_n_g _t_h_e _N_o_t_e_s_f_i_l_e _S_y_s_t_e_m.

	 After all the appropriate parameters are set up, the next
 step  is  to  generate	the notesfile system. First, the requisite
 directories and files	in  /usr/local	(or  wherever)	should	be
 manufactured.	This procedure should be run exactly once and will
 probably have to be run by the	superuser.  To	make  these  files
 type:

	 make base

	 The next phase	should be  run	while  signed  in  as  the
 notesfile "owner".  Type:

	 make boot
 Notesfile Reference Manual				   Page	19

	 If all	goes well, this	should end with	a message  to  the
 effect	that the notesfile system has been installed (Less than	10
 minutes on a VAX-11/780, less than 50 minutes on an  11/60).	If
 anything  goes	 wrong,	 perusal  of  the terminal dialogue should
 point out the offending steps.	 The most likely cause	of  errors
 will be a missing directory.

	 To replace the	notesfile software any	time  after  these
 two steps have	been run, type:

	 make install

	 If at some time you are must change some of the  internal
 constants  of	the  notesfile package (such as	string lengths and
 blocking factors), all	the existing  notesfiles  on  your  system
 will be incompatible with the new instantiation of the	program.

 3.4.3	 _U_s_e_r _S_u_b_r_o_u_t_i_n_e_s.

	 The  user  subroutine	"nfcomment"  (which  is	 described
 later)	 is  found in the file src/nfcomment.c.	 For users to take
 advantage of this routine, it should be compiled  and	placed	in
 /usr/lib (or the appropriate place on your system).

	 To generate the user subroutine, type:

	 make subs

	 The resulting file (libnfcom.a) should	then be	 moved	to
 the  appropriate library (usually /usr/lib).  Users can then load
 this routine by specifying `-lnfcom' on the `cc' or `ld'  command
 lines.


 3.5   _I_n_s_t_a_l_l_i_n_g _t_h_e _m_a_n(_1) _D_o_c_u_m_e_n_t_a_t_i_o_n.

	 Install the man(1) pages for the notesfile with the  fol-
 lowing	commands. They are best	done as	su.

	 cd Page
	 make install

 The nroff sources for the documentation will be installed in  the
 directory /usr/man in subdirectories man1, man3, and man8.


 3.6   _I_n_t_e_r_f_a_c_i_n_g _t_o _N_e_w_s(_I).

	 The notesfile system interfaces to the	 news(I)  program.
 The  newsinput	 program  parses  the  A news protocol and inserts
 articles in the appropriate notesfiles.  The  bnewsinput  program
 parses	 the  B	news protocol.	The newsoutput program moves notes
 from the notesfile system to the news	system.	  Neither  program
 will  move  text  between the two systems if the notesfile is not
 enabled for networking	(see section 3.1.5).  Newsoutput will  not
 retransmit  articles inserted by newsinput.  Sites sharing notes-
 files can all run newsinput; only one of  the	sites  should  run
 newsoutput for	any given notesfile.

	 Before	interfacing to news, check the	file  `newsgate.h'
 to  guarantee	that  the  correct calling sequence to insert news
 articles is used.


 Notesfile Reference Manual				   Page	20

 3.6.1	 _C_o_p_y_i_n_g _N_e_w_s _t_o _N_o_t_e_s_f_i_l_e_s.

	 To  have  news	 automatically	forward	 the  articles	it
 receives  to  the  newsinput  program,	 an  entry similar to this
 should	be made	to the /usr/spool/news/.sys file:

	 nf_system:newsgroup_list::/usr/spool/notes/.utilities/newsinput

	 Where	"newsgroup_list" is a news(I) subscription list	of
 the newsgroups	which have parallel notesfiles.	 The  above  entry
 assumes  that	you  are  running  A news; B news users	should run
 bnewsinput.

 3.6.2	 _C_o_p_y_i_n_g _N_o_t_e_s_f_i_l_e_s _t_o _N_e_w_s.

	 The newsoutput	program	accepts	a list	of  notesfiles	as
 parameters  and  scans	 them  looking	for new	notes/responses	to
 place into the	news(I)	system.	Newsoutput  accepts  two  optional
 parameters in addition	to the list of notesfiles to send to news.

	 newsoutput [ -a ] [ -f	file ] topic [ ... ]

	 The -a	parameter specifies that notes and responses  from
 any  system are to be sent to news. The default is for	local text
 only.

	 The -f	parameter specifies a file containing  a  list	of
 notesfiles  to	 send to the news system.  The preferred method	of
 running newsoutput is with cron.  Only	the "notesfile	owner"	is
 permitted  to run newsoutput, so the cron entry should	have an	su
 to the	correct	uid.

	 Since most notesfile users will form small subnets of the
 larger	 news  network,	some care must be taken	as to who uses the
 -a option of newsoutput.  One solution	is to have a  single  site
 running  news	and  then sharing notesfiles with the other sites.
 If more than one site runs news, things are trickier.	If all the
 sites	run  news,  then  they	can  each  run	both newsinput and
 newsoutput without the	-a option.

	 In any	case, if a notesfile generated article	finds  its
 way  to  news	through	 two different sites, a	duplication in the
 news system will occur	which will not cancel itself when the  two
 meet on the same system.  Newer versions of news (release 2.7 and
 later)	should be flexible enough to eliminate this  problem  once
 the news/notes	gateways are modified accordingly.

 3.6.3	 _N_a_m_i_n_g	_N_o_t_e_s_f_i_l_e_s _a_n_d _N_e_w_s_g_r_o_u_p_s.

	 Newsgroup names may be	longer than the	 fourteen  charac-
 ters  allowed for file	names by UNIX, although	the first fourteen
 characters must be unique.  Notesfile names are limited to  four-
 teen  characters.   An	 aliasing  facility is included	to convert
 between     notesfiles	    and	    newsgroups.	     The      file
 `/usr/spool/notes/.utilities/newsgroups'  contains  the relation-
 ships of notesfiles and newsgroups. If	the file does not exist	or
 there is no entry for the desired notesfile/newsgroup the routine
 which scans that file returns the original argument as	if it  had
 matched itself.  A typical line in the	file looks like:

	 notesfile_name:newsgroup

	 Entries in this file need be made for only a few reasons:
 (1)  The  newsgroup  which  matches  the notesfile is longer than
 Notesfile Reference Manual				   Page	21

 fourteen characters, (2) the notesfile	and the	newsgroup are dif-
 ferent	 names	(e.g.  the  notesfile `Bnews' can be linked to the
 newsgroup `net.news.b'	with an	entry of `Bnews:net.news.b'),  and
 (3)  you  want	 several  newsgroups linked to a single	notesfile.
 You can not link a single newsgroup to	several	 notesfiles.   The
 file  is  scanned  from  the start until EOF or a match is found.
 Several newsgroups can	spool into the same notesfile:

	 somenotesfile:newsgroup1
	 somenotesfile:newsgroup2

	 If you	want newsoutput	to  send  the  notesfile-generated
 notes	in  `somenotesfile' to both `newsgroup1' and `newsgroup2',
 add the following entry BEFORE	the above two entries:

	 somenotesfile:newsgroup1,newsgroup2


 3.6.4	 _S_p_a_c_e _U_t_i_l_i_z_a_t_i_o_n.

	 Since the notes system	stores the entire text of a single
 notesfile  in	a  single file,	a notesfile system uses	less space
 than the same scale news system.  The notesfile  system  is  gen-
 erally	more space efficient than B news.


 3.7   _H_o_u_s_e_k_e_e_p_i_n_g.

	 When a	note or	response is deleted, a	hole  is  left	in
 that notesfile.  This makes for quick deletion	but tends to leave
 disk space wasted.  The compress option on the	director  page	is
 on  way that this space is reclaimed.	The nfarchive program (see
 section 3.6.2)	also returns unused  space.   Have  cron  run  the
 nfarchive program weekly to automate space reclamation.

 3.7.1	 _A_u_t_o_m_a_t_i_c _R_e_m_o_v_a_l _o_f _N_o_t_e_s.

	 The nfarchive program archives	notes and groups untouched
 for  more  than  a specified number of	days.  The notes and their
 responses are archived	 in  `generic'	notesfile  format  in  the
 archive  directory  specified in `parms.h'.  Each notesfile has a
 subdirectory in the archive directory and each	time nfarchive	is
 run  it generates a unique file for each notesfile archived.  The
 notes are deleted  after  they	 have  been  archived.	After  the
 archival,  a compression of the notesfile is performed	to recover
 the space formerly occupied by	 the  archived	notes.	 Nfarchive
 assumes  that	all  months  have  30  days  and all years have	12
 months.  The format of	the nfarchive command line is:

	 nfarchive [-d]	[-m+ or	-m-] [-n] [-f file] topic

	 The -d	option specifies that  no  archiving  is  to  take
 place;	the notes eligible are to be deleted.

	 The -m	option specifies whether  to  check  the  director
 message  status  before  archiving  notes.   Use "-m+"	to archive
 notes which meet the age requirement and have the  director  mes-
 sage  on.  The	"-m-" option archives notes of sufficient age with
 the director message turned off.   If	this  option  is  omitted,
 notes are archived on the basis of age	only.

	 The -n	option specifies the age of  eligible  notes.  The
 increment  is	days.	The  default is	determined by the value	of
 ARCHTIME in `parms.h' and is distributed as fourteen  days.   The
 Notesfile Reference Manual				   Page	22

 value of OLDGROUP specifies the group expiration time.

	 The -f	option specifies  a  file  containing  a  list	of
 notesfiles  to	be archived.  Multiple -f parameters are permitted
 and can be intermixed with `topic'  parameters.   Notesfile  name
 pattern  matching is performed	on both	`topic'	parameters and the
 entries in a file specified by	the -f option.

 3.7.2	 _A_d_d_i_t_i_o_n_s _t_o _S_y_s_t_e_m _B_o_o_t.

	 Since the notesfile system maintains several  lock  files
 to  ensure  mutual exclusion of each notesfile, a line	similar	to
 the following should be added to the /etc/rc file.

	 rm -f /usr/spool/notes/.locks/*

	 Make sure `/usr/spool/notes' matches the MSTDIR parameter
 in the	Makefile and the `parms.h' file. This line will	remove any
 dangling locks	left if	the system has crashed.


 4   _O_t_h_e_r _N_o_t_e_s_f_i_l_e _U_t_i_l_i_t_i_e_s.


	 The notesfile distribution includes utility  programs	to
 provide hard copy output, additional interfaces to user programs,
 and statistics.  They are described below.


 4.1   _H_a_r_d _C_o_p_y _O_u_t_p_u_t.

	 The program "nfprint" sends to	standard output	 a  nicely
 formatted listing of the notesfile in its command line.  Its for-
 mat is:

	 nfprint [-lnn]	[-p] topic [ note# ] [ note#-note# ] [ ...
 ]

 The "-l" option specifies an alternate	page size (the default	is
 66).	The  optional note number list specifies that only certain
 notes of the notesfile	are to be printed.  The	list  can  specify
 individual  notes and ranges.	The notes are printed in the order
 specified.


 4.2   _P_i_p_e_d _I_n_s_e_r_t_i_o_n _o_f _N_o_t_e_s.

	 The nfpipe program enters text	from  the  standard  input
 into a	notesfile:

	 nfpipe	topic [-t title] [ -d ]	[ -a ]

 The -t	option allows specification of a title.	  The  -d  and	-a
 options specify the director and anonymous flags respectively (if
 available).  If no title is specified,	one is	manufactured  from
 the first line	of the note.


 4.3   _U_s_e_r _S_u_b_r_o_u_t_i_n_e_s.

	 The nfcomment subroutine is callable from a user's C pro-
 gram. It allows any user program to enter text	into a notesfile:

	 nfcomment (nfname, text, title, DIRFLAG, ANONFLAG)
 Notesfile Reference Manual				   Page	23

 The parameters	are:
	 char *nfname;	 /* name of notesfile */
	 char *text;	 /* null terminated text to be entered */
	 char *title;	 /* if non-null, title of note */
	 int DIRFLAG;	 /* != 0 -> director flag on (if allowed) */
	 int ANONFLAG;	 /* != 0 -> anonymous note (if allowed)	*/


	 If the	*text pointer is NULL, the text	of the	note  will
 be  read  from	standard input.	 If no title is	specified the sub-
 routine will manufacture a title from the first line of the note.
 This  routine	is  useful  for	error reports, user comments about
 programs, and automatic logging of statistics or internal states.

	 This routine can be loaded with a C program by	specifying
 `-lnfcom' on the `cc' command line.


 4.4   _S_t_a_t_i_s_t_i_c_s.

	 The notesfile system keeps statistics on where	notes  and
 responses originate, the number of network accesses, duplications
 and orphaned responses.  Combined with	the use	of the	log  main-
 tained	by the notesfile networking software, monitoring notesfile
 traffic is quite easy.

	 The -s	option specifies that only a summary is	to be pro-
 duced,	skipping the individual	reports.  Wildcard constructs with
 '*', '?', '[',	and ']'	are recognized	by  nfstats.   Invoke  the
 statistics program with:

		 nfstats [ -s ]	topic1 [ ... ]

 Typical output	is:

	      rbenotes on uiucdcs at  6:24 pm  May  7, 1982
			 NOTES	 RESPS	 TOTALS
 Local Reads		 359	 115	 474
 Local Written		 53	 55	 108
 Networked in		 0	 0	 0
 Networked out		 0	 0	 0
 Network Dropped	 0	 0	 0
 Network Transmissions:	0   Network Receptions:	0
 Orphaned Responses Received: 0	   Entries into	notefile: 109
 Total time in notefile:    66.57 minutes  Average Time/entry:	 0.61 minutes
 Created at 10:04 pm  May  5, 1982, Used on 3 days


	 A combined set	of statistics is produced at  the  end	of
 listings  of more than	one notesfile.	The statistics are largely
 self explanatory.


 4.5   _C_h_e_c_k_i_n_g	_f_o_r _n_e_w	_n_o_t_e_s.

	 The checknotes	program	checks if  there  are  new  notes.
 The  exit  code  is  arranged to make the program useful in shell
 scripts: 0 (TRUE) is there are	new notes, 1 (FALSE) otherwise.

	 Use the "-q" option to	receive	a message

		 There are new notes

 if one	or more	of the	notesfiles  have  notes/responses  written
 Notesfile Reference Manual				   Page	24

 since the user's last entry time into that notesfile.

	 The "-n" option is similar to the "-q"	option,	 with  the
 exception  that it yields output when there are no new	notes. The
 output	of checknotes with the "-n" option is:

		 There are no new notes

	 Use "-v" to print the name of	each  notesfile	 with  new
 notes/responses.  The	"-s"  option is	suited for use conditional
 expressions in	shell scripts; no  output  is  generated  by  this
 option.




















































 Notesfile Reference Manual				   Page	25

 5   _S_u_m_m_a_r_y.


 notes [-sxi] [-t type]	topic1 [...]	 ;   Next text
					 +   Next text
 Everywhere:				 ret Next note
					 7   Forward 7 responses
 ?   help				     15	= 8 + 7
 q,k quit				 i   Index page
 Q,K Quit w/out	save			 m   Mail to anyone
 |^D  Leave NOW w/out sequencer	 M   Mail w/text
 !   Fork Shell				 n   Nest notesfiles
 B   Register suggestion		 p   Personal note to author
 z   Leave NOW with sequencer		 P   To	author w/text
 u   Unsubscribe from a	group		 t   Talk to author
					 w   Write response
 Index Page:				 s   Save text
					 S   Save entire note string
 +   Forward				 |   Pipe text through a command
 *   Last page				 ^   Pipe entire note string through a command
 -   Backward				 %   Pipe text through a decrypter (rotation 13)
 =   First page				 C   Copy text to notesfile
 13  Read note 13			 e   Edit title
     (requires RETURN)			 E   Edit text
 o   Oldest date for sequencing		 D   Delete (if	yours)
 O   Set sequencer for today's notes	 d   Toggle director msg.
 x,X Search for	title			 =   Base note
 a,A Search for	author			 x,X Search backwards (title)
 w   Write a note			 a,A Search backwards (author)
 n   Nest notesfiles			 Z   Delete (directors only!)
 j,J Jump to first unread note
 p   Read policy note			 Director Options:
 r   Replot the	screen
 d   Director options			 o   Toggle open status
					 c   Compress notesfile
 Reading anything:			 w   Write policy
					 a   Toggle anonymous
 spc Next page of current text		 n   Toggle network avail.
 -   Previous page of text		 z   Zap lots of notes
 r   First page	of current text		 p   Access (permission) List:
 j   Next unread text			     i	 insert
 J   Next unread base note		     d	 delete
 l   Acts like spc in current note, acts     m	 modify

					     u	 user
					     g	 group
					     s	 system

					     r	 read access
					     a	 answer	access
					     d	 director options
					     w	 write access
					     n	 null access











							       A-1

			    APPENDIX A
		 Notesfile Installation	Checklist

 ____ vi parms.h
 ____ select Sysname [ucbcad, cmcl2]
 ____ MSTDIR [/usr/spool/notes]
 ____ ARCHDIR [/usr/spool/oldnotes]
 ____ ARCHTIME [14 - number of days before removing articles]
 ____ NOTESUID [user id	of the notes maintainer]
 ____ ANONUID [unused user id]
 ____ define PROMPT [if	you wish the  system  to  give	a  command
 prompt]
 ____ define CNTRLZ [if	your system supports control-Z job control
 processing]
 ____ define DUMPCORE [this determines whether core is dumped when
 an  internal  error is	detected. You might want this for testing,
 but not for production]
 ____ define the OS (4.1cBSD, V6,..... - defaults to 4bsd)
 ____ define AUTOCREATE	[if you	wish for  notes	 to  automatically
 create	new groups]
 ____ OLDGROUP [amount of time before groups expire]
 ____ NOTESUMASK [umask	for files created by notes]
 ____ define NEWS [if you wish to submit notes to news]
 ____ define DEMANDNEWS	[this forces articles to be  submitted	to
 news at the time of submission]
 ____ define BNEWS [if running B release of news for gateways.	If
 not  running  news  locally,  this does not matter.  If running A
 news, the notesfile owner will	collect	lots  of  mail	because	 A
 news does not allow overriding	of the authors name.]
 ____ define TONEWS [again, dependent on running notes/news  gate-
 ways  locally.	 The defaults here are probably	adequate in either
 case]
 ____ [finished	editing] parms.h
 ____ vi Makefile
 ____ DESTDIR [same as BIN in parms.h]
 ____ MSTDIR [make sure	it matches that	used in	parms.h]
 ____ ARCHDIR [again, make sure	it matches that	used in	parms.h]
 ____ NET [This	directory must already exist  -	 where	networking
 programs are kept (nfxmit, nfrcv)]
 ____ NOTES [this must match the NOTESUID used is parms.h]
 ____ NOTESGRP
 ____ AUTOSEQ
 ____ [finished	editing] Makefile
 ____ [may have	to become super-user at	this point]
 ____ make base	[and assess its	completion. It will  tell  you	if
 all went well]
 ____ [Signon as notesfile "owner"]
 ____ make boot	[This is the final step, it should complete with a
 message that the system is installed]
















 #

































































			 TABLE OF CONTENTS


 1  Introduction......................................................1

 2  Using Notesfiles..................................................1
    2.1	 Invocation...................................................2
    2.2	 Notesfile Names and Wildcards................................2
    2.3	 The -f	Option................................................2
    2.4	 General......................................................3
	 2.4.1	 Help.................................................3
	 2.4.2	 Exiting..............................................3
	 2.4.3	 Shells...............................................4
	 2.4.4	 Comments & Suggestions...............................4
    2.5	 The Index Page...............................................4
	 2.5.1	 Scrolling the Index Page.............................5
	 2.5.2	 Choosing Notes	& Responses...........................5
    2.6	 Notes & Responses............................................5
	 2.6.1	 Reading Notes........................................5
	 2.6.2	 Reading Responses....................................7
	 2.6.3	 Writing Notes & Responses............................8
	 2.6.4	 Mailing Notesfile Text...............................8
	 2.6.5	 Forwarding Text To Other Notesfiles..................8
	 2.6.6	 Saving	Text in	Local Files...........................8
	 2.6.7	 Piping	Text through Commands.........................8
	 2.6.8	 Deletion.............................................8
	 2.6.9	 Online	Communication.................................9
	 2.6.10	 Editing Note Titles..................................9
	 2.6.11	 Editing Notes/Responses..............................9
    2.7	 Other Commands...............................................9
	 2.7.1	 Returning to the Index	Page..........................9
	 2.7.2	 Searching Titles for Keywords........................9
	 2.7.3	 Searching for Authors................................9
	 2.7.4	 Stacking Notesfiles..................................9
	 2.7.5	 Policy	Note.........................................10
    2.8	 The Sequencer...............................................10
	 2.8.1	 Seeing	New Notes and Responses......................10
	 2.8.2	 Automatic Sequencing................................11
    2.9	 Environment Variables.......................................11

 3  Managing Notesfiles..............................................11
    3.1	 Director Options............................................12
	 3.1.1	 Access	Lists........................................12
	 3.1.2	 Policy	Note.........................................13
	 3.1.3	 Title & Director Messages...........................13
	 3.1.4	 Open/Close..........................................13
	 3.1.5	 Network Options.....................................13
	 3.1.6	 Anonymous Notes.....................................13
	 3.1.7	 Compression.........................................13
	 3.1.8	 Massive Deletions...................................14
	 3.1.9	 Director Options for Notes..........................14
    3.2	 Creation & Deletion of	Notesfiles...........................14
    3.3	 Intersystem Notesfiles......................................14
	 3.3.1	 Transmitting Notesfile	Updates......................15
	 3.3.2	 Network Transaction Log.............................15
	 3.3.3	 Non-Standard Links..................................16
	 3.3.4	 Notesfile Name	Mapping..............................16
    3.4	 Initial Installation &	Parameters...........................17
	 3.4.1	 Selecting Appropriate Constants.....................17
	 3.4.2	 Compiling the Notesfile System......................18
	 3.4.3	 User Subroutines....................................19
    3.5	 Installing the	man(1) Documentation.........................19
    3.6	 Interfacing to	News(I)......................................19
	 3.6.1	 Copying News to Notesfiles..........................20
	 3.6.2	 Copying Notesfiles to News..........................20

	 3.6.3	 Naming	Notesfiles and Newsgroups....................20
	 3.6.4	 Space Utilization...................................21
    3.7	 Housekeeping................................................21
	 3.7.1	 Automatic Removal of Notes..........................21
	 3.7.2	 Additions to System Boot............................22

 4  Other Notesfile Utilities........................................22
    4.1	 Hard Copy Output............................................22
    4.2	 Piped Insertion of Notes....................................22
    4.3	 User Subroutines............................................22
    4.4	 Statistics..................................................23
    4.5	 Checking for new notes......................................23

 5  Summary..........................................................25


 APPENDICES

 A  Notesfile Installation Checklist