$Header: /mnts/metolius/home/jamesp/usr/src/vmail/RCS/READ_ME,v 1.1 87/10/15 13:40:18 rogers Exp $

VMAIL is copyright (C) J. Zobel, University of Melbourne, October 1987.
Permission to copy and modify vmail is given in full, but copies and
modified copies must contain this copyright notice.

    vmail is an interactive mail handler that sits on top of MH6.5.
Because vmail updates the MH environment by updating .mh_sequences,
it is not compatible with early versions of MH, although it should
work with MH5 and possibly MH4.

    vmail has a number of advantages over raw MH.  It is screen-based and
faster (and more convenient) than the MH show-scan-rmm refile cycle.
The `scan' pages for the specified folders are loaded at start up time;
further folders may be loaded at any time.  `scan' is replaced by paging
between screens of stored information, `show' by a fork() to a pager,
`rmm' and `refile' by calls to rename (2).  Other features, such as folder
packing, are also faster, as most of the required information is already
known to the process.  vmail makes it feasible for users to organise and
keep track of moderate volumes of mail without wasting too much time, and
is very simple to use.  It has been in use at Melbourne University Computer
Science Department for about six months without any problems, and has
become the interface of choice for many users.  Users who (being new to
UNIX) were introduced to mail with vmail have never tried the MH commands
themselves, being satisfied with the vmail interface and wanting to avoid
the plethora of MH functions and usages.


Technical Notes

    vmail is currently Berkeley specific, in particular use of signal(),
vfork(), ioctl() and union wait.  It should work with most versions of MH,
but makes assumptions about the structure of folders, ie, that a folder is
a directory containing files whose names are numbers (other files are
ignored).  By default, a .mh_profile is required to specify alternatives
to other defaults such as name of mail directory; the environment variable
MH may be used to set an alternative profile.  The usual assumptions are
made about the format of mail items - use of fields (if present) such as
"To:", "From:" and so on, but these also should not cause any difficulties.
    comp, repl and forw are all forked from vmail rather than imitated,
there being no real time advantage to doing otherwise, but are given by
single-letter commands rather than longer commands to a shell.  Most MH
options as set in the profile are ignored (most are not relevant);
because comp, repl, etc are forks rather than built-ins, this is not
really a problem.  The paths for these executables are in defs.h and
may have to be changed.
    The most unreliable feature is probably the parsing of inc output in
inc.c, used when `i' is given to incorporate new mail.  Because some people
like to give options to inc in their profile, and because inc was too long
to consider rewriting, the simplest solution was to parse the inc output -
if the format changed this code would break.
    Some may find the mixture of stdio, curses and ioctl ugly, but it is
reasonably orthogonal - stdio is used when tty is in normal mode, curses
when control is required, and ioctl and signal when processes are being
suspended, woken or forked.

Made with "make" (no arguments).  If cc does not recognize -k option,
value of make variable STACK must be changed.  The compiler option
-DUSDATE must be set if dates are to be displayed in US format.

Files

	READ_ME			This file.
	vmail.1			Manual entry.
	Makefile		Version number.

	defs.h			Pathnames, defaults, structs, externs,
				constants.  Some of these will need to be
				edited, eg locations of MH routines.
	macro.h			Simple functions.

	call.c			Forks to MH functions, editor, shell.
	choose.c		Folder chooser, folder display.
	cmds.c			Assorted commands.
	find.c			Searching through headers for strings.
	inc.c			Handles fork to inc, parsing of inc output.
	init.c			Startup, interrupt handling.
	load.c			Loading of folders/mail from mail directory
				into internal structures.
	low.c			Some primitive functions.
	main.c			High-level switch.
	move.c			Commands for refile, delete, undo.
	page.c			Commands associated with movement between
				pages and movement within a page.

NB: All source files are formatted with tabstop=4.

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

I would appreciate hearing about bugs/bug fixes/amendments/improvements/
additions; any correspondence should be sent to

UUCP:	...!munnari!mulga!jz
ARPA:	jz%mulga.oz@uunet.uu.net
CSNET:	jz%mulga.oz@australia

Any modifications received will be considered for a future release of
vmail.  Of particular interest is SYS V compatibility and modifications
to suit versions of MH to which I have no access.
