.\" @(#)$Id: bbl.rf,v 1.5 90/04/05 15:11:17 sources Exp $
bbl \- manage a BBoard
\%[\-shell\ program]
\%[\-verbose] \%[\-noverbose]
\fIbbl\fR allows a \fIBBleader\fR to manage a BBoard.
The process is relatively simple:  a \fIBBleader\fR
invokes the \fIbbl\fR program to set\-up an environment in which the messages
contained in the BBoard
may be accessed as if they were messages in an \fIMH\fR folder.

To do this, \fIbbl\fR, \fIincs\fR the \fIBBoard\fR
to the folder \*(lq+bbl\*(rq, and \fIincs\fR the archives for the \fIBBoard\fR
to the folder \*(lq+bbl/arc\*(rq.  The \fIBBleader\fR
then gets a new shell in which \fIMH\fR
commands (among others) may be executed.  When the \fIBBleader\fR
is done, CTRL\-D is typed, which terminates the shell.  \fIbbl\fR then
asks the \fIBBleader\fR
as to how the BBoard
should be reconstructed.
Usually, this results in zeroing the existing \fIBBoard\fR
file, and  \fIpack\fRing the \*(lq+bbl\*(rq folder into the \fIBBoard\fR
file.  Similar actions are taken for the archive.

The `\-shell' switch specifies what process that \fIbbl\fR should invoke
as your command interpreter.  This need not be a rooted filename.
If this switch is not specified,
\fIbbl\fR looks at the envariable \fB$SHELL\fR for a value.
If this envariable is not set, then \fIbbl\fR uses your login shell.

The `\-verbose' switch directs \fIbbl\fR to type the shell commands that it
executes to get the job done (e.g., \fIchmod\fR\0s, \fIinc\fR\0s, etc.)

As \fIbbl\fR processing is most likely not intuitively obvious to most
prospective BBoard\-leaders, a short diatribe is in order.  As pointed out in
a BBoard\-leader (of the fictitious BBoard \*(lqhacks\*(rq)
has three primary maintenance functions: 
.in +.5i

.ti -.5i
\fBRead the BBoard\fR
You don't need \fIbbl\fR
to do this, use \fIbbc\fR instead.

.ti -.5i
\fBRemove inappropriate material\fR
Do this by running \fIbbl\fR.
An example of this might be:
\01 % bbl hacks
\02 [ Working folder is +bbl, Archive folder is +bbl/arc ]
\03 [ Type CTRL\-D to finish ]
\04 % scan
.ta \w'\05  'u +\w'20 'u +\w'10/14 'u +\w'1345-PDT 'u +\w'Reasonable Person 'u
\05	20	10/14	1345-PDT	Silly User	Nonsensical message
\06	21	10/14	1707-PDT	Silly User	Another one
\07	22	10/14	2144-PDT	Reasonable Person	Legit message
\09 % rmm 20 21
\10 % \^D
\11 Incorporate changes? y
\12 Remove +bbl? y
\13 Update archives? n
\14 Remove +bbl/arc? y
\15 [+inbox now current]
\16 %
In item 1, the BBoard\-Leader invokes \fIbbl\fR
on the BBoard called \*(lqhacks\*(rq.  The \fIbbl\fR
program responds by typing items 2 and 3 which tell the user what \fIMH\fR
folders are being used and that a sub\-shell is now in use (respectively).
The user does a scan of the +bbl folder
(\fIbbl\fR sets the current\-folder to be the one with the BBoard in it.)
and finds two messages that should be removed (numbers 20 and 21).
The user then removes these using the \fIrmm\fR
program (item 9) and then types a CTRL\-D to return to
\fIbbl\fR (item 10).
At this point,
asks how the BBoard should be reconstructed.  Item 11 asks if the contents of
the +bbl folder should OVERWRITE the contents of the BBoard.  The user 
responds `yes',
that it should (hence the two \fIrmm\fR'd messages disappear).
Next on item 12,
the user is asked if the +bbl folder should be killed, since the BBoards
have been successfully updated, the user answers `yes'.
On item 13, the user is
asked if the archives should be updated.  Since the user made no changes, the
answer `no' is made.  (The user could have answered `yes' with no disastrous 
effects, but knew that nothing had been updated).  Finally, on item 14, the
user indicates that the +bbl/arc subfolder should be killed, by answering

.ti -.5i
\fBArchive non\-recent material\fR
Do this by running \fIbbl\fR.
An example of this might be:
\01 % bbl hacks
\02 [ Working folder is +bbl, Archive folder is +bbl/arc ]
\03 [ Type CTRL\-D to finish ]
\04 % scan
.ta \w'\05  'u +\w'20 'u +\w'10/14 'u +\w'1345-PDT 'u +\w'GFISHER@UCI-20B 'u
\05	11	10/12	1905-PST	Marshall Rose	New MMail/BBck
\06	12	10/12	1916-PST	Stephen Willson	PATH, nfinger, and ls
\07	13	10/12	2329-PDT	G@UCI-20A	833-5122 hours
\08	14	10/13	1045-PDT	MELLON@UCI-20B	Reporting line
\09	15	10/13	1112-PST	Tim Shimeall	Re: 833-5122 hours
\10	16	10/13	1045-PDT	MELLON@UCI-20B	Reporting line
\11	17	10/13	2042-PST	Dana Roode	Ucifinger
\12	18	10/13	2045-PST	Dana Roode	Files in /usr/restores
\13	19	10/14	1028-PDT	WILLSON@UCI-20B	Re: term no pause
\14	20	10/14	1345-PDT	Martin Katz	Re: term no pause
\15	21	10/14	1707-PDT	SCRIBE@UCI-20A	Scribe Use
\16	22	10/14	2144-PDT	GFISHER@UCI-20B	New Twemacs
\17	23	10/15	1227-PDT	Rob Rittenhouse	Re: New Twemacs
\18 % file +bbl/arc \-src +bbl 11\-12 17\-20 21
\19 % ^D
\20 Incorporate changes? y
\21 Remove +bbl? y
\22 Update archives? y
\23 Remove +bbl/arc? y
\24 [+inbox now current]
\25 %
The important command given is in item 18, in which the user \fIfiles\fR
some messages from +bbl into +bbl/arc.  When CTRL\-D is typed, the user
directs \fIbbl\fR
to update both the BBoard and its archives, which does the proper action.
As an alternate to this scenario,
some creative \fIBBleaders\fR might use the \fIpick\fR command to do all of
the work:

.in +.5i
pick \-sequence select \-before \-12 \-datefield BB-Posted \-zero
pick \-sequence select \-before \-20 \-nozero
scan select
refile select +bbl/arc
.in -.5i

In order to facilitate the use of automation shell scripts,
if the standard input for \fIbbl\fR is \fInot\fR a tty,
then \fIbbl\fR will not ask any questions and will proceed as if
the user's answer was \*(lqyes\*(rq for all questions.
Hence, \fIbbl\fR may be run under \fIcron\fR\0(8) to provide for
automatic archiving.
.in -.5i
^$HOME/\&.mh\(ruprofile~^The user profile
^Path:~^To determine the user's MH directory
^incproc:~^Program to incorporate a mail drop into a folder
^packproc:~^Program to pack a folder into a msgbox
^rmfproc:~^Program to remove a folder
bbc(1), bbleader(1), bboards(1)
`+folder' defaults to \*(lqbbl\*(rq
`\-shell' defaults to \fB$SHELL\fR or your login shell
In the early days of the UCI BBoards facility,
\fIBBleaders\fR actually used to run this program by hand.
Now, this \fIbbl\fR is often run automatically by the system to perform
automatic archiving.
Note that \fIbbl\fR executes a lot of \fIMH\fR 
commands, and as such, each of these commands can and will read
your \fI\&.mh\(ruprofile\fR for defaults.
Please read the \fBBUGS\fR section of \fImh\-profile\fR\0(5)
for some hints to help you avoid many silly problems.

Also, \fIbbl\fR is unforgiving in doing exactly what it is told,
so take special care in answering \fIbbl\fR's questions.