名称
mhl − MH メッセージのフォーマットされたリストを作成する
形式
/usr/new/lib/mh/mhl [−bell] [−nobell] [−clear] [−noclear] [−folder +folder] [−form formfile] [−length lines] [−width columns] [−moreproc program] [−nomoreproc] [−cnv] [−nocnv] [files ...] [−help]
解説
mhl は、フォーマットされたメッセージをリストするプログラムです。 これは、more(1)(デフォルトの showproc)の代わりとして 使うことができます。 more を使う時と同様に、 引数で指定される各メッセージ(もしくは標準入力)が出力されます。 もし、複数のメッセージファイルが指定されている場合、 各メッセージごとにプロンプトが現れ、 <RETURN> もしくは <EOT> で出力が始められます。 <RETURN> では(可能なら)画面がクリアされ、 <EOT>(通常 CTRL−D)ではクリアされません。 <INTERRUPT>(通常 CTRL−C)はカレントメッセージの出力を中止し、 次のメッセージがあれば、プロンプトを出します。 <QUIT>(通常 CTRL-\)はプログラムを終了させます(コアダンプはしません)。
‘−cnv’ オプションが指定されている場合には、mhl はメッセージを環境変数 ‘LANG’ で指定される内部コードに変換した後、処理します。 ‘−nocnv’ オプションが指定されている場合にはコード変換は行ないません。
‘−bell’ オプションは、各ページの最後で ターミナルのベルを鳴らすようにします。 ‘−clear’オプションは、各ページの最後で画面をクリアするように (もしくは各メッセージの後に formfeed を出力するように)mhl に 指示します。これらのスイッチ(およびこれらと逆のスイッチ)はともに、 プロファイルエントリ moreproc が空で定義され、mhl が ターミナルに出力している場合にのみ有効です。 moreproc が空以外に定義され、mhl がターミナルに 出力している場合は、moreproc をターミナルと mhl の間に介在させ、 mhl とこれらのスイッチは無視されます。 さらに、‘−clear’ スイッチが使用され、 mhl の出力がターミナルに直接出される場合 mhl は、 ユーザのターミナルタイプを決定する 環境変数 $TERM および $TERMCAP を検索し、 画面のクリアの仕方を調べます。 ‘−clear’ スイッチが使用され、 mhl の出力先がターミナルでない場合 (例えば、パイプやファイル)、 mhl は各メッセージのあとにフォームフィードを送ります。
デフォルトの moreproc とプロファイルエントリを変更するには、 ‘−moreproc program’ スイッチを使用してください。 ただし、mhl がハードコピー端末から起動されている場合には、 moreproc は起動されません。
‘−length length’ と ‘−width width’ スイッチは、 それぞれ画面の長さと幅を指定します。 画面の長さと幅については、可能なら $TERMCAP に示されている値を デフォルトとしますが、 そうでない場合にはそれぞれ 40 と 80 をデフォルトとします。
mhl で使用されるデフォルトのフォーマットファイルは mhl.format です (これは、まず最初にユーザの MH ディレクトリが検索され、 次に /usr/new/lib/mh ディレクトリが検索されます)。 これは ‘−form formatfile’ で変更することができます。
最後に、‘−folder +folder’ スイッチは MH フォルダ名をセットします。 これは、後述する “messagename:” フィールドで使用されます。 環境変数 $mhfolder は、 show、next、prev がデフォルト値を適切に初期化するのに 使用されます。
mhl は、1) フォーマットファイルの読み取りと解析、 2) 各メッセージ(ファイル)の処理、の2つのフェーズで動作します。
フェーズ 1 では、フォーマットの内部表現が構造リストとして生成されます。 フェーズ 2 では、このリストが各メッセージに対して用いられ、 フォーマットファイルに従った形式でメッセージ情報を出力します。
“mhl.format” フォーマットファイルは、 画面クリアの制御、画面の大きさ、ラップアラウンド制御、テキストの出力、 コンポーネントの順序、コンポーネントのフォーマッティング、 などの情報を含んでいます。 また、無視するコンポーネントのリストを指定したり、 “特別な” コンポーネントの組を定義して 機能性を向上させることができます。 メッセージ出力は、フォーマットファイル中に指定された順序になります。
mhl.format の各行は、次のいずれかの形式をしています。
;comment
:cleartext
variable[,variable...]
component:[variable,...]
‘;’ で始まる行はコメント行であり、無視されます。 ‘:’ で始まる行は自由なテキスト行で、そっくりそのまま出力されます。 ‘:’ だけの行は空白行として出力されます。 “component:” で始まる行は、そのコンポーネントの フォーマットを定義します。 そして “variable” の行は、全体の環境を定義します。
例えば、
width=80,length=40,clearscreen,overflowtext="∗∗∗",overflowoffset=5
では画面の大きさを 80 カラム、40 行に定義し、 各ページの最初に画面をクリアすること、 オーバーフローインデントは 5 であり、 オーバーフローしたテキストは “∗∗∗” を付けて 示されることを指定しています。
以下に示すのは、現在ある変数およびその引数の全てです。 これらがコンポーネントに続く場合には、 そのコンポーネントにのみ適用されます。 そうでなければ、全体に対して有効です。 出力を始める前にまずフォーマット全体が解析されるため、 グローバルなコンテクストで使用される変数 (bell、clearscreen、width、length など)では、 最後に記述された設定がメッセージ全体にわたって適用されることになります。
変数型意味
width整数画面あるいはコンポーネントの幅
length整数画面あるいはコンポーネントの長さ
offset整数“component: ” のインデントの位置
overflowtext文字列オーバーフローした行の始まりに使われる
テキスト
overflowoffset整数オーバーフローした行のインデントの位置
compwidth整数コンポーネントテキストの2行目以降の
インデント位置
uppercaseフラグコンポーネントテキストをすべて大文字で
出力する
nouppercaseフラグ大文字変換を行なわない
clearscreenフラグ/G各ページの始まりで画面をクリアする
noclearscreenフラグ/G画面のクリアを行なわない
bellフラグ/G各ページの終わりでベルを鳴らす
nobellフラグ/Gベルを鳴らさない
component文字列/Lコンポーネントに対して、“component” の代わり
に使う名称
nocomponentフラグこのコンポーネントでは “component: ” を
出力しない
centerフラグコンポーネントを行の中央にそろえる
(1行のコンポーネントでのみ働く)
nocenterフラグセンタリングを行なわない
leftadjustフラグテキストの各行の先頭の空白を取り除く
noleftadjustフラグ左寄せをしない
compressフラグテキスト中の改行をスペースに変える
nocompressフラグcompress を行わない
splitフラグ複数のフィールドを1つのフィールドにまとめ
ない
nosplitフラグ複数のフィールドを1つのフィールドにまとめる
formatfield文字列このコンポーネントのためのフォーマット文字列
(後述)
addrfieldフラグアドレスを含むフィールド
datefieldフラグ日付を含むフィールド
整数変数と文字列変数の値を指定するには、 変数名の後にイコール記号と値をつけてください。 整数変数には 10 進数、 文字列変数にはダブルクォートで囲まれた任意のテキストを与えます。 “/G” や “/L” が付いているものは、 それぞれグローバル、もしくはローカルのみのコンテクストに 有効であることを示します。
次の行、
ignores=component,...
は全く出力されないコンポーネントのリストを指定しています。
コンポーネント “MessageName”(大文字小文字は関係ない)は、 1つのメッセージが指定されるか環境から見つかった場合に、 フォルダ名に続けて実際のメッセージ名(ファイル名)を出力します。 そのフォーマットは、show に ‘−header’ オプションを付けて 出力されるものと同じです。
コンポーネント “Extras” は、明示的に指定せず ignore リストにも 含まれていないコンポーネントを全て出力します。 このコンポーネントが指定されない場合は、 ignore リストは必要ありません。 これは、指定のないコンポーネントはすべて無視されるからです。
“nocomponent” の指定がなければ、 コンポーネント名はフォーマットファイル中に示される形で出力されます。
デフォルトのフォーマットは次のとおりです。
変数 “formatfield” は、 フォーマット文字列(mh−format (5) 参照) を指定します。 フラグ変数 “addrfield” と “datefield” (これらは相互に排他的です)は、そのフォーマット文字列のエスケープを それぞれアドレスあるいは日付エスケープとして解釈させます。
デフォルトでは、mhl はアドレスや日付を含むフィールドには フォーマット文字列を適用しません (これらのフィールドのリストについては、mh−mail(5) を 参照してください)。 この結果、フォーマット文字列を適用する際に必要なアドレス解析、日付解析 を行わないため、処理が速くなります。 もし望むなら、デフォルトのフォーマット文字列を、アドレスあるいは 日付フィールドのどちらか片方にだけ、指定できます。 この場合は、グローバルな行で、addrfield フラグあるいは datefield フラグと formatfield 変数の指定を行ってください。
関連ファイル
^/usr/new/lib/mh/mhl.format~^標準のメッセージテンプレート
^あるいは <mh−dir>/mhl.format~^標準テンプレートの代わりに用いられる
^$HOME/.mh_profile~^ユーザプロファイル
プロファイルコンポーネント
^moreproc:~^対話型フロントエンドとして ^~^使用されるプログラム
関連事項
デフォルト値
‘−bell’ ‘−noclear’ ‘−length 40’ ‘−width 80’ ‘−nocnv’
コンテクスト
なし
バグ
‘bell’ および ‘clear’ の情報をフロントエンドに渡す方法があるべきです。
BERK オプション付きで、MH をコンフィギュレーションしているホストでは、 アドレス解析はできません。
NEWS-OSRelease 4.1C