名称
mhl − MH メッセージのフォーマットされたリストを作成する
形式
/usr/new/lib/mh/mhl [−bell] [−nobell] [−clear] [−noclear] [−folder +folder] [−form formfile] [−length lines] [−width columns] [−moreproc program] [−nomoreproc] [files ...] [−help]
解説
mhl は、フォーマットされたメッセージのリストを作成するプログラムです。 これは、more(1) の代わりに使うことができます。 more を使う時と同様に、 引数(もしくは標準入力)により指定される各メッセージが出力されます。 もし、1つ以上のメッセージファイルが指定されている場合、 ユーザは次々にそれらの出力を促され、 <RETURN>、もしくは <EOT> で出力が始められます。 <RETURN> では画面がクリアされ(適切なら)、 <EOT>(通常 CTRL−D )ではクリアは抑制されます。 <INTERRUPT>(通常 CTRL−C )はカレントメッセージの出力を中止し、 次のメッセージの出力を促します(たとえメッセージが1つしかなくても)。 <QUIT>(通常CTRL-\)はプログラムを終了させます(コアダンプはされない)。
‘−bell’ オプションは、各ページの最後で ターミナルのベルを鳴らすように mhl に指示します。 一方、‘−clear’オプションは、各ページの最後で画面をクリアするように (もしくは各メッセージの後に formfeed を出力するように)mhl に 指示します。これらのスイッチ(およびこれらと逆のスイッチ)は両方とも、 プロファイルエントリ moreproc が空で定義された時にのみ有効であり、 mhl はターミナルに出力します。 moreproc が空以外に定義されている場合には、 mhl はターミナルに出力するとき、 moreproc をターミナルと 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 は、2つのフェーズで動作します。 1) フォーマットファイルの読み取りと解析。 そして、2) 各メッセージ(ファイル)の処理がそうです。 フェーズ1では、フォーマットの内部表現が構造リストとして作られます。 フェーズ2では、このリストが各メッセージに対して用いられ、 フォーマットファイルに従った形式でメッセージ情報を出力します。
“mhl.format” フォームファイルは、 画面クリア制御、画面の大きさ、ラップアラウンド制御、テキストの転送、 コンポーネントの整理、そしてコンポーネントのフォーマッティング、 などの情報を含んでいます。 また、無視するコンポーネントのリストを指定し、 “特別な” コンポーネントの組を定義して 機能性を向上させることができます。 メッセージ出力は、フォーマットファイル中に指定された順序になります。
mhl.format の各行は、次のフォーマットのいずれかです。
;comment
:cleartext
variable[,variable...]
component:[variable,...]
‘;’ で始まる行はコメント行です。‘:’ で始まる行は自由なテキスト行で、 正確にそっくりそのまま出力されます。 ‘:’ だけの行は出力の際に空白行となります。 “component:” で始まる行は指定されるコンポーネントの フォーマットを定義します。 そして最後に、残った行は全体の環境を定義します。
例えば、次の行では、
width=80,length=40,clearscreen,overflowtext="∗∗∗",overflowoffset=5
画面の大きさを 40 カラム、80 行に定義し、 各ページの最初に画面をクリアすること、 オーバーフローインデントは 5 であり、 オーバーフローしたテキストはフラグ “∗∗∗” で 示されることを指定しています。
次にあげるものはカレント変数とその引数のすべてです。 これらがコンポーネントに続く場合には、 そのコンポーネントにのみ適用されます。 そうでなければ、全体に対して有効です。 全体のフォーマットは出力過程の前に解析されますので、 ある変数に対してセットされた最後のグローバルスイッチが、 グローバルコンテクスト中で使用されるすべてのメッセージ全体に適用されます。
変数タイプ意味
width整数スクリーンもしくはコンポーネントの幅
length整数スクリーンの長さもしくはコンポーネントの長さ
offset整数“component: ” のインデントの位置
overflowtext文字列オーバーフローした行の始まりに使われるテキスト
overflowoffset整数オーバーフローした行のインデントの位置
compwidth整数コンポーネントテキストのインデントの位置
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” は、明示のコンポーネントとマッチしないか、 イグノアリストに含まれている場合に、 メッセージのすべてのコンポーネントを出力します。 このコンポーネントが指定されない場合は、 イグノアリストは必要ありません。 これは、指定のないコンポーネントはすべて無視されるからです。
“nocomponent” の指定がなければ、 コンポーネント名はフォーマットファイル中に示される形で出力されます。
デフォルトのフォーマットは、次のとおりになります。
変数 “formatfield” は、 フォーマット文字列(mh−format(5) を参照してください) を指定します。 変数 “addrfield” と “datefield” (これらは相互に排他的です)は、エスケープの解釈を制御します。
デフォルトでは、mhl はアドレスや日付を含むフィールドに フォーマット文字列を適用しません (これらのフィールドのリストについては、mh−mail(5) を 参照してください)。 mhl がアドレスと日付の両方をフォーマット文字列での出現順で解釈するため、 より早い動作を得られるということを覚えておいてください。 もしこれを望む場合、mhl にアドレスか、 日付フィールドのどちらか一方をデフォルトのフォーマット文字列で与えることが できます(両方はできません)。 これを行なうには、変数フォーマットフィールドに従って、 変数 addrfield もしくは変数 datefield のどちらかを、 グローバル行に指定してください。
関連ファイル
^/usr/new/lib/mh/mhl.format~^メッセージテンプレート
^もしくは <mh−dir>/mhl.format~^標準テンプレートの代わりに用いられる
^$HOME/.mh_profile~^ユーザプロファイル
プロファイルコンポーネント
^moreproc:~^対話型フロントエンドとして使用されるプログラム
関連事項
デフォルト値
‘−bell’ ‘−noclear’ ‘−length 40’ ‘−width 80’
コンテクスト
なし
バグ
‘bell’ と ‘clear’ の情報をフロントエンドに渡すには いくつかの方法が考えられます。
BERK オプション付きで、MH をコンフィギュレーションしているホストでは、 アドレス解析はできません。
NEWS-OSRelease 3.3