Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ mh-profile(5) — NEWS-os 4.1C

Media Vault

Software Library

Restoration Projects

Artifacts Sought

MH−PROFILE(5)  —  NEWS-OS Programmer’s Manual

NAME

 .mh_profile − user customization for MH message system

SYNOPSIS

any MH command

DESCRIPTION

Each user of MH is expected to have a file named .mh_profile in his or her home directory.  This file contains a set of user parameters used by some or all of the MH family of programs.  Each line of the file is of the format
 
    profile−component: value
 
The possible profile components are exemplified below. Only ‘Path:’ is mandatory. The others are optional; some have default values if they are not present. In the notation used below, (profile, default) indicates whether the information is kept in the user’s MH profile or MH context, and indicates what the default value is. 
 

Path: Mail
Locates MH transactions in directory “Mail”.  (profile, no default)
 

context: context
Declares the location of the MH context file, see the HISTORY section below.  (profile, default: <mh−dir>/context)
 

Current−Folder: inbox
Keeps track of the current open folder. (context, default: +inbox)
 

Previous−Sequence: pseq
Names the sequences which should be defined as the ‘msgs’ or ‘msg’ argument given to the program. If not present, or empty, no sequences are defined. Otherwise, for each name given, the sequence is first zero’d and then each message is added to the sequence. (profile, no default)
 

Sequence−Negation: not
Defines the string which, when prefixed to a sequence name, negates that sequence. Hence, “notseen” means all those messages that are not a member of the sequence “seen”. (profile, no default)
 

Unseen−Sequence: unseen
Names the sequences which should be defined as those messages recently incorporated by inc.  Show knows to remove messages from this sequence once it thinks they have been seen.  If not present, or empty, no sequences are defined.  Otherwise, for each name given, the sequence is first zero’d and then each message is added to the sequence.  (profile, no default)
 

mh−sequences: .mh_sequences
The name of the file in each folder which defines public sequences. To disable the use of public sequences, leave the value portion of this entry blank. (profile, default: .mh_sequences)
 

atr−seq−folder: 172 178−181 212
Keeps track of the private sequence called seq in the specified folder.  (context, no default)
 

Editor: /usr/ucb/ex
Defines editor to be used by comp (1), dist (1), forw (1), and repl (1).  (profile, default: /usr/ucb/vi)
 

Msg−Protect: 644
Defines octal protection bits for message files. See chmod (1) for an explanation of the octal number.  (profile, default: 0644)
 

Folder−Protect: 711
Defines protection bits for folder directories. (profile, default: 0711)
 

program: default switches
Sets default switches to be used whenever the mh program program is invoked.  For example, one could override the Editor: profile component when replying to messages by adding a component such as:
repl: −editor /bin/ed
(profile, no defaults)
 

lasteditor−next: nexteditor
Names “nexteditor” to be the default editor after using “lasteditor”. This takes effect at “What now?” level in comp, dist, forw, and repl.  After editing the draft with “lasteditor”, the default editor is set to be “nexteditor”.  If the user types “edit” without any arguments to “What now?”, then “nexteditor” is used.  (profile, no default)
 

bboards: system
Tells bbc which BBoards you are interested in.  (profile, default: system)
 

Folder−Stack: folders
The contents of the folder−stack for the folder command.  (context, no default)
 

mhe:
If present, tells inc to compose an MHE auditfile in addition to its other tasks.  MHE is Brian Reid’s Emacs front−end for MH.  An early version is supplied with the mh.6 distribution.  (profile, no default)
 

Alternate−Mailboxes: mh@uci−750a, bug-mh∗
Tells repl and scan which addresses are really yours.  In this way, repl knows which addresses should be included in the reply, and scan knows if the message really originated from you.  Addresses must be separated by a comma, and the hostnames listed should be the “official” hostnames for the mailboxes you indicate, as local nicknames for hosts are not replaced with their official site names.  For each address, if a host is not given, then that address on any host is considered to be you.  In addition, an asterisk (‘∗’) may appear at either or both ends of the mailbox and host to indicate wild−card matching.  (profile, default: your user-id)
 

Aliasfile: aliases
Indicates a default aliases file for ali, whom, and send.  This may be used instead of the ‘−alias file’ switch.  (profile, no default)
 

Draft−Folder: drafts
Indicates a default draft folder for comp, dist, forw, and repl.  (profile, no default)
 

digest−issue−list: 1
Tells forw the last issue of the last volume sent for the digest list.  (context, no default)
 

digest−volume−list: 1
Tells forw the last volume sent for the digest list.  (context, no default)
 

MailDrop: .mail
Tells inc your maildrop, if different from the default.  This is superceded by the $MAILDROP envariable.  (profile, default: /usr/spool/mail/$USER)
 

Signature: RAND MH System (agent: Marshall Rose)
Tells send your mail signature.  This is superceded by the $SIGNATURE envariable.  On hosts where MH was configured with the UCI option, if $SIGNATURE is not set and this profile entry is not present, the file $HOME/.signature is consulted.  (profile, no default)
 

Sendcode: J
MH converts 8bit code to MAIL code when posting.
This tells code for sending.
JConvert default 7bit MAIL code in the language environment.
SConvert EUC code to Shift-JIS code in Japanese environment.
EConvert Shift-JIS code to EUC code in Japanese environment.
UNo conversion
(profile, default:J)

Receivecode: J
Tell recieved MAIL code.
JAuto conversion to iternal code specified by environment variable
$LANG .
JBBUse ESC $ B when switching to KANJI , and ESC ( B when switching
to ASCII in Japanese environment.
JBJUse ESC $ B when switching to KANJI , and ESC ( J when switching
to ASCII in Japanese environment.
J@BUse ESC $ @ when switching to KANJI , and ESC ( B when switching
to ASCII in Japanese environment.
J@JUse ESC $ @ when switching to KANJI , and ESC ( J when switching
to ASCII in Japanese environment.
S8bit code is assumed to be Shift-JIS code.
E8bit code is assumed to be EUC code.
UNo conversion
(profile, default:J)

 
 
The following profile elements are used whenever an MH program invokes some other program such as more (1).  The .mh_profile can be used to select alternate programs if the user wishes.  The default values are given in the examples. 
 

^fileproc:~^/usr/new/mh/refile
^incproc:~^/usr/new/mh/inc
^installproc:~^/usr/new/lib/mh/install−mh
^lproc:~^/usr/ucb/more
^mailproc:~^/usr/new/mh/mhmail
^mhlproc:~^/usr/new/lib/mh/mhl
^moreproc:~^/usr/ucb/more
^mshproc:~^/usr/new/mh/msh
^packproc:~^/usr/new/mh/packf
^postproc:~^/usr/new/lib/mh/post
^rmmproc:~^none
^rmfproc:~^/usr/new/mh/rmf
^sendproc:~^/usr/new/mh/send
^showproc:~^/usr/ucb/more
^whatnowproc:~^/usr/new/mh/whatnow
^whomproc:~^/usr/new/mh/whom

 
If you define the envariable $MH, you can specify a profile other than .mh_profile to be read by the MH programs that you invoke.  If the value of $MH is not absolute, (i.e., does not begin with a / ), it will be presumed to start from the current working directory.  This is one of the very few exceptions in MH where non−absolute pathnames are not considered relative to the user’s MH directory. 
 
Similarly, if you define the envariable $MHCONTEXT, you can specify a context other than the normal context file (as specified in the MH profile).  As always, unless the value of $MHCONTEXT is absolute, it will be presumed to start from your MH directory. 
 
MH programs also support other envariables:
 

$MAILDROP : tells inc the default maildrop
This supercedes the “MailDrop:” profile entry.
 

$SIGNATURE : tells send and post your mail signature
This supercedes the “Signature:” profile entry.
 

$HOME : tells all MH programs your home directory
 

$SHELL : tells bbl the default shell to run
 

$TERM : tells MH your terminal type
The $TERMCAP envariable is also consulted.  In particular, these tells scan and mhl how to clear your terminal, and how many columns wide your terminal is.  They also tell mhl how many lines long your terminal screen is. 
 

$editalt : the alternate message
This is set by dist and repl during edit sessions so you can peruse the message being distributed or replied-to.  The message is also available through a link called “@” in the current directory if your current working directory and the folder the message lives in are on the same UNIX filesystem. 
 

$mhdraft : the path to the working draft
This is set by comp, dist, forw, and repl to tell the whatnowproc which file to ask “What now?” questions about.  In addition, dist, forw, and repl set $mhfolder if appropriate.  Further, dist and repl set $mhaltmsg to tell the whatnowproc about an alternate message associated with the draft (the message being distributed or replied−to), and dist sets $mhdist to tell the whatnowproc that message re−distribution is occurring.  Also, $mheditor is set to tell the whatnowproc the user’s choice of editor (unless overridden by ‘−noedit’).  Similarly, $mhuse may be set by comp.  Finally, $mhmessages is set by dist, forw, and repl if annotations are to occur (along with $mhannotate, and $mhinplace).  It’s amazing all the information that has to get passed via envariables to make the “What now?” interface look squeaky clean to the MH user, isn’t it?  The reason for all this is that the MH user can select any program as the whatnowproc, including one of the standard shells.  As a result, it’s not possible to pass information via an argument list. 
If the WHATNOW option was set during MH configuration (type ‘−help’ to an MH command to find out), and if this envariable is set, if the commands refile, send, show, or whom are not given any ‘msgs’ arguments, then they will default to using the file indicated by $mhdraft.  This is useful for getting the default behavior supplied by the default whatnowproc. 
 

$mhfolder : the folder containing the alternate message
This is set by dist and repl during edit sessions so you can peruse other messages in the current folder besides the one being distributed or replied-to.  The $mhfolder envariable is also set by show, prev, and next for use by mhl. 
 

$MHBBRC :
If you define the envariable $MHBBRC, you can specify a BBoards information file other than .bbrc to be read by bbc.  If the value of $MHBBRC is not absolute, (i.e., does not begin with a / ), it will be presumed to start from the current working directory. 
 

$MHFD :
If the OVERHEAD option was set during MH configuration (type ‘−help’ to an MH command to find out), then if this envariable is set, MH considers it to be the number of a file−descriptor which is opened, read−only to the MH profile.  Similarly, if the envariable $MHCONTEXTFD is set, this is the number of a file−descriptor which is opened read−only to the MH context.  This feature of MH is experimental, and is used to examine possible speed improvements for MH startup.  Note that these envariables must be set and non−empty to enable this feature.  However, if OVERHEAD is enabled during MH configuration, then when MH programs call other MH programs, this scheme is used.  These file−descriptors are not closed throughout the execution of the MH program, so children may take advantage of this.  This approach is thought to be completely safe and does result in some performance enhancements. 

 
^$HOME/.mh_profile~^The user profile ^or $MH~^Rather than the standard profile ^<mh−dir>/context~^The user context ^or $CONTEXT~^Rather than the standard context ^<folder>/.mh_sequences~^Public sequences for <folder> All mh(1), environ(5), sendmail(8) None All In previous versions of MH, the current−message value of a writable folder was kept in a file called “cur” in the folder itself.  In mh.3, the .mh_profile contained the current−message values for all folders, regardless of their writability. 
 
In all versions of MH since mh.4, the .mh_profile contains only static information, which MH programs will NOT update.  Changes in context are made to the context file kept in the users MH directory.  This includes, but is not limited to: the “Current−Folder” entry and all private sequence information.  Public sequence information is kept in a file called .mh_sequences in each folder. 
 
To convert from the format used in releases of MH prior to the format used in the mh.4 release, install−mh should be invoked with the ‘−compat’ switch.  This generally happens automatically on MH systems generated with the “COMPAT” option during MH configuration. 
 
The .mh_profile may override the path of the context file, by specifying a “context” entry (this must be in lower-case).  If the entry is not absolute (does not start with a / ), then it is interpreted relative to the user’s MH directory.  As a result, you can actually have more than one set of private sequences by using different context files.  The shell quoting conventions are not available in the .mh_profile.  Each token is separated by whitespace. 
 
There is some question as to what kind of arguments should be placed in the profile as options. In order to provide a clear answer, recall command line semantics of all MH programs: conflicting switches (e.g., ‘−header and ‘−noheader’) may occur more than one time on the command line, with the last switch taking effect.  Other arguments, such as message sequences, filenames and folders, are always remembered on the invocation line and are not superseded by following arguments of the same type.  Hence, it is safe to place only switches (and their arguments) in the profile. 
 
If one finds that an MH program is being invoked again and again with the same arguments, and those arguments aren’t switches, then there are a few possible solutions to this problem.  The first is to create a (soft) link in your $HOME/bin directory to the MH program of your choice.  By giving this link a different name, you can create a new entry in your profile and use an alternate set of defaults for the MH command.  Similarly, you could create a small shell script which called the MH program of your choice with an alternate set of invocation line switches (using links and an alternate profile entry is preferable to this solution). 
 
Finally, the csh user could create an alias for the command of the form:
 

alias cmd ’cmd arg1 arg2 ...’
 
In this way, the user can avoid lengthy type−in to the shell, and still give MH commands safely.  (Recall that some MH commands invoke others, and that in all cases, the profile is read, meaning that aliases are disregarded beyond an initial command invocation)

NEWS-OSRelease 4.1C

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026