annotate doc/ja-mh-format.me @ 0:bce86c4163a3

Initial revision
author kono
date Mon, 18 Apr 2005 23:46:02 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
bce86c4163a3 Initial revision
kono
parents:
diff changeset
1 .\" This file is automatically generated. Do not edit!
bce86c4163a3 Initial revision
kono
parents:
diff changeset
2 .\" written by MH-plus project
bce86c4163a3 Initial revision
kono
parents:
diff changeset
3 .SC MH-FORMAT 5
bce86c4163a3 Initial revision
kono
parents:
diff changeset
4 .NA
bce86c4163a3 Initial revision
kono
parents:
diff changeset
5 mh-format \- MH システムのフォーマット・ファイル
bce86c4163a3 Initial revision
kono
parents:
diff changeset
6 .SY
bce86c4163a3 Initial revision
kono
parents:
diff changeset
7 いくつかの \fIMH\fR コマンド
bce86c4163a3 Initial revision
kono
parents:
diff changeset
8 .DE
bce86c4163a3 Initial revision
kono
parents:
diff changeset
9 いくつかの \fIMH\fR コマンドは、実行中に
bce86c4163a3 Initial revision
kono
parents:
diff changeset
10 フォーマット文字列またはフォーマット・ファイルを利用します。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
11 例えば、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
12 \fIscan\fR\0(1) はそれぞれのメッセージの一覧表示をどのように作成するかを
bce86c4163a3 Initial revision
kono
parents:
diff changeset
13 示すためにフォーマット文字列を使いますし、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
14 \fIrepl\fR\0(1) はメッセージの返信をどのように作成するかを示すために
bce86c4163a3 Initial revision
kono
parents:
diff changeset
15 フォーマット・ファイルを使います。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
16
bce86c4163a3 Initial revision
kono
parents:
diff changeset
17 フォーマット文字列は \fIMH\fR によって能率的に解析されるよう設計されて
bce86c4163a3 Initial revision
kono
parents:
diff changeset
18 いるので、必ずしも書いたり理解したりしやすいとは言えません。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
19 したがって、初心者は、あるいは \fIMH\fR の上級ユーザーでさえも、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
20 これを是非とも扱わなければならないというようなものではありません。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
21 いくつかの scan フォーマットが
bce86c4163a3 Initial revision
kono
parents:
diff changeset
22 /usr/local/mh/lib/scan.time、/usr/local/mh/lib/scan.size、そして
bce86c4163a3 Initial revision
kono
parents:
diff changeset
23 /usr/local/mh/lib/scan.timely として用意されています。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
24 他の \fIscan\fR 及び \fIrepl\fR フォーマット・ファイルに関しては、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
25 /usr/local/mh/lib ディレクトリを見て下さい。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
26 あるいは、それはあなたのサイトで書かれたものかも知れませんが。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
27
bce86c4163a3 Initial revision
kono
parents:
diff changeset
28 実際に新しいフォーマットを書いたり、既存のものを編集したりする
bce86c4163a3 Initial revision
kono
parents:
diff changeset
29 \fIMH\fR 熟練者があなたのサイトにいれば、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
30 あなた自身が出来なくてもそれで充分です。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
31 このマニュアルはそれをどうやるかについて説明しています。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
32 なお、C 言語の \fIprintf\fR ルーチンについて熟知している事を前提にしています。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
33
bce86c4163a3 Initial revision
kono
parents:
diff changeset
34 フォーマット文字列は通常のテキストと、`%' で始まる特別な複数文字の
bce86c4163a3 Initial revision
kono
parents:
diff changeset
35 エスケープ・シーケンスから成り立っています。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
36 フォーマット文字列では、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
37 通常の C でのバックスラッシュ文字が使えます。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
38 すなわち、`\\b'、`\\f'、`\\n'、`\\r'、そして `\\t' の事です。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
39 フォーマットファイルでの継続行は `\\' の直後に改行文字が来ます。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
40 文字 `%' または `\\' 自身をフォーマット文字列に置く際には、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
41 それぞれ `%%' と `\\\\' を用います。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
42 .\" 文法を先に述べ、意味を後で述べます。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
43 エスケープ・シーケンスには三つの種類があります。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
44 ヘッダーの \fIコンポーネント\fR、組み込みの \fI関数\fR、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
45 そして流れの \fI制御\fR です。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
46
bce86c4163a3 Initial revision
kono
parents:
diff changeset
47 コンポーネント・エスケープは `%{\fIcomponent\fR\^}' と指定し、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
48 メッセージで見つかったそれぞれのヘッダーが処理されます。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
49 例えば、`%{date}' はメッセージの \*(lqDate:\*(rq 行の内容を意味します。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
50 全てのコンポーネント・エスケープは文字列の値を持ちます。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
51 通常、コンポーネントの値は任意のコントロール文字(タブや改行を含む)を
bce86c4163a3 Initial revision
kono
parents:
diff changeset
52 スペースに変換し、先行する、あるいは連なっているスペースは省かれます。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
53 しかし、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
54 コマンドによっては、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
55 いくつかのコンポーネント・エスケープに違った解釈を与えるかもしれません。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
56 詳細はそれぞれのコマンドのマニュアルを参照して下さい。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
57
bce86c4163a3 Initial revision
kono
parents:
diff changeset
58 関数エスケープは `%(\fIfunction\fR\^)' と指定します。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
59 全ての関数は組み込みで、たいていは文字列か数字の値を持ちます。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
60
bce86c4163a3 Initial revision
kono
parents:
diff changeset
61 .ne 12
bce86c4163a3 Initial revision
kono
parents:
diff changeset
62 .Uh "制御エスケープ"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
63 制御エスケープは `%<'、`%?'、`%|'、`%>'
bce86c4163a3 Initial revision
kono
parents:
diff changeset
64 .\" `%['、`%]'
bce86c4163a3 Initial revision
kono
parents:
diff changeset
65 のどれかです。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
66 これらは組合わさって条件文を構成します。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
67 .sp
bce86c4163a3 Initial revision
kono
parents:
diff changeset
68 .nf
bce86c4163a3 Initial revision
kono
parents:
diff changeset
69 %<条件
bce86c4163a3 Initial revision
kono
parents:
diff changeset
70 \fIフォーマット・テキスト 1\fP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
71 %?条件2
bce86c4163a3 Initial revision
kono
parents:
diff changeset
72 \fIフォーマット・テキスト 2\fP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
73 %?条件3
bce86c4163a3 Initial revision
kono
parents:
diff changeset
74 \fIフォーマット・テキスト 3\fP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
75 \.\.\.
bce86c4163a3 Initial revision
kono
parents:
diff changeset
76 %|
bce86c4163a3 Initial revision
kono
parents:
diff changeset
77 \fIフォーマット・テキスト N\fP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
78 %>
bce86c4163a3 Initial revision
kono
parents:
diff changeset
79 .fi
bce86c4163a3 Initial revision
kono
parents:
diff changeset
80 .sp
bce86c4163a3 Initial revision
kono
parents:
diff changeset
81 ここで余分なスペースは分かりやすくするために付けただけのものです。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
82 これらの構造は明瞭に入れ子にする事が出来ます。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
83 これらのフォームは一般的な \fBif\-elseif\-else\-endif\fP ブロックで、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
84 このうちの一つの \fIフォーマット・テキスト\fP 部分だけが実行される形式です。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
85
bce86c4163a3 Initial revision
kono
parents:
diff changeset
86 `%<' と `%?' の制御エスケープは条件を評価します。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
87 この条件はたぶん、コンポーネントまたは関数のどちらかでしょう。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
88 文法上、次の4つの構造があります。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
89 .sp 1
bce86c4163a3 Initial revision
kono
parents:
diff changeset
90 .nf
bce86c4163a3 Initial revision
kono
parents:
diff changeset
91 %<{component}
bce86c4163a3 Initial revision
kono
parents:
diff changeset
92 %<(function)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
93 %?{component}
bce86c4163a3 Initial revision
kono
parents:
diff changeset
94 %?(function)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
95 .fi
bce86c4163a3 Initial revision
kono
parents:
diff changeset
96 .sp
bce86c4163a3 Initial revision
kono
parents:
diff changeset
97 これらの制御エスケープは、関数またはコンポーネントの値がゼロでない
bce86c4163a3 Initial revision
kono
parents:
diff changeset
98 (整数値のエスケープの場合)か空でない(文字列値のエスケープの場合)かを
bce86c4163a3 Initial revision
kono
parents:
diff changeset
99 調べます。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
100
bce86c4163a3 Initial revision
kono
parents:
diff changeset
101 もしこのテストが真と評価されれば
bce86c4163a3 Initial revision
kono
parents:
diff changeset
102 次の対応する制御エスケープ(`%|'、`%?'、`%>' のうちの一つ)までの
bce86c4163a3 Initial revision
kono
parents:
diff changeset
103 フォーマット・テキストが普通に解釈されます。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
104 次に、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
105 対応する `%>' 制御エスケープまでの全てのフォーマット・テキスト(あれば)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
106 が飛ばされます。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
107 `%>' 制御エスケープは解釈されません。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
108 通常、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
109 解釈は `%>' エスケープの後から再開されます。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
110
bce86c4163a3 Initial revision
kono
parents:
diff changeset
111 しかし、もしこのテストが偽と評価されれば、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
112 次の対応する制御エスケープ(再び `%|'、`%?'、`%>' のうちの一つ)までの
bce86c4163a3 Initial revision
kono
parents:
diff changeset
113 フォーマット・テキストが飛ばされます。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
114 もし出会った制御エスケープが `%?' ならば、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
115 その制御エスケープに対応する条件が評価され、解釈はその評価の後から
bce86c4163a3 Initial revision
kono
parents:
diff changeset
116 前の段落に書かれているように続けられます。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
117 もし出あった制御エスケープが `%|' ならば、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
118 対応する `%>' エスケープまでのフォーマット・テキストが普通に解釈されます。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
119 先述のように、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
120 `%>' 制御エスケープは解釈されません。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
121 通常、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
122 解釈は `%>' エスケープの後から再開されます。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
123
bce86c4163a3 Initial revision
kono
parents:
diff changeset
124 `%?' 制御エスケープとそれに続くフォーマット・テキストは
bce86c4163a3 Initial revision
kono
parents:
diff changeset
125 なくても構いません。そして、たぶんゼロ回またはそれ以上含まれているでしょう。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
126 `%|' 制御エスケープとそれに続くフォーマット・テキストは
bce86c4163a3 Initial revision
kono
parents:
diff changeset
127 なくても構いません。そして、たぶんゼロ回または一回含まれているでしょう。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
128
bce86c4163a3 Initial revision
kono
parents:
diff changeset
129 .\" '%[' と '%]' のエスケープはループ構造を作ります。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
130 .\" 繰り返し実行されるフォーマット文字列に於いて
bce86c4163a3 Initial revision
kono
parents:
diff changeset
131 .\" (\fIscan\fP のように)、これらのエスケープは実行のメイン・ボディを
bce86c4163a3 Initial revision
kono
parents:
diff changeset
132 .\" 区切ります。'%[' の前に現われるフォーマット・テキストは
bce86c4163a3 Initial revision
kono
parents:
diff changeset
133 .\" 最初のメッセージを処理する前に一回だけ実行され、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
134 .\" '%]' エスケープの後に現われるフォーマット・テキストは無視されます
bce86c4163a3 Initial revision
kono
parents:
diff changeset
135 .\" (これらのエスケープは入れ子にする事は出来ません)。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
136 .\"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
137 .Uh "関数エスケープ"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
138 .ne 10
bce86c4163a3 Initial revision
kono
parents:
diff changeset
139 たいていの関数は次のような特定の型の引数を期待します。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
140 .sp 1
bce86c4163a3 Initial revision
kono
parents:
diff changeset
141 .nf
bce86c4163a3 Initial revision
kono
parents:
diff changeset
142 .ta +\w'引数の型 'u +\w'アドレスのコンポーネント 'u
bce86c4163a3 Initial revision
kono
parents:
diff changeset
143 \fI引数の型\fR \fI説明\fR \fI使用例\fR
bce86c4163a3 Initial revision
kono
parents:
diff changeset
144 literal 文字通りの数字、 %(\fIfunc\fR 1234)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
145 または文字列 %(\fIfunc\fR text string)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
146 comp 任意のコンポーネント %(\fIfunc\fR\^{\fIin-reply-to\fR\^})
bce86c4163a3 Initial revision
kono
parents:
diff changeset
147 date 日付のコンポーネント %(\fIfunc\fR\^{\fIdate\fR\^})
bce86c4163a3 Initial revision
kono
parents:
diff changeset
148 addr アドレスのコンポーネント %(\fIfunc\fR\^{\fIfrom\fR\^})
bce86c4163a3 Initial revision
kono
parents:
diff changeset
149 expr 関数、 %(\fIfunc\fR\^(\fIfunc2\fR\^))
bce86c4163a3 Initial revision
kono
parents:
diff changeset
150 コンポーネント、制御、 %(\fIfunc\fR %<{\fIreply-to\fR\^}%|%{\fIfrom\fR\^}%>)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
151 または、それらの入れ子 %(\fIfunc\fR\^(\fIfunc2\fR\^{\fIcomp\fR\^}))
bce86c4163a3 Initial revision
kono
parents:
diff changeset
152 .re
bce86c4163a3 Initial revision
kono
parents:
diff changeset
153 .fi
bce86c4163a3 Initial revision
kono
parents:
diff changeset
154
bce86c4163a3 Initial revision
kono
parents:
diff changeset
155 \fIdate\fR 型と \fIaddr\fR 型は \fIcomp\fR 型と同じ文法ですが、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
156 要求するヘッダー・コンポーネントがそれぞれ、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
157 日付の文字列であるか、アドレスの文字列であるかが違います。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
158
bce86c4163a3 Initial revision
kono
parents:
diff changeset
159 \fIexpr\fR 型の引数を除いて、その他の引数は必須です。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
160 \fIexpr\fR 型の引数に於いては、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
161 先行する `%' はコンポーネント・エスケープと関数エスケープの場合は
bce86c4163a3 Initial revision
kono
parents:
diff changeset
162 必ず省略しなければなりません。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
163 また制御エスケープの場合は必ず付けなければなりません
bce86c4163a3 Initial revision
kono
parents:
diff changeset
164 (関数名と最初の制御エスケープの間にはスペースも必要)。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
165
bce86c4163a3 Initial revision
kono
parents:
diff changeset
166 フォーマット文字列の評価は、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
167 整数レジスタ \fInum\fR と文字列レジスタ \fIstr\fR を持った単純なマシンを
bce86c4163a3 Initial revision
kono
parents:
diff changeset
168 想定して行ないます。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
169 関数エスケープが処理される時、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
170 もし、\fIexpr\fR 型の引数を取る場合に、引数がなかった場合は、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
171 適切に \fInum\fR または \fIstr\fR の現在の値が使われます。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
172
bce86c4163a3 Initial revision
kono
parents:
diff changeset
173 .\" 戻り値
bce86c4163a3 Initial revision
kono
parents:
diff changeset
174 .Uh "戻り値"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
175 コンポーネント・エスケープはそのメッセージ・ヘッダーの値を \fIstr\fR に
bce86c4163a3 Initial revision
kono
parents:
diff changeset
176 書き出します。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
177 \fIinteger\fR 型または \fIboolean\fR 型の戻り値を返す関数は \fInum\fR に、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
178 \fIstring\fR 型の戻り値を返す関数は \fIstr\fR にそれぞれ書き込みます
bce86c4163a3 Initial revision
kono
parents:
diff changeset
179 (\fIboolean\fR 型は \fIinteger\fR 型の部分集合で、値 0=偽 と 1=真 を取ります)。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
180 制御エスケープは \fIboolean\fP 型の値を返し、\fInum\fP に書き出します。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
181
bce86c4163a3 Initial revision
kono
parents:
diff changeset
182 全てのコンポーネント・エスケープと、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
183 \fIinteger\fR 型または \fIstring\fR 型を返す関数は、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
184 レジスタ \fIstr\fR または \fInum\fR に値を書き出す事に加えて、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
185 その値を呼び出し元に返します。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
186 これらのエスケープは
bce86c4163a3 Initial revision
kono
parents:
diff changeset
187 他のエスケープの引数として呼ばれた場合を除いて
bce86c4163a3 Initial revision
kono
parents:
diff changeset
188 (トップレベルから呼ばれた場合は)、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
189 その値を表示します。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
190 \fIboolean\fR 型を返すエスケープは \fInum\fP に書き出した値を
bce86c4163a3 Initial revision
kono
parents:
diff changeset
191 呼び出し元にも返しますが、その値は表示されません。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
192
bce86c4163a3 Initial revision
kono
parents:
diff changeset
193 .nf
bce86c4163a3 Initial revision
kono
parents:
diff changeset
194 .ta \w'Formataddr 'u +\w'Argument 'u +\w'Rboolean 'u
bce86c4163a3 Initial revision
kono
parents:
diff changeset
195 \fI関数\fR \fI引数の型\fR \fI戻り値\fR \fI説明\fR
bce86c4163a3 Initial revision
kono
parents:
diff changeset
196 msg integer メッセージ番号
bce86c4163a3 Initial revision
kono
parents:
diff changeset
197 cur integer メッセージはカレント・メッセージか
bce86c4163a3 Initial revision
kono
parents:
diff changeset
198 .\" unseen integer メッセージは未読か
bce86c4163a3 Initial revision
kono
parents:
diff changeset
199 size integer メッセージのサイズ
bce86c4163a3 Initial revision
kono
parents:
diff changeset
200 strlen integer \fIstr\fR の長さ
bce86c4163a3 Initial revision
kono
parents:
diff changeset
201 width integer 出力バッファの大きさ(バイト単位)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
202 charleft integer 出力バッファに残っているバイト数
bce86c4163a3 Initial revision
kono
parents:
diff changeset
203 timenow integer 現在の UNIX 時刻(秒単位)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
204 me string ユーザーのメールボックス
bce86c4163a3 Initial revision
kono
parents:
diff changeset
205 eq literal boolean \fInum\fR == \fIarg\fR
bce86c4163a3 Initial revision
kono
parents:
diff changeset
206 ne literal boolean \fInum\fR != \fIarg\fR
bce86c4163a3 Initial revision
kono
parents:
diff changeset
207 gt literal boolean \fInum\fR > \fIarg\fR
bce86c4163a3 Initial revision
kono
parents:
diff changeset
208 match literal boolean \fIstr\fR が \fIarg\fR を含むか
bce86c4163a3 Initial revision
kono
parents:
diff changeset
209 amatch literal boolean \fIstr\fR が \fIarg\fR で始まるか
bce86c4163a3 Initial revision
kono
parents:
diff changeset
210 plus literal integer \fIarg\fR + \fInum\fR
bce86c4163a3 Initial revision
kono
parents:
diff changeset
211 minus literal integer \fIarg\fR \- \fInum\fR
bce86c4163a3 Initial revision
kono
parents:
diff changeset
212 divide literal integer \fInum\fR ÷ \fIarg\fR
bce86c4163a3 Initial revision
kono
parents:
diff changeset
213 modulo literal integer \fInum\fR を \fIarg\fR で割った余り
bce86c4163a3 Initial revision
kono
parents:
diff changeset
214 num literal integer \fIarg\fR を \fInum\fR に書き出す
bce86c4163a3 Initial revision
kono
parents:
diff changeset
215 lit literal string \fIarg\fR を \fIstr\fR に書き出す
bce86c4163a3 Initial revision
kono
parents:
diff changeset
216 getenv literal string 環境変数 \fIarg\fR の値を \fIstr\fR に
bce86c4163a3 Initial revision
kono
parents:
diff changeset
217 profile literal string プロファイル・コンポーネント \fIarg\fR を \fIstr\fR に
bce86c4163a3 Initial revision
kono
parents:
diff changeset
218 .\" dat literal int dat[arg] の返り値
bce86c4163a3 Initial revision
kono
parents:
diff changeset
219 nonzero expr boolean \fInum\fR がゼロでない
bce86c4163a3 Initial revision
kono
parents:
diff changeset
220 zero expr boolean \fInum\fR がゼロ
bce86c4163a3 Initial revision
kono
parents:
diff changeset
221 null expr boolean \fIstr\fR が空
bce86c4163a3 Initial revision
kono
parents:
diff changeset
222 nonnull expr boolean \fIstr\fR が空でない
bce86c4163a3 Initial revision
kono
parents:
diff changeset
223 void expr \fIstr\fR または \fInum\fR を設定
bce86c4163a3 Initial revision
kono
parents:
diff changeset
224 comp comp string コンポーネントのテキストを \fIstr\fR に設定
bce86c4163a3 Initial revision
kono
parents:
diff changeset
225 compval comp integer \*(lq\fBatoi\fR(\fIcomp\fR\^)\*(rq を \fInum\fR に
bce86c4163a3 Initial revision
kono
parents:
diff changeset
226 .\" compflag comp integer コンポーネント・フラグ(内部表現)を \fInum\fR に
bce86c4163a3 Initial revision
kono
parents:
diff changeset
227 trim expr \fIstr\fR の後ろに付いたスペースを取り除く
bce86c4163a3 Initial revision
kono
parents:
diff changeset
228 putstr expr \fIstr\fR を表示する
bce86c4163a3 Initial revision
kono
parents:
diff changeset
229 putstrf expr \fIstr\fR を決まった長さで表示する
bce86c4163a3 Initial revision
kono
parents:
diff changeset
230 putnum expr \fInum\fR を表示する
bce86c4163a3 Initial revision
kono
parents:
diff changeset
231 putnumf expr \fInum\fR を決まった長さで表示する
bce86c4163a3 Initial revision
kono
parents:
diff changeset
232 .\" addtoseq literal メッセージをシーケンスに入れる (LBL オプション時)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
233 hencode expr string \fIstr\fR を RFC\-2047 エンコードする
bce86c4163a3 Initial revision
kono
parents:
diff changeset
234 hdecode expr string \fIstr\fR を RFC\-2047 デコードする
bce86c4163a3 Initial revision
kono
parents:
diff changeset
235 .re
bce86c4163a3 Initial revision
kono
parents:
diff changeset
236 .fi
bce86c4163a3 Initial revision
kono
parents:
diff changeset
237
bce86c4163a3 Initial revision
kono
parents:
diff changeset
238 以下の関数は引数として日付のコンポーネントを必要とします。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
239 .sp 1
bce86c4163a3 Initial revision
kono
parents:
diff changeset
240 .nf
bce86c4163a3 Initial revision
kono
parents:
diff changeset
241 .ta \w'Formataddr 'u +\w'Argument 'u +\w'Rboolean 'u
bce86c4163a3 Initial revision
kono
parents:
diff changeset
242 \fI関数\fR \fI引数の型\fR \fI戻り値\fR \fI説明\fR
bce86c4163a3 Initial revision
kono
parents:
diff changeset
243 sec date integer 秒
bce86c4163a3 Initial revision
kono
parents:
diff changeset
244 min date integer 分
bce86c4163a3 Initial revision
kono
parents:
diff changeset
245 hour date integer 時 (0-23)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
246 wday date integer 曜日 (日曜=0)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
247 day date string 曜日 (略号)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
248 weekday date string 曜日 (英語表記)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
249 sday date integer 曜日が明示されているか?
bce86c4163a3 Initial revision
kono
parents:
diff changeset
250 (1=明示,0=暗示される,\-1=分からない)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
251 mday date integer 日
bce86c4163a3 Initial revision
kono
parents:
diff changeset
252 yday date integer 一年の最初から何日目か
bce86c4163a3 Initial revision
kono
parents:
diff changeset
253 mon date integer 月
bce86c4163a3 Initial revision
kono
parents:
diff changeset
254 month date string 月 (略号)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
255 lmonth date string 月 (英語表記)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
256 year date integer 年 (たぶん > 100)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
257 zone date integer タイムゾーン
bce86c4163a3 Initial revision
kono
parents:
diff changeset
258 tzone date string タイムゾーン文字列
bce86c4163a3 Initial revision
kono
parents:
diff changeset
259 szone date integer タイムゾーンは明示されているか?
bce86c4163a3 Initial revision
kono
parents:
diff changeset
260 (1=明示,0=暗示される,\-1=分からない)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
261 date2local date 日付を現地時刻に変える
bce86c4163a3 Initial revision
kono
parents:
diff changeset
262 date2gmt date 日付をグリニッジ時刻に変える
bce86c4163a3 Initial revision
kono
parents:
diff changeset
263 dst date integer サマータイムになっているか?
bce86c4163a3 Initial revision
kono
parents:
diff changeset
264 clock date integer UNIX 時刻(秒単位)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
265 rclock date integer 現在より何秒前か
bce86c4163a3 Initial revision
kono
parents:
diff changeset
266 tws date string 正式な RFC\-822 表記
bce86c4163a3 Initial revision
kono
parents:
diff changeset
267 pretty date string ユーザーに分かりやすい表記
bce86c4163a3 Initial revision
kono
parents:
diff changeset
268 nodate date integer \fIstr\fR が日付文字列でない
bce86c4163a3 Initial revision
kono
parents:
diff changeset
269 .re
bce86c4163a3 Initial revision
kono
parents:
diff changeset
270 .fi
bce86c4163a3 Initial revision
kono
parents:
diff changeset
271
bce86c4163a3 Initial revision
kono
parents:
diff changeset
272 .ne 12
bce86c4163a3 Initial revision
kono
parents:
diff changeset
273 以下の関数は引数として、アドレスのコンポーネントを必要とします。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
274 `*' と書かれている関数は、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
275 戻り値として
bce86c4163a3 Initial revision
kono
parents:
diff changeset
276 ヘッダー・コンポーネントの中の最初に書かれているアドレスだけを保持します。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
277 .sp 1
bce86c4163a3 Initial revision
kono
parents:
diff changeset
278 .nf
bce86c4163a3 Initial revision
kono
parents:
diff changeset
279 .ta \w'Formataddr 'u +\w'Argument 'u +\w'Rboolean 'u
bce86c4163a3 Initial revision
kono
parents:
diff changeset
280 \fI関数\fR \fI引数の型\fR \fI戻り値\fR \fI説明\fR
bce86c4163a3 Initial revision
kono
parents:
diff changeset
281 proper addr string 正式な RFC\-822 表記
bce86c4163a3 Initial revision
kono
parents:
diff changeset
282 friendly addr string ユーザーに分かりやすい表記
bce86c4163a3 Initial revision
kono
parents:
diff changeset
283 addr addr string mbox@host または host!mbox 表記*
bce86c4163a3 Initial revision
kono
parents:
diff changeset
284 pers addr string 個人名*
bce86c4163a3 Initial revision
kono
parents:
diff changeset
285 note addr string コメント文*
bce86c4163a3 Initial revision
kono
parents:
diff changeset
286 mbox addr string ローカル・メールボックス*
bce86c4163a3 Initial revision
kono
parents:
diff changeset
287 mymbox addr integer ユーザーのアドレスか? (0=no,1=yes)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
288 host addr string ホスト・ドメイン*
bce86c4163a3 Initial revision
kono
parents:
diff changeset
289 nohost addr integer ホスト名が書かれてない*
bce86c4163a3 Initial revision
kono
parents:
diff changeset
290 type addr integer ホストの形式* (0=ローカル,1=ネットワーク,
bce86c4163a3 Initial revision
kono
parents:
diff changeset
291 \-1=UUCP,2=分からない)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
292 path addr string ホストの経路指定*
bce86c4163a3 Initial revision
kono
parents:
diff changeset
293 ingrp addr integer アドレスがグループに入っているか*
bce86c4163a3 Initial revision
kono
parents:
diff changeset
294 gname addr string グループ名*
bce86c4163a3 Initial revision
kono
parents:
diff changeset
295 formataddr expr \fIarg\fR を \fIstr\fR に(コンマで区切った)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
296 アドレス・リストとして追加
bce86c4163a3 Initial revision
kono
parents:
diff changeset
297 putaddr literal アドレス・リスト \fIstr\fR を表示する。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
298 引数がラベル(コンポーネント名)になる。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
299 行の幅は \fInum\fR から得る。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
300 .re
bce86c4163a3 Initial revision
kono
parents:
diff changeset
301 .fi
bce86c4163a3 Initial revision
kono
parents:
diff changeset
302
bce86c4163a3 Initial revision
kono
parents:
diff changeset
303 エスケープが入れ子になった場合、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
304 最も内側のものから最も外側のものへと評価されていきます。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
305 最も外側のエスケープは `%' が必要ですが、内側のエスケープは要りません。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
306 例えば、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
307
bce86c4163a3 Initial revision
kono
parents:
diff changeset
308 .ti +.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
309 %<(mymbox{from}) To: %{to}%>
bce86c4163a3 Initial revision
kono
parents:
diff changeset
310
bce86c4163a3 Initial revision
kono
parents:
diff changeset
311 はヘッダー・コンポーネント \*(lqFrom:\*(rq の値を \fIstr\fR に書き出します。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
312 それから (\fImymbox\fR\^) は \fIstr\fR を読み、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
313 その結果を \fInum\fR に書き出します。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
314 そして制御エスケープが \fInum\fR を評価します。もし \fInum\fR がゼロで
bce86c4163a3 Initial revision
kono
parents:
diff changeset
315 ない場合は、文字列 \*(lqTo: \*(rq とそれに続けてヘッダー・コンポーネント
bce86c4163a3 Initial revision
kono
parents:
diff changeset
316 \*(lqTo:\*(rq の値が表示されます。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
317
bce86c4163a3 Initial revision
kono
parents:
diff changeset
318 (\fImymbox\fR\^{\fIcomp\fR\^}) について、補足説明をしておきましょう。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
319 一般に、これはヘッダー・コンポーネント \*(lq\fIcomp\fR\*(rq にある
bce86c4163a3 Initial revision
kono
parents:
diff changeset
320 全てのアドレスを、ユーザーのメールボックス名及び全ての
bce86c4163a3 Initial revision
kono
parents:
diff changeset
321 \fIAlternate-Mailboxes\fR と比較します。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
322 これは、どれかのアドレスと一致すれば、真を返しますが、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
323 もし \*(lq\fIcomp\fR\*(rq ヘッダーがメッセージに存在しない場合も
bce86c4163a3 Initial revision
kono
parents:
diff changeset
324 真を返します。必要なら、この場合には (\fInull\fR\^) 関数で明示的に
bce86c4163a3 Initial revision
kono
parents:
diff changeset
325 調べておきましょう。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
326 \fIAlternate-Mailboxes\fR に関しては \fImh-profile\fR\0(5) も参照して下さい。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
327
bce86c4163a3 Initial revision
kono
parents:
diff changeset
328 関数エスケープまたはコンポーネント・エスケープが解釈され、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
329 結果が直ちに表示される時には、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
330 表示幅を指定する事が出来、与えられた文字数内にきっちりと表示されます。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
331 例えば、%4(\fIsize\fR\^) というような数値のエスケープはメッセージのサイズを
bce86c4163a3 Initial revision
kono
parents:
diff changeset
332 多くとも 4桁で表示します。もし、桁あふれをした場合は、最初の位置に
bce86c4163a3 Initial revision
kono
parents:
diff changeset
333 `?' が出力されます(例えば `?234')。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
334 %4(\fIme\fR\^) というような文字列のエスケープは最初の 4文字を表示し、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
335 それ以降は切り捨てます。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
336 表示幅より短い場合は、右側に指定の幅まで文字(通常、空白)を埋めます。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
337 もし、表示幅指定がゼロから始まってる場合は、この埋める文字はゼロになります。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
338
bce86c4163a3 Initial revision
kono
parents:
diff changeset
339 上述のように、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
340 関数 (\fIputnumf\fR\^) と (\fIputstrf\fR\^) は、その結果を
bce86c4163a3 Initial revision
kono
parents:
diff changeset
341 先行する表示幅指定で指定された文字数で表示します。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
342 例えば、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
343 %06(\fIputnumf\fR\^(\fIsize\fR\^)) はメッセージのサイズを
bce86c4163a3 Initial revision
kono
parents:
diff changeset
344 6文字の幅で表示し、頭はゼロで埋められます。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
345 %14(\fIputstrf\^\fR{\fIfrom\^\fR}) は
bce86c4163a3 Initial revision
kono
parents:
diff changeset
346 \*(lqFrom:\*(rq ヘッダー・コンポーネントを 14文字の幅で表示し、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
347 後ろはスペースで埋められます。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
348 \fIputstrf\fR に対して、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
349 表示幅として、負の数を与えると、その文字列はその幅の中に右寄せで表示され、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
350 埋められる文字は左側におかれます。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
351 なお、関数 (\fIputnum\fR\^) と (\fIputstr\fR\^) は結果を必要最小限の文字数で
bce86c4163a3 Initial revision
kono
parents:
diff changeset
352 表示し、表示幅指定は無視します。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
353
bce86c4163a3 Initial revision
kono
parents:
diff changeset
354 出力可能な表示幅は内部レジスタに保存されていて、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
355 その幅を越える出力は全て捨てられます。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
356
bce86c4163a3 Initial revision
kono
parents:
diff changeset
357 コメントは関数の引数が期待される場所を除いて、たいていの場所に置く事が
bce86c4163a3 Initial revision
kono
parents:
diff changeset
358 出来ます。コメントは `%;' で始まり、(エスケープされてない)改行で終ります。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
359
bce86c4163a3 Initial revision
kono
parents:
diff changeset
360 これを全て頭に置いた上で、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
361 ここに \fIscan\fR のデフォルトのフォーマット文字列があります。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
362 これを読みやすくするために、いくつかの部分に分けます。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
363 最初の部分は次の通りです。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
364
bce86c4163a3 Initial revision
kono
parents:
diff changeset
365 .ti +.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
366 %4(msg)%<(cur)+%| %>%<{replied}\-%?{encrypted}E%| %>
bce86c4163a3 Initial revision
kono
parents:
diff changeset
367
bce86c4163a3 Initial revision
kono
parents:
diff changeset
368 これはまず、メッセージ番号を 4桁で表示する事を表しています。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
369 次に、メッセージがカレント・メッセージである場合は `+'、そうでない場合は
bce86c4163a3 Initial revision
kono
parents:
diff changeset
370 スペースを出力する事を表しています。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
371 次に、もし \*(lqReplied:\*(rq 行が存在するなら `\-'、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
372 存在しない場合は \*(lqEncrypted:\*(rq を調べ、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
373 存在するなら `E'、そうでない場合はスペースを表示します。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
374 次、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
375
bce86c4163a3 Initial revision
kono
parents:
diff changeset
376 .ti +.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
377 %02(mon{date})/%02(mday{date})
bce86c4163a3 Initial revision
kono
parents:
diff changeset
378
bce86c4163a3 Initial revision
kono
parents:
diff changeset
379 月と日をそれぞれ 2桁(一桁の場合は頭に 0 が付く)で、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
380 スラッシュで区切って表示します。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
381 そして、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
382
bce86c4163a3 Initial revision
kono
parents:
diff changeset
383 .ti +.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
384 %<{date} %|*%>
bce86c4163a3 Initial revision
kono
parents:
diff changeset
385
bce86c4163a3 Initial revision
kono
parents:
diff changeset
386 \*(lqDate:\*(rq 行が存在すればスペース、さもなくば `*'。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
387 次、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
388
bce86c4163a3 Initial revision
kono
parents:
diff changeset
389 .ti +.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
390 %<(mymbox{from})%<{to}To:%14(friendly{to})%>%>
bce86c4163a3 Initial revision
kono
parents:
diff changeset
391
bce86c4163a3 Initial revision
kono
parents:
diff changeset
392 もしメッセージが自分が出したものであり、且つ \*(lqTo:\*(rq ヘッダーがあるなら、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
393 `To:' と \*(lqTo:\*(rq 行の最初のアドレスをユーザーに分かりやすい表記で
bce86c4163a3 Initial revision
kono
parents:
diff changeset
394 表示します。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
395 続いて、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
396
bce86c4163a3 Initial revision
kono
parents:
diff changeset
397 .ti +.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
398 %<(zero)%17(friendly{from})%>
bce86c4163a3 Initial revision
kono
parents:
diff changeset
399
bce86c4163a3 Initial revision
kono
parents:
diff changeset
400 もし、上記二つの条件判断のどちらかに失敗した場合、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
401 \*(lqFrom:\*(rq 行がユーザーに分かりやすい表記で表示されます。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
402 制御エスケープの条件判断は \fInum\fR レジスタに値を設定するので、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
403 後でそれを利用する事によって、AND や OR の処理をさせる事が出来ます。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
404 最後に、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
405
bce86c4163a3 Initial revision
kono
parents:
diff changeset
406 .ti +.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
407 %{subject}%<{body}<<%{body}%>
bce86c4163a3 Initial revision
kono
parents:
diff changeset
408
bce86c4163a3 Initial revision
kono
parents:
diff changeset
409 \*(lqSubject:\*(rq 行と ボディの最初の部分(あれば)を表示します。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
410
bce86c4163a3 Initial revision
kono
parents:
diff changeset
411 もっと複雑な例として、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
412 次はデフォルトの \fIreplcomps\fR フォーマット・ファイルを考えてみましょう。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
413
bce86c4163a3 Initial revision
kono
parents:
diff changeset
414 .ti +.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
415 %(lit)%(formataddr %<{reply-to}
bce86c4163a3 Initial revision
kono
parents:
diff changeset
416
bce86c4163a3 Initial revision
kono
parents:
diff changeset
417 まず \fIstr\fR レジスタを空にし、\*(lqReply-To:\*(rq ヘッダーが存在するなら
bce86c4163a3 Initial revision
kono
parents:
diff changeset
418 それを整形します。もし存在しないなら、以下の else-if 部分が実行されます。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
419
bce86c4163a3 Initial revision
kono
parents:
diff changeset
420 .ti +.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
421 %?{from}%?{sender}%?{return-path}%>)\\
bce86c4163a3 Initial revision
kono
parents:
diff changeset
422
bce86c4163a3 Initial revision
kono
parents:
diff changeset
423 \*(lqFrom:\*(rq、\*(lqSender:\*(rq、そして \*(lqReturn-Path:\*(rq
bce86c4163a3 Initial revision
kono
parents:
diff changeset
424 ヘッダーのうち一つが存在した時点で止まります。で、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
425
bce86c4163a3 Initial revision
kono
parents:
diff changeset
426 .ti +.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
427 %<(nonnull)%(void(width))%(putaddr To: )\\n%>\\
bce86c4163a3 Initial revision
kono
parents:
diff changeset
428
bce86c4163a3 Initial revision
kono
parents:
diff changeset
429 もし \fIformataddr\fR の結果が空でなかった場合、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
430 それがアドレスとして \fIwidth\fR の幅で (必要なら行を折り返して)、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
431 頭に \*(lqTo: \*(rq をつけて表示します。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
432
bce86c4163a3 Initial revision
kono
parents:
diff changeset
433 .ti +.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
434 %(lit)%(formataddr{to})%(formataddr{cc})%(formataddr(me))\\
bce86c4163a3 Initial revision
kono
parents:
diff changeset
435
bce86c4163a3 Initial revision
kono
parents:
diff changeset
436 \fIstr\fR を空にし、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
437 \*(lqTo:\*(rq と \*(lqCc:\*(rq ヘッダー、そしてユーザーのアドレス
bce86c4163a3 Initial revision
kono
parents:
diff changeset
438 (\fIrepl\fR の \*(lq\-cc\*(rq オプションで何を指定したかに依る)が
bce86c4163a3 Initial revision
kono
parents:
diff changeset
439 整形されます。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
440
bce86c4163a3 Initial revision
kono
parents:
diff changeset
441 .ti +.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
442 %<(nonnull)%(void(width))%(putaddr cc: )\\n%>\\
bce86c4163a3 Initial revision
kono
parents:
diff changeset
443
bce86c4163a3 Initial revision
kono
parents:
diff changeset
444 結果が空でない場合は、上と同じように \*(lqcc: \*(rq を付けて表示します。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
445
bce86c4163a3 Initial revision
kono
parents:
diff changeset
446 .ti +.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
447 %<{fcc}Fcc: %{fcc}\\n%>\\
bce86c4163a3 Initial revision
kono
parents:
diff changeset
448
bce86c4163a3 Initial revision
kono
parents:
diff changeset
449 もし \fIrepl\fR に \*(lq\-fcc\ folder\*(rq オプションが指定された場合
bce86c4163a3 Initial revision
kono
parents:
diff changeset
450 (%{\fIfcc\fR\^} に関する詳細は \fIrepl\fR\0(1) を参照)、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
451 \*(lqFcc:\*(rq ヘッダーが出力されます。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
452
bce86c4163a3 Initial revision
kono
parents:
diff changeset
453 .ti +.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
454 %<{subject}Subject: Re: %{subject}\\n%>\\
bce86c4163a3 Initial revision
kono
parents:
diff changeset
455
bce86c4163a3 Initial revision
kono
parents:
diff changeset
456 \*(lqSubject:\*(rq コンポーネントが存在する時は、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
457 適切な返信サブジェクトが出力されます。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
458
bce86c4163a3 Initial revision
kono
parents:
diff changeset
459 .nf
bce86c4163a3 Initial revision
kono
parents:
diff changeset
460 .ti +.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
461 %<{date}In-reply-to: Your message of "\\
bce86c4163a3 Initial revision
kono
parents:
diff changeset
462 .ti +.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
463 %<(nodate{date})%{date}%|%(pretty{date})%>."%<{message-id}
bce86c4163a3 Initial revision
kono
parents:
diff changeset
464 .ti +.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
465 %{message-id}%>\\n%>\\
bce86c4163a3 Initial revision
kono
parents:
diff changeset
466 .ti +.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
467 \-\-\-\-\-\-\-\-
bce86c4163a3 Initial revision
kono
parents:
diff changeset
468 .fi
bce86c4163a3 Initial revision
kono
parents:
diff changeset
469
bce86c4163a3 Initial revision
kono
parents:
diff changeset
470 もし \*(lqDate:\*(rq コンポーネントが存在するなら、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
471 \*(lqIn-Reply-To:\*(rq ヘッダーが \*(lqYour message of \*(rq を付けて
bce86c4163a3 Initial revision
kono
parents:
diff changeset
472 表示します。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
473 もし、日付が解析可能なら、ユーザーに分かりやすい形式で出力されます。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
474 さもなくば、そのまま出力します。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
475 \*(lqMessage-ID:\*(rq があれば、それも含めます。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
476 ダッシュ(`\-')の列は生のテキストなので、そのまま出力されます。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
477
bce86c4163a3 Initial revision
kono
parents:
diff changeset
478 この最後の部分はもうちょっと詳しく述べるのに良い例です。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
479 ここにその部分を再び仮想的なコードで書いてみましょう。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
480 .sp 1
bce86c4163a3 Initial revision
kono
parents:
diff changeset
481 .nf
bce86c4163a3 Initial revision
kono
parents:
diff changeset
482 .in +.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
483 .ta .5i 1i 1.5i 2i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
484 if (comp_exists(date)) then
bce86c4163a3 Initial revision
kono
parents:
diff changeset
485 print (\*(lqIn-reply-to: Your message of \\\*(lq\*(rq)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
486 if (not_date_string(date.value)) then
bce86c4163a3 Initial revision
kono
parents:
diff changeset
487 print (date.value)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
488 else
bce86c4163a3 Initial revision
kono
parents:
diff changeset
489 print (pretty(date.value))
bce86c4163a3 Initial revision
kono
parents:
diff changeset
490 endif
bce86c4163a3 Initial revision
kono
parents:
diff changeset
491 print (\*(lq\\\*(rq\*(rq)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
492 if (comp_exists(message-id)) then
bce86c4163a3 Initial revision
kono
parents:
diff changeset
493 print (\*(lq\\n\\t\*(rq)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
494 print (message-id.value)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
495 endif
bce86c4163a3 Initial revision
kono
parents:
diff changeset
496 print (\*(lq\\n\*(rq)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
497 endif
bce86c4163a3 Initial revision
kono
parents:
diff changeset
498 .re
bce86c4163a3 Initial revision
kono
parents:
diff changeset
499 .in -.5i
bce86c4163a3 Initial revision
kono
parents:
diff changeset
500 .fi
bce86c4163a3 Initial revision
kono
parents:
diff changeset
501 .sp 1
bce86c4163a3 Initial revision
kono
parents:
diff changeset
502 これは複雑に見えますが、実際上、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
503 この方法は個々のヘッダー行を取り出し、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
504 ユーザーが好む任意の形式で出力するのに充分に柔軟性のあるものです。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
505 .Fi
bce86c4163a3 Initial revision
kono
parents:
diff changeset
506 無し。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
507 .Pr
bce86c4163a3 Initial revision
kono
parents:
diff changeset
508 無し。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
509 .Sa
bce86c4163a3 Initial revision
kono
parents:
diff changeset
510 scan(1), repl(1), ap(8), dp(8)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
511 .De
bce86c4163a3 Initial revision
kono
parents:
diff changeset
512 無し。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
513 .Co
bce86c4163a3 Initial revision
kono
parents:
diff changeset
514 無し。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
515 .Hi
bce86c4163a3 Initial revision
kono
parents:
diff changeset
516 このソフトは MH 6.3 のために寄贈されました。その前までは、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
517 出力形式の指定はもっと書き易いものでしたが、極めて柔軟性に欠けるものでした。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
518 .Bu
bce86c4163a3 Initial revision
kono
parents:
diff changeset
519 \fIMH\fR を BERK オプション付で構築したホストでは、
bce86c4163a3 Initial revision
kono
parents:
diff changeset
520 アドレスの解析は出来ません。
bce86c4163a3 Initial revision
kono
parents:
diff changeset
521 .En