diff --git a/ja_JP.eucJP/man/man1/checknr.1 b/ja_JP.eucJP/man/man1/checknr.1 index e8dfb4b12f..fb2bca45cc 100644 --- a/ja_JP.eucJP/man/man1/checknr.1 +++ b/ja_JP.eucJP/man/man1/checknr.1 @@ -1,161 +1,161 @@ .\" Copyright (c) 1980, 1990, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)checknr.1 8.1 (Berkeley) 6/6/93 .\" %FreeBSD: src/usr.bin/checknr/checknr.1,v 1.5 1999/08/28 00:59:33 peter Exp % .\" jpman %Id: checknr.1,v 1.3 1997/06/18 14:14:50 jsakai Stab % .\" .Dd June 6, 1993 .Dt CHECKNR 1 .Os BSD 4 .Sh 名称 .Nm checknr .Nd nroff および troff ファイルをチェックする .Sh 書式 .Nm checknr .Op Fl a Ns Ar \&.x1.y1.x2.y2. ... \&.xn.yn .Op Fl c Ns Ar \&.x1.x2.x3 ... \&.xn .Op Fl s .Op Fl f .Ar file .Sh 解説 .Nm checknr は、 .Xr nroff 1 や .Xr troff 1 の入力ファイルのリストに対して、デリミタの開始および終了の不一致や 間違ったコマンドを含む、ある種類のエラーをチェックします。 ファイルが指定されなかった場合、 .Nm checknr は標準入力をチェックします。 .Pp オプション .Bl -tag -width Ds .It Fl a 既知マクロのリストに追加のマクロペアを追加します。 その後ろには 6 文字のグループが続かなくてはなりません。 各グループはマクロのペアを定義します。 6 文字はピリオドと最初のマクロ名、更にピリオドと2番目のマクロ名です。 例えば、 .BS と .ES のペアを定義するためには、 .Sq Li \-a.BS.ES を使ってください。 .It Fl c 通常なら未定義であるといわれるコマンドを定義します。 .It Fl f .Nm checknr に .Ql \ef のフォント変更を無視させます。 .It Fl s .Ql \es のサイズ変更を無視させます。 .El .Pp デリミタのチェックは以下の通りです。 .Bl -enum .It \efx ... \efP を使ったフォントの変更。 .It \esx ... \es0 を使ったサイズの変更。 .It \&.TS と .TEマクロのようにいつもペアで使われる、 ``開始...終了''形式のマクロ。 .El .Pp .Nm checknr は、 .Xr lint 1 と同じように、 .Nm checknr によるチェックを念頭に置いて作成されたドキュメントを チェックするのに用いることを意図しています。 .\"(チェック者注) この部分若干意訳。原文は以下の通り。(sakai@jp.freebsd.org) .\".Nm Checknr .\"is intended for use on documents that are prepared with .\".Nm checknr .\"in mind, much the same as .\".Xr lint 1 . コマンドは、記述形式が .Ql \ef と .Ql \es コマンドに対して、 各 .Ql \efx は .Ql \efP で終了されており、 .Ql \esx は .Ql \es0 で終了されているようなものを期待しています。 -直接次のフォントに切替えたり、 +直接次のフォントに切り替えたり、 明示的にもとのフォントやポイントサイズを指定したりしても動作しますし、 実際そのようにしているドキュメントは数多く存在しますが、 .Nm checknr はそのような使用法に対して警告を発します。 おそらく .Ql \efP と .Ql \es0 形式を使うほうがよいはずなので、 このようなスタイルを用いることは、 ドキュメント執筆スタイルの向上に寄与すると考えて下さい。 .Pp .Nm checknr は、 .Xr ms 7 と .Xr me 7 マクロパッケージを認識します。 .Sh 関連項目 .Xr nroff 1 , .Xr troff 1 , .Xr me 7 , .Xr ms 7 .\" .Xr checkeq 1 , .Sh 診断 .Bd -ragged -compact デリミタが一致しない時に、警告を出します。 コマンドを認識できない時に、警告を出します。 コマンドの文法について、さまざまな警告を出します。 .Ed .Sh バグ .Fl a を用いて 1 文字のマクロ名を定義する方法がありません。 .Pp 条件文のような、ある種の正当な構造を認識できません。 .Sh 歴史 .Nm コマンドは .Bx 4.0 から登場しました。 diff --git a/ja_JP.eucJP/man/man1/ci.1 b/ja_JP.eucJP/man/man1/ci.1 index 170dbecd3a..d25e30f086 100644 --- a/ja_JP.eucJP/man/man1/ci.1 +++ b/ja_JP.eucJP/man/man1/ci.1 @@ -1,888 +1,888 @@ .\" jpman %Id: ci.1,v 1.2 1997/06/01 11:29:01 horikawa Stab % .ds Rv \\$3 .ds Dt \\$4 .. .Id %FreeBSD: src/gnu/usr.bin/rcs/ci/ci.1,v 1.6 1999/08/27 23:36:38 peter Exp % .ds i \&\s-1ISO\s0 .ds r \&\s-1RCS\s0 .ds u \&\s-1UTC\s0 .if n .ds - \%-- .if t .ds - \(em .TH CI 1 \*(Dt GNU .SH 名称 ci \- RCS ファイルにリビジョンをチェックインする .SH 書式 .B ci .RI [ options ] " file " .\|.\|. .SH 解説 .B ci は \*r ファイルに新たなリビジョンを格納します。 引数のうち、\*r ファイルの拡張子形式に一致する ファイル名を \*r ファイルとみなします。 それ以外のファイル名は、新たなリビジョンを含んだワークファイルとみなします。 .B ci はワークファイルの内容を対応した \*r ファイルに格納します。 もしワークファイルのみが指定されたなら、 .B ci はサブディレクトリ \*r、次にワークファイルがあるディレクトリの順に 対応する \*r ファイルを検索します。 詳細は後述の .SM "ファイル名規則" の項を参照してください。 .PP .B ci が動作するには、 .B ci を起動したユーザが \*r ファイルのアクセスリスト に登録されているか、アクセスリストが空であるか、 ユーザが \*r ファイルの持ち主であるか、 あるいはスーパユーザである必要があります。 すでに存在する枝 (branch) に新しいリビジョンを追加するには、 枝の先端 (tip) リビジョンが、 追加しようとするユーザによってロックされていなければなりません。 ロックされていない場合、新たな枝のみ作成可能です。 非厳格モード ( .BR rcs (1) 参照) の場合、 ファイルの所有者に対してはこの制限はありません。 他人が行っているロックは、 .B rcs コマンドによって解除できます。 .PP .B \-f オプションが指定されていなければ、 .B ci は追加しようとするリビジョンと直前のリビジョンとの比較を行います。 違いがなかった場合、新たなリビジョンを作成するかわりに、 ワークファイルを元のリビジョンのものに復元します。 復元するときには、ci はいったんワークファイルを削除し、 ロックを解除します。 .B "ci\ \-l" はロックし、 .B "ci\ \-u" はロックを解除します。 これらのオプションが指定されていれば、あたかも直前のリビジョンに対して .B "co\ \-l" または .B "co\ \-u" を実行したかのようにして直前のリビジョンの内容を取り出します。 復元が行われる場合、 .B \-n と .B \-s オプションは復元されるリビジョンに対して作用します。 .PP リビジョンを格納するときに、 .B ci はログメッセージの入力を促すプロンプトを表示します。 ログメッセージは、そのリビジョンの変更点の要約です。 ファイル終端 (EOF) あるいは、 ピリオド .B \&. のみからなる行によって入力を完了させます。 複数のファイルが登録される場合、 .B ci は前に入力したログメッセージを 再利用するかどうかを聞いてきます。 もし標準入力が端末でなければ、 .B ci は確認を行わず、 登録されるすべてのファイルに対して同じログメッセージを使用します。 .B \-m オプションの項も参照してください。 .PP もし \*r ファイルが存在しなければ、 .B ci は新規に \*r ファイルを作成し、 ワークファイルの内容を初期リビジョン (デフォルトでは .BR 1.1 ) として格納します。 その場合、アクセスリストは空に初期化されます。 初期リビジョンを格納するときは、 ログメッセージのかわりに ファイルの内容を記述したテキストを入力します (後述の .B \-t オプションの項を参照してください)。 .PP 登録するリビジョン番号 ( .I rev ) は、 .BR \-f , .BR \-i , .BR \-I , .BR \-j , .BR \-k , .BR \-l , .BR \-M , .BR \-q , .BR \-r , .B \-u のオプションのうちのいずれかで指定することができます。 .I rev はシンボル、数値、あるいは両者の組み合わせたものです。 .I rev で使用するシンボル名は定義済みでなければなりません; チェックイン時にシンボル名を割り当てる方法については .B \-n および .B \-N を参照して下さい。 もし .I rev が .B $ ならば、 .B ci はワークファイル中のキーワードからリビジョン番号を決定します。 .PP もし .I rev がピリオドから始まる場合、デフォルトの枝 (通常は幹 (trunk)) に格納されます。 もし .I rev が枝番号に続いてピリオドである場合、当該枝の最新のリビジョンが使用されます。 .PP .I rev がリビジョン番号の場合、 それは登録する枝のなかで最も大きな値である必要があります。 さもなければ、新しい枝を作成する必要があります。 .PP .I rev がリビジョン番号ではなく枝番号の場合、 その枝に対する新しいリビジョンが作成されます。 新しいリビジョン番号は、その枝の先端リビジョン番号に 1 を加えたものとなります。 もし .I rev が存在しない枝番号ならば、新たな枝が作成され、初期リビジョンとして .IB rev .1 が作成されます。 .br .ne 8 .PP .I rev が省略された場合、 .B ci はユーザが行った最後のロックからリビジョン番号を決定します。 ユーザがある枝の先端リビジョンをロックしている場合は、 新たなリビジョンがその枝に追加されます。 新しいリビジョン番号は 先端リビジョン番号に 1 を加えたものになります。 ユーザが先端ではないリビジョンをロックしている場合は、 新たな枝が作成されます。 新たな枝番号は、ロック対象のリビジョンの 最も大きな枝番号に 1 を加えたものになります。 デフォルトでは、新たな枝やリビジョンの番号は .B 1 となります。 .PP .I rev が省略され、ユーザがロックを行わず、そのファイルの所有者であり、 かつロックが .I 非厳格モード であるなら、 デフォルトの枝 (通常は幹 (trunk); .BR rcs (1) の .B \-b オプションの項を参照) に新たなリビジョンが作成されます。 .PP 例外: 幹 (trunk) においてリビジョンを追加することはできますが、 途中に挿入することはできません。 .SH オプション .TP .BI \-r rev リビジョン .I rev をチェックインします。 .TP .B \-r .B \-r オプションをリビジョン抜きで使用した場合、 .B ci にとって特別な意味が有ります。他の \*r コマンドでは .B \-r オプションを単体で使用するとデフォルト枝の最新のリビジョンを指定します。 しかし、 .B ci ではロック解除、ワークファイル削除を行い、 シェルのエイリアスやスクリプトによりデフォルトとされてしまった .B \-l や .B \-u オプションの効果を打ち消します。 .TP .BR \-l [\f2rev\fP] .B \-r と同様の動作を行ったあと、 .B "co\ \-l" と同様の動作も行います。 すなわち、登録されたリビジョンは即座にロックされ、チェックアウトされます。 これは、リビジョンをチェックインしてさらに編集を続けたい場合に便利です。 .TP .BR \-u [\f2rev\fP] .B \-l とほぼ同様の動作をしますが、登録されたリビジョンはロックされません。 これは、チェックインしたリビジョンの内容をすぐに参照したい場合に便利です。 .RS .PP .BR \-l 、リビジョン無し .BR \-r , .B \-u オプションは、最後に指定したもののみが効力を持ちます。 たとえば、 .B "ci\ \-u\ \-r" は .B "ci\ \-r" と等価です。 リビジョン無し .B \-r が .B \-u に優先するからです。 .RE .TP .BR \-f [\f2rev\fP] 強制的に登録します。 直前のリビジョンとの違いがない場合にも、 新しいリビジョンとして登録します。 .TP .BR \-k [\f2rev\fP] リビジョン番号などをローカルに算出せずに、 ワークファイルからキーワードを探し、 リビジョン番号、作成日時、状態、作者 ( .BR co (1) を参照) を検索し、登録されるリビジョンに割り当てます。 さらに、 .B ci を起動したユーザ名と実際にチェックインされた日付を含む デフォルトのログメッセージを作成します。 本オプションは、配布されたソフトウェアを登録するのに便利です。 複数のサイトに配布されたリビジョンは、 元のリビジョン番号、作成日付、状態、作者を保存するために、 .B \-k オプションを使って登録するべきです。 ワークファイルのキーワードから取り出した値とログメッセージは、 .BR \-d , .BR \-m , .BR \-s , .B \-w や、他のリビジョン番号を生成するようなオプションにより 変更することができます。 .TP .BR \-q [\f2rev\fP] 沈黙モードです。 診断メッセージを表示しません。 直前のリビジョンから変更がない場合、 .B \-f オプションを指定していなければ、登録を行いません。 .TP .BR \-i [\f2rev\fP] 最初のチェックイン; \*r ファイルが既に有る時にはエラー報告します。 特定のアプリケーションのレース状態を避けます。 .TP .BR \-j [\f2rev\fP] 初期化を行わず、チェックインします; \*r ファイルが無いとエラー報告します。 .TP .BR \-I [\f2rev\fP] 対話モードで動作します。 たとえ標準入力が端末でなくても、ユーザに対して問い合わせを行います。 .TP .BR \-d "[\f2date\fP]" チェックイン日付として指定された .I date を用います。 .I date は .BR co (1) で記述された自由形式で指定することができます。 これは、チェックイン日時をごまかしたい場合や、 日付キーワードがワークファイルにないにもかかわらず .B \-k オプションを使いたい場合に便利です。 .I date が指定されなかった場合、ワークファイルの最終更新日付が用いられます。 .TP .BR \-M [\f2rev\fP] 作成されるワークファイルの最終更新日付を、 取り出されたリビジョンの日付にします。 たとえば、 .BI "ci\ \-d\ \-M\ \-u" "\ f" は、 .I f の内容がキーワード置換により変更された場合も最終更新日時を変更しません。 本オプションを指定すると .BR make (1) に影響を与えるので、注意して使用する必要があります。 .TP .BI \-m "msg" チェックインするすべてのリビジョンのログメッセージとして .I msg を用います。 慣習的に .B # で始まるログメッセージはコメントであり、GNU Emacs の .B vc パッケージのようなプログラムはこれを無視します。 また、 .BI { clumpname } (の後に空白が続く) ログメッセージは可能であればまとめられることを意味します。 それはたとえ別々のファイルに関連づけられていてもです; .BI { clumpname } ラベルは、まとめる目的でのみ使用されます。 それ自身はログメッセージであるとは見なされません。 .TP .BI \-n "name" チェックインしたリビジョンにシンボリック名 .I name をつけます。 もし同じシンボリック名が別のリビジョンに割り当てられていた場合、 .B ci はエラーメッセージを出力します。 .TP .BI \-N "name" .B -n と同様の動作を行います。 ただし、同じシンボリック名が他のリビジョンに割り当てられていた場合は、 再割り当てを行います (こちらを優先します)。 .TP .BI \-s "state" チェックインされるリビジョンの状態を .I state とします。デフォルトは .B Exp (Experimental: 実験的) です。 .TP .BI \-t file \*r ファイル中の内容記述テキストをファイル .I file の内容で置き換えます。 すでに内容記述テキストがある場合はこれを削除します。ファイル名 .I file は .B \- で始まってはいけません。 .TP .BI \-t\- string \*r ファイル中の内容記述テキストを文字列 .I string で置き換えます。 すでに内容記述テキストがある場合は削除されます。 .RS .PP .B \-t オプションは、どちらの形式で使う場合も、 最初のチェックイン時にしか意味を持ちません。 それ以外の場合は単に無視されます。 .PP 最初のチェックイン時に .B \-t オプションが指定されなかった場合、 .B ci は標準 入力から内容記述テキストを読み込みます。 テキストは、ファイル終端 (EOF) あるいはピリオド ( .Br \&. ) のみの行で終了します。 ユーザへの問い合わせが可能な場合には、 テキストの入力を促すプロンプトが表示されます ( .B \-I オプション参照)。 .PP 旧バージョンとの互換性のため、引数のない .B \-t オプションは無視されます。 .RE .TP .B \-T 新しいリビジョンが存在し、 \*r ファイルの修正時刻が新しいリビジョンの時刻よりも古ければ、 \*r ファイルの修正時刻に対して新しいリビジョンの時刻を代入します; そうでない場合は \*r ファイルの修正時刻は保たれます。 リビジョンをロックした場合は、 .B ci は通常 \*r ファイルの修正時刻を現在の時刻に設定します。 なぜならロックが \*r ファイルに格納され、 ロックの削除は \*r ファイルの変更を要するからです。 \*r ファイルがワークファイルよりも新しくなる方法として 2 通り有ります: まず、 .B "ci\ \-M" は現在時刻以前の日付でワークファイルを作成します; 2 番目に、直前のバージョンを回復する時、 ワークファイルを変更しない場合にも \*r ファイルは変更され得ます。 \*r ファイルのワークファイルにおける .BR make (1) 依存により、上記 2 ケースは過剰の再コンパイルという結果になり得ます。 .B \-T オプションを使用することで、\*r ファイルの日付をごまかし、 再コンパイルを禁止します。 このオプションは注意して使って下さい; あるワークファイルのチェックインが、 同じ \*r ファイルに関連づけられている別のワークファイルに影響を及ぼすべき 時でも、再コンパイルを抑制し得ます。 例えば、\*r ファイルの時刻を 01:00、 (変更された) ワークファイルの時刻を 02:00、 別のワークファイルのコピーの時刻を 03:00、 現在の時刻を 04:00 とします。 ここで、 .B "ci\ \-d\ \-T" とすると、\*r ファイルの時刻は通常の 04:00 ではなく 02:00 になります; この結果、 .BR make (1) は別のコピーが \*r ファイルよりも新しいと (誤って) 認識します。 .TP .BI \-w "login" 指定された .I login をリビジョンの作者として登録します。 作者名をごまかしたい場合や、 作者キーワードがワークファイルにないにもかかわらず .B -k オプションを使いたい場合に便利です。 .BI \-V \*r のリビジョン番号を表示します。 .TP .BI \-V n \*r システムのバージョン .I n のエミュレーションを行います。詳細は .BR co (1) を参照してください。 .TP .BI \-x "suffixes" \*r ファイルの拡張子を指定します。 拡張子が空ではない場合、 拡張子まで含めたすべてのパス名を \*r ファイル名であるとみなします。 拡張子が空の場合は、 .BI RCS/ path または .IB path1 /RCS/ path2 形式のものを \*r ファイル名であるとみなします。 本オプションの場合、 .B / で区切ることにより、複数の拡張子を指定できます。たとえば、 .B \-x,v/ は、 .B ,v と空の拡張子の 2 つの拡張子を持つ \*r ファイルを指定します。 複数の拡張子が指定された場合、指定された順に \*r ファイルを検索します。 最初に見つかったサフィックスが \*r ファイルに対して用いられます。 \*r ファイルを生成できるが、 \*r ファイルが見つからないときは、 これらのサフィックスを新しいファイル名に対して用います。 デフォルトの拡張子は、インストールされる環境により異なります。 UNIX のようなコンマをファイル名中に含めることの出来る計算機では、通常 .B \-x,v/ が、それ以外の計算機では空の拡張子が用いられます。 .TP .BI \-z zone キーワード置換での日付の出力書式の指定を行い、また、 .BI \-d date オプションでの .I date のデフォルトのタイムゾーンの指定を行います。 .I zone は、省略する事も、UTC からの数値差で指定する事も、特別な文字列 .B LT を使ってローカル時間で指定する事もできます。 デフォルトでは .I zone は空であり、 この場合は伝統的な \*r フォーマット、 すなわちタイムゾーン無しの \*u であり日付をスラッシュで区切ります; そうでない場合は時刻はタイムゾーン付の \*i 8601 フォーマットです。 例えば、ローカルタイムが 1990 年 1 月 11 日 太平洋標準時間 (\*u の 8 時間西) 午後 8 時の場合、時間の出力は次のようになります: .RS .LP .RS .nf .ta \w'\f3\-z+05:30\fP 'u +\w'\f31990-01-11 09:30:00+05:30\fP 'u .ne 4 \f2オプション\fP\f2時刻の出力\fP \f3\-z\fP \f31990/01/12 04:00:00\fP \f2(デフォルト)\fP \f3\-zLT\fP \f31990-01-11 20:00:00\-08\fP \f3\-z+05:30\fP \f31990-01-12 09:30:00+05:30\fP .ta 4n +4n +4n +4n .fi .RE .LP .B \-z オプションは \*r ファイルに格納されている日付 (常に \*u です) には影響しません。 .SH "ファイル名規則" \*r ファイルとワークファイルの組み合わせは 3 通りの方法で指定することができます (使用例の項目も参照してください)。 .PP 1) \*r ファイルとワークファイルの両方を指定する。 \*r ファイルのパス名は .IB path1 / workfileX 形式、ワークファイルのパス名は .IB path2 / workfile 形式をとります。この場合の .IB path1 / と .IB path2 / はパス (異なるパスや、空でも可) を示し、 .I workfile はファイル名、 .I X は \*r ファイルの拡張子です。もし .I X が空なら、 .IB path1 / は .B RCS/ で始まるか、 .B /RCS/ を含まねばなりません。 .PP 2) \*r ファイルのみを指定する。 ワークファイルがカレントディレクトリに作成され、\*r ファイル名から .IB path1 / と拡張子 .I X を取り除いたファイル名になります。 .PP 3) ワークファイルのみを指定する。 .B ci はまず、各 \*r 拡張子 .I X に対して、 .IB path2 /RCS/ workfileX 形式の名前で検索を行います。 さらに、(もしこれが見つからず、 .I X が空でなければ、) .IB path2 / workfileX を検索します。 .PP 1) または 2) の方法で \*r ファイルが指定されていない場合、 .I ci はまずディレクトリ .B ./RCS を検索し、次にカレントディレクトリを検索します。 .PP 異常により \*r ファイルのオープンに失敗すると、 .I ci はエラー報告します。 他に \*r ファイルのパス名の候補があってもです。 たとえばディレクトリ .I d で \*r コマンドを利用できないようにするには、 .IB d /RCS なる名前の通常ファイルを作成しておきます。 すると、\*r コマンドは .IB d /RCS をディレクトリとしてオープンしようとしますが、 ディレクトリではないのでオープンすることができず失敗します。 .SH 使用例 \*r 拡張子が .B ,v 、カレントディレクトリには \*r ファイルを含む .B RCS というサブディレクトリがあり、 .B io.c,v があると仮定します。 ここで、以下に示したコマンドを実行すると、 どれもカレントディレクトリにある .B io.c を .B RCS/io.c,v にチェックインし、 .B io.c を削除します。 .LP .RS .nf .ft 3 ci io.c; ci RCS/io.c,v; ci io.c,v; ci io.c RCS/io.c,v; ci io.c io.c,v; ci RCS/io.c,v io.c; ci io.c,v io.c; .ft .fi .RE .PP \*r 拡張子が空、カレントディレクトリには \*r ファイルを含む .B RCS というサブディレクトリがあり、 .B io.c があると仮定します。ここで以下に示すコマンドは、どれも新しい リビジョンのチェックインを行います。 .LP .RS .nf .ft 3 ci io.c; ci RCS/io.c; ci io.c RCS/io.c; ci RCS/io.c io.c; .ft .fi .RE .SH "ファイルモード" .B ci が作成した \*r ファイルは、 ワークファイルの読み込みと実行の許可属性を受け継ぎます。 すでに \*r ファイルが存在すれば、 .B ci はその読み込みと実行の許可属性を保持します。 .B ci は、つねに \*r ファイルの書き込み許可属性を不許可にします。 .SH 関連ファイル いくつかの一時ファイルが、ワークファイルの存在するディレクトリまたは 一時ディレクトリ (環境変数の項の .B \s-1TMPDIR\s0 参照) に作成されます。 セマフォファイル等のファイルが \*r ファイルが存在するディレクトリに作成されます。 空ではない拡張子を用いている場合、 セマフォファイル名の先頭文字には、 拡張子の先頭文字と同じ文字が用いられます; よって、拡張子として、ワークファイルの拡張子の先頭文字と同じ文字を 指定しないように注意してください。 空の拡張子を指定している場合、 セマフォファイル名の最後の文字がアンダスコア ( .B _ ) となります。 .PP .B ci は、 \*r ファイルやワークファイルを変更しません。通常 .B ci はそれらのファイルをアンリンクし、新しいファイルを作成します; ただし、\*r ファイルへのシンボリックリンクの鎖を壊す代わりに、 目的のファイルをアンリンクします。 よって、 .B ci は変更されるワークファイルへの ハードリンク、シンボリックリンクを全て壊します; さらに、\*r ファイルへのハードリンクは無効となり、 シンボリックリンクは保存されます。 .PP 実効ユーザは、\*r ファイルを含むディレクトリの 検索および書き込み権を持っていなければなりません。 通常実ユーザは、 \*r ファイルとワークファイルの読み込み許可と、 それらを含むディレクトリの検索および書き込み権を持っていなければなりません。 しかし、古い計算機のなかには実ユーザと実効ユーザの間を 容易に行き来することができないものもあります。 これらの計算機では、実効ユーザのみが利用されます。 .B ci や .B co のコピーに setuid が設定されていなければ、 実ユーザと実効ユーザは同一です。 次節で説明するように、 もし実効ユーザが全 \*r ファイルとそれを含むディレクトリを所有し、 実効ユーザのみが \*r ディレクトリに書き込めるように設定できるなら、 \*r ファイルのセキュリティを強化することが可能です。 .PP ユーザは \*r ファイルを含むディレクトリの許可属性を変更することで、 \*r ファイルに対するアクセスを制限できます; そのディレクトリに書き込み権のあるユーザだけが、 \*r ファイルを変更する \*r コマンドを使用することができます。 たとえば、ユーザが複数のグループに属することが出来る計算機では、 \*r ディレクトリをあるグループのみが書き込み権を持つように設定します。 これは、略式のプロジェクトでは十分ですが、 グループに所属するユーザが自由に \*r ファイルを変更することができ、 \*r ファイルすべてを削除することもできます。 そのため、正式なプロジェクトでは、 \*r ファイルを自由に操作きる \*r 管理者と、 新たなリビジョンをチェックインすること以外の操作はできない他のユーザとを、 区別することがあります。 .SH SETUID の使用 \*r 管理者以外のユーザがリビジョンを削除できないようにするには、 以下のように setuid 特権を使用することができます。 .nr n \w'\(bu'+2n-1/1n .ds n \nn .if \n(.g .if r an-tag-sep .ds n \w'\(bu'u+\n[an-tag-sep]u .IP \(bu \*n その計算機で \*r にて setuid が使用できるか確認します。 疑問があるときは、信頼できる専門家に意見を聞いてください。 最も良いのは、 .B seteuid() システムコールが Posix 1003.1a Draft 5 に 記述されているように動作することです。 なぜなら、実ユーザが .BR root -であっても、\*r は実ユーザと実効ユーザを簡単に切替えることができるからです。 +であっても、\*r は実ユーザと実効ユーザを簡単に切り替えることができるからです。 その次に良いのは、 .B setuid() システムコールが saved setuid (Posix 1003.1-1990の {\s-1_POSIX_SAVED_IDS\s0} の動作) を サポートしている場合です; この場合、実ユーザもしくは実効ユーザが .BR root である時のみ失敗します。 \*r は setuid に失敗すると、ただちに終了します。 .IP \(bu \nn ユーザグループの \*r 管理者として、ユーザ .I A を選びます。 .I A だけが、\*r ファイルに対して .B rcs コマンドを実行することができます。 .I A は .B root や、特権を持ったユーザであってはいけません。 相互に異なるユーザグループには、異なる管理者を使用するべきです。 .IP \(bu \nn ユーザが実行するファイルのディレクトリに、パス名 .I B を選びます。 .IP \(bu \nn 以下のように、通常のインストールディレクトリ .I D から、 .B ci と .B co を .I B にコピーし、 .I A へ setuid します: .LP .RS .nf .ne 3 \f3mkdir\fP \f2B\fP \f3cp\fP \f2D\fP\^\f3/c[io]\fP \f2B\fP \f3chmod go\-w,u+s\fP \f2B\fP\f3/c[io]\fP .fi .RE .IP \(bu \nn 以下のように、各ユーザのパスに .I B を加えます: .LP .RS .nf .ne 2 \f3PATH=\fP\f2B\fP\f3:$PATH; export PATH\fP # ordinary shell \f3set path=(\fP\f2B\fP \f3$path)\fP # C shell .fi .RE .IP \(bu \nn 以下のように、 .I A だけが書き込み許可を持つ \*r ディレクトリ .I R を作成します: .LP .RS .nf .ne 2 \f3mkdir\fP \f2R\fP \f3chmod go\-w\fP \f2R\fP .fi .RE .IP \(bu \nn 特定のユーザだけに \*r ファイルの読み込みを許可したい場合、 そのユーザをユーザグループ .IR G に入れて、さらに .I A が以下のように、\*r ディレクトリを保護します: .LP .RS .nf .ne 2 \f3chgrp\fP \f2G R\fP \f3chmod g\-w,o\-rwx\fP \f2R\fP .fi .RE .IP \(bu \nn (存在すれば) 古い \*r ファイルを .IR R にコピーし、 .I A が所有であることを保証します。 .IP \(bu \nn \*r ファイルのアクセスリストは、 リビジョンをチェックインおよびロックできるユーザを制限します。 デフォルトのアクセスリストは空で、 \*r ファイルを読むことのできる全てのユーザに、登録の権限を与えます。 チェックインを制限したい場合は、 .I A がそのファイルに対して .B "rcs\ \-a" を実行します; .BR rcs (1) を参照してください。 特に .BI "rcs\ \-e\ \-a" A は、 .IR A だけにアクセスを制限します。 .IP \(bu \nn 初めてチェックインを行う前に、 .I A は .B "rcs\ \-i" によって新しい \*r ファイルを初期化します。 チェックインを制限したい場合、 .B \-a オプションを付け加えます。 .IP \(bu \nn setuid 特権は、 .BR ci , .BR co , .BR rcsclean のみに与えます; .B rcs や他のコマンドに、setuid 特権を与えてはなりません。 .IP \(bu \nn \*r コマンドに対して、他の setuid コマンドを実行しないでください。 setuid はあなたが考えるより扱いにくいものです。 .SH 環境変数 .TP .B \s-1RCSINIT\s0 本変数に空白で区切ったオプションを設定することで、 コマンドライン引数に先立って処理されます。 空白はバックスラッシュによってエスケープすることができます。 .B \s-1RCSINIT\s0 はほとんどの \*r コマンドで参照されます。特に .BR \-q , .BR \-V , .BR \-x , .B \-z オプションを指定しておくと便利です。 .TP .B \s-1TMPDIR\s0 一時ディレクトリ名を指定します。 設定されていない場合は、環境変数 .B \s-1TMP\s0 と .B \s-1TEMP\s0 とを調べ、始めに見つかった値を用います; どれも設定されていない場合は、 計算機依存のデフォルトのディレクトリ (たいていは .B /tmp ) を使用します。 .SH 診断 各リビジョンに対して、 .I ci は \*r ファイル名、ワークファイル名、追加するリビジョン番号、直前の リビジョン番号を表示します。全ての処理が成功した場合のみ、 終了ステータスが 0 になります。 .SH 作者 Author: Walter F. Tichy. .br Manual Page Revision: \*(Rv; Release Date: \*(Dt. .br Copyright \(co 1982, 1988, 1989 Walter F. Tichy. .br Copyright \(co 1990, 1991, 1992, 1993, 1994, 1995 by Paul Eggert. .SH 関連項目 co(1), ident(1), make(1), rcs(1), rcsclean(1), rcsdiff(1), rcsintro(1), rcsmerge(1), rlog(1), setuid(2), rcsfile(5) .br Walter F. Tichy, \*r\*-A System for Version Control, .I "Software\*-Practice & Experience" .BR 15 , 7 (July 1985), 637-654. .br diff --git a/ja_JP.eucJP/man/man1/kcon.1 b/ja_JP.eucJP/man/man1/kcon.1 index a3c4685188..e0b5c0bfc4 100644 --- a/ja_JP.eucJP/man/man1/kcon.1 +++ b/ja_JP.eucJP/man/man1/kcon.1 @@ -1,125 +1,125 @@ .\" Copyright (c) 1992,1993,1994 Hellmuth Michaelis .\" .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by Hellmuth Michaelis .\" 4. The name authors may not be used to endorse or promote products .\" derived from this software without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR .\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES .\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. .\" IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT, .\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT .\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, .\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY .\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" .\" @(#)kcon.1, 3.20, Last Edit-Date: [Wed Jan 25 16:34:56 1995] .\" %FreeBSD: src/usr.sbin/pcvt/kcon/kcon.1,v 1.7 2000/03/01 14:08:52 sheldonh Exp % .\" jpman %Id: kcon.1,v 1.3 1997/07/22 17:43:18 horikawa Stab % .\" .Dd January 25, 1995 .Dt KCON 1 .Sh 名称 .Nm kcon .Nd キーボードのコントロールと再割り当て .Sh 書式 .Nm kcon .Op Fl d Ar delay .Op Fl l .Op Fl m Ar map .Op Fl o .Op Fl p .Op Fl R .Op Fl r Ar rate .Op Fl s .Op Fl t Ns Ar +/- .Op Fl x .Sh 解説 .Nm kcon は、 'pcvt' ビデオドライバのためにキーボード設定の全ての側面を 制御するために使われます。 .Pp 利用可能なオプションは以下の通りです。 .Bl -tag -width flag .It Fl d Ar delay 最後のキーを押してから、キーボードがリピートするまでの ディレイ時間を指定します。指定できる値は、0 から 3 で、 それぞれ 250, 500, 750, 1000 ミリ秒のディレイ時間をあらわします。 .It Fl l 現在のドライバに利用されているキーボードマップを表示します。 .It Fl m Ar map キーボード能力データベース .Nm keycap 中で探されるマップエントリを指定します。 データベース中のエントリを探索し、見付かればマップが読み込まれ、 直ちにこのドライバで使われます。 .It Fl o -現在のマップリスト中の、ディスプレイ制御コードを 8 進数に切替えます。 +現在のマップリスト中の、ディスプレイ制御コードを 8 進数に切り替えます。 .Fl l オプションと一緒に使われます。 .It Fl p リストの時に '純粋な (pure)' 出力を使います。 エスケープ文字は 8 進もしくは 16 進で表示され、 'ESC' とは 表示されません。 .Fl l オプションと一緒に使われます。 .It Fl r Ar rate 文字のリピートレートを指定します。有効な値は 0 から 31 で、それぞれ 30 文字/秒から 2 文字/秒をあらわします。 .It Fl R キーボードをリセットします。 .It Fl s 現在のリピートレートとディレイ値を表示します。 .It Fl t Ar +/- キーリピートオプションを有効とする ( .Ar + ) か、無効とする ( .Ar - ) かを指定します。 .It Fl x -現在のマップの表示で、ディスプレイ制御コードを 16 進での表示に切替えます。 +現在のマップの表示で、ディスプレイ制御コードを 16 進での表示に切り替えます。 .Fl l オプションと一緒に使われます。これはデフォルトの振舞いです。 .Sh 関連ファイル .Bl -tag -width /usr/share/misc/keycap.pcvt -compact .It Pa /usr/share/misc/keycap.pcvt インストール時に他のものを選んでいなければ、 これがキーボード能力のデータベースファイルです .It Pa /dev/console キーボードの raw デバイス .Sh 関連項目 .Xr keycap 3 , .Xr keycap 5 .Sh バグ .Nm kcon は、keycap データベース中にいくつかの矛盾を見付けます。 エラーの場合、 .Nm kcon はエラーメッセージを表示して、終了します。この場合、キーボードは 未定義状態になるかもしれません。この状態を回復するためには、 .Nm kcon -m default を実行してください。 .Sh 使用例 コマンド .Dq Li kcon -m gb -は、英国のキーボードの振舞いに切替えるために 'gb' エントリを keycap +は、英国のキーボードの振舞いに切り替えるために 'gb' エントリを keycap ファイルからキーボードへ読み込みます。 コマンド .Dq Li kcon -r 0 -d 0 は、キーが 250 ミリ秒押し続けられた後で、キーボードの文字を出すレート を 30 文字/秒に設定します。 diff --git a/ja_JP.eucJP/man/man1/ld.1 b/ja_JP.eucJP/man/man1/ld.1 index e3d7ba2684..41d53a793d 100644 --- a/ja_JP.eucJP/man/man1/ld.1 +++ b/ja_JP.eucJP/man/man1/ld.1 @@ -1,1125 +1,1125 @@ .\" Copyright (c) 1991, 92, 93, 94, 95, 96, 97, 98, 1999 Free Software Foundation .\" See section COPYING for conditions for redistribution .\" %FreeBSD: src/contrib/binutils/ld/ld.1,v 1.2.2.2 2000/07/07 05:34:12 obrien Exp % .\" jpman %Id: ld.1,v 1.3 1998/12/13 13:22:32 horikawa Stab % .TH ld 1 "17 August 1992" "cygnus support" "GNU Development Tools" .de BP .sp .ti \-.2i \(** .. .SH 名称 ld \- GNU リンカ .SH 書式 .hy 0 .na .TP .B ld .RB "[\|" \-o " .I output\c \&\|] \c .I objfile\c \&.\|.\|. .br .RB "[\|" \-A\c .I architecture\c \&\|] .RB "[\|" "\-b\ "\c .I input-format\c \&\|] .RB "[\|" \-Bstatic "\|]" .RB "[\|" \-Bdynamic "\|]" .RB "[\|" \-Bsymbolic "\|]" .RB "[\|" "\-c\ "\c .I commandfile\c \&\|] .RB "[\|" \-\-cref "\|]" .RB "[\|" \-d | \-dc | \-dp\c \|] .br .RB "[\|" "\-defsym\ "\c .I symbol\c \& = \c .I expression\c \&\|] .RB "[\|" \-\-demangle "\|]" .RB "[\|" \-\-no\-demangle "\|]" .RB "[\|" "\-e\ "\c .I entry\c \&\|] .RB "[\|" \-embedded\-relocs "\|]" .RB "[\|" \-E "\|]" .RB "[\|" \-export\-dynamic "\|]" .RB "[\|" "\-f\ "\c .I name\c \&\|] .RB "[\|" "\-\-auxiliary\ "\c .I name\c \&\|] .RB "[\|" "\-F\ "\c .I name\c \&\|] .RB "[\|" "\-\-filter\ "\c .I name\c \&\|] .RB "[\|" "\-format\ "\c .I input-format\c \&\|] .RB "[\|" \-g "\|]" .RB "[\|" \-G .I size\c \&\|] .RB "[\|" "\-h\ "\c .I name\c \&\|] .RB "[\|" "\-soname\ "\c .I name\c \&\|] .RB "[\|" \-\-help "\|]" .RB "[\|" \-i "\|]" .RB "[\|" \-l\c .I ar\c \&\|] .RB "[\|" \-L\c .I searchdir\c \&\|] .RB "[\|" \-M "\|]" .RB "[\|" \-Map .I mapfile\c \&\|] .RB "[\|" \-m .I emulation\c \&\|] .RB "[\|" \-n | \-N "\|]" .RB "[\|" \-noinhibit-exec "\|]" .RB "[\|" \-no\-keep\-memory "\|]" .RB "[\|" \-no\-warn\-mismatch "\|]" .RB "[\|" \-O\c .I level\c \&\|] .RB "[\|" "\-oformat\ "\c .I output-format\c \&\|] .RB "[\|" "\-R\ "\c .I filename\c \&\|] .RB "[\|" \-relax "\|]" .RB "[\|" \-r | \-Ur "\|]" .RB "[\|" "\-rpath\ "\c .I directory\c \&\|] .RB "[\|" "\-rpath\-link\ "\c .I directory\c \&\|] .RB "[\|" \-S "\|]" .RB "[\|" \-s "\|]" .RB "[\|" \-shared "\|]" .RB "[\|" \-sort\-common "\|]" .RB "[\|" "\-split\-by\-reloc\ "\c .I count\c \&\|] .RB "[\|" \-split\-by\-file "\|]" .RB "[\|" "\-T\ "\c .I commandfile\c \&\|] .RB "[\|" "\-Ttext\ "\c .I textorg\c \&\|] .RB "[\|" "\-Tdata\ "\c .I dataorg\c \&\|] .RB "[\|" "\-Tbss\ "\c .I bssorg\c \&\|] .RB "[\|" \-t "\|]" .RB "[\|" "\-u\ "\c .I sym\c \&] .RB "[\|" \-V "\|]" .RB "[\|" \-v "\|]" .RB "[\|" \-\-verbose "\|]" .RB "[\|" \-\-version "\|]" .RB "[\|" \-warn\-common "\|]" .RB "[\|" \-warn\-constructors "\|]" .RB "[\|" \-warn\-multiple\-gp "\|]" .RB "[\|" \-warn\-once "\|]" .RB "[\|" \-warn\-section\-align "\|]" .RB "[\|" \-\-whole\-archive "\|]" .RB "[\|" \-\-no\-whole\-archive "\|]" .RB "[\|" "\-\-wrap\ "\c .I symbol\c \&\|] .RB "[\|" \-X "\|]" .RB "[\|" \-x "\|]" .ad b .hy 1 .SH 解説 \c .B ld\c \& はいくつかのオブジェクトとアーカイブファイルを結合し、 データを再配置してシンボル参照を解決します。コンパイルされた 新しいプログラムが実行可能になるように、多くの場合 最終段階として \c .B ld\c \& が呼び出されます。 \c .B ld\c \& はリンク処理を明示的かつ総合的に制御する目的の リンカコマンド言語のファイルを受け付けます。 このマニュアルページではコマンド言語についてふれません; コマンド言語の詳細と GNUリンカの別の側面からの詳細については `\|\c .B info\c \|' の `\|\c .B ld\c \|' の項、またはマニュアル .I ld: the GNU linker \& を参照して下さい。 このバージョンの \c .B ld\c \& はオブジェクトファイルの操作に汎用の BFD ライブラリを使います。 これによって \c .B ld\c \& は多くの異なった形式 \(em\& 例えば COFF や \c .B a.out\c \& のようなオブジェクトファイル \(em\& の読み込み、結合、書き込みが 出来るようになっています。異なる形式のファイルを、利用可能な いずれかの形式のオブジェクトファイルを生成するために一緒に リンクできます。`\|\c .B objdump \-i\c \|' で各種アーキテクチャでサポートされる形式の一覧を得られます; .BR objdump ( 1 ) を参照してください。 その柔軟性の一方で、GNU リンカは診断情報の提供という点で 他のリンカよりも親切です。多くのリンカは エラーを起こした時点で即座に実行を中断してしまいます; 可能であればいつでも \c .B ld\c \& は実行を続け、他のエラーも知らせます (または、場合によっては、エラーの代わりに出力ファイルを生成します)。 GNU リンカ \c .B ld\c \& は広い範囲の各種状況をカバーすること、 そして他のリンカと可能な限り互換性を持つことを意図しています。 その結果、コマンドラインと環境変数を通して動作を制御するための 多くの選択肢を提供しています。 .SH オプション 過度のコマンドラインオプションは恐ろしく見えるかもしれませんが、 実際にはいかなる局面においてでも使用されるオプションは少ししかありません。 例えば、\c .B ld\c \& がよく使われるのは標準の Unix の オブジェクトファイルを、標準のサポートしている Unixシステム上で リンクする場合です。そのようなシステムでは、\c .B hello.o\c \& というファイルをリンクするためには以下のようにします: .sp .br $\ ld\ \-o\ output\ /lib/crt0.o\ hello.o\ \-lc .br .sp これは、\c .B output\c \& という名前のファイルを、 ファイル \c .B /lib/crt0.o\c \& と \c .B hello.o\c \& そして 標準で検索されるディレクトリから来るライブラリ \c .B libc.a\c \& をリンクした結果として生成する事を、 .B ld\c \& に対して指示しています。 .B ld\c \& へのコマンドラインオプションは 任意の順番で、何度でも繰り返してかまいません。 大抵の場合、異なる引数でオプションを繰り返すと なんの効果も無いか、または以前のオプションの指定 (コマンドラインで より左側にあるもの) を上書きします。 例外 \(em\& 2 回以上 意味を持って指定できる\(em\& は \c .B \-A\c \&, \c .B \-b\c \& (または その同義語の \c .B \-format\c \&), \c .B \-defsym\c \&, \c .B \-L\c \&, \c .B \-l\c \&, \c .B \-R\c \&, \c .B \-u\c \& です。 .I objfile\c \& として示されているひとまとめにリンクされるオブジェクトファイルの リストは、コマンドラインオプションの後に続けても、前に置いても、また 混ぜてもかまいません; 引数 \c .I objfile\c \& をオプションフラグとその引数の間に置く事は出来ないので、 これは守って下さい。 通常、リンカは少なくとも 1 つのオブジェクトファイルを指定して 起動しますが、他の形式のバイナリ入力ファイルも \c .B \-l\c \&, \c .B \-R\c \& を使って、そしてスクリプトコマンド言語で指定できます。 バイナリ入力ファイルがまったく .I 指定されない\c \& 場合は、リンカは出力ファイルを生成しません。そして `\|\c .B No input files\c \|' というメッセージを出します。 オプションの引数は空白をはさまずにオプション文字に続けるか、 その引数を必要とするオプションの直後に続けて独立した引数として 与えなければなりません。 .TP .BI "-A" "architecture" 現在リリースされている \c .B ld\c \& では、このオプションは Intel 960 ファミリの アーキテクチャでのみ使われます。そのような設定の \c .B ld\c \& では、引数の \c .I architecture\c \& には 960 ファミリのメンバを指定する 2 文字の名称のいずれかを指定します; オプションは必要な出力のターゲットを指定して、 入力ファイル中に非互換な命令があれば警告します。 またリンカがアーカイブライブラリを検索する方式も変更します。 個々のアーキテクチャに特有なライブラリを使うようにするために、 アーキテクチャを識別する文字列をサフィックスに加えた名前を 検索ループに含めます。 例えば、\c .B ld\c \& のコマンドラインに `\|\c .B \-ACA\c \|' を `\|\c .B \-ltry\c \|' と共に指定すると、リンカは (組み込まれているサーチパスと、\c .B \-L\c \& で指定されたすべてのパスについて) 以下の名前のライブラリを探します。 .sp .br try .br libtry.a .br tryca .br libtryca.a .br .sp 最初の 2 つの候補は常に検索されます; 後ろの 2 つは `\|\c .B \-ACA\c \|' を指定した事によるものです。 将来の \c .B ld\c \& のリリースでは他のアーキテクチャファミリでも同様の機能を サポートするかもしれません。 アーキテクチャファミリがターゲットアーキテクチャの組合せを 認めるのなら、意味を持ってコマンドライン上で 2 回以上 \c .B \-A\c \& を指定することが出来ます; \c .B \-l でライブラリが指定される時に、それぞれの指定による別の派生の 名前のペアが検索のために追加されます。 .TP .BI "\-b " "input-format" コマンドライン上でこのオプションに続いている入力オブジェクトファイルの バイナリ形式を指定します。 通常はこれを指定する必要はありません。 それぞれのマシン上で最も一般的な形式がデフォルトの入力形式であると 期待するように、\c .B ld\c \& が設定されているからです。 \c .I input-format\c \& は文字列テキストで、BFD ライブラリでサポートされる 形式名です。 \c .B \-format \c .I input-format\c \&\c \& と、スクリプトコマンド中の .BR TARGET も同じ機能です。 ファイルを通常でないバイナリ形式とリンクする場合にこのオプションを 使いたいかも知れません。 (異なる形式のオブジェクトファイルとリンクする時に) 同様に \c .B \-b\c -\& で明示的に形式を切替えられます。その場合は +\& で明示的に形式を切り替えられます。その場合は \c .B \-b \c .I input-format\c \&\c \& を特定の形式のオブジェクトファイルの各グループの前で 指定します。 デフォルトの形式は環境変数 .B GNUTARGET\c \& からとられます。スクリプトから入力形式を指定する事もでき、 その場合は \c .B TARGET\c \& コマンドを使います。 .TP .B \-Bstatic 共有ライブラリとリンクしません。これは共有ライブラリを サポートしているプラットフォーム上でのみ意味を持ちます。 .TP .B \-Bdynamic ダイナミックライブラリとリンクします。 これは共有ライブラリをサポートしている プラットフォームでのみ意味を持ちます。そのようなプラットフォームでは 通常このオプションがデフォルトです。 .TP .B \-Bsymbolic 共有ライブラリを作成する際に、もしあれば、グローバルシンボルへの 参照を共有ライブラリ内の定義と対応づけます。通常は 共有ライブラリとリンクされたプログラムが共有ライブラリ内の 定義を上書きする事が可能です。このオプションは 共有ライブラリをサポートする ELF のプラットフォームでのみ意味を持ちます。 .TP .BI "\-c " "commandfile" ファイル \c .I commandfile\c \& からリンクコマンドを読み込むよう \c .B ld\c \& に指示します。 読み込まれたコマンドは \c .B ld\c \& のデフォルトのリンク形式を (付け加えるのではなく) 完全に置き換えます; \c .I commandfile\c \& には目的の形式を指示するために必要な物をすべて 書いておかなければなりません。 リンクコマンドのスクリプトをコマンドラインで直接 指定することも可能で、その場合はそれを文字 `\|\c .B {\c \|' と `\|\c .B }\c \|' で囲んで指定します。 .TP .B \-\-cref クロスリファレンステーブルを出力します。リンクマップファイルが 生成されていれば、クロスリファレンステーブルがマップファイルに 出力されます。そうでない場合は標準出力に表示されます。 .TP .B \-d .TP .B \-dc .TP .B \-dp これらの 3 つのオプションは等価です; 他のリンカとの互換性のために 複数の形式がサポートされています。再配置可能なファイルを出力する ように指定された場合 (\c .B \-r\c \&) でもコモンシンボルに空間を割り当てるよう \c .B ld に指示する場合に、いずれかを使います。 スクリプト中での \c .B FORCE_COMMON_ALLOCATION\c \& コマンドも同じ効果を持ちます。 .TP .BI "-defsym " "symbol" "\fR = \fP" expression 出力ファイル中に \c .I expression\c \& で与えられた絶対アドレスを持つグローバルシンボルを生成します。 複数のシンボルを定義するためにコマンドラインで必要回数だけ このオプションを指定してかまいません。この文脈では 限定されますが \c .I expression\c \& として式を使う事ができます: 16 進定数や定義済シンボル、 または \c .B +\c \& と \c .B \-\c \& で 16 進定数や定義済シンボルの加減算を行えます。 より手の込んだ式が必要であれば、スクリプトから リンカコマンド言語を使う事を検討してください。 .TP .B \-\-demangle .TP .B \-\-no\-demangle このオプションは、 エラーメッセージや他の出力において、 シンボル名を元に戻す (demangle する) か否かを制御します。 リンカが元に戻すように指示された場合、シンボル名を可読形式にしようとします。 すなわち、 オブジェクトファイルが使用しているならば先頭のアンダスコアを削除し、 C++ で変換されたシンボル名をユーザが可読な名前に変換します。 リンカは、デフォルトでは元に戻す動作を行いますが、環境変数 .B COLLECT_NO_DEMANGLE が設定されている場合は例外です。 これらのオプションを使用してデフォルトを上書き可能です。 .TP .BI "-e " "entry"\c \& プログラムの実行開始番地を示す明示的なシンボルとして、 デフォルトの開始番地の代わりに \c .I entry\c を使用します。 デフォルトと開始番地指定の他の方法については .B info\c の .B ld\c の項を参照してください。 .TP .B \-embedded\-relocs このオプションは、 .B \-membedded\-pic オプションを GNU コンパイラとアセンブラに指定して生成した MIPS 組み込み用位置独立コードをリンクする場合にのみ意味を持ちます。 これによってリンカは、ポインタ値に初期化されている静的変数を 実行時に再配置するために利用できるテーブルを生成するようになります。 詳しくは testsuite/ld-empic にあるコードを参照してください。 .TP .B \-E .TP .B \-export\-dynamic ELF ファイルを生成する際に、すべてのシンボルを実行時シンボルテーブルに 加えます。通常、実行時シンボルテーブルは実行時オブジェクトが 使用するシンボルだけを含みます。このオプションは .I dlopen を使用する場合に必要です。 .TP .BI "-f " "name" .TP .BI "--auxiliary " "name" ELF の共有オブジェクトを生成する際に、内部の DT_AUXILIARY フィールドを 指定した name にセットします。これは、 共有オブジェクトのシンボルテーブルを、 共有オブジェクト .I name のシンボルテーブルに適用する補助のフィルタとして使う事を、 実行時リンカに対して指示します。 .TP .BI "-F " "name" .TP .BI "--filter " "name" ELF の共有オブジェクトを生成する際に、内部の DT_FILTER フィールドを 指定した name にセットします。これは、 共有オブジェクトのシンボルテーブルを、 共有オブジェクト .I name のシンボルテーブルに適用するフィルタとして使う事を、 実行時リンカに対して指示します。 .TP .BI "\-format " "input\-format" .B \-b\c \& \c .I input\-format\c \& と同意です。 .TP .B \-g 受け付けますが、無視されます; 他のツールとの互換性のために提供されています。 .TP .BI "\-G " "size"\c MIPS ECOFF において GP レジスタを使って最適化されるオブジェクトの 最大サイズを .I size にします。他のオブジェクトファイル形式では無視されます。 .TP .BI "-h " "name" .TP .BI "-soname " "name" ELF の共有オブジェクトを生成する際に、内部の DT_SONAME フィールドを 指定した name にセットします。実行形式が DT_SONAME フィールドを持つ 共有オブジェクトとリンクされると、実行形式が実行される時に、 実行時リンカはリンカに与えられたファイル名を使う代わりに DT_SONAME フィールドで指定された共有オブジェクトをロードしようとします。 .TP .B \-\-help コマンドラインオプションのサマリを標準出力に表示して終了します。 このオプションと、1 つではなく 2 つのダッシュで始まる .B \-\-version は他の GNUプログラムとの互換性のためのものです。 1 つだけのダッシュで始まる他のオプションは他のリンカとの互換性のための ものです。 .TP .B \-i インクリメンタルリンクを行います (\c .B \-r\c \& オプションと同じです)。 .TP .BI "\-l" "ar"\c \& アーカイブファイル \c .I ar\c \& をリンクするファイルのリストに加えます。このオプションは 何度でも指定できます。\c .B ld\c \& は、指定された各 \c .I ar について \c .B lib\c .I ar\c \&.a\c \& を自己のパスリストから探します。 .TP .BI "\-L" "searchdir" このコマンドはパス \c .I searchdir\c \& を、 \c .B ld\c \& がアーカイブライブラリを探すパスのリストに追加します。 このオプションは何度でも指定して構いません。 デフォルトで (\c .B \-L\c \& で指定されずに) 探すパスの組は \c .B ld\c \& がどのエミュレーションモードを使っているか、そして 場合によってはどうコンフィギュレーションされているか、 に依存します。パスはリンクスクリプトの中でも .B SEARCH_DIR コマンドを使って指定できます。 .TP .B \-M リンクマップ \(em\& \c .B ld\c \& によってシンボルがどこに配置されたかの診断情報、そして グローバルなコモン領域の配置情報 \(em\& を (標準出力ファイルへ) 出力します。 .TP .BI "\-Map " "mapfile"\c ファイル .I mapfile にリンクマップ \(em\& \c .B ld\c \& によってシンボルがどこに配置されたかの診断情報、そして グローバルなコモン領域の配置情報 \(em\& を出力します。 .TP .BI "\-m " "emulation"\c .I emulation で指定されたリンカをエミュレートします。 .I emulation として指定できる物は .I \-\-verbose か .I \-V オプションでリストできます。このオプションは、 .BR ld をコンパイルする際にコンフィギュレーションでデフォルトとして指定して 埋め込まれている目的システムに優先します。 .TP .B \-N .B text\c \& と \c .B data\c \& セクションを読み書き可能にする指定です。 出力形式が Unix スタイルのマジックナンバをサポートしているなら、 出力は \c .B OMAGIC\c \& とマークされます。 `\|\c .B \-N\c \&\|' オプションを指定した場合は、リンカは データセグメントをページ境界に合わせることをしません。 .TP .B \-n テキストセグメントを読み込み専用にします。そして可能であれば \c .B NMAGIC\c \& が書き込まれます。 .TP .B \-noinhibit\-exec 通常、リンカはリンク処理中にエラーがあった場合は出力ファイルを生成しません。 このフラグを指定すると、致命的ではないエラーの後であっても 出力ファイルを残しておく事を望んでいる事を指示できます。 .TP .B \-no\-keep\-memory 通常、リンカは速度面での最適化を、 入力ファイルのシンボルテーブルをメモリ中にキャッシュすることでの メモリ使用量の増大よりも優先します。このオプションで、 そうではなく必要に応じてシンボルを再読み込みする事でメモリ使用量を 最適化する事を指示できます。大きな実行ファイルをリンクしている際に メモリ領域を使いきってしまうような場合に、このオプションが 必要になるかもしれません。 .TP .B \-no\-warn\-mismatch 通常、何らかの理由でマッチしない入力ファイル同士をリンクしようとすると、 リンカはエラーを起こします。 おそらくは、異なる プロセッサ用か異なるエンディアン向けにコンパイルされたことが原因でしょう。 このオプションは、そのような起こり得るエラーを黙って許容するよう、 リンカに対して指示します。このオプションは、リンカが エラーとする事が不適切と確証を持てる特別な処理を行う場合にのみ 注意深く使うべきです。 .TP .BI "\-o " "output" .I output\c \& が \c .B ld\c \& の生成するプログラム名です; このオプションが 指定されていない場合は、デフォルトの名前 `\|\c .B a.out\c \|' が使われます。 スクリプトのコマンド \c .B OUTPUT\c \& でも出力ファイル名を指定できます。 .TP .BI "\-O" "level" 最適化した出力ファイルを生成します。 非常に長い時間がかかるかもしれませんので、 最終的なバイナリを生成するときのみ有効にすべきかもしれません。 \c .I level\c \& は数値であるものとして扱われます。 0 より大きな値は最適化を有効にします。 .TP .BI "\-oformat " "output\-format" 出力オブジェクトファイルのバイナリ形式を指定します。\c .B ld\c \& はデフォルトの出力形式としてそれぞれのマシンで最も一般的な形式を 生成するようにコンフィギュレーションされているので、 通常はこれを指定する必要はありません。\c .I output-format\c \& は文字列テキストで、BFD ライブラリでサポートされる 形式名で指定します。スクリプトでのコマンド .B OUTPUT_FORMAT でも出力形式を指定できますが、このオプションはそれより優先されます。 .TP .BI "\-R " "filename" シンボル名とそのアドレスを \c .I filename\c \& から読み込みますが、それを再配置したり出力に 含めたりはしません。これによって、 他のプログラムが定義しているメモリ中の絶対番地を、 出力するファイルからシンボルで参照することが可能になります。 .TP .B \-relax マシン固有の効果を持つオプションです。現在はこのオプションは H8/300 でのみサポートされます。 プラットフォームによっては、このオプションでリンカがプログラム中の アドレッシングを解決する時にアドレスモードを緩めて、出力ファイルに 新しい命令を生成する広域最適化を行う事が可能になります。 これがサポートされないプラットフォームでは、 `\|\c .B \-relax\c \&\|' は受け付けますが影響はありません。 .TP .B \-r 再配置可能な出力を生成します \(em\& つまり、再度 \c .B ld\c \& に入力として与えられる出力ファイルを生成します。 これはしばしば \c .I 部分的な リンク\c \&と呼ばれます。副作用として、標準的な Unix のマジックナンバを サポートする環境では、このオプションは同時に出力ファイルの マジックナンバを \c .B OMAGIC\c \& にします。 このオプションが指定されないと、絶対ファイルが生成されます。 C++ のプログラムをリンクしている時は、このオプションでは コンストラクタへの参照は解決 \c .I されません\c \&; 代わりに \c .B \-Ur\c \& を使ってください。 このオプションは \c .B \-i\c \& と同じ事をします。 .TP .B \-rpath\ \fIdirectory 実行時のライブラリ検索パスにディレクトリを追加します。これは ELF 実行形式を共有オブジェクトとリンクする時に使われます。 すべての .B \-rpath 引数がつながれて、実行時リンカに渡されます。実行時リンカは それらを使って共有オブジェクトの位置を実行時に突き止めます。 .B \-rpath オプションは、リンク時に明示的に含められた共有オブジェクトが 必要とする共有オブジェクトの位置を突き止めるためにも使われます; .B \-rpath\-link オプションの説明を参照してください。もし ELF 実行形式をリンクする時に .B \-rpath が使われないと、定義されていれば環境変数 .B LD_RUN_PATH の内容が使われます。 .B \-rpath リンカは与えられたすべての .B \-L オプションを含む実行時の検索パスを生成します。 もし .B \-rpath が指定されれば、実行時の検索パスは .B \-rpath オプションを使い、 .B \-L オプションは無視して排他的に形成されます。 このことは gcc を使う時に有効でしょう。 gcc は多くの .B \-L オプションを付け、それらは NFSマウントされたファイルシステムに あるかもしれないからです。 .TP .B \-rpath\-link\ \fIdirectory ELF か SunOS で使う時に、1 つの共有ライブラリが他の共有ライブラリを 必要とするかも知れません。これは .B ld\ \-shared によるリンクで入力ファイルの 1 つとして共有ライブラリが含まれる 場合に発生します。 リンカがそのような依存関係に出会った時、非共有、再配置不可能の リンクをしている時は、もし必要な共有ライブラリが明示的には含まれて いないのなら、自動的にその位置を突き止めてリンク作業に 含めようとします。そのような場合、 .B \-rpath\-link オプションで最初に検索するディレクトリのセットを指定できます。 .B \-rpath\-link オプションは、コロンで区切って名前をリストにするか 複数回指定する事でディレクトリ名の並びを指定できます。 必要な共有ライブラリが見付からないと、リンカは 警告を出力してリンク作業を継続します。 .TP .B \-S (すべてのシンボルではなく) デバッガシンボル情報だけを、 出力ファイルに出しません。 .TP .B \-s すべてのシンボル情報を出力ファイルに出しません。 .TP .B \-shared 共有ライブラリを作成します。これは現時点では ELF と SunOS のプラットフォームでのみサポートされます (SunOS では指定しなくても構いません。リンカは未定義シンボルが あって .B \-e オプションが指定されていなければ自動的に共有ライブラリを作成します)。 .TP .B \-sort\-common 通常、 .B ld がグローバルのコモンシンボルを適切な出力セクションに置く時、 それらをサイズ順に並べます。最初にすべての 1 バイトのシンボルが来て、 すべての 2 バイト、それからすべての 4 バイト、そしてそれら以外の 順になります。これはアラインメントの制約によるシンボル間のすき間を 避けるために行われます。このオプションでは、その並べ替えを抑止します。 .TP .B \-split\-by\-reloc\ \fIcount .I count 個より多くの再配置を含む出力セクションが 1 つもできないように、 出力ファイルに追加のセクションを作る事を試みます。 これは、ある種のリアルタイムカーネルに、COFF オブジェクト形式で ダウンロードするための巨大な再配置可能ファイルを生成する時に有用です; COFF では 1 つのセクションで 65535 個より多い再配置情報を持てないからです。 これは任意のセクションをサポートしないオブジェクトファイル形式では うまく動作しない事に注意してください。リンカは個々の入力の セクションを再分配のために切り分ける事はありません。このため、もし 1 つの入力セクションが .I count より多い再配置を含んでいると、1 つの出力セクションがその数の 再配置を含む事になります。 .TP .B \-split\-by\-file .B \-split\-by\-reloc と同様ですが、入力ファイル毎に新しい出力セクションを生成します。 .TP .BI "\-Tbss " "org"\c .TP .BI "\-Tdata " "org"\c .TP .BI "\-Ttext " "org"\c 出力ファイルのセグメント \c .B bss\c \&, \c .B data\c \&, \c .B text\c \(em\& それぞれのオプションで指定された \(em\& \c .I org\c \& にします。 \c .I org\c \& は 16 進整数でなければなりません。 .TP .BI "\-T " "commandfile" .B \-c \c .I commandfile\c \&\c \& と等価です; 他のツールとの互換性のためにサポートされています。 .TP .B \-t \c .B ld\c \& が処理している入力ファイル名を出力します。 .TP .BI "\-u " "sym" 強制的に \c .I sym\c \& が未定義シンボルとして出力ファイルに入るようにします。 これは、例えば、標準ライブラリから追加のモジュールをリンクする 引金となり得ます。 さらに未定義シンボルを追加するために \c .B \-u\c \& を 異なるオプション引数で繰り返し可能です。 .TP .B \-Ur C++ プログラム以外の物については、このオプションは \c .B \-r\c \& と等価です: 再配置可能な出力 \(em\& つまり、再度 \c .B ld\c \& に入力として与えられる出力ファイル \(em\& を生成します。 C++ プログラムをリンクする時は、\c .B \-r\c \& と異なり \c .B \-Ur \& はコンストラクタの参照を解決 .I します\c 。 .TP .B \-\-verbose .B ld のバージョン番号とサポートするエミュレーションのリストを表示します。 どの入力ファイルが開けた/開けなかったかを表示します。 .TP .B \-v, \-V .B ld\c \& のバージョン番号を表示します。 .B \-V オプションではサポートするエミュレーションのリストも表示します。 .TP .B \-\-version .B ld のバージョン番号を表示して終了します。 .TP .B \-warn\-common コモンシンボルが他のコモンシンボルかシンボル定義と結合された時に 警告します。Unix のリンカはこのややずさんな慣習を許しますが、 他のいくつかのオペレーティングシステムのリンカは許しません。 このオプションでグローバルシンボルの結合による問題の可能性を 見つけることができます。 .TP .B \-warn\-constructors グローバルコンストラクタの使用を警告します。これは 2、3 の オブジェクトファイル形式でのみ有用です。COFF や ELF といった 形式については、リンカはグローバルコンストラクタの使用を 検出できません。 .TP .B \-warn\-multiple\-gp 出力ファイルが複数のグローバルポインタ値を必要とする場合に警告します。 このオプションはある種のプロセッサ、Alpha などでのみ意味を持ちます。 .TP .B \-warn\-once 未定義シンボルのそれぞれについて、それを参照するモジュール毎でなく、 1 回だけ警告します。 .TP .B \-warn\-section\-align 出力セクションのアドレスがアラインメントのために変更されると警告します。 典型的には、アラインメントは入力セクションによってセットされます。 アドレスはアラインメントが明示的に指定されなかった場合にのみ変更されます; つまり SECTIONS コマンドがセクションの開始番地を指定しなかった場合です。 .TP .B \-\-whole\-archive コマンドライン上で .B \-\-whole\-archive オプションの後に指定された各アーカイブについて、 必要なオブジェクトファイルをアーカイブから探す代わりに、 アーカイブ中の全オブジェクトファイルをリンクします。 これは通常、アーカイブファイルを共有ライブラリにするのに使い、 作成する共有ライブラリに全オブジェクトが確実に入るようにします。 .TP .B \-\-no\-whole\-archive これ以降にコマンドライン上で指定されたアーカイブについて .B \-\-whole\-archive オプションの効果を無効にします。 .TP .BI "--wrap " "symbol" .I symbol についてラッパー関数を使います。 未解決の .I symbol への参照を .BI "__wrap_" "symbol" で解決します。 未解決の .BI "__real_" "symbol" への参照を .I symbol で解決します。 .TP .B \-X テンポラリのローカルシンボルをすべて削除します。大部分のターゲットでは、 これは名前が `\|\c .B L\c \|' で始まるすべてのローカルシンボルになります。 .TP .B \-x すべてのローカルシンボルを削除します。 .PP .SH 環境変数 \c 環境変数 \c .B GNUTARGET\c \& で .B ld\c \& の動作を変えることが出来ます。 \c .B \-b\c \& (またはその同義語の \c .B \-format\c \&) を使わない場合に .B GNUTARGET\c \& で入力ファイルオブジェクト形式が決まります。\c その値は入力形式を示す BFD 名でなければなりません。 環境変数に \c .B GNUTARGET\c \& が無ければ、\c .B ld\c \& はホストの自然な形式を 使います。もし\c .B GNUTARGET\c \& が .B default\c \& にセットされていれば\c BFD はバイナリ入力ファイルを調べることで入力形式を 見つけようとします; このやりかたは多くの場合に成功しますが、 あいまいになる可能性があります。オブジェクトファイル形式の 印として使われているマジックナンバが重複していない事を 確認する方法が存在しないからです。しかしながら、各システムでの BFD のコンフィギュレーション処理で、そのシステムで慣習的に 使われる形式を検索リストの最初に置きます。よってあいまいさは 慣習に合わせる事で解決されます。 .PP .SH "関連項目" .BR objdump ( 1 ) .br .br .B info\c の .RB "`\|" ld "\|' と `\|" binutils "\|'" の項 .br .I ld: the GNU linker\c , Steve Chamberlain and Roland Pesch; .I The GNU Binary Utilities\c , Roland H. Pesch .SH COPYING Copyright (c) 1991, 92, 93, 94, 95, 96, 97, 1998 Free Software Foundation, Inc. .PP Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. .PP Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. .PP Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be included in translations approved by the Free Software Foundation instead of in the original English. .SH 日本語訳 野首 寛高(hnokubi@yyy.or.jp): FreeBSD 用に翻訳 diff --git a/ja_JP.eucJP/man/man1/lex.1 b/ja_JP.eucJP/man/man1/lex.1 index c607881923..31206bdc3d 100644 --- a/ja_JP.eucJP/man/man1/lex.1 +++ b/ja_JP.eucJP/man/man1/lex.1 @@ -1,4083 +1,4083 @@ .\" %FreeBSD: src/usr.bin/lex/lex.1,v 1.10 1999/10/27 20:21:03 obrien Exp % .\" .\" jpman %Id: lex.1,v 1.3 1997/05/19 16:38:22 horikawa Stab % .TH FLEX 1 "April 1995" "Version 2.5" .SH 名称 flex \- 高速な字句解析処理系の生成ツール .SH 書式 .B flex .B [\-bcdfhilnpstvwBFILTV78+? \-C[aefFmr] \-ooutput \-Pprefix \-Sskeleton] .B [\-\-help \-\-version] .I [filename ...] .SH 概説 本マニュアルは、 テキストのパターンマッチングを行うプログラムを生成するツール .I flex を扱います。 本マニュアルはチュートリアルとリファレンス節とを含みます: .nf 解説 ツールの短い概説 簡単な例 入力ファイルのフォーマット パターン flex が使用する拡張した正規表現 入力のマッチ方法 何がマッチするかを決定する規則 アクション パターンがマッチした時に何を行うかを指定する方法 生成されたスキャナ flex が生成するスキャナに関する詳細; 入力元の制御方法 開始条件 スキャナへの文脈の導入と、 "ミニスキャナ" の制御方法 複数の入力バッファ 複数の入力元を扱う方法; ファイルではなく文字列からスキャンする方法 ファイルの終りのルール ファイルの終りにマッチする特別なルール 雑多なマクロ アクションで使用可能なマクロのまとめ ユーザが使用可能な値 アクションで使用可能な値のまとめ Yacc とのインタフェース lex スキャナと yacc パーサとの結合 オプション flex のコマンドラインオプションと、 "%option" ディレクティブ 性能関連 スキャナを可能な限り高速にする方法 C++ スキャナの生成 C++ スキャナクラス生成のための (実験的な) 機能 Lex および POSIX との非互換性 AT&T lex および POSIX lex 標準と flex との違い 診断 flex (もしくは生成したスキャナ) が出力する エラーメッセージで意味が明確でないもの 関連ファイル flex が使用するファイル 欠陥 / バグ flex の既知の問題 関連項目 ツールに関係する他のドキュメント 作者 連絡方法を含みます .fi .SH 解説 .I flex は .I スキャナ を生成するためのツールです。 ここで、スキャナとは、 テキスト内の字句パターンを解析するプログラムです。 .I flex は指定したファイル、もしくはファイル名が与えられなかった場合は 標準入力から、生成するスキャナの記述を読み込みます。 この記述は、 正規表現と C コードのペアの形をとっています。 これは .I ルール と呼ばれます。 .I flex は、出力として C ソースファイルの .B lex.yy.c を生成しますが、その中に .B yylex() ルーチンが定義されます。 このファイルはコンパイルされ、 .B \-ll ライブラリとともにリンクされて、 実行形式となります。 実行形式が走り始めると、 正規表現をマッチさせるために 入力が解析されます。 マッチするものを見つけると、対応する C コードが実行されます。 .SH 簡単な例 .PP まず簡単な例から、 .I flex の使い方を見て行きましょう。 次の .I flex の入力は、"username" という文字列に出会うとユーザのログイン名に置き換える スキャナを指定しています: .nf %% username printf( "%s", getlogin() ); .fi デフォルトでは、 .I flex スキャナにマッチしなかったテキストは出力にコピーされますので、 "username" を展開しながら入力を出力にコピーすることが このスキャナの最終的な結果となります。 この入力にはただ一つのルールだけがあります。 "username" は .I パターン であり、"printf" は .I アクション です。 "%%" はルールの始まりの印です。 .PP 別の例を見て見ましょう: .nf %{ int num_lines = 0, num_chars = 0; %} %% \\n ++num_lines; ++num_chars; . ++num_chars; %% main() { yylex(); printf( "# of lines = %d, # of chars = %d\\n", num_lines, num_chars ); } .fi このスキャナは入力の文字数および行数を数えます (数えた最終結果を報告するだけです)。 最初の行は 2 つの大域変数 "num_lines" と "num_chars" を宣言します。 これらの変数は、2 番目の "%%" の後に宣言されている .B yylex() と .B main() のルーチンからアクセス可能です。 ここには 2 つのルールがあります。 1 つ目は改行文字 ("\\n") にマッチし、行数と文字数のカウントを増加させます。 もう 1 つは、改行文字以外の全ての文字 ("." という正規表現で表されています)にマッチします。 .PP 次はもうちょっと複雑な例です: .nf /* scanner for a toy Pascal-like language */ %{ /* need this for the call to atof() below */ #include %} DIGIT [0-9] ID [a-z][a-z0-9]* %% {DIGIT}+ { printf( "An integer: %s (%d)\\n", yytext, atoi( yytext ) ); } {DIGIT}+"."{DIGIT}* { printf( "A float: %s (%g)\\n", yytext, atof( yytext ) ); } if|then|begin|end|procedure|function { printf( "A keyword: %s\\n", yytext ); } {ID} printf( "An identifier: %s\\n", yytext ); "+"|"-"|"*"|"/" printf( "An operator: %s\\n", yytext ); "{"[^}\\n]*"}" /* eat up one-line comments */ [ \\t\\n]+ /* eat up whitespace */ . printf( "Unrecognized character: %s\\n", yytext ); %% main( argc, argv ) int argc; char **argv; { ++argv, --argc; /* skip over program name */ if ( argc > 0 ) yyin = fopen( argv[0], "r" ); else yyin = stdin; yylex(); } .fi これは Pascal のような言語の単純なスキャナの原型です。 異なったタイプの .I トークン を定義し、これを見付けると報告します。 .PP この例の詳細は、以降の節で説明します。 .SH 入力ファイルのフォーマット .I flex の入力ファイルは 3 つの部分からなり、 .B %% だけからなる行により分けられます: .nf 定義 %% ルール %% ユーザコード .fi .I 定義 部分は、スキャナの宣言を単純化する単純な .I 名前 の定義の宣言と、後で説明する .I 開始条件 の宣言とからなります。 .PP 名前の定義は次の形式です: .nf 名前\ 定義 .fi "名前" は語であり、 レターかアンダースコア ('_') から始まって 0 個以上のレター・数字・'_'・'-' (ダッシュ)が続きます。 定義は、名前に続く最初の非空白文字から始まり、行末まで続くものとされます。 定義は後で "{名前}" で参照でき、"(定義)" を展開します。 例えば、 .nf DIGIT [0-9] ID [a-z][a-z0-9]* .fi は、 "DIGIT" が単一の数字にマッチする正規表現であると定義し、 "ID" がレターに 0 個以上のレターか数字が続く正規表現であると定義します。 後で出て来る参照 .nf {DIGIT}+"."{DIGIT}* .fi は .nf ([0-9])+"."([0-9])* .fi と同じであり、1 個以上の数字に '.' が続き、 0 個以上の数字が続くものにマッチします。 .PP .I flex の入力の .I ルール は次の形式の一連のルールからなります: .nf パターン\ \ \ アクション .fi ここで、パターンはインデントされていてはならず、 アクションは同じ行から始まる必要があります。 .PP パターンとアクションの詳細は後の解説を見て下さい。 .PP 最後に、ユーザコードの部分は単純にそのままの形で .B lex.yy.c にコピーされます。 スキャナを呼び出すまたは呼び出される付随ルーチンのために使用されます。 この部分はあっても無くても構いません; 無い場合には、入力ファイル中の 2 番目の .B %% も省略できます。 .PP 定義とルールの部分では、 .I インデントされた テキストと .B %{ と .B %} との間のテキストはそのままの形で出力にコピーされます (この際 %{} は削除されます)。 %{} はインデントされていない行に現れる必要があります。 .PP ルールの部分では、 最初のルールの前に現れるインデントされたもしくは %{} 部分のテキストは、 スキャンルーチンにローカルな変数と、 (宣言の後では)スキャンルーチンに入るたびに実行されるコードとを宣言します。 ルール部分の他のインデントされたもしくは %{} 部分のテキストは 出力にコピーされますが、 意味はちゃんと定義されておらずコンパイル時にエラーとなるかも知れません (この仕様は .I POSIX 互換のためにあります; 他のこのような仕様は以降を見て下さい)。 .PP 定義の部分(ルールの部分ではないです)では、 インデントされていないコメント("/*" から始まる行) は次の "*/" まで そのままの形でコピーされます。 .SH パターン 入力ファイルのパターンは拡張した正規表現を使って記述します。 以下に示します: .nf x 文字 'x' にマッチ。 . 改行を除く全ての文字(バイト)。 [xyz] "文字クラス"; この場合、'x', 'y', 'z' のいずれにも マッチします。 [abj-oZ] 範囲指定を含む "文字クラス"; この場合、'a', 'b' と 'j' から 'o' までの任意のレターと 'Z' にマッチします。 [^A-Z] "否定文字クラス"; クラスに含まれない任意の文字に マッチします。 この場合、'A' から 'Z' までの大文字 「以外の」文字にマッチします。 [^A-Z\\n] 大文字と改行を「除く」全ての文字。 r* 0 もしくはそれ以上の r。r は任意の正規表現。 r+ 1 もしくはそれ以上の r。 r? 0 もしくは 1つの r (「おまけ」の r) r{2,5} 2 つから 5つまでの r。 r{2,} 2 つ以上の r。 r{4} ちょうど 4つ の r。 {名前} "名前" の定義の展開。 (上を参照) "[xyz]\\"foo" 文字列 [xyz]"foo \\X X が 'a', 'b', 'f', 'n', 'r', 't', 'v' のいずれかの とき、ANSI-C での \\X の解釈となります。 それ以外の場合、文字 'X' ('*' のようなオペレータの 意味を打ち消し、その文字自体を指定する際に使います)。 \\123 8進数で 123 と表される文字。 \\x2a 16進数で 2a と表される文字。 (r) r にマッチ; ()は 優先順位を変えるために使用。 (以下を参照) rs 正規表現 r に正規表現 s が続く; 「連結(concatenation)」 と呼びます。 r|s r もしくは s。 r/s 後ろに s が続く時の r。 s にマッチするテキストはこのルールの "最長適合" を判定する 時には含まれますが、アクションが実行される前に 入力に戻されます。 アクションは r にマッチするテキストだけを見ます。 このパターンは "右文脈(trailing context)" と呼ばれます。 (flex が正確にマッチ不能な r/s の組合せは複数あります; "危険な右文脈" については、 以降の、欠陥 / バグ の節の記述を見て下さい。) ^r 行頭にある r。(スキャンの始まりもしくは スキャンされた改行の右です)。 r$ 行末にある r。"r/\\n" と等価(改行の前です)。 "r/\\n" と同じです。 flex の "改行" の表現は flex をコンパイルした C コンパイラが解釈する '\\n' と完全に一致することに 注意して下さい; 特定のシステム DOS では \\r を入力から取り除くか "r$" を表すために明示的に r/\\r\\n を使用する必要があります。 r 開始条件 s における r。(開始条件については以下を 参照)。 r 上に同じ。ただし開始条件は s1, s2, s3 のいずれでもよい。 <*>r 任意の開始条件の r。開始条件は排他的なものでもよい。 <> ファイルの終了。 <> 開始条件が s1 もしくは s2 であるときのファイルの終了。 .fi 文字クラス中では、全ての正規表現のオペレータは、 エスケープ ('\\') および 文字クラスオペレータである '-' と ']' とクラスの先頭の '^' を除き 特別な意味を失うことに注意して下さい。 .PP 上に挙げた正規表現は優先順位によってグループに分けられています。 一番上のグループが最も高い優先度で、 一番下のグループの優先順位が最も低くなっています。 グループ内では同じ優先順位です。例えば、 .nf foo|bar* .fi は .nf (foo)|(ba(r*)) .fi と同じです。なぜなら '*' オペレータは連結より優先度が高く、 連結は選言 ('|') より優先度が高いからです。このパターンは 文字列 "foo" .I もしくは 文字列 "ba" に 0 個以上の r がつづくものの .I どちらにも マッチします。 "foo" もしくは 0 個以上の "bar" にマッチさせるためには次の表現を使用して下さい: .nf foo|(bar)* .fi 0 個以上の "foo" または "bar" にマッチするためには次の表現を使用して下さい: .nf (foo|bar)* .fi .PP 文字もしくは文字範囲に加え、文字クラスも文字クラスの .I 表現 を含みます。 これらの表現は .B [: および .B :] のデリミタに囲まれます (文字クラスの '[' と ']' との間に現れる必要があります; 他の要素が文字クラス中に現れても構いません)。 有効な表現は以下の通りです: .nf [:alnum:] [:alpha:] [:blank:] [:cntrl:] [:digit:] [:graph:] [:lower:] [:print:] [:punct:] [:space:] [:upper:] [:xdigit:] .fi これらの表現は対応する標準 C の .B isXXX 関数に適合する全ての文字集合を指示します。例えば、 .B [:alnum:] は .B isalnum() が真を返す文字を指示します - すなわちすべてのアルファベットと数字です。 .B isblank(), が無いシステムでは、flex は .B [:blank:] を空白とタブと定義します。 .PP 例えば以下の表現は全て同じです: .nf [[:alnum:]] [[:alpha:][:digit:]] [[:alpha:]0-9] [a-zA-Z0-9] .fi スキャナが大文字小文字を意識しない場合( .B \-i フラグ指定時) .B [:upper:] と .B [:lower:] は .B [:alpha:] と同じです。 .PP パターンに関する注意点です: .IP - 否定文字クラス、例えば上の "[^A-Z]" は "\\n" (もしくはこれを表すエスケープシーケンス) が明示的に 否定文字クラスに現れている場合 (例えば "[^A-Z\\n]") を除き .I 改行にマッチします。 これは他の正規表現ツールが否定文字クラスを扱う方法とは異なりますが、 不幸なことにこの矛盾は歴史的に確立しています。 改行にマッチするとは、 入力に別のクオートが存在しない場合に [^"]* のようなパターンが 入力全体にマッチすることを意味します。 .IP - ルールは右文脈('/' オペレータもしくは '$' オペレータ) を高々一つしか持てません。 開始条件 '^' と "<>" パターンは パターンの最初になければならず、 '/', '$' 同様に () 内にいれることは出来ません。 ルールの先頭ではない '^' もしくはルールの終りではない '$' は 特別な意味を失い、通常の文字として扱われます。 .IP 以下は無効です: .nf foo/bar$ foobar .fi 前者は "foo/bar\\n" と書けます。 .IP 以下では '$' と '^' とは通常の文字として扱われます: .nf foo|(bar$) foo|^bar .fi "foo" もしくは "改行が続く bar" を指定したい場合は、 次の表現を使用して下さい (特別な '|' の動作は後で説明します): .nf foo | bar$ /* action goes here */ .fi 同じ方法で、foo もしくは 行頭の bar を指定可能です。 .SH 入力のマッチ方法 生成したスキャナを実行すると、 スキャナは入力を見てパターンにマッチする文字列を探します。 1 より多くのマッチを見付けると、最長テキストのマッチを採用します (右文脈(trailing context rule)の後ろの部分も長さに含みますが、 後ろの部分は入力に戻されます)。 同じ長さのマッチを 2 つ以上見付けた場合、 .I flex 入力ファイルで最初に記述されたルールを採用します。 .PP マッチが決定すると、マッチに対応するテキスト( .I トークン と呼ばれます)がグローバル文字ポインタ .B yytext により使用可能となり、長さがグローバル整数 .B yyleng により使用可能となります。 その後、マッチしたパターンに対応する .I アクション が実行され(アクションの詳細な記述は後で行います)、 残りの入力が残りのマッチのためにスキャンされます。 .PP マッチが見付からないと、 .I デフォルトルール が実行されます: 入力の次の文字がマッチしたと見倣され、 標準出力にコピーされます。最も簡単で正当な .I flex の入力は以下の通りです: .nf %% .fi これは、入力を単純に出力にコピー(1 度に 1 文字ずつ)するスキャナを生成します。 .PP .B yytext は 2 つの異なった方法により定義されうることに注意して下さい: 文字 .I ポインタ もしくは文字 .I 配列 です。 .I flex がどちらの定義を使用するかは特別なディレクティブ .B %pointer もしくは .B %array を flex の入力の最初の(定義)部分に含めることにより制御できます。 デフォルトは .B %pointer であり、 .B -l lex 互換オプションを使用した場合には例外的に .B yytext は配列になります。 .B %pointer を使用する利点はスキャンが高速であること、 非常に大きなトークンにマッチする時にも (動的メモリを使用し尽くさない限り)バッファオーバフローとならないことです。 欠点は、アクションが .B yytext を修正することが制限されること(次節参照)、 .B unput() 呼び出しが .B yytext の現在の内容を破壊することです。 これは異なる .I lex バージョン間での移植性に関する頭痛の種です。 .PP .B %array の利点は .B yytext の内容を思った通りに変更できること、 .B unput() を呼び出しても .B yytext の内容が破壊されないことです(下記参照)。 その上、既存の .I lex プログラムは .B yytext を外部から次の形式の宣言を使用してアクセスしていることがあります: .nf extern char yytext[]; .fi この定義は .B %pointer 使用時には誤りですが、 .B %array 使用時には正しいです。 .PP .B %array は .B yytext を文字数 .B YYLMAX (デフォルトは十分大きな値)の配列であると定義します。 この大きさは、 .I flex の入力の最初の部分で単純に .B YYLMAX を異なった値に #define することにより変更できます。 上記の通り、 .B %pointer 使用時には yytext は大きなトークンを格納するために動的に大きくなります。 このことは .B %pointer を使用したスキャナは非常に大きなトークン (例えばコメントブロック全体)を格納可能であることを意味しますが、 スキャナが .B yytext の大きさを変えるたびにトークン全体を先頭から再スキャンすることが必要となるため このようなトークンに対するマッチングは遅くなりうることを覚えておいて下さい。 現在、 .B yytext は .B unput() が結果として返すテキストが大きい時には動的には大きくなり .I ません; 実行時エラーとなります。 .PP また、 .B %array は C++ スキャナクラスでは使用できないことに注意して下さい( .B c++ オプションに関しては下記参照)。 .SH アクション ルール中のパターンは対応するアクションを持ちます。 アクションは任意の C の文です。 パターンは最初のエスケープされていない空白文字で終ります; 行の残りがアクションです。 アクションが空である場合、 パターンがマッチした時に入力トークンは単純に捨てられます。 例えば入力から全ての "zap me" を削除するプログラムの仕様を示します: .nf %% "zap me" .fi (入力の他の全ての文字を出力にコピーします。 なぜならデフォルトルールにマッチするからです。) .PP 次は、複数の空白や文字を単一の空白に圧縮し行末の空白を捨てるプログラムです: .nf %% [ \\t]+ putchar( ' ' ); [ \\t]+$ /* ignore this token */ .fi .PP アクションが '{' を含む場合、アクションは対応する '}' まで続き、 複数行に渡る場合もあります。 .I flex は C の文字列およびコメントに関して知っており、 それらの中のブレースを誤解することはありませんが、 アクションが .B %{ で始まることを許し、次の .B %} までのテキストがアクションであるとします (アクション内部の任意個のブレースには関係ありません)。 .PP 垂直バー ('|') のみからなるアクションは "次のルールと同じ" を意味します。説明は以下を見て下さい。 .PP アクションは任意の C コードを含むことが出来ます。 これには、 .B yylex() を呼び出したルーチンに対して値を返す .B return 文も含まれます。 .B yylex() が呼ばれるたび、最後に残ったトークンから処理を再開し、 ファイルの終了もしくは return を実行するまで処理を行います。 .PP アクションは自由に .B yytext を変更できますが、例外は長さを増やすことです (文字を末尾に加えることになり、 これは入力ストリームの後続する文字を上書きします)。 これは .B %array 使用時には当てはまりません(上述); この場合 .B yytext を自由に変更できます。 .PP アクションは自由に .B yyleng を変更できますが、アクションが .B yymore() を使用する時には例外的に変更してはいけません(後述)。 .PP 多くの特別なディレクティブがあり、アクション中に含めることが出来ます: .IP - .B ECHO yytext をスキャナの出力にコピーします。 .IP - .B BEGIN 後ろに開始条件の名前を書くと、スキャナを対応する開始条件に設定します(後述)。 .IP - .B REJECT 入力(もしくは入力の頭)に "2 番目によく(second best)" マッチするルール に進むようにスキャナに指示します。 "入力のマッチ方法" で示したようにルールは選択され、 .B yytext と .B yyleng は適切に設定されます。 選択されるルールは、最初に選択されたルールと同じ長さであるが .I flex の入力ファイルにて後で出て来るもの、もしくは少ない文字数にマッチするものです。 例えば次の例では入力中の語を数え、 "frob" が見付かるたびにルーチン special() を呼びます: .nf int word_count = 0; %% frob special(); REJECT; [^ \\t\\n]+ ++word_count; .fi .B REJECT が無い場合、 入力中の "frob" は語として数えられず、 スキャナは通常通りトークン毎に 1 つのアクションだけを行います。 複数の .B REJECT を使用可能であり、それぞれ現在有効なルールの次に良い選択を見付けます。 例えば次のスキャナは、"abcd" というトークンをスキャンし、 出力に "abcdabcaba" を書きます: .nf %% a | ab | abc | abcd ECHO; REJECT; .|\\n /* eat up any unmatched character */ .fi (前の 3 つのルールは 4 番目のルールのアクションを共有します。 なぜなら特別な '|' アクションが使用されているからです。) .B REJECT はスキャナの性能という点で特にコストのかかる機能です; もしスキャナのアクションの .I いずれか にでも REJECT が使われたなら、スキャナの .I 全ての マッチング速度を低下させるということです。 さらに .B REJECT をオプション .I -Cf や .I -CF と共に用いることは出来ません。 .IP また、他の特別アクションと違い .B REJECT は .I 分岐(branch) であることに注意してください; すなわち REJECT 直後のアクションは 実行 .I されません。 .IP - .B yymore() 次にルールとマッチしたときには、対応するトークンは、 現在の .B yytext の内容と入れ換えるのではなく .B yytext に .I 追加 するようスキャナに指示します。 例えば、入力 "mega-kludge" が与えられると、以下は "mega-mega-kludge" を出力に書きます: .nf %% mega- ECHO; yymore(); kludge ECHO; .fi 最初の "mega-" はマッチし出力にエコーされます。 次に "kludge" がマッチしますが、直前の "mega-" がまだ .B yytext の先頭に残っており、"kludge" の .ECHO ルールは実際には "mage-kludge" を書きます。 .PP .B yymore() の使用に関し 2 つの注意点があります。 まず、 .B yymore() は現在のトークンの大きさを反映する .I yyleng の値の正確さに依存することであり、 .B yymore() 使用時には .I yyleng を変更してはなりません。 次に、 スキャナのアクションに .B yymore() があると、スキャナのマッチ速度に若干悪影響があります。 .IP - .B yyless(n) 現在のトークンから最初の .I n 文字を除いたものを入力ストリームに戻します。 戻した文字列はスキャナが次のマッチングをとるときに再度スキャンされます。 .B yytext と .B yyleng は適切に調整されます(例えば .B yyleng は .I n となります)。 例えば、入力 "foobar" が与えられると、以下は "foobarbar" を書きます: .nf %% foobar ECHO; yyless(3); [a-z]+ ECHO; .fi 引数 0 を .B yyless に与えると、現在の入力文字列全体が再度スキャンされます。 (例えば .B BEGIN を使用して)次にスキャナが入力する方法を変更していないと、無限ループとなります。 .PP .B yyless はマクロであり、flex 入力ファイルでのみ使用可能であり、 別のソースファイルからは使用不能であることに注意して下さい。 .IP - .B unput(c) 文字 .I c を入力ストリームへ戻します。戻した文字は次にスキャンされる文字になります。 次のアクションは現在のトークンを取り上げ、 括弧内に入れて再スキャンします。 .nf { int i; /* Copy yytext because unput() trashes yytext */ char *yycopy = strdup( yytext ); unput( ')' ); for ( i = yyleng - 1; i >= 0; --i ) unput( yycopy[i] ); unput( '(' ); free( yycopy ); } .fi .B unput() は文字を入力ストリームの .I 先頭 に戻すので、文字列を戻す場合には後ろから前に向かって戻す必要があります。 .PP .B unput() 使用時の重要な潜在的な問題は、 .B %pointer 使用時(デフォルト)に .B unput() を呼び出すと、 右端の文字から開始し 1 文字ずつ左に向かって消費され、 .I yytext の内容が .I 破壊 されることです。 (上記例のように) .B unput() 呼び出し後も .I yytext の内容を保存するためには、始めに別の場所にコピーするか、 スキャナを .B %array を使うように構築することです(入力のマッチ方法参照)。 .PP 最後に、 .B EOF を戻して入力ストリームにファイルの終りをマークするとは 出来ないことに注意して下さい。 .IP - .B input() 次の文字を入力ストリームから読みます。 次の例は C コメントを食べます: .nf %% "/*" { register int c; for ( ; ; ) { while ( (c = input()) != '*' && c != EOF ) ; /* eat up text of comment */ if ( c == '*' ) { while ( (c = input()) == '*' ) ; if ( c == '/' ) break; /* found the end */ } if ( c == EOF ) { error( "EOF in comment" ); break; } } } .fi (スキャナが .B C++ でコンパイルされたときは、このルーチンは .B yyinput() という名称になり、 .B C++ ストリームの .I input と名前が衝突することを避けます。) .IP - .B YY_FLUSH_BUFFER スキャナの内部バッファをフラッシュし、 次にスキャナがトークンをマッチしようとした時 バッファを .B YY_INPUT にてリフィルします(生成されたスキャナで後述)。 このアクションは、 複数の入力バッファにおいて後述する より一般的な .B yy_flush_buffer() 関数の特別なケースです。 .IP - .B yyterminate() アクションの return 文の代わりに使うことが出来ます。 .B yyterminate() はスキャナを終了し、"全て終了" を意味する 0 を呼び出し元関数に返します。 デフォルトでは .B yyterminate() はファイルの終わりに達したときにも呼ばれます。 .B yyterminate() はマクロであり、定義しなおすことができます。 .SH 生成されたスキャナ .I flex の出力は .B lex.yy.c というファイルであり、スキャンルーチン .B yylex() と、トークンのマッチングに使用する複数のテーブルと、 複数の付属ルーチンとマクロからなります。デフォルトでは、 .B yylex() は次のように宣言されます: .nf int yylex() { ... various definitions and the actions in here ... } .fi (環境が関数プロトタイプをサポートしている場合、 "int yylex( void )" となります。) この定義は "YY_DECL" マクロを定義することにより変更できます。 例えば次のように使用することが出来ます: .nf #define YY_DECL float lexscan( a, b ) float a, b; .fi これはスキャンルーチンの名前を .I lexscan とし、浮動小数点数を返すようにし、2 つの浮動小数点数を引数とします。 K&R の非プロトタイプの関数宣言を使用してスキャンルーチンに対して引数を 与える場合、定義をセミコロン(;)で終了する必要があります。 .PP .B yylex() は呼ばれるたび、グローバル入力ファイル .I yyin (デフォルトでは標準入力)からトークンをスキャンします。 ファイルの終りになる(この場合 0 を返します)か、 アクションが .I return 文を実行するまで、実行を続けます。 .PP スキャナがファイルの終りに到達すると、 .I yyin が新たなファイルを指さないか (新たなファイルを指す場合はこのファイルのスキャンを続けます)、 .B yyrestart() が呼ばれない限り、 後続する呼び出しは未定義です。 .B yyrestart() は .B FILE * ポインタ( .B YY_INPUT を設定して .I yyin 以外のソースをスキャンするようにした場合には nil も可です) である引数を 1 つとり、そのファイルからのスキャンのために .I yyin を初期化します。 本質的に、 .I yyin を新しい入力ファイルに割り当てることと .B yyrestar() を使用することとは同じです; 後者は前のバージョンの .I flex との互換性のために使用可能であり、 またスキャンの途中で入力ファイルを変えることが可能です。 引数を .I yyin として呼び出すことにより、現在の入力バッファを捨てることも出来ます; ただし、 .B YY_FLUSH_BUFFER (上述)を使用する方が良いです。 .B yyrestart() は .B INITIAL の開始条件を変更し .I ない ことに注意して下さい (後述の開始条件参照)。 .PP あるアクション中で .I return 文を実行することにより .B yylex() がスキャンを止めた場合、スキャナは再度呼び出し可能であり、 この場合スキャンの残りの部分から再開します。 .PP デフォルトで(効率のため)、スキャナは単純な .I getc() コールではなくブロックリードを行い、 .I yyin から文字を読みます。 入力取得方法は .B YY_INPUT マクロを定義することにより制御できます。 YY_INPUT 呼び出し手順は "YY_INPUT(buf,result,max_size)" です。 このアクションは、 .I buf 文字配列中に最大 .I max_size 文字を用意し、整数変数 .I result 中に読めた文字数もしくは定数 YY_NULL (Unix システムでは 0)を入れて返します。 デフォルトの YY_INPUT はグローバルファイルポインタ "yyin" から読みます。 .PP YY_INPUT のサンプル定義です(入力ファイルの定義部に格納): .nf %{ #define YY_INPUT(buf,result,max_size) \\ { \\ int c = getchar(); \\ result = (c == EOF) ? YY_NULL : (buf[0] = c, 1); \\ } %} .fi この定義により、入力処理は 1 度に 1 文字ずつ行うように変更されます。 .PP スキャナが YY_INPUT からファイルの終りを通知された場合、 スキャナは .B yywrap() 関数をチェックします。 .B yywrap() 関数が偽(ゼロ)を返す場合、関数は続行中であるとされ、 .I yyin を別の入力ファイルを指すように設定し、スキャンを続行します。 関数が真(非ゼロ)を返す場合、スキャナは終了し、呼び出し元に 0 を返します。 どちらの場合も開始条件は変化しないことに注意して下さい; つまり .B INITIAL には戻り .I ません。 .PP 独自の .B yywrap() を設定しない場合、 .B %option noyywrap (この場合スキャナは .B yywrap() が 1 を返したかのように動作します)を使用するか、フラグ .B \-ll を指定してデフォルトのルーチン(常に 1 を返します)を使用しなければなりません。 .PP ファイルではなくメモリ中のバッファからスキャンするための 3 つのルーチンを 使用可能です: .B yy_scan_string(), yy_scan_bytes(), yy_scan_buffer() 。 これらに関する議論は複数の入力バッファの節を参照して下さい。 .PP スキャナは、自己の .B ECHO 出力を .I yyout グローバル(デフォルトでは標準出力であり、 別の .B FILE ポインタに割り当てることで再定義できます)に書きます。 .SH 開始条件 .I flex は、条件的に有効となるルールのための機構を提供します。 パターンのプレフィックスが "" となっているルールは、 スキャナが "sc" という名前の開始条件にいる場合のみ有効です。 例えば、 .nf [^"]* { /* eat up the string body ... */ ... } .fi はスキャナが "STRING" 開始条件にいる時のみ有効であり、 .nf \\. { /* handle an escape ... */ ... } .fi は現在の開始条件が、 "INITIAL", "STRING", "QUOTE" のいずれかの場合のみ有効です。 .PP 開始条件は、入力の定義(先頭)部において、インデントされない行で .B %s もしくは .B %x から始まり名前が続く行において宣言されます。 前者は .I 内包的 開始条件を、 後者は .I 排他的 開始条件を、それぞれ宣言します。 開始条件を有効にするのは .B BEGIN アクションです。 次の .B BEGIN アクションが実行されるまで、与えられた開始条件のルールは有効であり、 他の開始条件のルールは無効です。 開始条件が .I 内包的 な場合、開始条件を持たないルールもまた有効です。 開始条件が .I 排他的 な場合、 開始条件を満たすルール .I だけ が有効です。 同じ排他開始条件に依存するルールの組は、 .I flex 入力中の別のルールとは独立なスキャナを記述します。 そのため、排他開始条件を使用すれば、"ミニスキャナ" (別部分とは文法的に異なる部分(例えばコメント)に対するスキャナ) を簡単に指定できます。 .PP 内包的開始条件と排他的開始条件とがまだ少し曖昧であるなら、 両者の関係を表す例を示して説明します。以下のルールの組: .nf %s example %% foo do_something(); bar something_else(); .fi は .nf %x example %% foo do_something(); bar something_else(); .fi と等価です。 .B が無いと、2 番目の例における .I bar パターンは、開始条件が .B example の場合、有効となりません(すなわちマッチしません)。 .B だけを .I bar につけると、 .B example だけにおいて有効となり、 .B INITIAL では有効となりません。一方、最初の例ではどちらの場合でも有効です。 なぜなら最初の例では .B example 開始条件は .I 内包的 .B (%s) 開始条件だからです。 .PP 特殊な開始条件指定子 .B <*> は全ての開始条件にマッチすることに注意して下さい。 このため、上の例は次のようにも書けます; .nf %x example %% foo do_something(); <*>bar something_else(); .fi .PP デフォルトルール(マッチしなかった文字に対しては .B ECHO です)は開始条件中でも有効です。 これは次のものと等価です: .nf <*>.|\\n ECHO; .fi .PP .B BEGIN(0) は、開始条件の無いルールだけが有効である、最初の状態に戻ります。 この状態は開始条件 "INITIAL" として参照できるため、 .B BEGIN(INITIAL) は .B BEGIN(0) と等価です。 (開始条件名を括る括弧は不要ですが、良いスタイルであるとされています。) .PP .B BEGIN アクションは、ルール部の先頭のインデントされたコード中に現れても良いです。 例えば以下の例では、 .B yylex() が呼ばれグローバル変数 .I enter_special が真の場合には、スキャナは "SPECIAL" 開始条件に入ります: .nf int enter_special; %x SPECIAL %% if ( enter_special ) BEGIN(SPECIAL); blahblahblah ...more rules follow... .fi .PP 開始条件を説明するために、 "123.456" のような文字列を 2 通りの異なった解釈をするスキャナを示します。 デフォルトではこれは、 整数 "123" とドット ('.') と整数 "456" の 3 トークンに数えられます。 しかし、この文字列の前に "expect-floats" の文字列がある場合、 これは単一のトークンであるとされ、浮動小数点数 123.456 とされます: .nf %{ #include %} %s expect %% expect-floats BEGIN(expect); [0-9]+"."[0-9]+ { printf( "found a float, = %f\\n", atof( yytext ) ); } \\n { /* that's the end of the line, so * we need another "expect-number" * before we'll recognize any more * numbers */ BEGIN(INITIAL); } [0-9]+ { printf( "found an integer, = %d\\n", atoi( yytext ) ); } "." printf( "found a dot\\n" ); .fi 次は、C のコメントを理解(して捨てる)一方で、 現在の入力行を数えるスキャナです。 .nf %x comment %% int line_num = 1; "/*" BEGIN(comment); [^*\\n]* /* eat anything that's not a '*' */ "*"+[^*/\\n]* /* eat up '*'s not followed by '/'s */ \\n ++line_num; "*"+"/" BEGIN(INITIAL); .fi このスキャナは各ルールで可能な最大のテキストにマッチしようとする場合、 ちょっとした問題が起こります。 一般的には、高速なスキャナを記述する場合、 各ルールで最大のマッチを得ようとすることが最も成功します。 .PP 開始条件名は実際には整数値であり、格納することが出来ることに注意して下さい。 そのため、上記例は以下のように拡張できます: .nf %x comment foo %% int line_num = 1; int comment_caller; "/*" { comment_caller = INITIAL; BEGIN(comment); } ... "/*" { comment_caller = foo; BEGIN(comment); } [^*\\n]* /* eat anything that's not a '*' */ "*"+[^*/\\n]* /* eat up '*'s not followed by '/'s */ \\n ++line_num; "*"+"/" BEGIN(comment_caller); .fi さらに、現在の開始条件を整数値であるマクロ .B YY_START にてアクセスできます。 例えば、上記の .I comment_caller への代入は次のように記述できます。 .nf comment_caller = YY_START; .fi flex は .B YYSTATE を .B YY_START のエイリアスとして提供します (AT&T の .I lex が使用しています)。 .PP 開始条件は独自の名前空間を持たないことに注意して下さい; %s や %x の宣言における名前宣言の扱いは #define と同じです。 .PP 最後に、排他的開始条件を使用する、 展開されたエスケープシーケンスを含む(長すぎる文字列のチェックは含みません) C スタイルのクオート文字列へのマッチ方法を示します: .nf %x str %% char string_buf[MAX_STR_CONST]; char *string_buf_ptr; \\" string_buf_ptr = string_buf; BEGIN(str); \\" { /* saw closing quote - all done */ BEGIN(INITIAL); *string_buf_ptr = '\\0'; /* return string constant token type and * value to parser */ } \\n { /* error - unterminated string constant */ /* generate error message */ } \\\\[0-7]{1,3} { /* octal escape sequence */ int result; (void) sscanf( yytext + 1, "%o", &result ); if ( result > 0xff ) /* error, constant is out-of-bounds */ *string_buf_ptr++ = result; } \\\\[0-9]+ { /* generate error - bad escape sequence; something * like '\\48' or '\\0777777' */ } \\\\n *string_buf_ptr++ = '\\n'; \\\\t *string_buf_ptr++ = '\\t'; \\\\r *string_buf_ptr++ = '\\r'; \\\\b *string_buf_ptr++ = '\\b'; \\\\f *string_buf_ptr++ = '\\f'; \\\\(.|\\n) *string_buf_ptr++ = yytext[1]; [^\\\\\\n\\"]+ { char *yptr = yytext; while ( *yptr ) *string_buf_ptr++ = *yptr++; } .fi .PP 上記例のように同一の開始条件を持つ全てのルールの前に 開始条件を書かねばならないことが多いです。 flex はこれを簡単かつ綺麗にするため開始条件 .I スコープ を導入しました。 開始条件スコープは次のように始まります: .nf { .fi ここで .I SCs は 1 つ以上の開始条件のリストです。 開始条件スコープ内では、 最初の .I '{' にマッチするまでの .I '}' において、全てのルールは自動的に .I のプレフィックスが付きます。 そのため、例えば .nf { "\\\\n" return '\\n'; "\\\\r" return '\\r'; "\\\\f" return '\\f'; "\\\\0" return '\\0'; } .fi は次のものと等価です: .nf "\\\\n" return '\\n'; "\\\\r" return '\\r'; "\\\\f" return '\\f'; "\\\\0" return '\\0'; .fi 開始条件スコープはネストすることが出来ます。 .PP 開始条件のスタックを制御するために 3 つのルーチンを使用可能です: .TP .B void yy_push_state(int new_state) 現在の開始条件を開始条件スタックの先頭にプッシュし、 .B BEGIN new_state を使用したかのように .I new_state -に切替えます +に切り替えます (開始条件名は整数値でもあることを思い出して下さい)。 .TP .B void yy_pop_state() スタックの先頭をポップし、 .B BEGIN -を使用してその開始条件に切替えます。 +を使用してその開始条件に切り替えます。 .TP .B int yy_top_state() スタックの内容を変更せずに、スタックの先頭を返します。 .PP 開始条件スタックは動的に大きくなり、 また組み込み時のサイズ制限はありません。 メモリを使い切ると、プログラム実行は中止されます。 .PP 開始条件スタックを使用するためには、スキャナは .B %option stack ディレクティブをインクルードする必要があります (下記オプションを参照して下さい)。 .SH 複数の入力バッファ スキャナによっては(ファイルの "include" をサポートする等) 複数の入力ストリームを扱う必要があります。 .I flex スキャナでは大きなバッファリングを行うため、 スキャンコンテキストに影響される .B YY_INPUT を単純に書き換えるだけでは次の入力がどこから読まれるのかを制御できません。 .B YY_INPUT が呼ばれるのはスキャナがバッファの終りに到達する時だけですので、 -例えば "include" のように入力元を切替える必要のある文をスキャンした後でも +例えば "include" のように入力元を切り替える必要のある文をスキャンした後でも 長時間を費す場合があります。 .PP この様な問題を解決するため、 .I flex -は複数の入力バッファを生成して切替える機構を提供します。 +は複数の入力バッファを生成して切り替える機構を提供します。 入力バッファは次のように生成されます: .nf YY_BUFFER_STATE yy_create_buffer( FILE *file, int size ) .fi これは .I FILE ポインタと size を取り、与えられる file に関連し .I size 文字を保持するに十分なバッファを生成します (疑わしい場合には size には .B YY_BUF_SIZE を使用して下さい)。 これは、別のルーチン(下記参照)に渡すための .B YY_BUFFER_STATE ハンドルを返します。 .B YY_BUFFER_STATE のタイプは .B struct yy_buffer_state 構造体へのポインタであるため、 安全のため YY_BUFFER_STATE 変数を .B ((YY_BUFFER_STATE) 0) と初期化することが出来、 スキャナではなくソースファイルにおいて 入力バッファを正しく宣言するためにこの構造体を参照することが出来ます。 .B yy_create_buffer 呼び出しにおける .I FILE ポインタは .B YY_INPUT から見える .I yyin の値と同じようにだけ使用されることに注意して下さい; .B YY_INPUT を再定義して .I yyin を使わないようにすることにより、 .B yy_create_buffer に対して安全にニル .I FILE ポインタを渡せます。 スキャンするバッファを選択するためには次のようにします: .nf void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer ) .fi -これはスキャナの入力バッファを切替え、 +これはスキャナの入力バッファを切り替え、 トークンが .I new_buffer から来るようになります。 新たなファイルをオープンして .I yyin を指すのではなく、スキャンを継続するために yywrap() から .B yy_switch_to_buffer() を使用することがあることに注意して下さい。 また、 .B yy_switch_to_buffer() または .B yywrap() -による入力元の切替えは開始条件を変更し +による入力元の切り替えは開始条件を変更し .I ない ことにも注意して下さい。 .nf void yy_delete_buffer( YY_BUFFER_STATE buffer ) .fi はバッファに関連づけられたストレージの返還要求に使用します。( .B buffer はニルでも構いませんがこの場合このルーチンは何もしません。) 現在のバッファの内容をクリアするには次のようにします: .nf void yy_flush_buffer( YY_BUFFER_STATE buffer ) .fi この関数はバッファの内容を捨てるため、 次にスキャナがこのバッファとトークンのマッチを行う場合、 スキャナはまず .B YY_INPUT を使用してこのバッファをフィルします。 .PP .B yy_new_buffer() は .B yy_create_buffer() のエイリアスであり、動的オブジェクトの生成と破壊のために使用する C++ の .I new と .I delete との互換性のために提供しています。 .PP 最後に .B YY_CURRENT_BUFFER マクロは、現在のバッファに対する .B YY_BUFFER_STATE ハンドルを返します。 .PP この機能を使用してインクルードファイルを展開するスキャナの記述例です( .B <> 機能は後述します): .nf /* the "incl" state is used for picking up the name * of an include file */ %x incl %{ #define MAX_INCLUDE_DEPTH 10 YY_BUFFER_STATE include_stack[MAX_INCLUDE_DEPTH]; int include_stack_ptr = 0; %} %% include BEGIN(incl); [a-z]+ ECHO; [^a-z\\n]*\\n? ECHO; [ \\t]* /* eat the whitespace */ [^ \\t\\n]+ { /* got the include file name */ if ( include_stack_ptr >= MAX_INCLUDE_DEPTH ) { fprintf( stderr, "Includes nested too deeply" ); exit( 1 ); } include_stack[include_stack_ptr++] = YY_CURRENT_BUFFER; yyin = fopen( yytext, "r" ); if ( ! yyin ) error( ... ); yy_switch_to_buffer( yy_create_buffer( yyin, YY_BUF_SIZE ) ); BEGIN(INITIAL); } <> { if ( --include_stack_ptr < 0 ) { yyterminate(); } else { yy_delete_buffer( YY_CURRENT_BUFFER ); yy_switch_to_buffer( include_stack[include_stack_ptr] ); } } .fi ファイルではなくメモリ上の文字列をスキャンするための 入力バッファを設定するための 3 つのルーチンを使用可能です。 いずれも文字列をスキャンする新しい入力バッファを生成し、対応する .B YY_BUFFER_STATE ハンドル(終了時には .B yy_delete_buffer() -にて消去します)を返します。新しいバッファに切替える時には +にて消去します)を返します。新しいバッファに切り替える時には .B yy_switch_to_buffer() を使用し、次の .B yylex() の呼び出し時にはこの文字列をスキャン開始します。 .TP .B yy_scan_string(const char *str) NUL ターミネートされた文字列をスキャンします。 .TP .B yy_scan_bytes(const char *bytes, int len) .I len バイト (NUL が含まれるかも知れません)を位置 .I bytes からスキャンします。 .PP どちらの関数も文字列もしくはバイト列の .I コピー を生成してからスキャンします。( .B yylex() はスキャンするバッファの内容を変更するため、これが望ましいのです。) コピーを避けるためには次のようにします: .TP .B yy_scan_buffer(char *base, yy_size_t size) バッファ内で .I base から .I size バイトの長さをスキャンします。最後の 2 バイトは .B YY_END_OF_BUFFER_CHAR (ASCII NUL) である .I 必要があります。 これらの最後の 2 バイトはスキャンされません; そのためスキャンの内容は .B base[0] から .B base[size-2] までで両端を含みます。 .IP この様になるように .I base を設定しなかった場合(つまり最後の 2 つの .B YY_END_OF_BUFFER_CHAR バイトを忘れた場合)、 .B yy_scan_buffer() は新しいバッファを生成するのではなくニルポインタを返します。 .IP 型 .B yy_size_t は整数型であり、 バッファの大きさを反映する整数式をこの型にキャストすることが出来ます。 .SH ファイルの終りのルール 特別ルール "<>" は、 ファイルの終了時もしくは yywrap() が非ゼロ(すなわち処理するファイルが無いことを表す)の時に 行われるべきアクションを表します。 アクションは以下の 4 つのうちのいずれかで終る必要があります。 .IP - .I yyin に新しいファイルを割り当てる(前のバージョンの flex では、 割り当て後に特別なアクション .B YY_NEW_FILE を呼び出す必要がありました; 今では不要です。); .IP - .I return 文を実行する; .IP - 特別な .B yyterminate() アクションを実行する; .IP - .B yy_switch_to_buffer() -を使用して新たなバッファに切替える +を使用して新たなバッファに切り替える (上記例で示した通り)。 .PP <> ルールを他のパターンと共に使用してはなりません; 他のパターンは開始条件のリストともにだけ満たされるからです。 満たされない <> ルールが与えられた場合、 <> アクションをまだ持っていない .I 全ての 開始条件に適用されます。 <> ルールを最初の開始条件だけに指定するためには次のようにして下さい。 .nf <> .fi .PP これらのルールは閉じていないコメントを捕まえる場合等に便利です。 例えば: .nf %x quote %% ...other rules for dealing with quotes... <> { error( "unterminated quote" ); yyterminate(); } <> { if ( *++filelist ) yyin = fopen( *filelist, "r" ); else yyterminate(); } .fi .SH 雑多なマクロ マクロ .B YY_USER_ACTION にはマッチルールアクションに先だって常に行うアクションを定義できます。 例えば、yytext を小文字に変換するルーチンを呼ぶように #define 出来ます。 .B YY_USER_ACTION 起動時には、変数 .I yy_act はマッチしたルールの番号を与えます(ルールは 1 番から数えます)。 各ルールがマッチする頻度を知りたい場合を想像して下さい。 以下に仕掛けを示します: .nf #define YY_USER_ACTION ++ctr[yy_act] .fi ここで .I ctr は配列であり、それぞれのルールがマッチした回数を計数します。 マクロ .B YY_NUM_RULES はルールの総数を表すため( .B \-s を使った時でさえデフォルトルールを含みます)、 正しい .I ctr の宣言は次のようになります: .nf int ctr[YY_NUM_RULES]; .fi .PP マクロ .B YY_USER_INIT には最初のスキャンの前に常に行うアクションを再定義できます (スキャナの内部初期化の前に行われます)。 例えばデータ表を読み込んだり、ログファイルをオープンするために使用できます。 .PP マクロ .B yy_set_interactive(is_interactive) は現在のバッファが .I 対話的 と見倣されているか否かを制御するために使用します。 対話的なバッファの処理は遅くなりますが、 スキャナの入力元が対話的でありバッファをフィルするのを待つことに起因する 問題を避けるためには指定しなければなりません(以下の .B \-I .B %option interactive フラグに関する議論を参照して下さい)。 マクロ起動時に非ゼロを指定するとバッファは対話的になり、 ゼロを指定すると非対話的になります。 このマクロの使用は .B %option interactive , .B %option always-interactive , .B %option never-interactive に優先します(下記オプションを参照して下さい)。 バッファをスキャンして対話的である(もしくはでない)と判断される前に、 .B yy_set_interactive() を起動して下さい。 .PP マクロ .B yy_set_bol(at_bol) は現在のバッファにおける次のトークンに対するマッチのためのスキャンが 行頭から始まるか否かを制御します。 非ゼロのマクロ引数は、'^' が付いたルールを有効にしますが、 ゼロのマクロ引数は '^' が付いたルールを無効にします。 .PP 現在のバッファからスキャンされた次のトークンが有効な '^' ルールを持つ時、 マクロ .B YY_AT_BOL() は真を返します。 そうでない場合は偽を返します。 .PP 生成されたスキャナでは、全てのアクションは大きな一つの switch 文に 集められ、 .B YY_BREAK で分けられています。 .B YY_BREAK は再定義可能です。デフォルトではそれぞれのルールのアクションを 分けるための単なる "break" です。 .B YY_BREAK を再定義することにより、例えば C++ ユーザが #define YY_BREAK を何もしないように定義し (ただし全てのルールが "break" か "return" で終るように 注意しなければなりません!)、 ルールのアクションが "return" で終ることにより .B YY_BREAK がアクセスできないことに起因する、 到達できない文があるという警告を避けることが出来ます。 .SH ユーザが使用可能な値 この節ではユーザがルールのアクション部分で使用可能な値をまとめます。 .IP - .B char *yytext 現トークンのテキストを保持しています。内容を変更しても構いませんが、 その長さを伸ばしてはいけません(終りに文字を追加してはいけない)。 .IP スキャナの記述の最初の部分に特別な指示である .B %array が書かれているとき、 .B yytext は .B char yytext[YYLMAX] と定義されます。 .B YYLMAX はマクロで、デフォルトの値 (多くの場合8KB) を変更したい場合には 最初の部分で再定義可能です。 .B %array を使うといくらか遅いスキャナになりますが、 .B yytext の値は .I input() と .I unput() の呼び出しでも破壊されなくなります。 .B yytext が文字ポインタである場合、 これらの関数呼び出しは .B yytext を破壊する可能性があります。 .B %array と対称な指定 .B %pointer がデフォルトです。 .IP C++ のスキャナクラスを生成する (オプション .B \-+ ) ときには .B %array は使えません。 .IP - .B int yyleng 現トークンの長さを保持しています。 .IP - .B FILE *yyin はデフォルトで .I flex が読むファイルです。再定義することは可能ですが、スキャンを 始める前か EOF に到達した後でのみ再定義は意味を持ちます。 スキャンの途中で変更すると予想外の結果をもたらします。 というのも .I flex は入力をバッファリングしているからです; そのような場合には、直接再定義せず .B yyrestart() を使って下さい。 ファイルの終わりでスキャンが終了した場合には .I yyin を新しい入力ファイルに割り当て、 再びスキャナを呼び出してスキャンを続けることが出来ます。 .IP - .B void yyrestart( FILE *new_file ) を呼ぶことで .I yyin が新しい入力ファイルを指すように出来ます。新しいファイルへの変更は すぐに行われます (それまでにバッファに読み込まれていた入力は失われます)。 .I yyin を引数として .B yyrestart() を呼ぶと、現在の入力バッファを捨てて同じ入力ファイルを スキャンし続けることに注意して下さい。 .IP - .B FILE *yyout は .B ECHO アクションが行われる対象のファイルです。 ユーザが再割当することが出来ます。 .IP - .B YY_CURRENT_BUFFER カレントバッファの .B YY_BUFFER_STATE ハンドルを返します。 .IP - .B YY_START 現在の開始条件に対応する整数値を返します。 続いてこの値を .B BEGIN と共に使うことで、スキャナをその開始条件へ戻すことが出来ます。 .SH YACC とのインタフェース .I flex の主な使用方法の一つは、 .I yacc パーサジェネレータと共に使用することです。 .I yacc パーサは .B yylex() と言う名前のルーチンを呼び、次の入力トークンを見付けるものとしています。 このルーチンは、次のトークンの型を返し、 関連する値をグローバルの .B yylval に格納するものとされています。 .I flex を .I yacc と共に使うには、 .I yacc に .B \-d オプションを指定して、 .I yacc の入力に現れる全ての .B %tokens の定義を含む .B y.tab.h ファイルを生成させます。 このファイルは .I flex スキャナにインクルードされます。 例えばトークンの一つが "TOK_NUMBER" である場合、 スキャナの一部分は次のようになっています: .nf %{ #include "y.tab.h" %} %% [0-9]+ yylval = atoi( yytext ); return TOK_NUMBER; .fi .SH オプション .I flex には以下のようなオプションがあります: .TP .B \-b バックアップ情報を .I lex.backup に出力します。 このファイルには、スキャナのバックアップ(backing-up)を必要とする状態と それに対応する入力文字の一覧がリストされます。 ルールを追加することでバックアップ状態を取り除くこと ができます。バックアップ状態が .I 全て 取り除かれ、 .B \-Cf または .B \-CF を指定すると、生成されたスキャナの実行速度が向上します( .B \-p フラグを見て下さい)。 スキャナをぎりぎりまで最適化しようとしてるユーザのみが このオプションに関係あります。 (後述の性能関連の節を見て下さい。) .TP .B \-c 何もしません。POSIX 互換のために用意されています。 .TP .B \-d 生成されたスキャナが .I デバッグ モードで実行されます。 .B yy_flex_debug が非ゼロの場合(デフォルト)、 パターンが認識されるたびに、スキャナは次のようなメッセージを .I 標準エラー出力 へ出力します。 .nf --accepting rule at line 53 ("the matched text") .fi 行番号はスキャナを定義しているファイル (flexに与えられたファイル) でのルールの位置です。 スキャナがバックアップしたとき、デフォルトルールを受け入れたとき、 入力バッファの最後に到達したとき (あるいは、NULに到達したとき; スキャナには、この二つの区別はつきません) 、ファイルの最後に到達した ときにもメッセージが出力されます。 .TP .B \-f .I 高速なスキャナ を指定します。 テーブル圧縮は行われず、標準入出力をバイパスします。 その結果生成されるスキャナは大きくなりますが、高速なものになります。 このオプションは .B \-Cfr と同等です (以下を参照)。 .TP .B \-h .I flex のオプションの要約からなる "ヘルプ" を .I 標準出力 に書き出し終了します。 .B \-? と .B \-\-help とは .B \-h と同じです。 .TP .B \-i .I 大文字小文字を区別しない スキャナを生成します。 .I flex の入力パターンに与えられる文字が大文字であるか小文字であるかは区別されず、 スキャナに入力される文字列は大文字小文字に関係なくマッチします。 マッチしたテキスト .I yytext では入力時の大文字小文字が保存されます (大文字を小文字に変換したりしません)。 .TP .B \-l AT&T の .I lex の実装に対して最大限の互換性を持たせます。これは .I 完全な 互換性を意味しません。 このオプションを使用すると性能に大きな影響があります。 このオプションは、 .B \-+, \-f, \-F, \-Cf, \-CF と同時に使用できません。詳しくは、 後述の "Lex および POSIX との非互換性" の節を御覧下さい。 またこのオプションを使用すると、 .B YY_FLEX_LEX_COMPAT が生成されたスキャナの名前に #define されます。 .TP .B \-n 何もしません。POSIX 互換のためにだけ用意されたオプションです。 .TP .B \-p 性能情報を標準エラー出力に出力します。 .I flex 入力ファイルの記述のうち、 生成されるスキャナの性能低下の深刻な原因となる部分について、 コメントされます。 オプションを2回指定すると、より細かな性能低下についても コメントが出力されます。 .IP .B REJECT ・ .B %option yylineno ・可変長右文脈(欠陥/バグの節で後述)は多大なる性能への悪影響があります; .I yymore() の使用・ .B ^ オペレータ・ .B \-I フラグは小さな性能の悪影響があります。 .TP .B \-s .I デフォルトルール (マッチしないスキャナの入力を .I 標準出力 に出力する) が抑制されます。ルールにマッチしない入力が表れたとき、スキャナは エラーで異常終了します。 スキャナのルールの組に抜けが無いかを確認する場合に有効です。 .TP .B \-t .B lex.yy.c ではなく、標準出力にスキャナを書き出します。 .TP .B \-v 生成するスキャナの特徴の要約を .I 標準エラー出力 に出力するように .I flex に指示します。 ほとんどの特徴は通常の .I flex ユーザには意味がありませんが、最初の行は .I flex のバージョンを表示し( .B \-V で表示されるもと同じです)、次の行はデフォルトを含むスキャナ生成時のフラグです。 .TP .B \-w 警告メッセージを抑制します。 .TP .B \-B .I 対話的 なスキャナ (以下の .B \-I の項を参照) ではなく .I バッチ的 なスキャナを生成するよう .I flex に指示します。 通常 .B \-B を使用するのは、スキャナを対話的に使用しないことが .I 分かっている 時であり、 .I 少しでも 性能を追求したい時です。 より大きい性能を追求する場合には、 .B \-Cf もしくは .B \-CF オプションを使用すべきです(後述)。 .B \-B を自動的に設定します。 .TP .B \-F .ul 高速な スキャナテーブルの表現を使う(標準入出力はバイパスする)ことを指定します。 この表現は、完全テーブル表現 .B (-f) とほぼ同じぐらい高速で、 ある種のパターンに対してはかなり小さく (ある種に対しては大きく) なります。 通常、次のように、パターンの組が "keywords" とその対応 および "identifier" ルールからなる場合: .nf "case" return TOK_CASE; "switch" return TOK_SWITCH; ... "default" return TOK_DEFAULT; [a-z]+ return TOK_ID; .fi この場合、完全テーブル表現を使用する方が良いです。 もし "identifier" ルールからのみ表現され、 キーワードを検知するためにハッシュ表等を使用する場合は、 .B -F を使用する方が良いです。 .IP このオプションは .B \-CFr と等価です (以下を参照)。 これは .B \-+ オプションとは同時に指定できません。 .TP .B \-I .I flex に .I 対話的 なスキャナを生成するように指示します。 対話的なスキャナは、 先読みすることによりマッチするトークンが完全に決まる場合のみ先読みします。 現在のトークンが既に明らかな場合でも常に先読みする方法は、 必要時のみ先読みする方法より少し速いです。 しかし、常に先読みする方法では対話性能に著しく悪影響があります; 例えばユーザが改行を入力した場合、 .I 別の トークンを入力するまでそれは改行として認識されません。 大概の場合、次の行全体を入力することになります。 .IP .I flex のスキャナのデフォルトは .I 対話的 であり、例外は .B \-Cf や .B \-CF といったテーブル圧縮オプション(後述)使用時です。 高性能追求時にはこれらのオプションを使用しているべきですので、 これらのオプションを使用していない場合には、 .I flex は実行時性能を少し犠牲にして直観的な対話的な振舞いを取っているものとします。 .B \-I オプションを .B \-Cf や .B \-CF と共に .I 使用できない ことにも注意して下さい。 実際はこのオプションは不要です; 許される場合、デフォルトで有効になっています。 .IP .B isatty() がスキャナの入力に対して偽を返す場合、 .B \-I が指定されていた場合でも、flex はバッチモードへ戻ります。 なにがあっても対話モードを強制するには、 .B %option always-interactive (後述のオプションを参照) を使用します。 .IP スキャナを対話的で .I 無い ように強制するには .B \-B (先述)を使用します。 .TP .B \-L .I flex に .B #line ディレクティブを .B lex.yy.c 中に生成しないように指示します。 デフォルトではこの #line ディレクティブを生成するので、 アクションにおけるエラーメッセージは、オリジナルの .I flex 入力ファイル( エラーが入力ファイルのコードに起因する場合)もしくは ファイル .B lex.yy.c ( .I flex の誤り -- 以下の電子メールアドレスに報告して下さい) における正しい位置を与えます。 .TP .B \-T .I flex を .I トレース モードで実行します。 入力の形式とその結果として出力される非決定性/決定性有限 オートマトンに関して .I 標準エラー出力 に多量のメッセージを出力します。 このオプションは主に .I flex をメンテナンスするために使われます。 .TP .B \-V バージョン番号を .I 標準出力 に出力して終了します。 .B \-\-version は .B \-V と同じです。 .TP .B \-7 7 ビットのスキャナを生成します。 すなわち、入力に 7 ビットの文字のみを使用することを意味します。 .B \-7 を指定する利点は、 .B \-8 オプション(後述)を指定して生成するテーブルの半分まで小さくなりうることです。 欠点は、入力に 8 ビット文字が含まれている時に、 スキャナがハングもしくはクラッシュすることです。 .IP しかしながら、 .B \-Cf や .B \-CF といったテーブル圧縮オプション使用時にはテーブル圧縮の効果は少なく、 移植性が著しく低下することに注意して下さい。 .I flex のデフォルトの動作では、 .B \-Cf や .B \-CF, を指定しない限り 8 ビットスキャナを生成します。 指定時には、 あなたのサイトが常に 8 ビットスキャナを生成するように (USA 以外のサイトでは良くあります)していない場合には、 7 ビットスキャナを生成します。 flex が 7 ビットもしくは 8 ビットのいずれのスキャナを生成するのかを 知りたい場合には、上述の .B \-v の出力のフラグの要約を調べて下さい。 .IP .B \-Cfe もしくは .B \-CFe (これらのテーブル圧縮オプションおよび等価クラスは後述) を使用しても、flex はデフォルトで 8 ビットスキャナを生成することに 注意して下さい。 なぜなら、完全な 8 ビットテーブルは 7 ビットテーブルと比べても たいして高価にはならないからです。 .TP .B \-8 8 ビットのスキャナを生成するように .I flex に指示します。すなわち 8 ビット文字を解釈します。 圧縮オプション .B \-Cf と .B \-CF 使用時にのみ必要です。 なぜなら flex はデフォルトでは 8 ビットスキャナを生成するからです。 .IP flex のデフォルト動作と 7 ビットおよび 8 ビットスキャナの トレードオフに関しては、上記 .B \-7 の議論を見て下さい。 .TP .B \-+ C++ のスキャナクラスを生成します。 詳しくは C++ スキャナの生成で後述します。 .TP .B \-C[aefFmr] テーブル圧縮の程度と、 より一般的には小さいスキャナと高速なスキャナとのトレードオフを指定します。 .IP .B \-Ca ("アライン") 生成されるスキャナのテーブルは、 メモリアクセスおよび計算のためにアラインされるため、より大きなものになります。 RISC アーキテクチャではロングワードのフェッチおよび操作は ショートワードといったより小さな大きさのものに対するものより効率的です。 場合によってはスキャナのテーブルサイズが通常の 2倍になることもあります。 .IP .B \-Ce .I 等価クラス (同一の字句属性を持つ文字セット)を構築します (例えば、 .I flex 入力中に数字が現れるのが文字クラス "[0-9]" のみの場合、 数字 '0', '1', ..., '9' は全て同じ等価クラスになります)。 多くの場合、等価クラスを用いることで最終的なテーブル/ オブジェクトファイルのサイズを劇的(平均して 1/2-1/5)に減らすことが出来ます。 また、その際の性能コストは非常に低く抑えられます ( 1文字スキャンするごとに 1回の配列検索を行うだけです)。 .IP .B \-Cf .I 完全(full) スキャナテーブルを生成することを指示します - .I flex は、別の状態に関する類似した遷移関数をうまく利用するという、 テーブル圧縮手法を用いません。 .IP .B \-CF 別の高速スキャナ表現( .B \-F フラグにて記述)を用いることを指定します。 このオプションは .B \-+ と同時に使用できません。 .IP .B \-Cm .I flex に .I メタ等価クラス を構築するよう指示します。 メタ等価クラスは一緒に使われることの多い等価クラス (等価クラスが使われていないときには文字群) の集合です。 圧縮テーブルを使っているとき、 メタ等価クラスは多くの場合にかなりの効果的をもたらしますが、 やや性能に影響します (1-2 回の条件テストと 1 回の配列検索がスキャンした文字ごとに行われます)。 .IP .B \-Cr 生成されたスキャナは入力に対しては標準入出力ライブラリ(標準入出力)を .I バイパス します。 スキャナは、 .B fread() や .B getc() ではなく、 .B read() システムコールを使用します。 性能改善結果はシステムに依存します。 オプション .B \-Cf もしくは .B \-CF を使用していない場合には、 一般にこのオプションは性能をあまり改善しません。 .B \-Cr を指定すると、例えばスキャナを設定する前に標準入出力を使用して .I yyin を読み取る等した場合奇妙な動作となり得ます (標準入出力の入力バッファに以前読み込んだものを、スキャナは読めません)。 .IP .B \-Cr は .B YY_INPUT を定義した場合意味がありません (前述の生成されたスキャナを参照)。 スキャナの呼出に先だって標準入力を使って .I yyin から読みだしているときには、予想外の振る舞いをすることがあります。 .IP .B \-C のみを指定したときには、スキャナはテーブル圧縮は行いますが、 等価クラスもメタ等価クラスも使いません。 .IP オプション .B \-Cf と .B \-CF はオプション .B \-Cm を同時に指定しても意味をなしません - なぜなら、テーブル圧縮が行われないときメタ等価クラス は現れないからです。 それ以外のオプションは自由に組み合わせることが出来ます。 .IP デフォルトの設定は .B \-Cem です。このとき .I flex は等価クラスとメタ等価クラスを生成します。 この設定は最も高いテーブル圧縮を行います。 テーブルサイズの大きさと実行の高速性はトレードオフの関係にあり、 一般に .nf 遅いが 小さい -Cem -Cm -Ce -C -C{f,F}e -C{f,F} -C{f,F}a 速いが 大きい .fi となります。 小さいテーブルのスキャナは通常生成もコンパイルも高速であるため、 通常の開発時は最大の圧縮を行うでしょう。 .IP 製品のスキャナでは、 .B \-Cfe が速度と大きさの良いバランスです。 .TP .B \-ooutput .B lex.yy.c ではなくファイル .B output にスキャナを書くように flex に指示します。 .B \-o と .B \-t オプションを組み合わせると、 スキャナは .I 標準出力 に書かれますが、 .B #line ディレクティブ( .B \\-L にて上述)はファイル .B output を参照します。 .TP .B \-Pprefix .I flex の使うデフォルトのプレフィックス .I "yy" の代わりに .I prefix を使います。これはグローバル変数とファイル名に影響します。 例えば .B \-Pfoo とすると、 .B yytext の名前は .B footext となります。 またデフォルトの出力ファイル名を .B lex.yy.c から .B lex.foo.c に変えます。 影響を受ける名前の一覧です: .nf yy_create_buffer yy_delete_buffer yy_flex_debug yy_init_buffer yy_flush_buffer yy_load_buffer_state yy_switch_to_buffer yyin yyleng yylex yylineno yyout yyrestart yytext yywrap .fi (C++ スキャナ使用時には .B yywrap と .B yyFlexLexer だけが影響を受けます。) スキャナの中では、グローバル変数および関数を どちらの名前ででも参照できます; 外部的には修正した名前のみ持ちます。 .IP このオプションを使用することにより、複数の .I flex プログラムを同一の実行形式に容易にリンクすることが出来ます。 しかし、このオプションは .B yywrap() の名前をも変えますので、 独自の(適切に名前を付けた)ルーチンをスキャナのために用意するか、 .B %option noyywrap を使用して .B \-ll とリンクする .I 必要があります。 どれもデフォルトでは提供されません。 .TP .B \-Sskeleton_file .I flex がスキャナを構築するのに使うデフォルトの スケルトンファイルに優先します。 .I flex のメンテナンスや開発をする場合以外、このオプションは必要ありません。 .PP .I flex は、flex のコマンドラインではなく、 スキャナ仕様記述中からオプションを制御する機構を提供します。 これはスキャナの最初の部分に .B %option ディレクティブを含めることで実現できます。 単一の .B %option ディレクティブにおいて複数のオプションを指定でき、 また複数のディレクティブを flex 入力ファイルの最初の部分に置くことが出来ます。 .PP ほとんどのオプションが単純な名前であり、 オプションとして前に "no" という語(空白をはさみません)を付けて 意味を反転できます。 数値は flex のフラグやその反転と等価です。 .nf 7bit -7 オプション 8bit -8 オプション align -Ca オプション backup -b オプション batch -B オプション c++ -+ オプション caseful または case-sensitive -i オプションの逆(デフォルト) case-insensitive または caseless -i オプション debug -d オプション default -s オプションの逆 ecs -Ce オプション fast -F オプション full -f オプション interactive -I オプション lex-compat -l オプション meta-ecs -Cm オプション perf-report -p オプション read -Cr オプション stdout -t オプション verbose -v オプション warn -w オプションの逆 (-w オプションには "%option nowarn" を使用して下さい) array "%array" と等価 pointer "%pointer" と等価(デフォルト) .fi .B %option には、他では利用できない機能を提供するものもあります: .TP .B always-interactive 入力を常に "対話的" に扱うスキャナを生成するように flex に指示します。 通常、新たな入力ファイル毎にスキャナは .B isatty() を呼び出し、スキャナの入力元が対話的であり 1 度に 1 文字ずつ読むべきか どうか判定しようとします。 一方このオプションを使用するとこの様な呼び出しは行いません。 .TP .B main スキャナに対し、 .B yylex() を呼び出すだけのデフォルトの .B main() プログラムを提供するように指示します。 このオプションは .B noyywrap (後述)も暗黙的に指示します。 .TP .B never-interactive 入力を "対話的" とはしないスキャナを生成するように flex に指示します (これもまた .B isatty() を呼び出しません)。 これは .B always-interactive の逆です。 .TP .B stack 開始条件スタックの使用を有効にします(前述の開始条件を参照)。 .TP .B stdinit 設定されている場合 (すなわち .B %option stdinit) .I yyin および .I yyout を、 デフォルトの .I nil ではなく、 .I 標準入力 と .I 標準出力 に設定します。 既存の .I lex プログラムには、 ANSI C 互換ではないものの、この動作に依存しているものがあります。 ANSI C では .I 標準入力 と .I 標準出力 がコンパイル時の定数である必要はありません。 .TP .B yylineno 入力から読み取った現在の行番号をグローバル変数 .B yylineno に保持するスキャナを生成するように、 .I flex に指示します。 このオプションは .B %option lex-compat から暗黙的に指定されます。 .TP .B yywrap セットされていない場合 (すなわち .B %option noyywrap) 、スキャナはファイルの終りに際し .B yywrap() を呼ばず単にスキャンすべきファイルがもう無いものとするようになります( ユーザが .I yyin を新しいファイルを指すようにし、再度 .B yylex() を呼び出すまでです)。 .PP .I flex はルールアクションをスキャンし、 .B REJECT と .B yymore() の機能が使われているかどうかを調べます。 .B reject と .B yymore のオプションを使用すると、 オプションで指定した通りにこの判定に優先します。 オプションの指定は、セットして機能を使用していることを示す(例えば .B %option reject) 、もしくはアンセットして機能を使用していないことを示す(例えば .B %option noyymore) ものとします。 .PP 次のオプションは文字列の値を取り、'=' で区切ります: .nf %option outfile="ABC" .fi これは .B -oABC と同じであり、 .nf %option prefix="XYZ" .fi は .B -PXYZ と同じです。 最後に、 .nf %option yyclass="foo" .fi は C++ スキャナ生成時のみ有効( .B \-+ オプション)です。これは .I flex に対して、 .B foo が .B yyFlexLexer のサブクラスであることを知らせますので、 .I flex はアクションを .B yyFlexLexer::yylex() ではなく .B foo::yylex() のメンバ関数とします。 また、( .B yyFlexLexer::LexerError() を起動することにより)呼び出すと実行時エラーを除去する .B yyFlexLexer::yylex() メンバ関数を生成します。 詳細は後述の C++ スキャナの生成を見て下さい。 .PP 生成されたスキャナから不要なルーチンを除きたい lint 純正主義者のために 多くのオプションが用意されています。 以下をアンセットすると(例えば .B %option nounput )、対応するルーチンは生成されるスキャナから除かれます: .nf input, unput yy_push_state, yy_pop_state, yy_top_state yy_scan_buffer, yy_scan_bytes, yy_scan_string .fi ( .B yy_push_state() 等は .B %option stack を使用しない場合には現れません)。 .SH 性能関連 .I flex の主なデザインゴールは高性能なスキャナを生成することです。 多くのルールセットを良く扱うことで最適化されます。 既に概説した .B \-C オプション使用によるテーブル圧縮に起因する速度への影響の他に、 性能を悪化させる多くのオプション/アクションがあります。 それらを高価なものから安価なものへと並べます: .nf REJECT %option yylineno 自由長の右文脈(trailing context) バックアップが必要なパターンの組 %array %option interactive %option always-interactive '^' 行頭オペレータ yymore() .fi 最初の 3 つは非常に高価であり、最後の 2 つは非常に安価です。 .B unput() は潜在的に非常に大きな仕事をするルーチン呼び出しとして実装されているのに対し、 .B yyless() は非常に安価なマクロです; ですからスキャンした余分なテキストを戻すだけの場合には .B yyless() を使って下さい。 .PP 性能が重要な場合には、出来うる限りの努力でもって .B REJECT を避けて下さい。 これは特に高価なオプションです。 .PP バックアップを取り除くと、乱雑になり、 ひどく苦労して複雑なスキャナを作ることになります。 実際的には .B \-b フラグを指定して .I lex.backup ファイルを生成することから始めます。例えば、入力 .nf %% foo return TOK_KEYWORD; foobar return TOK_KEYWORD; .fi に対しては、ファイルは次のようになります: .nf State #6 is non-accepting - associated rule line numbers: 2 3 out-transitions: [ o ] jam-transitions: EOF [ \\001-n p-\\177 ] State #8 is non-accepting - associated rule line numbers: 3 out-transitions: [ a ] jam-transitions: EOF [ \\001-` b-\\177 ] State #9 is non-accepting - associated rule line numbers: 3 out-transitions: [ r ] jam-transitions: EOF [ \\001-q s-\\177 ] Compressed tables always back up. .fi 最初の数行は、 \&'o' に遷移できるが他の文字には遷移できない状態があり、 その状態では現在スキャンされたテキストは他のルールにはマッチしないことを 表します。 この状態が発生したのは、 入力ファイルの行 2, 3 のルールにマッチしようとした時です。 スキャナがこの様な状態にあり 'o' 以外の文字を読んだ場合には、 マッチするルールを探すためのバックアップが必要となります。 少し考えれば、これは "fo" を見た時にある状態に違いないことが分かるでしょう。 この様な時、'o' 以外のものが現れると、 スキャナは、単に 'f' にマッチする(デフォルトルール)ところまで 戻り(バックアップし)ます。 .PP 状態 #8 に関係するコメントは、 "foob" がスキャンされた時に問題があることを表しています。 実際、'a' 以外の文字に出会うと、スキャナは "foo" を受理するところまで戻ります。 同様に状態 #9 に関係するコメントは、 "fooba" がスキャンされ 'r' が続かない場合に関係します。 .PP 最後のコメントが通知するのは、 .B \-Cf や .B \-CF を使っているのでなければ バックアップを取り除こうと努力することは無意味であることです。 なぜなら、圧縮されたスキャナに対してそのようなことをしても、 性能上の利益は無いからです。 .PP バックアップを取り除くためには "エラー" ルールを追加します: .nf %% foo return TOK_KEYWORD; foobar return TOK_KEYWORD; fooba | foob | fo { /* false alarm, not really a keyword */ return TOK_ID; } .fi .PP キーワードのリストからバックアップを取り除くには、"全てを捕まえる" ルールを使用することが出来ます: .nf %% foo return TOK_KEYWORD; foobar return TOK_KEYWORD; [a-z]+ return TOK_ID; .fi 通常、適切な時にはこれは一番良い解決策です。 .PP バックアップメッセージはカスケードすることが多いです。 複雑なルールの組では、数百ものメッセージを得るのは普通のことです。 しかし、これを解析すれば、バックアップを除去するためには 大抵の場合数ダースのルールにだけ関係あることが分かるでしょう (しかし、間違えることが多く、誤ったルールが偶然有効なトークンにマッチし得ます。 将来の .I flex の機能では、 自動的にバックアップを除去するルールを追加するようになるかも知れません)。 .PP バックアップを除去することにより利益があるのは、 .I 全ての バックアップを除去した時だけということを覚えておくことは重要です。 たった一つを残しても何も得ることが出来ません。 .PP .I 可変長の 右文脈 (左部分と右部分のいずれかもしくは両方が可変長)は .B REJECT とほぼ同じだけの(すなわち相当の)性能劣化となります。 そのため次のようなルール: .nf %% mouse|rat/(cat|dog) run(); .fi は次のように書くか: .nf %% mouse/cat|dog run(); rat/cat|dog run(); .fi 次のように書いた方が良いです: .nf %% mouse|rat/cat run(); mouse|rat/dog run(); .fi 特別な '|' アクションは助けにはなり .I ません し、かえって状況を悪くします (後述の欠陥/バグを参照)。 .LP スキャナの性能を向上させるための余地(実現は最も容易)は、 マッチするトークンが長ければスキャナが高速になることにあります。 長いトークンではほとんどの入力処理は(短い)内部ループで処理され、 アクションのためにスキャナ環境を設定する追加の仕事(例えば .B yytext) をほとんどしないからです。 C コメントのスキャナを思い出しましょう: .nf %x comment %% int line_num = 1; "/*" BEGIN(comment); [^*\\n]* "*"+[^*/\\n]* \\n ++line_num; "*"+"/" BEGIN(INITIAL); .fi 次のように書くと高速になります: .nf %x comment %% int line_num = 1; "/*" BEGIN(comment); [^*\\n]* [^*\\n]*\\n ++line_num; "*"+[^*/\\n]* "*"+[^*/\\n]*\\n ++line_num; "*"+"/" BEGIN(INITIAL); .fi 今度は、改行毎に別のアクションの処理を行うのではなく、 改行認識はルール間で "分散" され、 可能な限り長いテキストにマッチするようになっています。 ルールの .I 追加 はスキャナを遅く .I しません! スキャナの速度は、ルール数とも、 オペレータ '*' や '|' といったものに基づくルールの複雑さ (この節の始めで扱いました)とも独立です。 .\" 括弧内自信無しです .\" Apr 29 1997, horikawa@jp.freebsd.org .PP 最後の高速化の例です: 1 行に 1 つずつであり別の文字は付かないような、 識別子とキーワードを全てファイルからスキャンすることを考えます。 最初は次のようになるでしょう: .nf %% asm | auto | break | ... etc ... volatile | while /* it's a keyword */ .|\\n /* it's not a keyword */ .fi 後戻りを避けるために全てを捕まえるルールを導入します: .nf %% asm | auto | break | ... etc ... volatile | while /* it's a keyword */ [a-z]+ | .|\\n /* it's not a keyword */ .fi 1 行に正確に 1 語だけあることが保証されている場合、 改行の認識を別のトークンと併せることで、 マッチの総数を半分に減らすことが出来ます: .nf %% asm\\n | auto\\n | break\\n | ... etc ... volatile\\n | while\\n /* it's a keyword */ [a-z]+\\n | .|\\n /* it's not a keyword */ .fi ここで、再度バックアップをスキャナに組み込んだことに 気を付けなければなりません。 実際 .I 我々は 入力ストリームはレターと改行だけであることを知っていますが、 .I flex はこれが分からないため、 トークン "auto" などをスキャンした次の文字が改行でもレターでもない場合には バックアップが必要であると考えます。 以前は "auto" ルールに適合しそれで終りでしたが、 今は "auto" ルールは無く、"auto\\n" ルールだけがあります。 バックアップの可能性を除去するためには、 最後の改行以外のルールを二重化するか、 そのような入力に出くわさないので分類は不要と分かっているため、 改行を導入しないもう一つの全てを捕まえるルールを導入することが出来ます: .nf %% asm\\n | auto\\n | break\\n | ... etc ... volatile\\n | while\\n /* it's a keyword */ [a-z]+\\n | [a-z]+ | .|\\n /* it's not a keyword */ .fi .B \-Cf を付けてコンパイルすると、実際問題上 .I flex で得られるほぼ最速になります。 .PP 最後の注意事項: .I flex は NUL にマッチする時には遅く、トークンが複数の NUL を含む時には特に遅いです。 テキストがしばしば NUL を含むものと予想される場合には、テキストの .I 短い 部分とマッチするようにルールを書くべきです。 .PP もう一つの性能に関する最終注意事項: 入力のマッチ方法の節で既に示したように、 大きなトークンを納めるために .B yytext のサイズを動的に変更すると処理が遅くなります。 なぜなら、(巨大な)トークンを再度先頭からスキャンしなおさねばならないからです。 性能が重要な場合、 テキストの "大きな" 部分にマッチさせるべきですが "巨大な" 部分にマッチさせる べきではありません。 両者の堺目は 8K 文字/トークンです。 .SH C++ スキャナの生成 .I flex は 2 通りの C++ スキャナ生成方法を提供します。 最初の方法は .I flex が生成したスキャナを単に C コンパイラではなく C++ コンパイラで コンパイルするというものです。 この場合コンパイルエラーには出会わないはずです (見付けた場合には作者の節で後述する電子メールアドレスに報告して下さい)。 この場合ルールにおいて C コードではなく C++ コードを書くことが出来ます。 スキャナのデフォルトの入力元は .I yyin のままであり、 デフォルトのエコー先は .I yyout のままであることに注意して下さい。 どちらも .I FILE * 変数のままであり、C++ .I streams ではないです。 .PP .I flex に C++ スキャナクラスを生成させることも出来ます。 .B \-+ オプションを指定する(もしくは等価的に .B %option c++ を使う)とこのように実行され、 flex の実行形式名が '+' で終っている場合には自動的に指定されます。 このオプションを指定すると flex が生成するスキャナのデフォルトはファイル .B lex.yy.cc となり .B lex.yy.c ではありません。 生成されたスキャナは 2 つの C++ クラスとのインタフェースを定義するヘッダファイル .I FlexLexer.h をインクルードします。 .PP 最初のクラス .B FlexLexer は一般的なスキャナクラスを定義する抽象基盤クラスを提供します。 以下のメンバ関数を提供します: .TP .B const char* YYText() 最後にマッチしたテキストを返します。 .B yytext と等価です。 .TP .B int YYLeng() 最後にマッチしたトークンの長さを返します。 .B yyleng と等価です。 .TP .B int lineno() const 現在の入力の行番号( .B %option yylineno 参照)もしくは .B %option yylineno を使用していない場合には .B 1 を返します。 .TP .B void set_debug( int flag ) スキャナのデバッグフラグをセットします。 .B yy_flex_debug に代入するのと同じです(オプションの節で前述)。 スキャナ構築時に .B %option debug を使用してデバッグ情報を組み込む必要があることに注意して下さい。 .TP .B int debug() const 現在のデバッグフラグの設定を返します。 .PP また次のものと等価なメンバ関数も提供されます .B yy_switch_to_buffer(), .B yy_create_buffer() (最初の引数は .B istream* オブジェクトポインタであり .B FILE* ではありません), .B yy_flush_buffer(), .B yy_delete_buffer(), .B yyrestart() (これもまた最初の引数は .B istream* オブジェクトポインタです)。 .PP 2 番目のクラスは .I FlexLexer.h で定義される .B yyFlexLexer であり、 .B FlexLexer から導出したものです。 以下の追加のメンバ関数を定義します: .TP .B yyFlexLexer( istream* arg_yyin = 0, ostream* arg_yyout = 0 ) 与えられた入出力ストリームを使う .B yyFlexLexer オブジェクトを構築します。 指定しない場合にはそれぞれストリームのデフォルト .B cin と .B cout になります。 .TP .B virtual int yylex() これは .B yylex() が通常の flex スキャナに対して行ったのと同様の役割を担います: ルールのアクションが値を返すまで、 入力ストリームをスキャンし、トークンを消費します。 .B yyFlexLexer からサブクラス .B S を導出し .B yylex() から .B S のメンバ関数および変数をアクセスしたい場合、 .B %option yyclass="S" を指定して .B yyFlexLexer ではなくサブクラスを使用することを .I flex に知らせる必要があります。 この場合 .B yyFlexLexer::yylex() を生成するのではなく、 .I flex は .B S::yylex() (および呼び出されたなら .B yyFlexLexer::LexerError() を呼び出すダミーの .B yyFlexLexer::yylex() も)を生成します。 .TP .B virtual void switch_streams(istream* new_in = 0, .B ostream* new_out = 0) .B yyin を .B new_in (非ニルの場合) に再割当し、 .B yyout を .B new_out (同様)に再割当します。 .B yyin が再割当された場合には以前の入力バッファは消去されます。 .TP .B int yylex( istream* new_in, ostream* new_out = 0 ) まず入力ストリームを .B switch_streams( new_in, new_out ) -を使用して切替え、 +を使用して切り替え、 .B yylex() の値を返します。 .PP さらに、 .B yyFlexLexer は次のプロテクトされた仮想関数を定義します。 スキャナにあわせてこれらを導出クラスにおいて再定義出来ます: .TP .B virtual int LexerInput( char* buf, int max_size ) 最大 .B max_size 文字を .B buf に読み込み、読めた文字数を返します。 入力の終りを示すには 0 文字を返します。"対話的" スキャナ( .B \-B と .B \-I フラグを参照)はマクロ .B YY_INTERACTIVE を定義することに注意して下さい。 .B LexerInput() を再定義し、 対話的な入力元をスキャンする可能性があるかどうかに依存して 異なるアクションが必要となる場合、 この名前が存在するかどうかのテストは .B #ifdef にて可能です。 .TP .B virtual void LexerOutput( const char* buf, int size ) .B size 文字をバッファ .B buf から書き出します。 スキャナのルールが NUL を含むテキストにマッチ可能な場合、 NUL 終端されているこのバッファは "内部に" NUL を含んでいても構いません。 .TP .B virtual void LexerError( const char* msg ) 致命的なエラーメッセージを報告します。 デフォルトのこの関数はメッセージをストリーム .B cerr に書き、終了します。 .PP .B yyFlexLexer オブジェクトは .I 全ての スキャン時の状態を含むことに注意して下さい。 それゆえこの様なオブジェクトをリエントラントなスキャナとして使用できます。 同一の .B yyFlexLexer クラスの複数のインスタンスを具体化可能であり、 複数の C++ スキャナクラスを組み合わせ上記 .B \-P オプションを使用することで同一のプログラムで使用可能です。 .PP 最後に .B %array 機能は C++ スキャナクラスでは使用できないことに注意して下さい; .B %pointer を使用しなければなりません(デフォルト)。 .PP 単純な C++ スキャナの例を以下に示します: .nf // An example of using the flex C++ scanner class. %{ int mylineno = 0; %} string \\"[^\\n"]+\\" ws [ \\t]+ alpha [A-Za-z] dig [0-9] name ({alpha}|{dig}|\\$)({alpha}|{dig}|[_.\\-/$])* num1 [-+]?{dig}+\\.?([eE][-+]?{dig}+)? num2 [-+]?{dig}*\\.{dig}+([eE][-+]?{dig}+)? number {num1}|{num2} %% {ws} /* skip blanks and tabs */ "/*" { int c; while((c = yyinput()) != 0) { if(c == '\\n') ++mylineno; else if(c == '*') { if((c = yyinput()) == '/') break; else unput(c); } } } {number} cout << "number " << YYText() << '\\n'; \\n mylineno++; {name} cout << "name " << YYText() << '\\n'; {string} cout << "string " << YYText() << '\\n'; %% int main( int /* argc */, char** /* argv */ ) { FlexLexer* lexer = new yyFlexLexer; while(lexer->yylex() != 0) ; return 0; } .fi 複数の(異なった)字句解析クラスを生成したい場合、 .B \-P フラグ (もしくは .B prefix= オプション) を使用して各 .B yyFlexLexer を .B xxFlexLexer 等の別の名前にします。 次に字句解析クラスのソースごとに .B をインクルードします。 以下のように .B yyFlexLexer をリネームします: .nf #undef yyFlexLexer #define yyFlexLexer xxFlexLexer #include #undef yyFlexLexer #define yyFlexLexer zzFlexLexer #include .fi これはあるスキャナに対し .B %option prefix="xx" を使用しもう一方に対し .B %option prefix="zz" を使用した場合です。 .PP 重要: 現在のスキャンクラスの形式は .I 実験的 であり、メジャーリリースが変わると大きく変更される可能性があります。 .SH LEX および POSIX との非互換性 .I flex は AT&T Unix の .I lex ツールのリライトですが(2 つの実装はいかなるコードも共有しません)、 いくばくかの拡張と非互換性を持っており、 どちらの実装でも受理可能なスキャナを書きたい方は これを意識しなければなりません。 flex は POSIX .I lex 仕様に完全合致しますが、例外は .B %pointer (デフォルト)使用と .B unput() 呼び出しにより .B yytext の内容を破壊することであり、これは POSIX 仕様に反します。 .PP この節では、 flex と AT&T lex と POSIX 仕様との間の全ての既知の非互換性を扱います。 .PP .I flex の .B \-l オプションはオリジナルの AT&T .I lex 実装との最大の互換性を有効にしますが、 生成されたスキャナの性能は大きく低下します。 .B \-l オプションを使用しても発生しうる非互換性は後で述べます。 .PP .I flex は以下の例外を除き .I lex と完全互換です: .IP - ドキュメントに記載されていない .I lex スキャナ内部の変数 .B yylineno は .B \-l もしくは .B %option yylineno を使用しないとサポートされません。 .IP .B yylineno はスキャナ毎(単一のグローバル変数)ではなく、バッファ毎に管理されるべきです。 .IP .B yylineno は POSIX 仕様ではありません。 .IP - .B input() ルーチンは再定義できませんが、 ルールにマッチしたものに後続する文字を読むために呼ばれえます。 .B input() がファイルの終りに到達すると、通常の .B yywrap() 処理は終了します。``実際の'' ファイルの終りは .I EOF として返されます。 .IP 実際には入力は .B YY_INPUT マクロを定義することにより制御されます。 .IP .B input() を再定義できないという .I flex の制限は、最初に .I yyin を設定する以外のスキャナ入力制御方法を単に規定していないという、 POSIX 仕様と合致します。 .IP - .B unput() ルーチンは再定義できません。この制限は POSIX に合致しています。 .IP - .I flex スキャナは .I lex スキャナとは異なりリエントラントではありません。 実際、対話的なスキャナにおいて、 割り込みハンドラにてロングジャンプを用いてスキャナから脱出し、 その後スキャナを再度呼び出す場合、以下のメッセージを得るでしょう: .nf fatal flex scanner internal error--end of buffer missed .fi スキャナに再度入るためには、まず以下のようにして下さい .nf yyrestart( yyin ); .fi この呼び出しにより入力バッファは捨てられることに注意して下さい; 通常これは対話的スキャナでは問題ではありません。 .IP また、C++ スキャナクラスはリエントラント .I です ので、C++ を使用できるのなら、C++ を使用すべきです。 前述の "C++ スキャナの生成" を参照して下さい。 .IP - .B output() はサポートされていません。 .B ECHO マクロからの出力はファイルポインタ .I yyout (デフォルトでは .I 標準出力 )に対して行われます。 .IP .B output() は POSIX 仕様にはありません。 .IP - .I lex は排他的開始条件 (%x) をサポートしませんが、これは POSIX 仕様にあります。 .IP - 定義を展開する時、 .I flex では括弧で括ります。 lex では以下は: .nf NAME [A-Z][A-Z0-9]* %% foo{NAME}? printf( "Found it\\n" ); %% .fi 文字列 "foo" にはマッチしません。 なぜなら展開されたマクロはルール "foo[A-Z][A-Z0-9]*?" と等価になり、 優先度にて `?' は "[A-Z0-9]*" と結び付きます。 .I flex ではルールが展開されると "foo([A-Z][A-Z0-9]*)?" となり、 文字列 "foo" がマッチします。 .IP .B ^ で始まるか .B $ で終る定義は、展開時に括弧で括らず、 これらのオペレータが定義において特別な意味を失わないようにすることに 注意して下さい。 しかし .B , /, .B <> オペレータは .I flex の定義では使用できません。 .IP .B \-l を使用すると、 .I lex の振舞いと同じく定義を括弧で括りません。 .IP POSIX 仕様では、定義を括弧で括ります。 .IP - .I lex の実装によっては、 ルールのパターンの右側に空白がある場合、 ルールのアクションを別の行から始めることを許します: .nf %% foo|bar { foobar_action(); } .fi .I flex はこの機能をサポートしません。 .IP - .I lex の .B %r (Ratfor スキャナの生成)オプションはサポートされていません。 これは POSIX 仕様には含まれません。 .IP - スキャナを .B %array を使用して構築したのではない限り、 .B unput() 呼び出し後には、次のトークンにマッチするまで .I yytext は未定義です。 これは .I lex にも POSIX 仕様にも当てはまりません。 .B \-l オプションを指定するとこの非互換性を取り除きます。 .IP - .B {} (数値範囲)オペレータの優先度が異なります。 .I lex は "abc{1,3}" を "1 度か 2 度か 3 度の 'abc' にマッチ" と解釈しますが、 .I flex は "'ab' に 1 度か 2 度か 3 度の 'c' が続くものにマッチ" と解釈します。 後者が POSIX 仕様に合致します。 .IP - .B ^ オペレータの優先度が異なります。 .I lex は "^foo|bar" を "行頭の 'foo' か任意位置の 'bar' にマッチ" と解釈しますが、 .I flex は "行頭の 'foo' か 'bar' にマッチ" と解釈します。 後者が POSIX 仕様に合致します。 .IP - .I lex でサポートされている .B %a 等の特別なテーブルサイズの宣言は .I flex スキャナでは不要です; .I flex はこれらを無視します。 .IP - .I flex と .I lex のどちらでもスキャナを使用可能に書けるように、 .bd FLEX_SCANNER という名前を定義します。 スキャナを生成した .I flex のバージョンを表す .B YY_FLEX_MAJOR_VERSION と .B YY_FLEX_MINOR_VERSION を、スキャナは含みます (例えば 2.5 リリースではこれらはそれぞれ 2 と 5 になります)。 .PP 以下の .I flex の機能は .I lex および POSIX 仕様には含まれません: .nf C++ スキャナ %option 開始条件スコープ 開始条件スタック 対話的/非対話的スキャナ yy_scan_string() 等 yyterminate() yy_set_interactive() yy_set_bol() YY_AT_BOL() <> <*> YY_DECL YY_START YY_USER_ACTION YY_USER_INIT #line ディレクティブ アクションの周りの %{} 単一行における複数のアクション .fi さらにほぼ全ての flex フラグです。 リストの最後の機能の意味は、 .I flex では複数のアクションをセミコロンで区切って同一行に記述可能ですが、 .I lex では次の .nf foo handle_foo(); ++num_foos_seen; .fi は (驚くべきことに) 次のように切り詰められるということです。 .nf foo handle_foo(); .fi .I flex はアクションを切り詰めません。 ブレースで括られないアクションは単純に行末で終了します。 .SH 診断 .PP .I warning, rule cannot be matched 常に同じテキストにマッチするルールが前にあるので、 与えられたルールがマッチしません。 例えば以下の "foo" は "全てを捕まえる" ルールの後ろにありますので 決してマッチしません: .nf [a-z]+ got_identifier(); foo got_foo(); .fi スキャナ中で .B REJECT を使用するとこの警告を抑制します。 .PP .I warning, .B \-s .I option given but default rule can be matched (おそらくある特定の開始条件のもとでは) デフォルトルール (任意の一文字にマッチする) しか特定の入力に 対してはマッチしないことがあります。 .B \-s を指定しているので、おそらくそうなりません。 .PP .I reject_used_but_not_detected undefined あるいは .I yymore_used_but_not_detected undefined - これらのエラーは コンパイル時に起きます。スキャナが .B REJECT もしくは .B yymore() を使っていますが .I flex がそのことに気づかなかったということです。 つまり、 .I flex は最初の 2 つの部分を探しても これらのアクションの出現を見つけられなかったのですが、 実際には何らかの方法 (例えば #include ファイルを介して)でこれらが記述されていた、ということです。 .B %option reject か .B %option yymore を使用して、flex にこれらの機能を実際に使用していることを教えて下さい。 .PP .I flex scanner jammed - .B \-s でコンパイルされたスキャナが、どのルールにもマッチしない 入力文字列に遭遇しました。 内部的な問題に起因してこのエラーが起こることもあります。 .PP .I token too large, exceeds YYLMAX - スキャナが .B %array を使っている場合に、あるルールが定数 .B YYLMAX (デフォルトで 8K バイト) より大きな文字列とマッチしました。 .I flex の入力ファイルの定義部で .B YYLMAX を #define することで値を大きくできます。 .PP .I scanner requires \-8 flag to .I use the character 'x' - スキャナの記述に 8 ビットの文字 .I 'x' を識別する部分があり、 .B \-Cf もしくは .B \-CF のテーブル圧縮オプションのためにデフォルトの 7 ビットになっている にもかかわらず、 \-8 オプションをつけていないということです。 詳細は .B \-7 フラグのオプションの議論を参照して下さい。 .PP .I flex scanner push-back overflow - .B unput() でテキストを戻しすぎたため、スキャナのバッファは 戻したテキストと現トークンを .B yytext に保てません。 この場合、理想的にはスキャナが動的にバッファの大きさを変えるべきですが、 現在のところそうなってはいません。 .PP .I input buffer overflow, can't enlarge buffer because scanner uses REJECT - スキャナは非常に大きなトークンのマッチを調べていて、入力バッファを 拡張する必要が起きました。しかしながら、バッファの拡張は .B REJECT を使うスキャナでは働きません。 .PP .I fatal flex scanner internal error--end of buffer missed - スキャナが使用しているフレームから(を越えて)ロングジャンプした後、 再度スキャナに入った場合に起こります。 再度スキャナに入る前に: .nf yyrestart( yyin ); .fi を使うか、前述のように C++ スキャナクラスを使用するようにして下さい。 .PP .I too many start conditions in <> construct! - 存在するより多くの開始条件を <> 中に記載しました (少なくとも一つを二度記載しました)。 .SH 関連ファイル .TP .B \-ll スキャナがリンクしなければならないライブラリ。 .TP .I lex.yy.c 生成されたスキャナ(システムによっては .I lexyy.c という名前になります)。 .TP .I lex.yy.cc .B -+ を使った時に作成された C++ スキャナクラス。 .TP .I C++ スキャナベースクラス .B FlexLexer とその導出クラス .B yyFlexLexer を定義するヘッダファイル。 .TP .I flex.skl スケルトンスキャナ。 このファイルは flex の実行時ではなく、flex を構築する時のみ利用されます。 .TP .I lex.backup .B \-b フラグ用のバックアップ情報(システムによっては .I lex.bck という名前になります)。 .SH 欠陥 / バグ .PP 右文脈(trailing context)パターンの中には、正しくマッチせず 警告メッセージ ("dangerous trailing context") を出すものがあります。 これらのパターンは、 ルールの最初の部分が 2番目の頭の部分とマッチするようなものです。 例えば "zx*/xy*" の場合、'x*' は右文脈の頭の 'x' とマッチします。 (POSIX ドラフトではそのようなパターンにマッチするテキストは 未定義であると述べていることに注意して下さい。) .PP 右文脈の中には、実際には固定長であるのにそうとは解釈されないものがあり、 上に述べた性能の低下が起こります。 特に、 '|' や {n} (例えば "foo{3}") は常に可変長であると解釈されます。 .PP 右文脈と特別なアクション '|' を組み合わせると .I 固定の 右文脈がよりコストのかかる .I 可変の 右文脈となります。例えば、次のようなものです: .nf %% abc | xyz/def .fi .PP .B %array もしくは .B \-l オプションを指定しない場合、 .B unput() を使うと yytext と yyleng を破壊します。 .PP NUL のパターンマッチングは他の文字の比較よりかなり遅くなっています。 .PP 入力バッファの動的な大きさの再調整は時間がかかります。これは現トークン (一般に巨大)までのマッチした全テキストの再スキャンを伴うためです。 .PP 入力のバッファリングと先読みのため、 ルーチンと 混合して使うことが出来ません。例えば、 .B getchar() と .I flex のルールはうまく行きません。代わりに .B input() を使って下さい。 .PP .B \-v オプションで表示される全テーブルエントリには、 どのルールがマッチしたのかを決定するのに必要なテーブルエントリ数が 含まれていません。エントリの数はスキャナが .B REJECT を使っていないときには DFA 状態数に等しく、 使っているときには DFA 状態数よりいくらか大きくなります。 .PP .B REJECT がオプション .B \-f もしくは .B \-F とともに使えません。 .PP .I flex の内部アルゴリズムについてのドキュメントが必要です。 .SH 関連項目 .PP lex(1), yacc(1), sed(1), awk(1). .PP John Levine, Tony Mason, and Doug Brown, .I Lex & Yacc, O'Reilly and Associates. 第 2 版を入手すること。 .PP M. E. Lesk and E. Schmidt, .I LEX \- Lexical Analyzer Generator .PP Alfred Aho, Ravi Sethi and Jeffrey Ullman, .I Compilers: Principles, Techniques and Tools, Addison-Wesley (1986). .I flex で使用しているパターンマッチング技法を解説している(決定性オートマトン)。 .SH 作者 Vern Paxson が多くのアイディアとインスピレーションを得る助けを Van Jacobson から受けました。 オリジナルバージョンは Jef Poskanzer が作成しました。 高速テーブル表現は Van Jacobson のデザインの部分実装です。 この実装は Kevin Gong と Vern Paxson が行いました。 .PP 多くの .I flex ベータテスタ、フィードバッカ、コントリビュータ、特に Francois Pinard, Casey Leedom, Robert Abramovitz, Stan Adermann, Terry Allen, David Barker-Plummer, John Basrai, Neal Becker, Nelson H.F. Beebe, benson@odi.com, Karl Berry, Peter A. Bigot, Simon Blanchard, Keith Bostic, Frederic Brehm, Ian Brockbank, Kin Cho, Nick Christopher, Brian Clapper, J.T. Conklin, Jason Coughlin, Bill Cox, Nick Cropper, Dave Curtis, Scott David Daniels, Chris G. Demetriou, Theo Deraadt, Mike Donahue, Chuck Doucette, Tom Epperly, Leo Eskin, Chris Faylor, Chris Flatters, Jon Forrest, Jeffrey Friedl, Joe Gayda, Kaveh R. Ghazi, Wolfgang Glunz, Eric Goldman, Christopher M. Gould, Ulrich Grepel, Peer Griebel, Jan Hajic, Charles Hemphill, NORO Hideo, Jarkko Hietaniemi, Scott Hofmann, Jeff Honig, Dana Hudes, Eric Hughes, John Interrante, Ceriel Jacobs, Michal Jaegermann, Sakari Jalovaara, Jeffrey R. Jones, Henry Juengst, Klaus Kaempf, Jonathan I. Kamens, Terrence O Kane, Amir Katz, ken@ken.hilco.com, Kevin B. Kenny, Steve Kirsch, Winfried Koenig, Marq Kole, Ronald Lamprecht, Greg Lee, Rohan Lenard, Craig Leres, John Levine, Steve Liddle, David Loffredo, Mike Long, Mohamed el Lozy, Brian Madsen, Malte, Joe Marshall, Bengt Martensson, Chris Metcalf, Luke Mewburn, Jim Meyering, R. Alexander Milowski, Erik Naggum, G.T. Nicol, Landon Noll, James Nordby, Marc Nozell, Richard Ohnemus, Karsten Pahnke, Sven Panne, Roland Pesch, Walter Pelissero, Gaumond Pierre, Esmond Pitt, Jef Poskanzer, Joe Rahmeh, Jarmo Raiha, Frederic Raimbault, Pat Rankin, Rick Richardson, Kevin Rodgers, Kai Uwe Rommel, Jim Roskind, Alberto Santini, Andreas Scherer, Darrell Schiebel, Raf Schietekat, Doug Schmidt, Philippe Schnoebelen, Andreas Schwab, Larry Schwimmer, Alex Siegel, Eckehard Stolz, Jan-Erik Strvmquist, Mike Stump, Paul Stuart, Dave Tallman, Ian Lance Taylor, Chris Thewalt, Richard M. Timoney, Jodi Tsai, Paul Tuinenga, Gary Weik, Frank Whaley, Gerhard Wilhelms, Kent Williams, Ken Yap, Ron Zellar, Nathan Zelle, David Zuhn, および私の最低のメールアーカイブ能力から滑り落ちた方々、 それらの方々の協力にも同様に感謝します。 .PP Keith Bostic, Jon Forrest, Noah Friedman, John Gilmore, Craig Leres, John Levine, Bob Mulcahy, G.T. Nicol, Francois Pinard, Rich Salz, Richard Stallman には多くの悩みの分散に関して感謝します。 .PP Esmond Pitt と Earle Horton には 8 ビット文字サポートに関して; Benson Margulies と Fred Burke には C++ サポートに関して; Kent Williams と Tom Epperly には C++ クラスサポートに関して; Ove Ewerlid には NUL のサポートに関して; Eric Hughes には複数バッファのサポートに関して、それぞれ感謝します。 .PP この作品は当初、私が CA Berkeley の Lawrence Berkeley Laboratory における Real Time Systems Group にいた時に作成されました。 私に協力してくれた方々に感謝します。 .PP コメントは vern@ee.lbl.gov に送って下さい。 diff --git a/ja_JP.eucJP/man/man1/mail.1 b/ja_JP.eucJP/man/man1/mail.1 index 64ffa0f0eb..fcacb69047 100644 --- a/ja_JP.eucJP/man/man1/mail.1 +++ b/ja_JP.eucJP/man/man1/mail.1 @@ -1,1018 +1,1018 @@ .\" Copyright (c) 1980, 1990, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)mail.1 8.2 (Berkeley) 12/30/93 .\" %FreeBSD: src/usr.bin/mail/mail.1,v 1.18 2000/03/01 12:19:51 sheldonh Exp % .\" jpman %Id: mail.1,v 1.3 1997/10/30 01:42:49 h-nokubi Stab % .\" .Dd December 30, 1993 .Dt MAIL 1 .Os BSD 4 .Sh 名称 .Nm mail .Nd メールの送信と受信 .Sh 書式 .Nm mail .Op Fl iInv .Op Fl s Ar subject .Op Fl c Ar cc-addr .Op Fl b Ar bcc-addr .Ar to-addr ... .Op \&- Ar sendmail-option ... .Nm mail .Op Fl iInNv .Fl f .Op Ar name .Nm mail .Op Fl iInNv .Op Fl u Ar user .Sh 紹介 .Nm mail はインテリジェントなメール処理システムです。 コマンド文法は .Xr \&ed 1 に似ており、 .Xr \&ed 1 での行の代わりにメッセージを扱う形になっています。 .Pp .Bl -tag -width flag .It Fl v 冗長 (verbose) モードです。 メールの配送の詳細がユーザのターミナルに表示されます。 .It Fl i tty の割り込みシグナルを無視します。 これは特に雑音の多い電話回線を通して .Nm mail を使う場合に役に立ちます。 .It Fl I 入力がターミナルでない場合にでも強制的に mail を対話モードで実行します。 特にメールを送る時の特殊文字 .Sq Ic \&~ は対話モードでのみ有効となります。 .It Fl n 起動時にシステム全体の .Pa mail.rc ファイルを読み込みません。 .It Fl N メールを読んだりメールフォルダを編集する時に、最初のメッセージヘッダの 表示を行いません。 .It Fl s コマンドラインからサブジェクトを指定します ( .Fl s フラグの後の最初の引数だけがサブジェクトとして使われます。空白を含む サブジェクトは引用符で囲むように注意して下さい。) .It Fl c カーボンコピーをユーザの .Ar list へ送ります。 .It Fl b ブラインドカーボンコピーを .Ar list へ送ります。 .Ar list はコンマで区切られた名前のリストとなります。 .It Fl f あなたの .Ar mbox (もしくは指定されたファイル) の内容を処理対象として読み込みます。 .Ar quit した時には .Nm mail は削除されなかったメッセージをこのファイルに書き戻します。 .It Fl u これは以下と等価です。 .Pp .Dl mail -f /var/mail/user .El .Ss 起動時の動作 .Nm は、起動時に、システムのコマンドファイル .Pa /usr/share/misc/mail.rc , .Pa /usr/local/etc/mail.rc , .Pa /etc/mail.rc をこの順番に実行します。ただし、 .Fl n オプションを使用して、実行しないよう明示的に指定された場合は例外です。 次に、ユーザの個人的なコマンドファイル .Pa ~/.mailrc を実行します。その後 .Nm はコマンドラインオプションを検査し、 新規メッセージを送るのか既存のメールボックスを読むのかを決定します。 .Ss メールを送る メッセージを 1 人かそれ以上の人に送るために .Nm mail をメールが送られる相手の名前を引数として起動することができます。 メッセージをタイプした後、行の先頭で .Sq Li control\-D を入力します。 下記の .Ar 「メールにリプライしたり、メールを始める」 のセクションでは手紙を編集する際に役に立つ .Nm mail の機能について説明しています。 .Pp .Ss メールを読む 通常の使い方では .Nm mail は引数を指定しないで起動すると、ポストオフィスのメールをチェックし、見 つかった各メッセージにつき 1 行ずつヘッダを表示します。 現在のメッセージは初期状態では最初のメッセージ ( 1 番に番号が振られて います) となっており、 .Ic print コマンド (省略形 .Ic p を使うことができます) によって表示することができます。 メッセージの位置を .Xr \&ed 1 と同様に .Ql Ic \&+ と .Ql Ic \&\- のコマンドを使って後や前に移動したり、単に数字を指定して移動したりする ことができます。 .Pp .Ss メールを廃棄する メッセージをチェックした後、メッセージを .Ic delete コマンド .Pq Ic d で削除したり、それに .Ic reply コマンド .Pq Ic r でリプライ (返事を出す) したりすることができます。 メッセージを削除すると .Nm mail プログラムはそのメッセージのことを忘れますが、 この操作は取り消すことができます。 メッセージは .Ic undeleted コマンド .Pq Ic u を使ってメッセージの番号を指定するか、 .Nm mail のセッションを .Ic exit コマンド .Pq Ic x で中途終了することによって削除をとりやめることができます。 しかし、削除されたメッセージは通常はなくなり二度と見ることはできませ ん。 .Pp .Ss メッセージを指定する .Ic print や .Ic delete のようなコマンドは、引数に複数のメッセージの番号を指定することによって 複数のメッセージに対して一度に適用することができます。 たとえば .Dq Li delete 1 2 はメッセージ 1 と 2 を削除し、 .Dq Li delete 1\-5 は 1 から 5 のメッセージを削除します。 特別な名前 .Ql Li \&* は全てのメッセージを意味し、 .Ql Li \&$ は最後のメッセージを意味します。 メッセージの最初の数行を表示するコマンド .Ic top を使って .Dq Li top \&* で全てのメッセージの最初の数行を表示することができます。 .Pp .Ss メールにリプライしたり、メールを始める .Ic reply コマンドを使ってメッセージに対する返事を用意して、それをメッセージの差 出人に送り返すことができます。 タイプインしたメッセージは end-of-file までがメッセージの内容として定 義されます。 メッセージを編集している時に .Nm mail は 文字 .Ql Ic \&~ で始まる行を特別に扱います。 例えば、 .Ql Ic \&~m とタイプする (行にこれだけタイプします) と現在のメッセージを タブの分 (下記の変数 .Em indentprefix を参照) だけ右にシフトして返事のメッセージにコピーします。 他のエスケープはサブジェクトの設定や、メッセージの受取人の追加や削除を 行なったり、またメッセージを修正するためにエディタを起動したり、コマン ドを実行するためにシェルを起動したりします。 (下にこれらのオプションの要約があります。) .Pp .Ss メールの処理セッションを終了する .Nm mail セッションは .Ic quit コマンド .Pq Ic q で終了することができます。 チェックされたメッセージは削除されていなければ .Ar mbox ファイルにセーブされます。削除されている場合は本当に廃棄されます。 チェックされていないメッセージはポストオフィスに書き戻されます (上記の .Fl f オプション参照)。 .Pp .Ss 個人の配布リストとシステム全体の配布リスト たとえば .Dq Li cohorts へメールを送ると複数の人に配布されるように、個人の配布リストを作成する こともできます。 このようなリストは .Pp .Dl alias cohorts bill ozalp jkf mark kridle@ucbcory .Pp というような行をホームディレクトリの .Pa \&.mailrc ファイルに書いておくことによって定義できます。 このようなエイリアス (別名) の現在のリストは .Nm mail 内で .Ic alias コマンドを使って表示することができます。 システム全体にわたる配布リストは .Pa /etc/aliases を編集することによって作成することができます。 これについては .Xr aliases 5 と .Xr sendmail 8 を参照してください。これらでは違った形式で記述されます。 あなたが送ったメールの中では個人のエイリアスが展開され、そのメールの受取 人が他の受取人に .Ic reply できるようになります。 システム全体の .Ic aliases はメールが送られた時には展開されませんが、 そのマシンに返信されたメールは .Xr sendmail によって処理される際にシステム全体のエイリアスで展開されます。 .Pp .Ss ネットワークメール (ARPA, UUCP, Berknet) ネットワークアドレスの説明については .Xr mailaddr 7 を参照してください。 .Pp .Nm mail には .Pa .mailrc ファイルの中でセットして動作方法を変更するためのオプションがたくさんあ ります。 たとえば .Dq Li set askcc は .Ar askcc 機能を有効にします。 (これらのオプションについては下にまとめてあります。) .Sh 要約 (`Mail Reference Manual' より抜粋) .Pp 各コマンドは行中に単独入力されるか、またコマンドの後に引数をとることも あります。 コマンドは全て入力する必要はありません。途中まで入力されたも のに最初にマッチしたコマンドが使われます。 メッセージリストを引数として取るコマンドについては、メッセージリストが 与えられなければコマンドに要求されるものを満たす次のメッセージが使われ ます。 次のメッセージがない場合にはサーチは逆順に行なわれ、もし適用されるメッ セージが発見できない場合には .Nm mail は .Dq Li No applicable messages と表示しコマンドを中断します。 .Bl -tag -width delete .It Ic \&\- 前のメッセージを表示します。 数字の引数 .Ar n が指定されると、 .Ar n 個前に移動してメッセージを表示します。 .It Ic \&# 行中のこれ以降をコメントとして無視します。 .It Ic \&? コマンドの短い要約を表示します。 .It Ic \&! これに引き続くシェルコマンドを実行します ( .Xr sh 1 と .Xr csh 1 を参照) 。 .It Ic Print .Pq Ic P .Ic print と同様ですが、無視されるヘッダフィールドも表示されます。 .Ic print , .Ic ignore , .Ic retain を参照してください。 .It Ic Reply .Pq Ic R 発信者に返信します。 元のメッセージの他の受取人には返信されません。 .It Ic Type .Pq Ic T .Ic Print と同じです。 .It Ic alias .Pq Ic a 引数がない場合は、現在定義されている全てのエイリアスを表示します。 引数がひとつ伴うと、そのエイリアスを表示します。 複数の引数が指定されると、新しいエイリアスを作成するか、古いものを変更 します。 .It Ic alternates .Pq Ic alt .Ic alternates コマンドはいくつかのマシンにアカウントがある場合に便利な機能です。 .Nm mail に対してリストされたアドレスがあなたのアドレスであることを指示するため に使われます。 .Ic reply コマンドによってメッセージに返信するときに .Nm mail は .Ic alternates リストにリストされているアドレスにはメッセージのコピーを送付しません。 .Ic alternates コマンドが引数なしで指定された場合、現在の alternate の内容が表示され ます。 .It Ic chdir .Pq Ic c ユーザの作業ディレクトリを指定されたものに変更します。 ディレクトリが指定されていなければ、ユーザのログインディレクトリに変更 します。 .It Ic copy .Pq Ic co .Ic copy コマンドは .Ic save と同様のことを行ないますが、終了時に削除を行なうためのマークをメッセー ジにつけません。 .It Ic delete .Pq Ic d メッセージのリストを引数として取り、それら全てを削除されたものとしてマー クします。 削除されるメッセージは .Ar mbox にはセーブされず、また他のほとんどのコマンドの対象となりません。 .It Ic dp (もしくは .Ic dt ) 現在のメッセージを削除し、次のメッセージを表示します。 次のメッセージがなければ、 .Nm mail は .Dq Li "at EOF" と表示します。 .It Ic edit .Pq Ic e メッセージのリストを引数として取り、各々を順にテキストエディタで開きま す。 メッセージはテキストエディタから戻ってきた時に再度読み込まれます。 .It Ic exit .Pf ( Ic ex もしくは .Ic x ) ユーザのシステムメールボックス、 .Ar mbox ファイル、 .Fl f での編集ファイルを変更せずにシェルへ直ちに戻ります。 .It Ic file .Pq Ic fi .Ic folder と同様です。 .It Ic folders フォルダディレクトリ内のフォルダ名をリストします。 .It Ic folder .Pq Ic fo .Ic folder -コマンドは新しいメールファイルかフォルダに切替えます。 +コマンドは新しいメールファイルかフォルダに切り替えます。 引数がないと、現在どのファイルを読んでいるかを表示します。 引数を指定すると、現在のファイルに対して行なった変更 (削除など) を書き 出し、新しいファイルを読み込みます。 引数の名前にはいくつかの特別な記法を使うことができます。 # は前のファイルを意味します。 % はあなたのシステムメールボックスを意味します。 %user は user のシステムメールボックスを意味します。 & はあなたの .Ar mbox ファイルを意味します。 \&+\&folder はあなたのフォルダディレクトリ中のファイルを意味します。 .It Ic from .Pq Ic f メッセージのリストを引数として取り、それらのメッセージのヘッダを表示し ます。 .It Ic headers .Pq Ic h 現在の範囲のヘッダをリストします。現在の範囲は 18 個のメッセージのグルー プです。 引数として .Ql \&+ が指定されると次の 18 個のメッセージのグループが表示され、 .Ql \&\- が指定されると前の 18 個のメッセージのグループが表示されます。 .It Ic help .Ic \&? と同じです。 .It Ic hold .Pf ( Ic ho , もしくは .Ic preserve ) メッセージのリストを引数として取り、各メッセージを .Ar mbox ではなくユーザのシステムメールボックスにセーブするためのマークをつけ ます。 .Ic delete によってマークが付けられているメッセージにはマークはつけません。 .It Ic ignore .Ar ignored list にヘッダフィールドのリストを追加します。 ignore list (無視リスト) に登録されているヘッダフィールドは メッセージを表示する際にターミナルに表示されません。 このコマンドはマシンが生成するヘッダフィールドの表示を省略するのに非常 に便利です。 .Ic Type と .Ic Print コマンドを使うと表示の際に無視するフィールドも含めメッセージの全てを表 示することができます。 .Ic ignore が引数なしで実行されると現在の無視するフィールドのリストが表示されます。 .It Ic mail .Pq Ic m ログイン名と配布グループ名を引数として取り、メールをそれらの人々に送付 します。 .It Ic more .Pq Ic \mo メッセージのリストを引数として取り、そのリストに対してページャを起動し ます。 .It Ic mbox 終了時にあなたのホームディレクトリの .Ic mbox へ書き込むメッセージのリストを指定します。 .Ic hold オプションをセットして .Em いなければ 、これはメッセージに対するデフォルトの動作となります。 .It Ic next .Pq Ic n ( .Ic \&+ や .Tn CR と同様) 次のメッセージへ進み、それを表示します。 引数リストを指定すると、次にマッチするメッセージを表示します。 .It Ic preserve .Pq Ic pre .Ic hold と同様です。 .It Ic print .Pq Ic p メッセージリストを引数として取り、各メッセージをユーザのターミナルに表 示します。 .It Ic quit .Pq Ic q セッションを終了し、全ての未削除のまだセーブしていないメッセージをユー ザのホームディレクトリの .Ar mbox ファイルへセーブし、 .Ic hold か .Ic preserve でマークされたメッセージか参照されなかったメッセージはシステムメールボッ クスに残し、その他の全てのメッセージをシステムメールボックスから削除し ます。 もし新しいメールがセッション中に届いていたら、メッセージ .Dq Li "You have new mail" を表示します。 もしメールボックスのファイルを .Fl f フラグ付きで編集している途中であれば、編集中のファイルは再度書き込まれ ます。 編集中のファイルの再書き込みが失敗しなければシェルに戻ります。 編集中のファイルの再書き込みが失敗した場合、ユーザは .Ic exit コマンドによって抜け出すことができます。 .It Ic reply .Pq Ic r メッセージリストを引数として取り、メールを指定されたメッセージの差出人 と全ての受取人に送ります。 デフォルトのメッセージは削除されていてはいけません。 .It Ic respond .Ic reply と同様です。 .It Ic retain .Ar retained list (保持リスト) にヘッダフィールドのリストを追加します。 メッセージを表示する時には、retain list に登録されているヘッダ フィールドのみがターミナルに表示されます。 他の全てのフィールドは省略されます。 .Ic Type と .Ic Print コマンドを使うとメッセージの全てを表示することができます。 .Ic retain が引数を指定されずに実行されると、現在 retain list に登録されているフィー ルドのリストを表示します。 .It Ic save .Pq Ic s メッセージのリストとファイル名を引数として取り、各メッセージを順にファ イルの末尾に追加します。 ファイル名が引用符で囲まれて表示され、それに続いて行数と文字数がユーザ のターミナルにエコーされます。 .It Ic set .Pq Ic se 引数がない場合には全ての変数の値を表示します。 引数が指定された場合はオプションをセットします。 引数は .Ar option=value ( = の前後にはスペースは入りません) か .Ar option の形式を取ります。 空白やタブを代入式に含めるために引用符を代入文の どの部分にでも 置いてかまいません。例えば次のようになります。 .Dq Li "set indentprefix=\*q->\*q" .It Ic saveignore .Ic saveignore は .Ic ignore コマンドが .Ic print や .Ic type の際に行なうことを .Ic save の際に行なうものです。 これでマークされたヘッダフィールドは .Ic save コマンドによって保存される時や自動的に .Ar mbox へ保存される時にフィルタリングされて取り除かれます。 .It Ic saveretain .Ic saveretain は .Ic retain が .Ic print や .Ic type の際に行なうことを .Ic save の際におこなうものです。 .Ic save コマンドによって保存される時や自動的に .Ar mbox へ保存される時には、これでマークされたヘッダフィールドのみが保存されます。 .Ic saveretain は .Ic saveignore に優先します。 .It Ic shell .Pq Ic sh シェルを対話モード起動します。 .It Ic size メッセージのリストを引数として取り、各メッセージのサイズを文字数で表示 します。 .It Ic source .Ic source コマンドはファイルからコマンドを読み込みます。 .It Ic top メッセージのリストを引数として取り、各メッセージの先頭の数行を表示しま す。 表示する行数は変数 .Ic toplines によって制御でき、デフォルトでは 5 行となっています。 .It Ic type .Pq Ic t .Ic print と同様です。 .It Ic unalias .Ic alias コマンドによって定義された名前のリストを引数として取り、記憶されている ユーザのグループを無効にします。 グループの名前は以後意味を持たなくなります。 .It Ic undelete .Pq Ic u メッセージのリストを引数として取り、各メッセージを削除されて .Ic いない ものとしてマークします。 .It Ic unread .Pq Ic U メッセージのリストを引数として取り、各メッセージを .Ic 未読 としてマークします。 .It Ic unset オプションの名前のリストを引数として取り、それらの記憶されている値を無 効とします。 .Ic set の逆です。 .It Ic visual .Pq Ic v メッセージのリストを引数として取り、各メッセージについてスクリーンエディ タを起動します。 .It Ic write .Pq Ic w .Ic save と同様ですが、 .Pq Ar ヘッダを除いて メッセージの本文 .Ic のみ が保存されます。 メッセージシステムを使ってソースプログラムテキストを送受信するような作 業で非常に便利です。 .It Ic xit .Pq Ic x .Ic exit と同様です。 .It Ic z .Nm mail は .Ic headers コマンドにて説明されているようにウィンドウいっぱいにメッセージヘッダを 表示します。 .Nm mail が指し示しているメッセージの位置は .Ic \&z コマンドによって次のウィンドウに進めることができます。 また、 .Ic \&z\&\- コマンドを使って前のウィンドウに戻ることもできます。 .El .Ss チルダ/エスケープ .Pp ここではチルダエスケープを要約します。 チルダエスケープはメッセージを編集している時に特別の機能を実行するため に使われます。 チルダエスケープは行の先頭でのみ認識されます。 実際のエスケープ文字は .Ic escape オプションによってセットできるので、 .Dq Em チルダエスケープ という呼び方は多少間違ったものです。 .Bl -tag -width Ds .It Ic \&~! Ns Ar command 指定されたシェルコマンドを実行し、メッセージに戻ります。 .It Ic \&~b Ns Ar name ... カーボンコピーの受取人のリストへ指定された name を追加します。 ただし name は Cc: 行へは表示されません ("ブラインド" カーボ ンコピー)。 .It Ic \&~c Ns Ar name ... 指定された name をカーボンコピーの受取人のリストに追加します。 .It Ic \&~d ホームディレクトリの .Dq Pa dead.letter ファイルをメッセージ中に読み込みます。 .It Ic \&~e 今までに編集したメッセージをテキストエディタで開きます。 編集セッションの終了後、メッセージに続けてテキストを追加することができ ます。 .It Ic \&~f Ns Ar messages 指定されたメッセージを送ろうとしているメッセージ中に読み込みます。 メッセージが指定されない場合は、現在のメッセージを読み込みます。 現在無視されているメッセージヘッダ ( .Ic ignore か .Ic retain コマンドによる) は読み込まれません。 .It Ic \&~F Ns Ar messages .Ic \&~f と同様ですが、全てのメッセージヘッダが含まれます。 .It Ic \&~h メッセージヘッダを順に各々を入力して編集し、テキストを末尾に追加したり、 現在のターミナルの erase 文字や kill 文字を使ってフィールドを変更した りします。 .It Ic \&~m Ns Ar messages 指定されたメッセージを現在送ろうとしているメッセージの中に読み込み、タ ブか .Ar indentprefix に設定されている値でインデントします。 メッセージが指定されていない場合は現在のメッセージが読み込まれます。 現在無視されているメッセージヘッダ ( .Ic ignore か .Ic retain コマンドによる) は読み込まれません。 .It Ic \&~M Ns Ar messages .Ic \&~m と同様ですが、全てのメッセージヘッダが読み込まれます。 .It Ic \&~p 今までに修正したメッセージをメッセージヘッダフィールドと共に表示します。 .It Ic \&~q 送ろうとしているメッセージを中断し、 .Ic save がセットされている場合はホームディレクトリの .Dq Pa dead.letter にメッセージをセーブします。 .It Ic \&~r Ns Ar filename 指定されたファイルをメッセージに読み込みます。 .It Ic \&~R Ns Ar string .Ar string を Reply-To: フィールドとして使用します。 .It Ic \&~s Ns Ar string 指定された文字列を現在のサブジェクトフィールドに設定します。 .It Ic \&~\&t Ns Ar name ... 指定された名前を受取人のリストに追加します。 .It Ic \&~\&v 別のエディタ ( .Ev VISUAL オプションによって定義されているもの) で現在までに修正したメッセージを 開きます。 通常は別のエディタはスクリーンエディタとなります。 エディタを終了した後、メッセージの末尾にテキストを追加できるようになり ます。 .It Ic \&~w Ns Ar filename 指定されたファイルにメッセージを書き込みます。 .It Ic \&~\&| Ns Ar command 指定されたコマンドをフィルタとし、パイプを通してメッセージに適用します。 コマンドから何の出力もないか、コマンドが異常終了した場合は、メッセージ のテキストは元のままとなります。 メッセージを整形するためによく .Xr fmt 1 コマンドが .Ic command として使われます。 .It Ic \&~: Ns Ar mail-command 指定されたメールコマンドを実行します。 しかし全てのコマンドが使えるわけではありません。 .It Ic \&~~ Ns Ar string メッセージに単独の ~ で始まるテキスト文字列を挿入します。 エスケープ文字が変更されている場合は、それを送るためにはエスケープ文字 を 2 つ指定しなければなりません。 .El .Ss メールオプション オプションは .Ic set と .Ic unset コマンドで制御します。 オプションは 2 値か文字列となります。 2 値の場合はセットされているか、されていないかだけが意味を持ちます。 文字列の場合は実際にセットしている値が意味を持ちます。 2 値のオプションには次のものがあります。 .Bl -tag -width append .It Ar append メッセージを .Ar mbox にセーブする場合、先頭に書くのではなく、末尾に追加します。 これは常にセットされていなければなりません (システムの .Pa mail.rc ファイルにおいて設定することが望ましいです)。 .It Ar ask .Nm mail は送ろうとしている各メッセージのサブジェクトの入力を促します。 改行のみを入力するとサブジェクトフィールドは送られません。 .It Ar askcc 各メッセージの編集後に追加のカーボンコピーの受取人の入力を促します。 現在のリストで十分な場合は改行のみを入力してください。 .It Ar autoprint .Ic delete コマンドを .Ic dp のように動作させます。 すなわちメッセージの削除後、次のものが自動的に表示されます。 .It Ar debug 2 値のオプション .Ar debug をセットするとコマンド行で .Fl d を指定した時と同じ動作になり、 .Nm mail はデバッグに有用な全ての種類の情報を出力します。 .It Ar dot 2 値のオプション .Ar dot をセットすることによって、 .Nm mail は行中にピリオドが単独で入力されると、送ろうとしているメッセージが終了した ものとみなします。 .It Ar hold このオプションはデフォルトでメッセージをシステムメールボックス中に保持 するために使われます。 .It Ar ignore ターミナルからの割り込み信号を無視し、@ としてエコーします。 .It Ar ignoreeof .Ar ignoreeof は .Ar dot に関連するオプションであり、 .Nm mail にメッセージの最後での control-d を無視させます。 .Ar Ignoreeof は .Nm mail のコマンドモード中でも有効となります。 .It Ar metoo 通常、差出人を含むグループの展開時には差出人は取り除かれます。 このオプションをセットすることによって差出人も展開されたグループに含ま れるようになります。 .It Ar noheader .Ar noheader オプションをセットすると、コマンド行で .Fl N フラグを指定するのと同様の動作となります。 .It Ar nosave 普通は .Tn RUBOUT (erase もしくは delete) を 2 回入力してメッセージの編集を中断する時、 .Nm mail はホームディレクトリのファイル .Dq Pa dead.letter に中断した手紙をコピーします。 この 2 値のオプション .Ar nosave をセットすると、ファイルへのコピーは行なわれません。 .It Ar Replyall .Ic reply コマンドと .Ic Reply コマンドの意味を逆転させます。 .It Ar quiet 最初に起動された時にバージョンの表示を省略します。 .It Ar searchheaders このオプションがセットされていると、``/x:y'' の形式でのメッセージリス トの指定はヘッダフィールド ``x'' 中にサブストリング ``y'' を含む全ての メッセージに展開されます。ストリングのサーチは大文字と小文字を区別しま せん。 .It Ar verbose .Ar verbose オプションをセットするとコマンド行で .Fl v フラグをセットした時と同様の動作となります。 .Nm mail が verbose (饒舌) モードで実行されている時、実際のメッセージの配送の様 子がターミナルに表示されます。 .El .Ss オプションストリング値 .Bl -tag -width Va .It Ev EDITOR .Ic edit コマンドと .Ic \&~e エスケープで使われるテキストエディタのパス名です。 定義されていない場合はデフォルトのエディタが使われます。 .It Ev LISTER .Ic folders コマンドで使われるディレクトリをリストするコマンドのパス名です。 デフォルトは .Pa /bin/ls です。 .It Ev PAGER .Ic more コマンドや変数 .Ic crt がセットされている時に使われるプログラムのパス名です。 このオプションが定義されていないとデフォルトのページャ .Xr more 1 が使われます。 .It Ev REPLYTO 設定されている場合、送信メッセージの Reply-To フィールドの初期化に使用 されます。 .It Ev SHELL .Ic \&! コマンドや .Ic \&~! エスケープで使われるシェルのパス名です。 このオプションが定義されていないとデフォルトのシェルが使われます。 .It Ev VISUAL .Ic visual コマンドや .Ic \&~v エスケープで使われるテキストエディタのパス名です。 .It Va crt 値をとるオプション .Va crt は、メッセージを読むために .Ev PAGER が使われるメッセージの長さの閾値として使われます。 .Va crt が値なしでセットされていると、システムに保存されているターミナルの画面 の高さが閾値の計算に使われます ( .Xr stty 1 を参照して下さい)。 .It Ar escape これが定義されていると、このオプションの最初のキャラクタがエスケープを 示すための ~ の代わりに使われます。 .It Ar folder メッセージのフォルダを置くためのディレクトリ名です。 これが `/' で始まっていると .Nm mail は絶対パスとして解釈します。それ以外の場合はフォルダのディレクトリはホー ムディレクトリからの相対パスとして扱われます。 .It Ev MBOX .Ar mbox の名前です。 これはフォルダの名前とすることもできます。 デフォルトはホームディレクトリの .Dq Li mbox となります。 .It Ar record これが定義されていると、全ての発信されるメールを記録するために使われる ファイルのパス名となります。 定義されていない場合は、発信メールはセーブされません。 .It Ar indentprefix チルダエスケープ ``~m'' で、通常のタブ文字 (^I) の代わりにメッセージを インデントするために使われる文字列となります。 これにスペースやタブが含まれている場合は引用符で囲んで下さい。 .It Ar toplines これが定義されていると、 .Ic top コマンドで表示するメッセージの行数となります。通常は先頭の 5 行が表示 されます。 .El .Sh 環境変数 .Nm mail は環境変数 .Ev HOME と .Ev USER を使用します。また、環境変数 .Ev MAIL がセットされていると、デフォルトの /var/mail の代わりにユーザのメール ボックスの位置として使われます。 .Sh 関連ファイル .Bl -tag -width /usr/share/misc/mail.*help -compact .It Pa /var/mail/* ポストオフィスです。 .It ~/mbox ユーザの古いメールです。 .It ~/.mailrc 起動時に実行されるメールコマンドを指定するファイルです。 .It Pa /tmp/R* 一時ファイルです。 .It Pa /usr/share/misc/mail.*help ヘルプファイルです。 .sp .It Pa /usr/share/misc/mail.rc .It Pa /usr/local/etc/mail.rc .It Pa /etc/mail.rc システムの初期化ファイルです。 各ファイルが存在すればこの順に読み込まれます。 .El .Sh 関連項目 .Xr fmt 1 , .Xr newaliases 1 , .Xr vacation 1 , .Xr aliases 5 , .Xr mailaddr 7 , .Xr sendmail 8 , .Rs .%T "The Mail Reference Manual" . .Re .Sh 歴史 .Nm コマンドは .At v1 で登場しました。 本マニュアルページは 元々 Kurt Shoens によって書かれた .%T "The Mail Reference Manual" をベースにしています。 .Sh バグ ここに文書化されていないフラグがいくつか存在します。 ほとんどは一般のユーザには役に立たないものです。 .Pp 混乱しやすいのですが、通常 .Nm mail は .Nm Mail への単なるリンクとなっています。 diff --git a/ja_JP.eucJP/man/man1/rsh.1 b/ja_JP.eucJP/man/man1/rsh.1 index 16c9e1cf23..c1408ddb13 100644 --- a/ja_JP.eucJP/man/man1/rsh.1 +++ b/ja_JP.eucJP/man/man1/rsh.1 @@ -1,198 +1,198 @@ .\" Copyright (c) 1983, 1990, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)rsh.1 8.1 (Berkeley) 6/6/93 .\" %FreeBSD: src/usr.bin/rsh/rsh.1,v 1.11 2000/01/07 13:14:26 phantom Exp % .\" .\" jpman %Id: rsh.1,v 1.2 1997/05/13 00:56:14 mutoh Stab % .\" .Dd June 6, 1993 .Dt RSH 1 .Os BSD 4.2 .Sh 名称 .Nm rsh .Nd リモートマシン上でコマンドを実行する .Sh 書式 .Nm .Op Fl Kdnx .Op Fl t Ar timeout .Op Fl k Ar realm .Op Fl l Ar username .Ar host .Op command .Sh 解説 .Nm は .Ar host で指定したホスト上で、 .Ar command で指定したコマンドを実行します。 .Pp .Nm は、標準入力をリモートコマンドに対してコピーします。また、リモートコマンドの 標準出力を、 .Nm の標準出力に、リモートコマンドの標準エラー出力を、 .Nm の標準エラー出力にコピーします。 SIGINT, SIGQUIT, SIGTERM の各シグナルに関しては、 リモートコマンドに対して通知されます。 .Nm は、リモートコマンドが正常終了した場合には正常終了します。本コマンドは、 以下のオプションが使用可能です。 .Bl -tag -width flag .It Fl K Keroberos による全てのユーザ認証を行いません。 .It Fl d .Nm は .Xr setsockopt 2 を用いて、リモートホストとの通信に用いられる .Tn TCP ソケットのデバッグを有効にします。 .It Fl k Ar realm .Nm はリモートホストに対して .Xr krb_realmofhost 3 によって定義されるリモートホストの realm の代わりに、指定した .Ar realm を使用して、リモートホストに対してのアクセス許可を得ます。 .It Fl l Ar username リモートの .Ar username を指定可能です。 デフォルトでは、ローカルユーザ名とリモートホスト上のユーザ名は同じです。 ユーザ認証には .Xr rlogin 1 と同様の仕組みにより Kerberos によるユーザ認証機構が使われます。 .It Fl n .Nm の入力を、特殊デバイス .Pa /dev/null にします( .Sx バグ の項を参照してください)。 .It Fl x すべてのデータ交換に .Tn DES による暗号化を有効にします。これを用いると レスポンスが著しく悪くなるかも知れません。 .It Fl t Ar timeout .Fl t オプションは、(秒で表現される) .Ar timeout を指定します。この時間の間、 データが送られも受け取りもされない場合、 .Nm は終了します。 .El .Pp .Ar command が指定されない場合には、ユーザは .Xr rlogin 1 を用いてリモートホストにログインします。 .Pp クォートされていないシェルのメタキャラクタについては、ローカルマシン上 で解釈され、クォートされているメタキャラクタはリモートホスト上で解釈 されます。例えば、 .Pp .Dl rsh otherhost cat remotefile >> localfile .Pp については、リモートマシン上のファイル .Ar remotefile を、ローカルマシン上のファイル .Ar localfile に追加します。一方 .Pp .Dl rsh otherhost cat remotefile \&">>\&" other_remotefile .Pp については、リモートマシン上の .Ar remotefile を .Ar other_remotefile に追加します。 .\" .Pp .\" Many sites specify a large number of host names as commands in the .\" directory /usr/hosts. .\" If this directory is included in your search path, you can use the .\" shorthand ``host command'' for the longer form ``rsh host command''. .Sh 関連ファイル .Bl -tag -width /etc/hosts -compact .It Pa /etc/hosts .It Pa /etc/auth.conf .El .Sh 関連項目 .Xr rlogin 1 , .Xr setsockopt 2 , .Xr kerberos 3 , .Xr krb_realmofhost 3 , .Xr krb_sendauth 3 , .Xr rcmd 3 , .Xr ruserok 3 , .Xr auth.conf 5 , .Xr hosts.equiv 5 , .Xr hosts 5 , .Xr rlogind 8 , .Xr rshd 8 .Sh 歴史 .Nm コマンドは .Bx 4.2 から登場しました。 .Sh バグ .Xr csh 1 を用いて .Nm を標準入力からのリダイレクトなしにバックグラウンドで実行する場合、 たとえリモートコマンドの入力がなくても(必ず)ブロックされるでしょう。 リダイレクトで .Nm に入力を渡す必要がなければ、 .Fl n オプションを用いてリモートコマンドの入力元を .Pa /dev/null -に切替えてください。 +に切り替えてください。 .Pp .Nm を用いて、 .Xr rogue 6 や .Xr vi 1 のような会話的コマンドを実行することはできません。 代わりに .Xr rlogin 1 を使用してください。 .Pp SIGSTOP は、ローカルマシンの .Nm プロセスを停止させるだけです。これはおそらく良くない動作です. しかし、これを直すことは、現時点では困難です。ここでその理由を説明す るにはあまりに複雑なので、理由については割愛します。 diff --git a/ja_JP.eucJP/man/man1/scon.1 b/ja_JP.eucJP/man/man1/scon.1 index 39fde16f48..a5e84411ab 100644 --- a/ja_JP.eucJP/man/man1/scon.1 +++ b/ja_JP.eucJP/man/man1/scon.1 @@ -1,220 +1,220 @@ .\" Copyright (c) 1992,1993,1994 Hellmuth Michaelis and Joerg Wunsch .\" .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by .\" Hellmuth Michaelis and Joerg Wunsch .\" 4. The name authors may not be used to endorse or promote products .\" derived from this software without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR .\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES .\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. .\" IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT, .\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT .\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, .\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY .\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" .\" @(#)scon.1, 3.00, Last Edit-Date: [Mon Jan 10 21:30:48 1994] .\" %FreeBSD: src/usr.sbin/pcvt/scon/scon.1,v 1.8 2000/03/01 14:08:57 sheldonh Exp % .\" jpman %Id: scon.1,v 1.3 1997/07/26 21:45:58 horikawa Stab % .\" .Dd December 31, 1993 .Dt SCON 1 .Sh 名称 .Nm scon .Nd pcvt ビデオドライバのスクリーンモードを制御する .Sh 書式 .Nm scon .Op Fl a .Op Fl c Ar screenno .Op Fl d Ar device .Op Fl f Ar on|off .Op Fl h .Op Fl H .Op Fl l .Op Fl m .Op Fl v .Op Fl V .Op Fl s Ar lines .br .Nm scon .Op Fl v .Op Fl d Ar device .Fl p Ar entry,red,green,blue .br .Nm scon .Op Fl v .Op Fl d Ar device .Fl p Ar default .br .Nm scon .Op Fl v .Op Fl d Ar device .Fl p Ar list .Nm scon .Op Fl v .Fl t Ar timeout .Nm scon .Op Fl v .Fl 1 | Fl 8 .Sh 解説 .Nm scon ユーティリティは pcvt vt220 ドライバの実行時動作の様々な側面を制御します。 .Pp オプションは以下です: .Bl -tag -width Ds .It Fl a pcvt が認識したビデオアダプタを文字列で返します。 MDA, HGC, CGA, EGA, VGA または UNKNOWN が返されます。 .It Fl c -現在の (表示される) スクリーンをどのスクリーン番号に切替えるかを指定します。 +現在の (表示される) スクリーンをどのスクリーン番号に切り替えるかを指定します。 .It Fl d デバイスファイル名 (例えば /dev/ttyv2) を指定します。 これに続いてコマンドラインから指定される処理は、これに適用されます。 .It Fl f 暗黙的に 24 行を仮定するプログラムを VT220 にて実行すると、 端末が実際には 25 行の時には正しくない振舞をすることが有ります。 完全な VT220 の動作をサポートするために、 25 行純 VT モードや 28 行 HP モードにて実行中の pcvt に 24 行のみを選択させることが可能です。 .Fl f オプションには、文字列 `on' か `off' のパラメータが必要です。 それぞれ仮想スクリーンのモードをオンまたはオフします。 前記の 2 つの垂直解像度ではない場合には、このモードは影響が有りません。 .It Fl h 使用方法/ヘルプを表示します。 .It Fl l pcvt ドライバの出力に関する、 実行時に変更可能なオプションと固定パラメータ (アダプタのタイプ、VGA アダプタの場合製作元、チップセット、 132 カラムサポート等) の現在の構成を列挙します。 .It Fl m pcvt が認識したディスプレイモニタのタイプを文字列で返します。 MONO, COLOR または UNKNOWN が返されます。 .It Fl v プログラムの操作における冗長表示を指定します。 .It Fl V 指定された/現在のスクリーンを、 HP エスケープシーケンスを認識せずファンクションキーラベルを表示しない、 -純 VT220 モードに切替えます。 +純 VT220 モードに切り替えます。 .It Fl H -指定された/現在のスクリーンを、HP/VT220 混成モードに切替えます。 +指定された/現在のスクリーンを、HP/VT220 混成モードに切り替えます。 完全な VT220 エミュレーションに加え、 HP ファンクションキーラベルとラベルを処理するエスケープシーケンスを ユーザは使用可能です。 .It Fl s スクリーンの文字行数を指定します。 25, 28, 35, 40, 43, 50 を指定可能です。 これら全てのスクリーンサイズを使うためには、 要求されるサイズのフォントを EGA/VGA フォントラムに ダウンロードする必要が有ります。 このオプションは EGA および VGA ボードに対してのみ使用可能です。 .It Fl p VGA パレット .Pq DAC を修正します。 .Fl p は .Fl s , .Fl H , .Fl V と相互排除です。通常、オプション .Fl p は VGA ボードに対してのみ使用可能です。 使い方は以下の 3 種です。 引数 .Dq Ar default を指定すると、 .Po VGA ROM BIOS がハードウェアリセット後にインストールするように .Pc デフォルトパレットを回復します。 引数 .Dq Ar list を指定すると、現在の VGA DAC パレットエントリを列挙します。 各エントリは、テーブルインデックス、赤緑青の値、 名前が有る場合は色名を持ちます。 後続する空のテーブルスロット (RGB 値が全てゼロ) は省略されます。 上記以外の場合、コンマで区切った 4 つの引数が期待されます。 1 番目が変更すべきパレットエントリの番号を指定します。 これは 0 から 255 までの値か、 .Pq 大文字小文字を区別する 色名です。 後続する値は 0 から 63 までの値域である赤緑青の値であり、 VGA DAC が変換に使用します。 読みやすさのために、引数の最初の区切りはコンマ .Dq \&, でなくコロン .Dq \&: であっても良いですが、一般的なコマンド引数の決まりを破っていることに 注意して下さい。 不明確にならなければ、複数の .Fl p オプションを指定可能です。 .It Fl t .Fl t を指定するとスクリーンセーバを活性化します。 動作は .Ar timeout に依存します: .Ar timeout が 0 の場合、スクリーンセーバはオフにされます。 そうでなければ、 .Ar timeout はスクリーンセーバを起動するまで待つ秒数として扱います。 注: .Fl t オプションは、スクリーンセーバサポートをドライバに組み込んだ時のみ有効です! .It Fl 1 132 カラムモードを設定します .Pq VGA アダプタでのみ有効です 。 .It Fl 8 80 カラムモードを設定します。 .El .Pp -HP と VT のモードを切替えると、 -切替え時に 24 行強制モードがオンオフされます。 -80 カラムと 132 カラムを切替えると、 +HP と VT のモードを切り替えると、 +切り替え時に 24 行強制モードがオンオフされます。 +80 カラムと 132 カラムを切り替えると、 スクリーンが消去され、スクロール範囲がリセットされ、 カーソルがホームポジションに移動します。 .Sh 使用例 コマンド .Dq Li scon Fl H s Ar 28 は現在のスクリーンを HP モードにし、スクリーンサイズを 28x80 にします。 .Do .Li scon Fl p .Ar lightgray,0,15,0 .Fl p .Ar 0:45,45,45 .Dc を起動すると、通常のテキストが灰色背景の緑色になります。 通常のテキストは、白だと思うかも知れませんが、灰色です。 .Sh バグ .Fl c と .Fl d のオプションはなぜか衝突します。 将来のリリースで変更されるでしょう。 .Sh 関連項目 .Xr cursor 1 , .Xr loadfont 1 , .Xr pcvt 4 diff --git a/ja_JP.eucJP/man/man1/su.1 b/ja_JP.eucJP/man/man1/su.1 index de97ea65d8..bc7250eb36 100644 --- a/ja_JP.eucJP/man/man1/su.1 +++ b/ja_JP.eucJP/man/man1/su.1 @@ -1,242 +1,242 @@ .\" Copyright (c) 1988, 1990, 1993, 1994 .\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)su.1 8.2 (Berkeley) 4/18/94 .\" %FreeBSD: src/usr.bin/su/su.1,v 1.17.2.1 2000/08/05 23:07:51 marko Exp % .\" jpman %Id: su.1,v 1.3 1997/05/19 16:52:17 horikawa Stab % .\" .\" this is for hilit19's braindeadness: " .Dd April 18, 1994 .Dt SU 1 .Os .Sh 名称 .Nm su .Nd 一時的に他のユーザになりかわる .Sh 書式 .Nm .Op Fl .Op Fl Kflm .Op Fl c Ar class .Op Ar login Op Ar args .Sh 解説 .Nm は .Ar login するときに Kerberos パスワード (もしくはログイン ( .Ar login ) が指定されない場合には、 .Dq Ar login Ns .root のパスワード)を要求し、Kerberos 認証を得たあとにユーザとグループ ID を -切替えます。シェルはそのあとに実行されます。もし Kerberos エラーがあれ +切り替えます。シェルはそのあとに実行されます。もし Kerberos エラーがあれ ば、 .Nm は、 .Ar login のためのパスワードを見つけるためにローカルパスワードファイルを調べま す。もし .Nm が root によって実行された場合、パスワードは要求されず、適当なユーザ ID をもったシェルが実行されます。付加的な Kerberos 認証は一つも得られ ません。 .Pp デフォルトでは、 .Ev USER , .Ev HOME , .Ev SHELL 以外の環境変数は引き継がれます。 .Ev HOME と .Ev SHELL はターゲットとなるログインのデフォルト値になります。 .Ev USER は、ターゲットログインのユーザ ID が 0 以外であれば、ターゲットログイ ンのものがセットされます。0 の場合は変更されません。実行されるシェルは ターゲットログインのログインシェルです。これは .Nm の伝統的なふるまいです。 オリジナルユーザのログインクラス( .Xr login.conf 5 参照)の資源制約とセッション優先度も通常保たれます。 例外はターゲットログインがユーザ ID 0 の場合です。 .Pp オプションとしては、以下のものがあります: .Bl -tag -width Ds .It Fl K ユーザ認証に Kerberos を使用しません。 .It Fl f シェルとして .Xr csh 1 が実行される場合、 .Dq Pa .cshrc ファイルを読み込みません。 .It Fl l 通常にログインした場合と同様になるように環境変数が設定されます。 すなわち、環境変数は .Ev HOME , .Ev SHELL , .Ev PATH , .Ev TERM , .Ev USER 以外は捨てられます。 .Ev HOME と .Ev SHELL は上記のように変更されます。 .Ev USER はターゲットログインの値になります。 .Ev PATH は .Dq Pa /bin:/usr/bin になります。 .Ev TERM は、あなたの現在の環境変数の値になります。 ターゲットログインのクラスにより、 ログインクラスケーパビリティデータベースに基づき、 環境変数が設定もしくは変更されることがあります。 実行されるシェルはターゲット ログインのログインシェルになり、 ターゲットログインのホームディレクトリに移動します。 資源制約とセッション優先度は、 ターゲットアカウントのログインクラスのものに変更されます。 .It Fl (文字無し) .Fl l と同じです。 .It Fl m 環境変数は変化しません。 実行されるシェルは自分のログインシェルで、ディレクトリの移動も行われません。 セキュリティの用心として、もしターゲットユーザのシェルが 非標準シェル ( .Xr getusershell 3 で定義される) であったり、呼出側の実ユーザ ID が 0 でなければ、 .Nm は失敗します。 .It Fl c Ar class 指定されたログインクラスの設定を使用します。 スーパユーザのみが使用を許されます。 .El .Pp .Fl l (または .Fl ) と .Fl m は、同時に指定することはできません。最後に指定したものが優先されます。 .Pp オプションの .Ar args がコマンドラインに指定されると、 それらはターゲットログインのログインシェルに引き渡されます。 .Pp グループ 0 (通常は .Dq wheel ) のメンバのみ .Dq root となることが可能です。 グループ 0 が存在しないか空の場合には、どのユーザでも .Dq root に .Nm することが可能です。 .Pp デフォルトでは (設定がされていなければ) スーパユーザのプロンプトは .Dq Sy \&# に設定されます。 .Sh 関連ファイル .Bl -tag -width /etc/auth.conf -compact .It Pa /etc/auth.conf 認証サービスの設定 .El .Sh 関連項目 .Xr csh 1 , .Xr kerberos 1 , .Xr kinit 1 , .Xr login 1 , .Xr sh 1 , .Xr group 5 , .Xr login.conf 5 , .Xr passwd 5 , .Xr environ 7 .Sh 環境変数 .Nm で利用される環境変数は以下の通りです: .Bl -tag -width HOME .It Ev HOME 上記で示した書き換えがない限り、 実ユーザ ID のデフォルトのホームディレクトリです。 .It Ev PATH 上記で示した書き換えがない限り、実ユーザ ID のデフォルトのサーチパスで す。 .It Ev TERM なり代わる人が所有している端末のターミナルタイプです。 .It Ev USER ユーザ ID が 0 (root) 以外の場合は、ユーザ ID は常に .Nm 後の effective ID (ターゲットとなるユーザ ID) です。 .El .Sh 使用例 .Bl -tag -width 5n -compact .It Li "su man -c catman" コマンド .Li catman をユーザ .Li man で実行します。 あなたの実 UID が 0 でない場合は、man のパスワードを尋ねられます。 .It Li "su man -c 'catman /usr/share/man /usr/local/man /usr/X11R6/man'" 上と同様ですが、コマンドが複数の語から構成されています。 .Fl c オプションをシェルに渡すためにクォートしています (ほとんどのシェルでは .Fl c への引数が単一語であると期待します)。 .It Li "su -c staff man -c 'catman /usr/share/man /usr/local/man /usr/X11R6/man'" 上と同様ですが、ログインクラス .Dq staff の資源制限にてターゲットコマンドを実行します。 注: この例では、最初の .Fl c オプションは .Nm に適用され、2 番目のものは起動されるシェルの引数となります。 .It Li "su -l foo" ユーザ foo のログインをシミュレートします。 .It Li "su - foo" 上と同じです。 .It Li "su - " rootのログインをシミュレートします。 .El .Sh 歴史 .Nm コマンドは .At v1 から登場しました。 diff --git a/ja_JP.eucJP/man/man1/telnet.1 b/ja_JP.eucJP/man/man1/telnet.1 index 566d592370..13e585719e 100644 --- a/ja_JP.eucJP/man/man1/telnet.1 +++ b/ja_JP.eucJP/man/man1/telnet.1 @@ -1,1342 +1,1342 @@ .\" Copyright (c) 1983, 1990, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)telnet.1 8.5 (Berkeley) 3/1/94 .\" %FreeBSD: src/usr.bin/telnet/telnet.1,v 1.15.2.1 2000/06/14 16:31:26 ume Exp % .\" .\" jpman %Id: telnet.1,v 1.2 1997/05/23 00:55:09 mutoh Stab % .\" .Dd January 27, 2000 .Dt TELNET 1 .Os BSD 4.2 .Sh 名称 .Nm telnet .Nd .Tn TELNET プロトコルを用いて他のホストと通信する .Sh 書式 .Nm .Op Fl 468EFKLNacdfrx .Op Fl S Ar tos .Op Fl X Ar authtype .Op Fl e Ar escapechar .Op Fl k Ar realm .Op Fl l Ar user .Op Fl n Ar tracefile .Op Fl s Ar src_addr .Oo .Ar host .Op Ar port .Oc .Sh 解説 .Nm コマンドは、 他のマシンとの間で .Tn TELNET プロトコルを用いた通信を行なう時に用いられます。 .Nm が、 .Ar host 引数なしで起動された場合には、 .Pq Nm telnet\&> プロンプトを表示して、コマンドを受け付けるモードに移行します。 本モードでは、telnet は、後述のコマンドを解釈し、実行できます。 .Nm が .Ar host 引数を付加して起動された場合には、 .Ic open コマンドをその引数で実行した場合と同様の動作を行ないます。 .Pp .Nm コマンドでは、以下のオプションが使用可能です。 .Bl -tag -width indent .It Fl 4 .Nm に IPv4 アドレスのみを使用するよう強制します。 .It Fl 6 .Nm に IPv6 アドレスのみを使用するよう強制します。 .It Fl 8 8 ビットデータをそのまま通すよう指示します。本オプションは、データ入出力時に .Dv TELNET BINARY オプションを使用することを意味します。 .It Fl E エスケープ文字の解釈を禁止します。 .It Fl F もし Kerberos V5 ユーザ認証を使用している場合 .Fl F オプションはローカル credential をリモートシステムに送るのを許可します。 すでにローカルに送られているすべての credential を含みます。 .It Fl K リモートシステムへの自動ログインを行なわないよう指示します。 .It Fl L 出力を 8 ビットクリーンにします。 本オプションは、データ出力時に .Dv BINARY オプションを使用することを意味します。 .It Fl N 接続先ホストが IP アドレスで与えられた場合、 IP アドレスを元にした名前の検索を抑止します。 .It Fl S Ar tos IP のサービス型 (TOS) を設定します。 TOS は、数字で指定するか、システムが .Pa /etc/iptos ファイルをサポートしている場合には、そのファイル中で定義された 値と対応するシンボルを指定します。 .It Fl X Ar atype .Ar atype で指定されたユーザ認証を無効にします。 .It Fl a 自動ログインを行ないます。リモートシステムで ENVIRON オプションの サポートをしている場合には、 .Ev ENVIRON オプションの .Ev USER 変数をログイン名として用います。 使用されるログイン名は、カレントユーザ ID とログイン名の対応が 一致する場合には、 .Xr getlogin 2 で取得される名前です。それ以外の場合は、 UID に対応する名前が 用いられます。 .It Fl c ユーザの .Pa \&.telnetrc ファイルを使いません (本マニュアル中の .Ic toggle skiprc コマンドを参照してください)。 .It Fl d 変数 .Ic debug の初期値を .Dv TRUE に設定します。 .It Fl e Ar escapechar .Nm のエスケープ文字の初期値を .Ar escapechar に設定します。 .Ar escapechar が省略された場合には、 エスケープ文字は無いことになります。 .It Fl f もし Kerberos V5 ユーザ認証を使用している場合 .Fl f オプションはローカル credential をリモートシステムに送るのを許可します。 .It Fl k Ar realm もし Kerberos ユーザ認証を使用している場合 .Fl k オプションを指定すると、 .Xr krb_realmofhost 3 で決定されるリモートホストの realm の代わりに、 .Ar realm からリモートホストに対するチケットが得られるように要求します。 .It Fl l Ar user リモートシステムが .Ev ENVIRON オプションをサポートしている場合、リモートシステムへの接続時に リモートシステムに変数 .Ev USER の値として .Ar user を送信します。 本オプションは、 .Fl a オプションとともに使用します。 また、本オプションは、 .Ic open コマンドととも一緒に使用します。 .It Fl n Ar tracefile トレース情報を記録するために .Ar tracefile をオープンします。 後述の .Ic set tracefile コマンドを参照して下さい。 .It Fl r .Xr rlogin 1 と似たインタフェースを提供します。 本モードでは、エスケープ文字はチルダ文字 (~) に設定されます。 ただし、 .Fl e オプションで変更された場合には、この限りではありません。 .It Fl s Ar src_addr .Nm 接続の送信元 IP アドレスを、 .Ar src_addr に設定します。 IP アドレスとホスト名のどちらでも指定可能です。 .It Fl x 可能であれば、データストリームの暗号化を有効にします。本オプション は、米国およびカナダ以外の国では使用できません。 .It Ar host リモートホストの公式な名前、別名、または IP アドレスを指定します。 .It Ar port telnet が叩くリモートホストの TCP ポート番号を指定します。指定されない 場合には、デフォルトの .Nm ポート番号が使われます。 .El .Pp rlogin モードでは、~. をコマンドラインの先頭で入力すると、 リモートホストとの接続が切れます。この時、~ は .Nm のエスケープ文字 として働きます。 また、~^Z をコマンドラインの先頭で入力すると、 .Nm セッションはサスペンドされます。 そして、~^] をコマンドラインの先頭で入力すると、通常の .Nm のエスケーププロンプトが出力され、コマンド入力モードに移行します。 .Pp コネクションが開設されると、 .Nm は .Dv TELNET LINEMODE を有効にしようとします。 これが失敗すると、次に .Nm は \*(Lqcharacter at a time\*(Rq と \*(Lqold line by line\*(Rq の 2 つの入力モードのうち、どちらか 1 つを選択します。 これは、リモートシステムがサポートするモードに依存します。 .Pp .Dv LINEMODE が有効になった場合、 文字処理は、 リモートシステムの制御のもとでローカルシステムで行なわれます。 入力行の編集や、文字エコーは無効になり、 リモートシステムがそれらの操作情報を中継します。 リモートシステムは、 リモートシステムで生成された特殊文字をすべてローカルシステムに送ります。 その結果、ローカルシステムの制御が可能になります。 .Pp \*(Lqcharacter at a time\*(Rq モードでは、ほとんどのテキスト入力は、 すぐにリモートシステムに送られて処理されます。 .Pp \*(Lqold line by line\*(Rq モードでは、すべてのテキストはローカルにエコーバック されます。そして、通常、完全な行のみがリモートホストに送信されます。 .Pp \*(Lqold line by line\*(Rq モードでは、すべてのテキストはローカルに エコーされ (普通は) 完全な行だけがリモートホストに送られます。 \*(Lqlocal echo character\*(Rq (初期設定は\*(Lq^E\*(Rq)は、ローカルエコー の有効/無効を切り替えるのに用いられます (これは、パスワードをエコーバックし ないために、パスワード入力時によく用いられる機能です)。 .Pp .Dv LINEMODE オプションが有効になっている場合、もしくは .Ic localchars が .Dv TRUE になっている場合には (デフォルトでは、\*(Lqold line by line\*(Rq に設定されて います。以下を参照)、ユーザの .Ic quit , .Ic intr , .Ic flush 文字はローカルでトラップされます。そして、 .Tn TELNET プロトコルシーケンスとしてリモートホストに送信されます。 .Dv LINEMODE が有効になっている場合には、 ユーザの .Ic susp および .Ic eof もまた .Tn TELNET プロトコルシーケンスとしてリモートホストに送信されます。そして、 .Ic quit は .Dv BREAK のかわりに .Dv TELNET ABORT として送信されます。 また、 (リモートホストが TELNET シーケンスを認識するまで) 端末へのサブシーケンス出力をフラッシュするオプション ( .Ic toggle , .Ic autoflush , .Ic toggle , .Ic autosynch を参照して下さい) や、( .Ic quit , .Ic intr の場合に) 端末の先行入力をフラッシュするオプションもあります。 .Pp リモートホストと接続中に \*(Lqescape character\*(Rq (初期値は \*(Lq^]\*(Rq です) を入力することで、 .Nm コマンドモードに移行できます。 コマンドモードに移行すると、通常の対話的画面編集が可能になります。 .Pp .Nm のコマンドモードでは、以下のコマンドが使用できます。 コマンドを入力する場合には、先頭からコマンドを特定できるだけの文字を入れ るだけでコマンドが認識されます。 ( .Ic mode , .Ic set , .Ic toggle , .Ic unset , .Ic slc , .Ic environ , .Ic display コマンドの引数についても同じことがいえます)。 .Pp .Bl -tag -width "mode type" .It Ic auth Ar argument ... auth コマンドは、 .Dv TELNET AUTHENTICATE オプションを用いて送られる認証情報を操作します。 .Ic auth コマンドのとりうる引数は、以下の通りです。 .Bl -tag -width "disable type" .It Ic disable Ar type 指定した認証タイプを無効にします。認証タイプの一覧を見たい場合には、 .Ic auth disable \&? とコマンドを実行して下さい。 .It Ic enable Ar type 指定された認証タイプを有効にします。 認証タイプの一覧を見たい場合には、 .Ic auth enable \&? とコマンドを実行して下さい。 .It Ic status 認証タイプの現在の状態一覧を表示します。 .El .It Ic close .Tn TELNET セッションを終了し、コマンドモードに復帰します。 .It Ic display Ar argument ... .Ic set および .Ic toggle で設定された値 (後述) のすべて、もしくは一部を表示します。 .It Ic encrypt Ar argument ... encrypt コマンドは、 .Dv TELNET ENCRYPT オプションによって送られる情報を操作します。 .Pp 注意: 輸出規制の関係上、 .Dv TELNET ENCRYPT オプションは、米国およびカナダ以外の国ではサポートされません。 .Pp .Ic encrypt コマンドのとりうる引数は以下の通り: .Bl -tag -width Ar .It Ic disable Ar type Ic [input|output] 指定されたタイプの暗号化を無効にします。 input か output かが省略された場合、両方が無効になります。 .Ic encrypt disable \&? コマンドを使えば type として何が使用できるかを表示できます。 .It Ic enable Ar type Ic [input|output] 指定されたタイプの暗号化を有効にします。 input か output かが省略された場合、両方が無効になります。 .Ic encrypt enable \&? コマンドを使えば type として何が使用できるかを表示できます。 .It Ic input .Ic encrypt start input コマンドと同じです。 .It Ic -input .Ic encrypt stop input コマンドと同じです。 .It Ic output .Ic encrypt start output コマンドと同じです。 .It Ic -output .Ic encrypt stop output コマンドと同じです。 .It Ic start Ic [input|output] 暗号化を開始します。 .Ic input か .Ic output かが省略された場合、 両方が暗号化されます。 .Ic encrypt enable \&? コマンドを使えば type として何が使用できるかを表示できます。 .It Ic status 暗号化の現在の状態を表示します。 .It Ic stop Ic [input|output] 暗号化を中止します。 input か output かを省略した場合は 両方に対して作用します。 .It Ic type Ar type .Ic encrypt start や .Ic encrypt stop が使われた時のデフォルトの暗号化タイプを設定します。 .El .It Ic environ Ar arguments... .Ic environ コマンドは、 .Dv TELNET ENVIRON オプションを用いて送られる変数を取り扱うのに用いられます。 最初に設定される変数は、ユーザ環境変数から取られ、 デフォルトでは .Ev DISPLAY および .Ev PRINTER のみ値が環境に取り込まれます。 変数 .Ev USER が環境に取り込まれるのは、 .Fl a もしくは .Fl l オプションが起動時に指定された場合です。 .Pp .Ic environ コマンドの取りうる引数は、以下の通りです。 .Bl -tag -width Fl .It Ic define Ar variable value 変数 .Ar variable を .Ar value と定義します。 本コマンドで定義された変数は、自動的に環境に取り込まれます。 .Ar value については、スペースやタブを含む場合には、シングルクォーテーション、 もしくはダブルクォーテーションで囲んでも構いません。 .It Ic undefine Ar variable 環境変数 .Ar variable の定義を無効にします。 .It Ic export Ar variable 変数 .Ar variable が、リモートホストの環境に取り込まれるように設定します。 .It Ic unexport Ar variable 変数 .Ar variable を、リモートホストに取り込まないように設定します。ただし、リモートホストへ 明示的に取り込むよう指定された変数に関しては、意味を持ちません。 .It Ic list 現在設定されている環境変数の一覧を表示します。 .Cm * マークが付加されている環境変数については、リモートホストに自動的に取り込ま れます。他の変数は、明示的に要求されない限り、取り込まれることはありません。 .It Ic \&? .Ic environ コマンドのヘルプメッセージを表示します。 .El .It Ic logout .Dv TELNET LOGOUT オプションをリモートホストに送信します。 本コマンドは、 .Ic close と似ていますが、リモートホストが .Dv LOGOUT オプションをサポートしていない場合には、何も起きません。 しかしながら、リモートホストが .Dv LOGOUT オプションをサポートしている場合には、本コマンドはリモートホストに .Tn TELNET コネクションの切断を指示します。 リモートホストが再接続のためにセッションのサスペンドもサポートしている場合には、 logout 引数は、セッションを即時切断することを示します。 .It Ic mode Ar type .Ar type は、 .Tn TELNET セッションの状態に依存するオプションの 1 つです。 リモートホストはリクエストモードに入るための許可を求められます。 リモートホストが許可を得られればリクエストモードに入ります。 .Bl -tag -width Ar .It Ic character .Dv TELNET LINEMODE オプションを無効にする、 あるいはリモートホストが .Dv LINEMODE オプションを解釈できない場合に \*(Lqcharacter at a time\*(Rq モードに入ります。 .It Ic line .Dv TELNET LINEMODE オプションを有効にする、 あるいはリモートホストが .Dv LINEMODE オプションを解釈できない場合に \*(Lqold-line-by-line\*(Rq モードに入ろうとします。 .It Ic isig Pq Ic \-isig .Dv LINEMODE オプションの .Dv TRAPSIG モードを有効 (無効) にします。 .Dv LINEMODE オプションが有効になっている必要があります。 .It Ic edit Pq Ic \-edit .Dv LINEMODE オプションの .Dv EDIT モードを有効 (無効) にします。 .Dv LINEMODE オプションが有効になっている必要があります。 .It Ic softtabs Pq Ic \-softtabs .Dv LINEMODE オプションの .Dv SOFT_TAB モードを有効 (無効) にします。 .Dv LINEMODE オプションが有効になっている必要があります。 .It Ic litecho Pq Ic \-litecho .Dv LINEMODE オプションの .Dv LIT_ECHO モードを有効 (無効) にします。 .Dv LINEMODE オプションが有効になっている必要があります。 .It Ic \&? .Ic mode コマンドのヘルプメッセージを表示します。 .El .It Xo .Ic open Ar host .Op Fl l Ar user .Oo Op Fl .Ar port Oc .Xc 指定されたホストとの間で、コネクションを開設します。 ポート番号が指定されない場合は、 .Nm は、デフォルトのポート番号を用いて、指定されたホストの .Tn TELNET サーバとの接続を試みます。 ホストの指定については、ホスト名 ( .Xr hosts 5 を参照して下さい) もしくは、 ドット表記のIPアドレス ( .Xr inet 3 を参照して下さい) もしくは、 IPv6 ホスト名もしくはコロン付き 16 進記法の IPv6 アドレス で指定します。 .Fl l オプションは .Ev ENVIRON オプションによってリモートシステムに渡されるユーザ名を指定するのに 使われます。 標準でないポートにつなげた時は .Nm はすべての .Tn TELNET オプションの自動初期化を省略します。 マイナス記号の後にポート番号が指定されている場合は、 初期オプションネゴシエーション (initial option negotiation) が行なわれます。 接続した後、ホームディレクトリの .Pa \&.telnetrc ファイルが読み込まれます。 # で始まる行はコメントです。 空行は無視されます。 空白以外で始まっている行は マシンエントリの始まりです。 最初の項目は接続しているマシンの名前です。 その後の項目、およびそれに続く空白で始まっている 行は .Nm コマンドであるとみなされ、 .Nm コマンドプロンプトでそのコマンドを入力した場合と 同じように処理されます。 .It Ic quit .Tn TELNET セッションをただちに切断し、 .Nm を終了します。 コマンドモードにおいて、 EOF を入力した場合も同様です。 .It Ic send Ar arguments 1つ以上の特殊文字シーケンスをリモートホストに送信します。 以下は指定可能な引数です (1 度に複数の引数を指定できます)。 .Pp .Bl -tag -width escape .It Ic abort .Dv TELNET ABORT (Abort processes) シーケンスを送ります。 .It Ic ao .Dv TELNET AO (Abort Output) シーケンスを送ります。 これはリモートシステム .Em に 端末 .Em へ すべての出力をフラッシュさせます。 .It Ic ayt .Dv TELNET AYT (Are You There) シーケンスを送ります。 リモートシステムはそれに応答するかしないかを選択できます。 .It Ic brk .Dv TELNET BRK (Break) シーケンスを送ります。 リモートシステムにとって 重要な意味があるかもしれません。 .It Ic ec .Dv TELNET EC (Erase Character) シーケンスを送ります。 これはリモートシステムに最後に入力された文字を 消去させます。 .It Ic el .Dv TELNET EL (Erase Line) シーケンスを送ります。 これはリモートシステムに現在入力中の行を 消去させます。 .It Ic eof .Dv TELNET EOF (End Of File) シーケンスを送ります。 .It Ic eor .Dv TELNET EOR (End of Record) シーケンスを送ります。 .It Ic escape 現在の .Nm エスケープ文字を送ります (初期値は \*(Lq^\*(Rq です)。 .It Ic ga .Dv TELNET GA (Go Ahead) シーケンスを送ります。 おそらくリモートシステムにとってたいした意味は無いでしょう。 .It Ic getstatus リモートシステムが .Dv TELNET STATUS コマンドをサポートしていれば、 .Ic getstatus はサーバに現在のオプションステータスを送るように要求します。 .It Ic ip .Dv TELNET IP (Interrupt Process) シーケンスを送ります。 これはリモートシステムに現在実行中のプロセスを 中断させます。 .It Ic nop .Dv TELNET NOP (No OPeration) シーケンスを送ります。 .It Ic susp .Dv TELNET SUSP (SUSPend process) シーケンスを送ります。 .It Ic synch .Dv TELNET SYNCH シーケンスを送ります。 このシーケンスはリモートシステムに、 それまでに送られた (しかしまだ読み込まれていない) 入力を 捨てさせます。 このシーケンスは .Tn TCP 緊急データとして送られます (しかしリモートシステムが .Bx 4.2 の場合、効かないかも知れません。 もし効かなかった場合は端末に \*(Lqr\*(Rq が返される場合があります)。 .It Ic do Ar cmd .It Ic dont Ar cmd .It Ic will Ar cmd .It Ic wont Ar cmd .Dv TELNET DO .Ar cmd シーケンスを送ります。 .Ar cmd は 0 から 255 までの十進数か、 特定の .Dv TELNET コマンドに対するシンボル名です。 .Ar cmd として 既知のシンボル名のリストを含むヘルプメッセージを表示する .Ic help または .Ic \&? を指定可能です。 .It Ic \&? .Ic send コマンドのヘルプメッセージを表示します。 .El .It Ic set Ar argument value .It Ic unset Ar argument value .Ic set コマンドは、指定した .Nm 変数の 1 つを、特定の値を設定するか、 .Dv TRUE にします。 特別な値 .Ic off は、変数に関連する機能を無効にします。これは、 .Ic unset コマンドと同じです。 .Ic unset コマンドは、指定された機能を無効にするか、 .Dv FALSE に設定します。 変数の値は .Ic display コマンドによって調べることができます。 トグルでなく設定、無効にされる変数を以下に示します。 また .Ic toggle コマンドに対する変数は .Ic set および .Ic unset コマンドによって明示的に 設定および無効にすることができます。 .Bl -tag -width escape .It Ic ayt .Tn TELNET がローカル文字モードになっているか、 あるいは .Dv LINEMODE が有効になっていて、 ステータス文字が入力された場合、 .Dv TELNET AYT シーケンス (前述の .Ic send ayt 参照) がリモートホストに送られます。\*(LqAre You There\*(Rq 文字の初期値は ターミナルステータス文字です。 .It Ic echo これは \*(Lqline by line\*(Rq モード時に 入力された文字をローカルに表示する (通常処理) か しないか (たとえばパスワード入力時) を -切替えるのに使われる値 (初期値は \*(Lq^E\*(Rq ) です。 +切り替えるのに使われる値 (初期値は \*(Lq^E\*(Rq ) です。 .It Ic eof .Nm が .Dv LINEMODE あるいは \*(Lqold line by line\*(Rq モードで動作していれば、 行の最初の文字としてこの文字を入力すると、 この文字をリモートシステムに送ります。 初期値として、端末の .Ic eof 文字が使われます。 .It Ic erase .Nm が .Ic localchars モード (後述の .Ic toggle .Ic localchars を参照) になっていて、 .Sy そして \*(Lqcharacter at a time\*(Rq モードで動作していれば、 この文字が入力された時に .Dv TELNET EC シーケンス (前述の .Ic send .Ic ec を参照) が リモートシステムに送られます。 初期値として、端末の .Ic erase 文字が使われます。 .It Ic escape これは (リモートシステムと接続している時に) .Nm コマンドモードに入る .Nm エスケープ文字 (初期値 \*(Lq^[\*(Rq) です。 .It Ic flushoutput .Nm が .Ic localchars モード (後述の .Ic toggle .Ic localchars を参照) になっていて、 .Ic flushoutput 文字が入力された時に .Dv TELNET AO シーケンス (前述の .Ic send .Ic ao を参照) が リモートシステムに送られます。 初期値として、端末の .Ic flush 文字が使われます。 .It Ic forw1 .It Ic forw2 .Nm が .Dv LINEMODE で動作している時に この文字が入力されると 行の一部がリモートシステムに送られます。 初期値として、端末の eol および eol2 文字が 使われます。 .It Ic interrupt .Nm が .Ic localchars モード (後述の .Ic toggle .Ic localchars を参照) になっている時に、 .Ic interrupt 文字が入力されると .Dv TELNET IP シーケンス (前述の .Ic send .Ic ip を参照) が リモートホストに送られます。 初期値として、端末の .Ic intr 文字が使われます。 .It Ic kill .Nm が .Ic localchars モード (後述の .Ic toggle .Ic localchars を参照) になっていて、 .Ic そして \*(Lqcharacter at a time\*(Rq モードで動作していれば、この文字が入力された時に .Dv TELNET EL シーケンス (前述の .Ic send .Ic el を参照) がリモートシステムに送られます。 初期値として、端末の .Ic kill 文字が使われます。 .It Ic lnext .Nm が .Dv LINEMODE か \*(Lqold line by line\*(Rq モードで動作している時に、端末の .Ic lnext 文字がこの文字として使われます。 初期値として、端末の .Ic lnext 文字が使われます。 .It Ic quit .Nm が .Ic localchars モード (後述の .Ic toggle .Ic localchars を参照) になっていて、 .Ic quit 文字が入力されると、 .Dv TELNET BRK シーケンス (前述の .Ic send .Ic brk を参照) が リモートホストに送られます。 初期値として、端末の .Ic quit 文字が使われます。 .It Ic reprint .Nm が .Dv LINEMODE あるいは \*(Lqold line by line\*(Rq モードで動作している時に、端末の .Ic reprint 文字がこの文字として使われます。 初期値として、端末の .Ic reprint 文字が使われます。 .It Ic rlogin これは rlogin エスケープ文字です。 もし設定されていれば、行の最初でこの文字が入力されている場合を除き、 通常の .Nm エスケープ文字は無視されます。 行の最初でこの文字に続けて "." が入力された場合、 接続が切れます。 続けて ^Z が入力された場合、 .Nm コマンドが中断されます。 初期状態では .Nm rlogin エスケープ文字は 無効になっています。 .It Ic start もし .Dv TELNET TOGGLE-FLOW-CONTROL オプションが有効になっていれば、端末の .Ic start 文字としてこの文字が使われます。 初期値として、端末の .Ic start 文字が使われます。 .It Ic stop もし .Dv TELNET TOGGLE-FLOW-CONTROL オプションが有効になっていれば 端末の .Ic stop 文字がこの文字として使われます。 初期値として、端末の .Ic stop 文字が使われます。 .It Ic susp .Nm が .Ic localchars モードになっているか、 .Dv LINEMODE が有効になっている場合に .Ic suspend 文字が入力されると、 .Dv TELNET SUSP シーケンス (前述の .Ic send .Ic susp を参照) が リモートホストに送られます。 初期値として、端末の .Ic suspend 文字が使われます。 .It Ic tracefile これは .Ic netdata あるいは .Ic option によって トレースが .Dv TRUE になっている場合に、出力が書き出されるファイルです。 もし .Dq Fl に設定されていれば、 トレース情報は標準出力 (デフォルト) に書き出されます。 .It Ic worderase .Nm が .Dv LINEMODE か \*(Lqold line by line\*(Rq モードで動作している時に、端末の .Ic worderase 文字がこの文字として使われます。 初期値として、端末の .Ic worderase 文字が使われます。 .It Ic \&? .Ic set .Pq Ic unset コマンドのヘルプメッセージを表示します。 .El .It Ic skey Ar sequence challenge .Ic skey コマンドは、S/Key チャレンジへの応答を計算します。 .It Ic slc Ar state .Ic slc (Set Local Characters) コマンドは、 .Dv TELNET LINEMODE オプションが有効な時に働く特殊文字を設定したり変更したりします。 特殊文字は ( .Ic ip や .Ic quit のような) .Tn TELNET コマンドシーケンスや、( .Ic erase .Ic kill のような) 行編集文字に割り付けられます。 特殊文字はデフォルトで環境に取り込まれます。 .Bl -tag -width Fl .It Ic check 現在の特殊文字の設定を確認します。 現在のすべての特殊文字の設定を送るように リモートに要求を送り、 もしローカルな設定と違いがあれば、 ローカルな設定をリモートの値にします。 .It Ic export ローカルの特殊文字のデフォルトを変えます。 ローカルの特殊文字のデフォルトは .Nm を起動した時の端末の特殊文字です。 .It Ic import リモートの特殊文字のデフォルトを変えます。 リモートの特殊文字のデフォルトは .Tn TELNET 接続が確立した時のリモートの特殊文字です。 .It Ic \&? .Ic slc コマンドのヘルプメッセージを表示します。 .El .It Ic status .Nm の現在のステータスを表示します。 これには現在のモードと同じくらい接続先のモードについての状態が含まれています。 .It Ic toggle Ar arguments ... .Nm の動作を制御するさまざまな変数の値 ( .Dv TRUE か .Dv FALSE -) を切替えます。 +) を切り替えます。 この変数は前述の .Ic set や .Ic unset を使って明示的に .Dv TRUE または .Dv FALSE に設定できます。複数の引数を指定可能です。 これらの変数の値は .Ic display コマンドによって調べることができます。 有効な引数の値は以下の通りです。 .Bl -tag -width Ar .It Ic authdebug 認証コードに対するデバッグ情報を有効にする。 .It Ic autoflush .Ic autoflush と .Ic localchars が両方とも .Dv TRUE で、 .Ic ao または .Ic quit 文字が設定されている (そして .Tn TELNET シーケンスに変換されている; 詳細は前述の .Ic set を参照)場合、 リモートシステムが ( .Dv TELNET TIMING MARK によって) それらの .Tn TELNET シーケンスを処理したと認められるまで、 .Nm がどんなデータも端末に表示しないようにします。 初期値は、端末で "stty noflsh" を実行していなければ .Dv TRUE 、 していれば .Dv FALSE です ( .Xr stty 1 参照)。 .It Ic autodecrypt .Dv TELNET ENCRYPT オプションがネゴシエートされている時、デフォルトでは データの暗号 (復号) 化は自動的には始まりません。 autoencrypt (autodecrypt) コマンドは 出力 (入力) の暗号化ができるだけ早く有効になるようにします。 .Pp 注意: 輸出規制の関係上、 .Dv TELNET ENCRYPT オプションは、米国およびカナダ以外の国ではサポートされません。 .It Ic autologin もしリモートで .Dv TELNET AUTHENTICATION オプションがサポートされている場合、 .Nm は自動認証を行うために、それを使おうとします。 .Dv AUTHENTICATION オプションがサポートされていない場合、 ログイン名は .Dv TELNET ENVIRON オプションを使用して伝えられます。 このコマンドは .Ic open コマンドで .Fl a オプションが指定された場合と同じです。 .It Ic autosynch .Ic autosynch と .Ic localchars が両方とも .Dv TRUE になっている時に .Ic intr または .Ic quit 文字が入力されると ( .Ic intr および .Ic quit 文字の詳細は前述の .Ic set を参照)、 .Tn TELNET シーケンスが送られた結果は .Dv TELNET SYNCH に従います。 これは、リモートシステムに、 両方の .Tn TELNET シーケンスが読み込まれて作用するまで、 それまでのすべての入力を捨てさせる .Ic べき です。 初期値は .Dv FALSE です。 .It Ic binary 入力と出力の両方に対して、 .Dv TELNET BINARY オプションを有効または無効にします。 .It Ic inbinary 入力に対する .Dv TELNET BINARY オプションを有効または無効にします。 .It Ic outbinary 出力に対する .Dv TELNET BINARY オプションを有効または無効にします。 .It Ic crlf もし .Dv TRUE なら、キャリッジリターンが .Li として送られます。 .Dv FALSE なら .Li として送られます。 初期値は .Dv FALSE です。 .It Ic crmod -キャリッジリターンモードを切替えます。 +キャリッジリターンモードを切り替えます。 このモードが有効なら リモートホストから受けとられたほとんどのキャリッジリターンは キャリッジリターンとラインフィードに割り当てられます。 このモードはこれらの文字が入力された時には作用せず、 受けとらえた時にだけ作用します。 このモードはリモートホストがキャリッジリターンだけを送らなければ、 ラインフィードしないので、必ず役に立つというわけではありません。 初期値は .Dv FALSE です。 .It Ic debug ソケットレベルデバッグ ( .Ic スーパユーザ -にのみ役立つ) を切替えます。 +にのみ役立つ) を切り替えます。 初期値は .Dv FALSE です。 .It Ic encdebug 暗号化コードに対するデバッグ情報を有効にする。 .It Ic localchars もし .Dv TRUE ならば、 .Ic flush , .Ic interrupt , .Ic quit , .Ic erase , .Ic kill 文字 (前述の .Ic set 参照) はローカルに認識され、(うまくいけば) 適当な .Tn TELNET コントロールシーケンス (それぞれ .Ic ao , .Ic ip , .Ic brk , .Ic ec , .Ic el ; 前述の .Ic send 参照) に変換されます。 初期値は \*(Lqold line by line\*(Rq モードでは .Dv TRUE \*(Lqcharacter at a time\*(Rq モードでは .Dv FALSE です。 .Dv LINEMODE オプションが有効の時は、 .Ic localchars の値は無視されて、常に .Dv TRUE になります。 もし .Dv LINEMODE が有効になったことがあれば、 .Ic quit は .Ic abort として送られ、 .Ic eof and .Ic suspend は .Ic eof and .Ic susp として送られます (前述の .Ic send 参照)。 .It Ic netdata -(16 進フォーマットによる) すべてのネットワークデータの表示を切替えます。 +(16 進フォーマットによる) すべてのネットワークデータの表示を切り替えます。 初期値は .Dv FALSE です。 .It Ic options ( .Tn TELNET オプションを処理する時の) 内部の .Nm -プロトコルの処理の表示を切替えます。 +プロトコルの処理の表示を切り替えます。 初期値は .Dv FALSE です。 .It Ic prettydump .Ic netdata が有効になっている時、 .Ic prettydump が有効になっていれば、 .Ic netdata コマンドの出力を、より見やすいフォーマットにします。 出力の各文字の間にはスペースがはさまれ、 .Nm エスケープシーケンスの前には、 探しやすいように '*' が置かれます。 .It Ic skiprc skiprc が .Dv TRUE になっていると、 .Nm はコネクションが開設される時に ホームディレクトリから .Pa \&.telnetrc を読まないようにします。 初期値は .Dv FALSE です。 .It Ic termdata -(16 進フォーマットによる) すべての端末データの表示を切替えます。 +(16 進フォーマットによる) すべての端末データの表示を切り替えます。 初期値は .Dv FALSE です。 .It Ic verbose_encrypt .Ic verbose_encrypt が .Dv TRUE になっていると、 .Nm はメッセージを表示するたびに暗号化が有効か無効かを表示します。 初期値は .Dv FALSE です。 注意: 輸出規制の関係上、 データの暗号化は、米国およびカナダ以外の国ではサポートされません。 .It Ic \&? .Ic toggle コマンドのヘルプメッセージを表示します。 .El .It Ic z .Nm コマンドをサスペンドします。このコマンドは、ユーザが .Xr csh 1 を使用している時にのみ使用可能です。 .It Ic \&! Op Ar command ローカルシステムのサブシェルで、コマンドを1つ実行できます。 .Ar command が指定されなかった場合、サブシェルが対話モードで起動されます。 .It Ic \&? Op Ar command ヘルプメッセージを表示します。 引数が指定されなかった場合、 .Nm はコマンド一覧を表示します。 .Ar command が指定された場合、 .Nm はそのコマンドのヘルプメッセージを表示します。 .El .Sh 環境変数 .Nm は、少なくとも .Ev HOME , .Ev SHELL , .Ev DISPLAY , .Ev TERM 環境変数を用います。 他の環境変数は、 .Dv TELNET ENVIRON オプションによりリモートホストに送られます。 .Sh 関連項目 .Xr rlogin 1 , .Xr rsh 1 , .Xr hosts 5 , .Xr nologin 5 , .Xr telnetd 8 .Sh 関連ファイル .Bl -tag -width ~/.telnetrc -compact .It Pa ~/.telnetrc ユーザカスタマイズ可能な telnet 初期設定ファイル .El .Sh 歴史 .Nm コマンドは、 .Bx 4.2 ではじめて実装されました。 .Pp IPv6 サポートは WIDE/KAME プロジェクトが追加しました。 .Sh 注意 リモートシステムの中には、\*(Lqold line by line\*(Rq モードで 手動でエコーバックを切り替えなければならない場合があります。 .Pp \*(Lqold line by line\*(Rq モードもしくは .Dv LINEMODE では、端末の .Ic eof 文字は、 それが行の先頭にある時だけ 認識され (リモートシステムに送られ) ます。 diff --git a/ja_JP.eucJP/man/man1/tip.1 b/ja_JP.eucJP/man/man1/tip.1 index 316894aae1..f04d25e6a5 100644 --- a/ja_JP.eucJP/man/man1/tip.1 +++ b/ja_JP.eucJP/man/man1/tip.1 @@ -1,457 +1,457 @@ .\" Copyright (c) 1980, 1990, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)tip.1 8.4 (Berkeley) 4/18/94 .\" %FreeBSD: src/usr.bin/tip/tip/tip.1,v 1.7.2.1 2000/04/23 16:52:35 bsd Exp % .\" jpman %Id: tip.1,v 1.3 1997/07/26 21:48:01 horikawa Stab % .\" .Dd April 18, 1994 .Dt TIP 1 .Os BSD 4 .Sh 名称 .Nm tip .Nd リモートシステムとの接続を行なう .Sh 書式 .Nm tip .Op Fl v .Fl Ns Ns Ar speed .Ar system\-name .Nm tip .Op Fl v .Fl Ns Ns Ar speed .Ar phone\-number .Sh 解説 .Nm tip は、他のマシンとの間に全二重のコネクションを確立し、 リモートマシンへ直接ログインしてみせます。 言うまでもないことですが、コネクションを張りたいマシンに対しては、 ログインアカウント (かそれに相当するもの) がなければなりません。 .Pp 以下のオプションが使用可能です: .Bl -tag -width indent .It Fl v 冗長モードを設定します。 .El .Pp 入力された文字は通常は直接リモートマシンに転送されます (それは同様にエコーされます)。 行頭にチルダ文字 (`~') が入力された場合には、これはエスケープ文字として 働きます; 以下の組み合わせが認識されます: .Bl -tag -width flag .It Ic \&~^D No または Ic \&~ . コネクションを切断し、プログラムを終了します (リモートマシンにはログインしたままでいることもできます)。 .It Ic \&~c Op Ar name ローカルのカレントディレクトリを .Ar name で指定したものに変更します (引数が指定されない場合には、ホームディレクトリに移動します)。 .It Ic \&~! シェルを起動します (シェルを終了すると、tip に戻ります)。 .It Ic \&~> ローカルマシンのファイルをリモートマシンにコピーします。 .Nm tip は、ローカルファイル名の入力プロンプトを出します。 .It Ic \&~< リモートシステムのファイルをローカルマシンに転送します。 .Nm tip は、まず転送されるファイル名の入力プロンプトを出し、 それからリモートマシンで実行するコマンドのプロンプトを出します。 .It Ic \&~p Ar from Op Ar to リモートの .Ux ホストにファイルを送ります。put コマンドは .Nm tip が ``from'' ファイルを送っている間、リモートの .Ux システム上で ``cat > 'to''' コマンドを実行します。 ``to'' ファイル名が指定されない場合には、 このファイル名には ``from'' ファイル名を使用します。 このコマンドは、実際には ``~>''コマンドを .Ux システムに特定して実装したバージョンです。 .It Ic \&~t Ar from Op Ar to リモートの .Ux ホストからファイルを受信します。put コマンドと同じく、``to'' ファイル名 が指定されない場合には、このファイル名は ``from'' ファイル名と同じになります。 リモートホストでは .Nm tip にファイル転送を行なうために ``cat 'from';echo ^A'' を実行します。 .It Ic \&~| リモートコマンドからの出力を、ローカル .Ux プロセスへパイプを用いてリダイレクトします。 ローカル .Ux システムに送られるコマンド文字列は、シェルで処理されます。 .It Ic \&~$ ローカル .Ux プロセスからパイプを介してリモートホストへ出力します。 ローカル .Ux システムに送られるコマンド文字列は、シェルで処理されます。 .It Ic \&~C ローカルシステム上で \s-1XMODEM\s+1 などの特別なプロトコルを扱うための 子プロセスを起動します。この子プロセスは特別に用意された、次のような ファイルディスクリプタを用いて動作します。 .nf .in +1i 0 <-> 自側 tty 入力 1 <-> 自側 tty 出力 2 <-> 自側 tty 出力 3 <-> 相手側 tty 入力 4 <-> 相手側 tty 出力 .in -1i .fi .It Ic \&~# .Dv BREAK 信号をリモートホストに送信します。 必要な .Ar ioctl システムコールをサポートしていないシステムの場合には、回線速度の 変更と .Dv DEL 文字の組み合わせでブレイクをシミュレートします。 .It Ic \&~s 変数をセットします (以下の記述を参照してください)。 .It Ic \&~^Z .Nm tip を停止します (システムがジョブコントロールをサポートしている場合にのみ使用可能です)。 .It Ic \&~^Y ローカル側の .Nm tip のみ停止します (システムがジョブコントロールをサポートしている場合にのみ使用可能です); .Nm tip の ``リモート側'' すなわちリモートホストの表示出力については引続き走行します。 .It Ic \&~? チルダエスケープで使用できるコマンド一覧を表示します。 .El .Pp .Nm tip は、 .Pa /etc/remote ファイルを用いて特定システムへの接続方法を検索し、他システムと 接続する際のパラメータを特定します; .Pa /etc/remote ファイルの完全な記述は .Xr remote 5 を参照してください。 各システムは、コネクションを確立する際にデフォルトの通信速度が決められて います。この通信速度が適当でない場合には、コマンドラインにて通信速度を 指定することができます。例えば .Ql "tip -300 mds" です。 .Pp .Nm tip がコネクションを確立すると、リモートホストにコネクションメッセージを 送信します; デフォルトのメッセージが存在するならば .Pa /etc/remote に定義されています ( .Xr remote 5 を参照してください)。 .Pp .Nm tip に引数の入力を促されている場合 (例えば、ファイル転送の設定の間) には、入力された行は標準の erase や kill 文字で編集することが許されています。 入力を促されている時に空行を入力したり操作を中断 した場合には、入力を促す画面から抜け出し、リモートマシンとの対話に戻ります。 .Pp .Nm tip は、モデムや回線の排他制御や .Xr uucico 8 で採用されているロックプロトコルを用いることで、複数のユーザが リモートシステムへ接続することを制限しています。 .Pp ファイル転送時には .Nm tip は転送した行数を表示します。 ~> や ~< コマンドを使用した場合には、``eofread'' 変数や ``eofwrite'' 変数は、ファイル読み込時の end-of-file 文字の認識や、ファイル書き込み時 の end-of-file 文字の指定に用いられます (後述)。ファイル転送時のフロー制御は、 通常は tandem モードで行なわれます。リモートシステムが tandem モードをサポートしない場合には、``echocheck'' が設定され、 .Nm tip が相手に転送した文字のエコーを用いてリモートシステムと同期します。 .Pp .Nm tip が他システムとの接続のために電話をかける場合には、 動作を示すさまざまな表示を行ないます。 .Nm tip は AT コマンドセットを使用するモデムをサポートします。 .Nm tip は特定のモデムを制御する方法を .Pa /etc/modems ファイルから見つけ出します; 完全な記述は .Xr modems 5 を参照してください。 .Ss 変数 .Nm tip は、自己を制御するために、 .Ar 変数 を取り扱います。 いくつかの変数は、一般ユーザの権限では参照のみで変更することはできません (スーパユーザのみ、これらの変数の変更が許可されています)。変数は、 ``s'' エスケープにて、参照および変更が可能です。変数設定の書式は、 .Xr vi 1 や .Xr Mail 1 での変数設定の書式と同様です。コマンドの引数に ``all'' を指定することで、 ユーザが読み出し可能なすべての変数を表示することができます。また、ユーザは 特定の変数について、変数名の最後に `?' を付加することにより、 その値を表示することができます。 例えば ``escape?'' とすることで、現在のエスケープ文字を表示します。 .Pp 変数値として採用されるものは、数値、文字列、文字、もしくは論理値です。 論理変数の設定については、単に変数名を設定するだけで設定されます; これらは、変数名の前に `!' 文字をつけることにより偽に設定 されます。他の変数型については、変数と値の間を `=' でつなぐことで設定 できます。すべての設定について、その指定中に空白を入れてはいけません。 単独の set コマンドは、変数の値を設定するだけでなく、変数の値を知るため にも用いられます。 変数は実行時に set コマンドを実行することで初期化されます ( ホームディレクトリの .Pa .tiprc ファイル中で、``~s'' プレフィックスがない場合です)。 .Fl v オプションを指定することで、 .Nm tip が初期化時に行なった設定を表示します。 確実に共通変数と思われるものについては、略号表記されます。 以下に共通変数およびその略号と、デフォルトの値の一覧を示します。 .Bl -tag -width Ar .It Ar beautify (論理値) セッション確立時に受けとった表示不可の文字については無視します; .Ar be と略号表記されます。 .It Ar baudrate (数値) コネクション確立時の通信速度を指定します; .Ar ba と略号表記されます。 .It Ar chardelay (数値) 各文字の送信後に待つミリ秒数を指定します; .Ar cdelay と略号表記されます。 .It Ar dialtimeout (数値) 相手先に電話をかける際に、コネクション確立までの待ち時間 (秒単位) を 指定します; .Ar dial と略号表記されます。 .It Ar echocheck (論理値) ファイル転送時のリモートホストとの同期を、 送信された最後の文字のエコーを待つことで取ります; 本変数のデフォルト値は .Ar off です。 .It Ar eofread (文字列) ~< コマンドを用いてファイル転送した場合に、 転送終了を示す文字群です; .Ar eofr と略号表記されます。 .It Ar eofwrite (文字列) ~> コマンドを用いてファイル転送した場合に、 転送終了を示すために送る文字列です; .Ar eofw と略号表記されます。 .It Ar eol (文字列) 行末を示す文字群です。 .Nm tip は行末文字の直後に現れたエスケープ文字のみ、エスケープ文字として認識します。 .It Ar escape (文字) コマンドプレフィックス (エスケープ) 文字です; .Ar es と略号表記されます; 本変数のデフォルト値は `~' です。 .It Ar exceptions (文字列) beautification の指定で無視されない文字群を指定します; .Ar ex と略号表記されます; 本変数のデフォルト値は ``\et\en\ef\eb'' です。 .It Ar force (文字) リテラルデータ送信を強制する文字です; .Ar fo と略号表記されます; 本変数のデフォルト値は`^P'です。 .It Ar framesize (数値) ファイルを受信した場合に、ファイルシステムとの間にあるバッファに バッファリングするデータ量 (バイト単位) です; .Ar fr と略号表記されます。 .It Ar host (文字列) 接続しているホスト名です; .Ar ho と略号表記されます。 .It Ar linedelay (数値) 各行の送信後に待つミリ秒数を指定します; .Ar ldelay と略号表記されます。 .It Ar login (文字列) 接続直後に実行されるログインシェルスクリプトのパス名です; 標準入出力はリモートホストへリダイレクトされます。 パス名の先頭のチルダ文字は展開されます; .Ar li と略号表記されます。 .It Ar logout (文字列) 切断直前に実行されるシェルスクリプトのパス名です; 標準入出力はリモートホストへリダイレクトされます。 パス名の先頭のチルダ文字は展開されます; .Ar lo と略号表記されます。 .It Ar prompt (文字) リモートホストの行末文字です; .Ar pr と略号表記されます; 本変数のデフォルト値は `\en' です。本変数は、データ転送時の同期を取るのに 用いられます。ファイル転送時に行なう転送行のカウントは、この文字を いくつ受けとったかということに基づきます。 .It Ar raise (論理値) 大文字に変換するモードです; .Ar ra と略号表記されます; 本変数のデフォルト値は .Ar off です。 本モードが有効になると、すべての小文字の文字列は、リモートホストへの転送時に .Nm tip によって大文字に変更されます。 .It Ar raisechar -(文字) 大文字へ変換するモードの切替を行なう入力文字です; +(文字) 大文字へ変換するモードの切り替えを行なう入力文字です; .Ar rc と略号表記されます; 本変数のデフォルト値は `^A' です。 .It Ar record (文字列) セッションの記録を取るファイル名です; .Ar rec と略号表記されます; 本変数のデフォルト値は ``tip.record'' です。 .It Ar script (論理値) セッションの記録を取るモードです; .Ar sc と略号表記されます; 本変数のデフォルト値は .Ar off です。 .Ar script が .Li true の場合には、 .Nm tip はリモートホストから転送されたすべてのデータを .Ar record に指定されたファイルに記録します。 .Ar beautify スイッチが有効になっている場合には、表示可能な .Tn ASCII 文字 (文字コードに換算して 040 から 0177 までの間) についてのみ記録されます。 beautification 規則の例外を指定する .Ar exceptions 変数による設定も有効となります。 .It Ar tabexpand (論理値) ファイル転送時にタブ文字を空白文字に展開するモードです; .Ar tab と略号表記されます。 本変数のデフォルト値は .Ar false です。 本モードが有効になっている場合には、タブ文字は空白文字 8 つに展開されます。 .It Ar verbose (論理値) 冗長モードです; .Ar verb と略号表記されます; 本変数のデフォルト値は .Ar true です。 冗長モードが有効になっている場合には、 .Nm tip はダイヤル時にメッセージを出力したり、ファイル転送を行なっている際の 現在の転送行数を指定したりします。 .El .Sh 環境変数 .Nm tip は、以下の環境変数を参照します: .Bl -tag -width Fl .It Ev SHELL (文字列) ~! コマンド実行時に使用するシェルの名前です; デフォルト値は ``/bin/sh'' であり、環境変数に別の値が設定されている場合には、そちらの 値を参照します。 .It Ev HOME (文字列) ~c コマンド実行時に用いるホームディレクトリです; デフォルト値は、 実行時の環境によります。 .It Ev HOST 指定がない場合のデフォルトの接続先を指定します。 .El .Pp 変数 .Ev ${REMOTE} と .Ev ${PHONES} も、エクスポートされます。 .Sh 関連ファイル .Bl -tag -width /var/spool/lock/LCK..* -compact .It Pa /etc/modems システムごとのモデム設定データベース。 .It Pa /etc/remote システムごとのリモートシステム記述ファイル。 .It Pa /etc/phones システムごとの電話番号データベース。 .It ${REMOTE} ユーザごとに持てるリモートシステム記述ファイル。 .It ${PHONES} ユーザごとに持てる電話番号データベース。 .It ~/.tiprc 初期化ファイル。 .It Pa tip.record 記録ファイル。 .It /var/log/aculog 回線アクセス記録。 .It Pa /var/spool/lock/LCK..* .Xr uucp との回線競合を避けるための回線排他制御ファイル。 .El .Sh 診断 診断メッセージは、そのまま読んで解釈可能です。 .Sh 関連項目 .Xr cu 1 , .Xr remote 5 , .Xr phones 5 .Sh 歴史 .Nm tip は .Bx 4.2 から登場しました。 .Sh バグ すべての変数が文書化されているわけではありません。文書化されていないものは おそらく削除されるでしょう。 diff --git a/ja_JP.eucJP/man/man1/troff.1 b/ja_JP.eucJP/man/man1/troff.1 index 5aa14eaa78..d031c3d2f5 100644 --- a/ja_JP.eucJP/man/man1/troff.1 +++ b/ja_JP.eucJP/man/man1/troff.1 @@ -1,2035 +1,2035 @@ .ig \"-*- nroff -*- Copyright (C) 1989-1999 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be included in translations approved by the Free Software Foundation instead of in the original English. %FreeBSD: src/contrib/groff/troff/troff.man,v 1.3 2000/01/12 10:26:36 asmodai Exp % .. .\" jpman %Id: troff.1,v 1.4 1997/07/26 21:50:12 horikawa Stab % .ie t .ds tx T\h'-.1667m'\v'.224m'E\v'-.224m'\h'-.125m'X .el .ds tx TeX .\" Like TP, but if specified indent is more than half .\" the current line-length - indent, use the default indent. .de Tp .ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP .el .TP "\\$1" .. .\" The BSD man macros can't handle " in arguments to font change macros, .\" so use \(ts instead of ". .tr \(ts" .TH TROFF 1 "12 January 2000" "Groff Version 1.15" .SH 名称 troff \- 文書をフォーマットする .SH 書式 .nr a \n(.j .ad l .nr i \n(.i .in +\w'\fBtroff 'u .ti \niu .B troff .de OP .ie \\n(.$-1 .RI "[\ \fB\\$1\fP" "\\$2" "\ ]" .el .RB "[\ " "\\$1" "\ ]" .. .OP \-abivzCERU .OP \-w name .OP \-W name .OP \-d cs .OP \-f fam .OP \-m name .OP \-n num .OP \-o list .OP \-r cn .OP \-T name .OP \-F dir .OP \-M dir .RI "[\ " files\|.\|.\|. "\ ]" .br .ad \na .SH 解説 本マニュアルでは、groff ドキュメントフォーマットシステムの一部である GNU バージョンの .B troff について記述します。本コマンドは UNIX troff と 高い互換性を持ちます。通常 troff は groff コマンドから起動されます。 groff はまた、適切な前処理プログラムと後処理プログラムを適切なオプショ ンで、適切な順序で起動します。 .SH オプション .TP \w'\-dname=s'u+2n .B \-a .SM ASCII 文字のみの近似的な出力を行います。 .TP .B \-b 各警告とエラーメッセージに対するバックトレースを表示します。これは、 警告やエラーの原因を調べるのに有用です。出力される行番号は必ずしも正し くはありません。 .B as や .B am リクエストにより、 .B troff が行番号を誤認する可能性があるからです。 .TP .B \-i 指定されたファイルをすべて処理したあとに、標準入力も読み込み、処理します。 .TP .B \-v バージョン番号を表示します。 .TP .BI \-w name .I name で指定した分類の警告を行います。指定できる .I name は、後述の警告のサブセクションを参照してください。 .B \-w オプションは複数指定できます。 .TP .BI \-W name .I name で指定した分類の警告を行いません。 .B \-W オプションは複数指定することが できます。 .TP .B \-E エラーメッセージを一切出力しません。 .TP .B \-z フォーマットした結果を出力しません。 .TP .B \-C 互換モードにします。 .TP .BI \-d cs .TQ .BI \-d name = s マクロ .I c または .I name を文字列 .I s と定義します。 .I c は 1 文字のマクロ名です。 .TP .BI \-f fam .I fam をデフォルトのフォントファミリとして使用します。 .TP .BI \-m name マクロファイル .BI tmac. name を読み込みます。通常、ディレクトリ .B /usr/share/tmac が検索されます。 デフォルトで .I safer マクロが使用されます (-U を使うことで使わないようにできます)。 .TP .B \-U 安全でないオプションであり、デフォルトで使われる .I safer マクロを使わないようにします。 .TP .B \-R .B troffrc を読みません。 .TP .BI \-n num 最初のページ番号を .I num とします。 .TP .BI \-o list .I list で指定したページのみを出力します。 .I list は、コンマで区切られ たページ範囲の列です。ページ範囲の指定方法は以下のとおりです: .I n は .I n ペー ジの出力、 .IB m \- n は .I m ページから .I n ページまでの出力、 .B \-n は .I n ページまでの 出力、 . IB n \- は .I n ページ以降の出力を意味します。 .B troff はリストの最後のページを印刷し終えると終了します。 .TP .BI \-r cn .TQ .BI \-r name = n 数値レジスタ .I c または .I name の値を .I n とします。 .I c は 1 文字の名前です。 .I n は troff で扱える数式です。 .TP .BI \-T name デバイス .I name 用の出力を生成します。デフォルトは ps です。 .TP .BI \-F dir フォントファイルと .B DESC ファイルを検索するのに、ディレクトリ .I dir 以下の .BI dev name .RI ( name は出力デバイス名) を探します。通常フォントは .B /usr/share/groff_font から検索されますが、本オプションで指定したディレ クトリのほうが先に検索されます。 .TP .BI \-M dir .B /usr/share/tmac の前に、指定したディレクトリ .I dir からマクロファイルを検索します。 .SH 使用法 ここでは Unix troff には無い機能のみを説明します。 .SS 長い名前 数値レジスタ、フォント、文字列/マクロ/転換、 特殊文字のそれぞれの名前の長さは任意です。 エスケープシーケンス中、すなわち 2 文字の名前 .BI ( xx を使用可能な場所で、 任意の長さの名前 .BI [ xxx ] を使用可能です。 .TP .BI \e[ xxx ] .IR xxx で呼ばれる特殊文字を表示します。 .TP .BI \ef[ xxx ] フォント .IR xxx を設定します。 .TP .BI \e*[ xxx ] 文字列 .IR xxx を挿入する。 .TP .BI \en[ xxx ] 数値レジスタ .IR xxx を挿入する。 .SS 分数のポイントサイズ .I スケールドポイントは 1/sizescale ポイントです。ここで sizescale は .B DESC ファイルで指定されます (デフォルト値は 1です)。 また、新しいスケールインジケータ .B z があります。 これは sizescale 倍する効果があります。 troff におけるリクエストおよびエスケープシーケンスは ポイントサイズを表す引数をスケールドポイント単位で表されているとして 解釈しますが、 このような引数の評価はデフォルトのスケールインジケータ .BR z にて行います。 このように取り扱われる引数には、 .B ps リクエストの引数、 .B cs リクエストの 3 番目の引数、 .B tkf リクエストの 2 番目および 4 番目の引数、 .B \eH エスケープシーケンスの引数、 .B \es エスケープシーケンスの変形で数値式を引数として取るものとがあります。 .LP .\" 例えばサイズスケールを 1000 とします; 例えば sizescale を 1000 とします; この場合スケールドポイントはミリポイントとなります; リクエスト .B .ps 10.25 は .B .ps 10.25z と同じですし、ポイントサイズは 10250 スケールドポイントに設定されます。 これは 10.25 ポイントと等しい値です。 .LP 数値レジスタ .B \en(.s はポイントサイズを 10 進数分数のポイント単位で返します。 新しい数値レジスタ .B \en[.ps] もあり、これはスケールドポイント単位でのポイントサイズを返します。 .LP デフォルトのスケールインジケータが .BR u , .B z のどちらでもない数式中で .B z スケールインジケータを使用するのは無意味でしょう。 .B troff はこのようなことを禁止します。 同様に、 .BR z がデフォルトのスケールインジケータであった数式において .BR z , .B u のどちらでもないスケールインジケータを使用するのは無意味でしょう。 .B troff はこのようなことを禁止します。 .LP また、新しいスケールインジケータ .B s があります。これはもとの値をスケールドポイントの単位数で逓倍します。 例えば、 .B \en[.ps]s は .B 1m と同じです。 .BI s, .B z スケールインジケータを混同しないようにして下さい。 .SS 数値式 .LP 括弧内の数式中に空白を含めることが許されます。 .LP .B M は em の 1/100 を意味します。 .TP .IB e1 >? e2 .I e1 と .I e2 とで小さくない方。 .TP .IB e1 .\" USAGE から Incompatibilities まで訳出 (Dec 23, 1996) .\" Norihiro Kumagai .\" 訳チェック (Jan 5, 1997) diff --git a/ja_JP.eucJP/man/man1/vi.1 b/ja_JP.eucJP/man/man1/vi.1 index 4c1a450b08..eddc418768 100644 --- a/ja_JP.eucJP/man/man1/vi.1 +++ b/ja_JP.eucJP/man/man1/vi.1 @@ -1,1584 +1,1585 @@ .\" Copyright (c) 1994 .\" The Regents of the University of California. All rights reserved. .\" Copyright (c) 1994, 1995, 1996 .\" Keith Bostic. All rights reserved. .\" .\" This document may not be republished without written permission from .\" Keith Bostic. .\" .\" See the LICENSE file for redistribution information. .\" .\" @(#)vi.1 8.51 (Berkeley) 10/10/96 .\" jpman %Id: vi.1,v 1.3 1997/05/19 16:53:25 horikawa Stab % .\" .TH VI 1 "October 10, 1996" .UC .SH 名称 ex, vi, view \- テキストエディタ .SH 書式 .B ex [\c .B -eFGRrSsv\c ] [\c .BI -c " cmd"\c ] [\c .BI -t " tag"\c ] [\c .BI -w " size"\c ] [file ...] .br .B vi [\c .B -eFGlRrSv\c ] [\c .BI -c " cmd"\c ] [\c .BI -t " tag"\c ] [\c .BI -w " size"\c ] [file ...] .br .B view [\c .B -eFGRrSv\c ] [\c .BI -c " cmd"\c ] [\c .BI -t " tag"\c ] [\c .BI -w " size"\c ] [file ...] .SH ライセンス vi プログラムは自由に再配布できます。ライセンスファイルに挙げた条件の 基で、コピー、改変、他者との共有は自由にして下さい。どこかの会社 (個人ではありません!) で vi が購入を希望するほど十分有用であると認めた場合、 または会社で再配布を希望する場合、作者へ寄付をいただければ幸いです。 .SH 解説 .I \&vi はスクリーン指向のテキストエディタです。 .I \&ex は行指向のエディタです。 .I \&ex と .I \&vi は同じプログラムで別のインタフェースを提供し、 -エディット中に切替えることが可能です。 +エディット中に切り替えることが可能です。 .I view は .IR \&vi に .B \-R (読み込み専用) オプション をつけて実行した場合と同じです。 .PP このマニュアルは .I ex/vi テキストエディタから派生した .I nex/nvi 用として提供されています。 .I nex/nvi は Fourth Berkeley Software Distibution (4BSD) オリジナルの .I \&ex と .I \&vi のバグひとつひとつの互換性も含めて置き換えたつもりです。 このマニュアルでは、以後、伝統的な .IR ex/vi の実装と区別する必要がある時だけ、 .I nex/nvi という表現を使います。 .PP このマニュアルページは、 .IR ex/vi を既に良く知っているユーザのためのものです。それ以外の人は、このマニュアルを 読む前に良いチュートリアルをしっかりと読んでおくべきです。あなたが不慣れな 環境のもとで、否応無く、しかも直ちに仕事を片付けなければならないなら、 オプションの一覧の後にある、``ファーストスタートアップ'' という タイトルのセクションを読んで下さい。 あなたがその仕事をこなすには、おそらくこれで十分でしょう。 .PP 以下のオプションが利用できます: .TP .B \-c エディットセッションがスタートした後ですぐに .B cmd を実行します。特にファイル中の最初の位置を決定するのに非常に役立ちますが、 .B cmd はポジジョニングコマンドに限定されません。これは、伝統的な ``+cmd'' 構文に代わる、POSIX 1003.2 で規定されたインタフェースです。 .I nex/nvi は新旧どちらの構文もサポートしています。 .TP .B \-e コマンド名が .IR \&ex であるかのように、ex モードで編集を開始します。 .TP .B \-F 編集を開始する時にファイル全体のコピーを作成しません (デフォルトでは、あなたの編集作業中に他の誰かがファイルを変更 する場合に備えてコピーを作成します)。 .TP .B \-l lisp オプションと showmatch オプションをセットして編集を始めます。 .TP .B \-G gtagsmode オプションがセットされている時と同じように、 gtags モードで編集を開始します。 .TP .B \-R コマンド名が .IR view , であるかのように、もしくは .B readonly オプション付きで起動されたかのように、 読み込み専用モードで編集を開始します。 .TP .B \-r 指定したファイルの復旧を行ないます。もしファイルが指定されなかった場合は、 復旧可能なファイルの一覧を表示します。もし、復旧可能なファイルの中に 指定した名前のものがなかった場合は、 .B \-r オプションが指定されなかったかのように、そのファイルの編集を行ないます。 .TP .B \-S 外部プログラムへのすべてのアクセスを許さない .B secure エディットオプションをセットして起動します。 .TP .B \-s バッチモードに入ります。バッチモードは .I \&ex エディットセッションの時しか使えません。バッチモードは .I \&ex スクリプトを実行する時に便利です。このモードでは、プロンプトや、 情報を伝えるメッセージや、その他のユーザ向けのメッセージは出力されず、 スタートアップファイルや環境変数は読み込まれません。これは、伝統的な ``\-'' 引数に代わる、POSIX 1003.2 で規定されたインタフェースです。 .I \&nex/nvi は新旧どちらの構文もサポートしています。 .TP .B \-t 指定したタグの位置でエディットを開始します。 ( .IR ctags (1) 参照) .TP .B \-w 起動時のウィンドウの大きさを指定した行数にします。 .TP .B \-v コマンド名が .I \&vi か .IR view であるかのように、 vi モードでエディットを開始します。 .PP .I ex/vi へのコマンド入力は、標準入力から行なわれます。 .I \&vi のインタフェースは、標準入力が端末でない場合にはエラーになります。 .I \&ex のインタフェースでは、 .I \&ex は、標準入力が端末でなくても、 ちょうど .B \-s オプションが指定されている場合のようにセッションがバッチモード であっても、とにかく読み込みます。 .PP .I ex/vi は成功時に 0 を、エラーが起こった時には 0 より大きな値を返します。 .SH ファーストスタートアップ このセクションは、 .IR \&vi を使って簡単な編集作業を行なうのに必要な最低限のことを教えてくれるでしょう。 あなたが以前に一度もスクリーンエディタを使ったことがないなら、この簡単な紹介 の章でさえも問題になるかも知れません。この場合は、すでに .I \&vi を知っている人を探して、その人と一緒にこのセクションを読むべきです。 .PP .I \&vi はスクリーンエディタです。つまり、 .I \&vi は常に画面全体を使い、ファイルの一部分を画面上の (最終行以外の) それぞれの行に表示します。 画面の最終行は、あなたが .IR \&vi にコマンドを与えたり、 .I \&vi があなたに情報を与えたりするのに使われます。 .PP もうひとつ知っておくべきこととして、 .I \&vi はモードを持ったエディタであることがあります。 つまり、テキストを入力したり、コマンドを実行したりするには、 それぞれの作業を正しいモードで実行しなければなりません。 ファイル編集の最初はコマンドモードになっています。入力モードにする コマンドが幾つかあります。入力モードから抜けるキーはただひとつ、 それは キーです。 (キーの名前は、<,> ではさんで書くことにします。 例えば、 は ``エスケープ'' ``esc'' キーのことを示し、通常キーボードでは、 と表示してあります。) どのモードにいるのかが判らなくなったならば、 .I \&vi が、ビープ音を出すまで、 キーを押し続けて下さい。 (一般的に、 .I \&vi は、許されていないことを何か試みたり、行なったりするとビープ音を鳴らします。 エラーメッセージも表示します。) .PP ファイルの編集を始めるには、``vi file_name'' という具合に、コマンドを入れます。 編集を始めると、まず直ちに、 ``:set verbose showmode'' とコマンドを入れましょう。 そうすることによって、エディタは、 画面の最終行に詳細なエラーメッセージを出すようになりますし、 現在のモードも表示するようになります。 .PP ファイル内を移動するコマンド : .TP .B h カーソルを 1 文字左へ動かす。 .TP .B j カーソルを 1 行下へ動かす。 .TP .B k カーソルを 1 行上へ動かす。 .TP .B l カーソルを 1 文字右へ動かす。 .TP .B カーソルを矢印が示す方へ動かす。 .TP .B /text ファイル中の ``text'' を検索し、その最初の文字へカーソルを移動します。 .PP 新しく文書入力するコマンド : .TP .B a 入力した文書カーソルの .I 後ろへ 追加します。 .TP .B i 入力した文書カーソルの .I 前に 挿入します。 .TP .B o カーソルの下に新しい行を設けて、文書の入力を開始します。 .TP .B O カーソルの上に行を設けて、文書の入力を開始します。 .TP .B 一旦、 .BR \&a , .BR \&i , .BR \&O ないし .B \&o などのコマンドで入力モードに入ってからは、 文書の入力を終了しコマンドモードへ戻るためには、 .B コマンドを用います。 .PP 文書をコピーするコマンド : .TP .B yy カーソルのある行をコピーします。 .TP .B p カーソルのある行の下にコピーした行を追加します。 .PP 文書を削除するコマンド : .TP .B dd カーソルのある行を削除します。 .TP .B x カーソルのある文字を削除します。 .PP ファイルに書き込むコマンド : .TP .B :w もともと .I \&vi のコマンドラインで指定したファイルに、ファイルの内容を書き戻します。 .TP .B ":w file_name" 指定された ``file_name'' に、ファイルの内容を書き出します。 .PP 編集を終了し、エディタを抜けるコマンド : .TP .B :q エディットを終了し、 vi から抜けます。 (ファイル内容が変更されていてまだ保存されていなければ、 .I \&vi は、終了指示を拒否します) .TP .B :q! 変更した内容を放棄し、終了します。 .PP 最後に注意していただきたいこととして、 通常の文字ではない文字は、画面上で複数カラムを占めることがあります。また、 長い行は、画面上の 1 行に収まらないこともあります。 上記のコマンドは、``物理的な'' 行や文字に対して作用します。 つまり、行関係のコマンドはその行が画面上で 何行になろうと行全体に影響を及ぼしますし、文字関係のコマンドはその文字が 画面上で何カラムを占めていても、その文字全体に影響を及ぼします。 .SH VI コマンド 以下の章では、 .I \&vi のコマンドモードで現れるコマンドについて説明します。 それぞれの記述では、見出し行にコマンドの使用書式を一覧表示します。 .PP .TP .B "[count] " .I count で指定した回数だけ、前方へ現在の単語を検索します。 .TP .B "[count] " .I count で指定した回数だけ、画面を後方へ戻します。 .TP .B "[count] " .I count で指定した行数だけ、画面を前方へスクロールします。 .TP .B "[count] " .I count で指定した行数だけ、画面を前方へスクロールします。 カーソルは現在行から離れますが、可能な場合は元のカラムに留まります。 .TP .B "[count] " .I count で指定した回数だけ、画面を前方へスクロールします。 .TP .B "" ファイル情報を表示します。 .TP .B "" .TP .B "[count] h" .I count で指定した文字数だけ、カーソルを現在行中で戻します。 .TP .B "[count] " .TP .B "[count] " .TP .B "[count] j" .I count で指定した行数だけ、カラム位置を変えずにカーソルを 下へ移動します。 .TP .B "" .TP .B "" 画面を再表示します。 .TP .B "[count] " .TP .B "[count] +" .I count で指定した行数だけ下の行の、 最初の空白以外の文字の位置へカーソルを 移動します。 .TP .B "[count] " .TP .B "[count] k" .I count で指定した行数だけ、 カラム位置を変えずにカーソルを上へ移動します。 .TP .B "" 最近のタグの状態へと戻ります。 .TP .B "" .I count で指定した行数だけ、画面を後方へスクロールします。 .TP .B "" 編集中の次の下位のスクリーンに切り替わります。 編集中の下位のスクリーンが他に無い場合には、最初のスクリーンへ切り替えます。 .TP .B "" .I count で指定した行数だけ、画面を後方にスクロールします。 できるかぎり現在の行、カラムにカーソルを残します。 .TP .B "" 現在の処理を中断 (suspend) します。 .TP .B "" .I \&ex コマンドを実行します。もしくは、実行中のコマンドを部分的にキャンセルします。 .TP .B "" タグ参照の内容をタグスタックへプッシュします。 gtagsmode では、行の最初のカラムにいる時は関数の参照位置を探し、 そうでない時は関数の定義位置を探します。 .TP .B "" 最後に編集したファイルへ切り替えます。 .TP .B "[count] " .TP .B "[count] l" .I count で指定した文字数だけ、カーソルを前方へ行を変えずに移動します。 .TP .B "[count] ! motion shell-argument(s)" シェルコマンドの結果を用いて文書を置き換えます。 .TP .B "[count] # #|+|-" カーソルが指す場所の数を増減します。 .TP .B "[count] $" カーソルを現在の行の末尾に移動します。 .TP .B "%" 対となる文字へカーソルを移動します。 .TP .B "&" 現在行で、前回実行した置換コマンドを再び実行します。 .TP .B "'" .TP .B "`" マークした文字 の場所へ戻ります。 .IR . .TP .B "[count] (" .I count で指定された数だけ、前の文へ戻ります。 .TP .B "[count] )" .I count で指定された数だけ、後ろの文へ移動します。 .TP .B "[count] ," .I count で指定された回数だけ、逆方向へ文字を検索します。 .TP .B "[count] -" .I count で指定された回数だけ、 直前の行で最初に現れる空白でない文字への移動を行ないます。 .TP .B "[count] ." 直前の .I \&vi 編集コマンドを繰り返します。 .TP .B "/RE" .TP .B "/RE/ [offset]" .TP .B "?RE" .TP .B "?RE? [offset]" .TP .B "N" .TP .B "n" 前方/後方に向かって、正規表現による検索を行ないます。 .TP .B "0" 現在行の最初の文字に移動します。 .TP .B ":" ex コマンドを実行します。 .TP .B "[count] ;" 文字検索を .I count で指定された回数だけ繰り返します。 .TP .B "[count] < motion" .TP .B "[count] > motion" 現在行を、左/右にシフトします。 .TP .B "@ buffer" バッファに保存されたコマンドを実行します。 .TP .B "[count] A" 入力モードに入り、文書を行の最後に追加します。 .TP .B "[count] B" .I count で指定された回数だけ、大単語 (bigword) の先頭文字への移動を繰り返します。 .TP .B "[buffer] [count] C" 現在位置から行末までを変更します。 .TP .B "[buffer] D" 現在位置から行末まで削除します。 .TP .B "[count] E" .I count で指定された回数だけ、大単語の末尾の文字への移動を繰り返します。 .TP .B "[count] F " .I count で指定された回数だけ、行の先頭から逆方向に文字 .IR を検索/移動を繰り返します。 .TP .B "[count] G" ファイルの最初から数えて .IR count 行目へ、もしくは .I count を指定しなかったときはファイルの末尾の行へ、カーソルを移動します。 .TP .B "[count] H" 画面の最初から数えて .I "count - 1" 行目に移動します。 .TP .B "[count] I" 入力モードに入り、行の先頭へ文書を挿入します。 .TP .B "[count] J" 現在行と次の行を結合します。 .TP .B "[count] L" 画面の下から数えて .I "count - 1" 行目に移動します。 .TP .B " M" 画面中央の行へ移動します。 .TP .B "[count] O" 入力モードに入ります。現在行の直前に新しい行を作り、文書を追加します。 .TP .B "[buffer] P" バッファに保存した文書を挿入します。 .TP .B "Q" .I \&vi (もしくは visual) モードを終了し、 .I \&ex モードへ切り替わります。 .TP .B "[count] R" 入力モードに入り、現在行の内容を置き換えます。 .TP .B "[buffer] [count] S" .I count で指定した行数だけ、行を置き換えます。 .TP .B "[count] T " .I count で指定した回数だけ、現在行で逆方向に検索し、指定された文字 .IR の .I 後ろ の文字に移動します。 .TP .B "U" 現在行を、カーソルが最後に入ってきた時の直前の状況に復元します。 .TP .B "[count] W" .I count で指定した回数だけ、大単語単位で移動します。 .TP .B "[buffer] [count] X" .I count で指定した回数だけ、カーソルの前の文字を削除します。 .TP .B "[buffer] [count] Y" 行のコピー、(もしくは ``ヤンク'') を .I count で指定した行数だけ、指定したバッファに取り込みます。 .TP .B "ZZ" ファイルに書き込み、 .IR \&vi を終了します。 .TP .B "[count] [[" .I count で指定した回数だけ、後方のセクションの先頭へ移動します。 .TP .B "[count] ]]" .I count で指定した回数だけ、前方のセクションの末尾へ移動します。 .TP .B "\&^" 現在行の空白でない最初の文字へ移動します。 .TP .B "[count] _" .I "count - 1" で指定した行数だけ、下の行の最初の空白でない文字へ移動します。 .TP .B "[count] a" 入力モードに入り、カーソルの後ろに文書を追加します。 .TP .B "[count] b" .I count で指定した回数だけ、後方へ単語単位で移動します。 .TP .B "[buffer] [count] c motion" 範囲指定した文書を変更します。 .TP .B "[buffer] [count] d motion" 範囲指定した文書を削除します。 .TP .B "[count] e" .I count で指定した数だけ前方の単語の終りに移動します。 .TP .B "[count] f" 現在行の中で、行末まで .I count で指定した回数だけ、 .IR を検索します。 .TP .B "[count] i" 入力モードに入り、カーソルの前に文書を挿入します。 .TP .B "m " 現在の状態 (行とカラム) を .IR へ、保存します。 .TP .B "[count] o" 入力モードに入ります。現在行の下に新しい行を作り、文章を追加します。 .TP .B "[buffer] p" バッファから文章を取り出し、追加します。 .TP .B "[count] r " .I count で指定した文字数だけ、文字を置換します。 .TP .B "[buffer] [count] s" 現在行の中で、カーソルのある文字から .I count で指定する回数だけ、文字を入れ換えます。 .TP .B "[count] t " 現在行の中で、前方へ .I count で指定する回数だけ、 .IR を検索し、その文字の .I 直前 へ移動します。 .TP .B "u" ファイルに最後に行なった変更を取り消します。 .TP .B "[count] w" .I count で指定した回数だけ、前方へ単語単位で移動します。 .TP .B "[buffer] [count] x" .I count で指定した回数だけ、文字を削除します。 .TP .B "[buffer] [count] y motion" .I count と motion で指定された範囲をバッファへコピー (もしくは ``yank'') します。 .TP .B "[count1] z [count2] -|.|+|^|" 画面を再表示します。あわせてカーソル位置や画面のサイズを変更することも できます。 .TP .B "[count] {" .I count で指定した回数だけ、後方へ段落単位で移動します。 .TP .B "[count] |" 現在行の中で .I count で指定した .I column 位置に移動します。 .TP .B "[count] }" .I count で指定した回数だけ、前方へ段落単位で移動します。 .TP .B "[count] ~" .I count で指定した回数だけ、文字 (列) の大文字、小文字を入れ換えます。 .TP .B "[count] ~ motion" .I count と .IR motion で指定された範囲の文字列の大文字小文字を入れ換えます。 .TP .B "" 現在の作業を中断します。 .SH VI の文書入力コマンド 以下のセクションでは、 .I \&vi エディタの文書入力に用するコマンドに関して記します。 .PP .TP .B "" 直前の入力を繰り返します。 .TP .B "" 直前の .B shiftwidth のカラム境界まで消去します。 .TP .B "^" オートインデント文字を全部消し、インデント状態を解除します。 .TP .B "0" オートインデント文字を全部消します。 .TP .B "" カーソルが .B shiftwidth オプションの偶数倍のカラム数の直後に来るまで、適当な数の .I と .I 文字を挿入します。 .TP .B " .TP .B "" 最後に入力した文字を消します。 .TP .B "" 次の文字を引用します。 .TP .B " 文書を全部ファイルに格納し、コマンドモードへ戻ります。 .TP .B "" 現在行を消します。 .TP .B "" .TP .B "" 最後に入力した単語を消します。 単語の定義は、 .B altwerase と .B ttywerase のオプションに依存します。 .TP .B "[0-9A-Fa-f]+" 指定した 16 進の値を持つ文字を挿入します。 .TP .B "" 文書入力モードを中断し、コマンドモードへと戻ります。 .SH EX コマンド 以下のセクションでは、 .I \&ex エディタで用いられるコマンドに関して記します。 以下のエントリのうち、見出し行にはコマンドの使用書式を記載してあります。 .PP .TP .B "" 画面をスクロールします。 .TP .B "! argument(s)" .TP .B "[range]! argument(s)" シェルコマンドを実行するか、もしくはシェルコマンドを用いて 指定範囲の行にフィルタをかけます。 .TP .B \&" コメントです。 .TP .B "[range] nu[mber] [count] [flags]" .TP .B "[range] # [count] [flags]" 指定行を、その行番号を前に付けて表示します。 .TP .B "@ buffer" .TP .B "* buffer" バッファの中身を実行します。 .TP .B "[line] a[ppend][!]" 指定行の後に、入力文字を追加します。 .TP .B "[range] c[hange][!] [count]" .I range で指定した範囲を入力文字で置き換えます。 .TP .B "cs[cope] add | find | help | kill | reset" cscope コマンドを実行する。 .TP .B "[range] d[elete] [buffer] [count] [flags]" ファイルから行を削除します。 .TP .B "di[splay] b[uffers] | c[onnections] | s[creens] | t[ags]" バッファ、cscope 接続、画面、タグを表示します。 .TP .B "[Ee][dit][!] [+cmd] [file]" .TP .B "[Ee]x[!] [+cmd] [file]" 別のファイルを編集します。 .TP .B "exu[sage] [command]" 指定した .I \&ex コマンドの使い方を表示します。 .TP .B "f[ile] [file]" ファイル名を表示し、指定があればファイル名を変更します。 .TP .B "[Ff]g [name]" .I \&vi モードのみ。 指定した画面をフォアグランドに表示します。 .TP .B "[range] g[lobal] /pattern/ [commands]" .TP .B "[range] v /pattern/ [commands]" パターンに合致した (しない) 行にコマンドを適用します。 .TP .B "he[lp]" ヘルプメッセージを表示します。 .TP .B "[line] i[nsert][!]" 入力文書を指定した行の前に挿入されます。 .TP .B "[range] j[oin][!] [count] [flags]" 行を結合します。 .TP .B "[range] l[ist] [count] [flags]" 行を曖昧さがないように表示します。 .TP .B "map[!] [lhs rhs]" マップを定義もしくは表示します。( .I \&vi のみ) .TP .B "[line] ma[rk] " .TP .B "[line] k " 行を .IR としてマークします。 .TP .B "[range] m[ove] line" 指定した行を目標行の後ろに移動します。 .TP .B "mk[exrc][!] file" 略語、エディタのオプション、マップを指定したファイルに書き込みます。 .TP .B "[Nn][ext][!] [file ...]" 引数リストで指定した次のファイルの編集に移行します。 .TP .B "[line] o[pen] /pattern/ [flags]" オープンモードに入ります。 .TP .B "pre[serve]" 後で .I \&ex .B \-r オプションを用いてファイルを復元できる形式にして保存します。 .TP .B "[Pp]rev[ious][!]" 引数リストで指定した 1 つ前のファイルを編集します。 .TP .B "[range] p[rint] [count] [flags]" 指定した行を表示します。 .TP .B "[line] pu[t] [buffer]" バッファの内容を現在行に追加します。 .TP .B "q[uit][!]" 編集を終了します。 .TP .B "[line] r[ead][!] [file]" ファイルを読み込みます。 .TP .B "rec[over] file" 事前に保存されている場合に、 .I file を復元します。 .TP .B "res[ize] [+|-]size" .I \&vi モードのみ。 現在の画面を大きくするか、もしくは小さくします。 .TP .B "rew[ind][!]" 引数リストを巻き戻し、最初の引数のファイルの編集に移行します。 .TP .B "rta[g][!] tagstring" 指定したタグを参照しているファイルを編集します。(gtagsmode でのみ有効) .TP .B "se[t] [option[=[value]] ...] [nooption ...] [option? ...] [all]" エディタのオプションを表示、もしくは設定します。 .TP .B "sh[ell]" シェルプログラムを実行します。 .TP .B "so[urce] file" ファイルから .I \&ex コマンドを読み込み、実行します。 .TP .B "[range] s[ubstitute] [/pattern/replace/] [options] [count] [flags]" .TP .B "[range] & [options] [count] [flags]" .TP .B "[range] ~ [options] [count] [flags]" 置換を行ないます。 .TP .B "su[spend][!]" .TP .B "st[op][!]" .TP .B 編集を一時中断します。 .TP .B "[Tt]a[g][!] tagstring" 指定のタグを含むファイルを編集します。 .TP .B "tagn[ext][!]" 現在のタグの次のタグを含むファイルを編集します。 .TP .B "tagp[op][!] [file | number]" スタックから指定したタグを取り出します。 .TP .B "tagp[rev][!]" 現在のタグの前のタグを含むファイルを編集します。 .TP .B "unm[ap][!] lhs" 指定した文字列のマップ定義を解除します。 .TP .B "ve[rsion]" .I \&ex/vi のバージョンを表示します。 .TP .B "[line] vi[sual] [type] [count] [flags]" .I \&ex モードのみ。 .IR \&vi モードに入ります。 .TP .B "[Vi]i[sual][!] [+cmd] [file]" .I \&vi モードのみ。 新しいファイルを編集します。 .TP .B "viu[sage] [command]" .I \&vi コマンドの使い方を表示します。 .TP .B "[range] w[rite][!] [>>] [file]" .TP .B "[range] w[rite] [!] [file]" .TP .B "[range] wn[!] [>>] [file]" .TP .B "[range] wq[!] [>>] [file]" ファイルに書き出します。 .TP .B "[range] x[it][!] [file]" 修正されていれば、ファイルに書きだします。 .TP .B "[range] ya[nk] [buffer] [count]" 指定行をバッファにコピーします。 .TP .B "[line] z [type] [count] [flags]" ウィンドウのサイズを調節します。 .SH SET オプション set (または unset) することによりエディターの動作を変更することができる オプションが非常にたくさんあります。このセクションでは、 これらのオプションとその短縮形とデフォルト値を説明します。 .PP 以下の各項目では、最初にオプションをフルネームで、 その次に同じ意味を持つ短縮形が続きます。 角括弧の部分は、デフォルト値です。 ほとんどのオプションは on または off のようなブール値で、 関連する値は持ちません。 .PP これらのオプションは、特に断りがない場合は .I \&ex と .I \&vi の両方のモードに適用されます。 .PP .TP .B "altwerase [off]" .I \&vi のみ。 別の単語削除アルゴリズムを選択します。 .TP .B "autoindent, ai [off]" 改行時に自動的にインデントします。 .TP .B "autoprint, ap [off]" .I \&ex のみ。 自動的に現在の行を表示します。 .TP .B "autowrite, aw [off]" -別のファイルに切替える際に、ファイルが変更されているなら自動的にセーブします。 +別のファイルに切り替える際に、 +ファイルが変更されているなら自動的にセーブします。 .\" I cannot get a double quote to print between the square brackets .\" to save my life. The ONLY way I've been able to get this to work .\" is with the .tr command. .tr Q" .ds ms backup [QQ] .TP .B "\*(ms" .tr QQ ファイルが上書きされる前にバックアップファイルを作成します。 .TP .B "beautify, bf [off]" コントロール・キャラクタを切り捨てます。 .TP .B "cdpath [環境変数 CDPATH 、またはカレントディレクトリ]" .B cd コマンドのパス接頭子として使われるディレクトリパスです。 .TP .B "cedit [no default]" コロンコマンドライン履歴を編集する文字をセットします。 .TP .B "columns, co [80]" 画面のカラム数をセットします。 .TP .B "comment [off]" .I \&vi のみ。 シェルスクリプト、C、C++言語ファイル先頭のコメントの読み込みをスキップします。 .TP .B "directory, dir [環境変数 TMPDIR 、または /tmp]" テンポラリファイルを作成するディレクトリです。 .TP .B "edcompatible, ed [off]" .B 置換 コマンドの接尾子の ``c'' と ``g'' の値を記憶するようにします。 通常は新しくコマンドを実行するたびに初期化します。 .TP .B "errorbells, eb [off]" .I \&ex のみ。 エラーメッセージをベルとともに知らせます。 .TP .B "exrc, ex [off]" ローカルディレクトリのスタートアップファイルを読み込みます。 .TP .B "extended [off]" 正規表現を .IR egrep (1)\-\c スタイルに拡張します。 .TP .B "filec [no default]" コロンコマンドライン上のファイルパス補間を行なう文字をセットします。 .TP .B "flash [on]" エラー時にビープを鳴らすのではなく、画面をフラッシュします。 .TP .B "gtagsmode, gt [off]" tags の代わりに GTAGS と GRTAGS を使います。 .TP .B "hardtabs, ht [8]" スペースをハードウェアタブ設定に合わせて設定します。 .TP .B "iclower [off]" 検索文字列に大文字が現れなければ、すべての正規表現を大文字小文字の 区別なく行なうようにします。 .TP .B "ignorecase, ic [off]" 正規表現検索で大文字小文字の違いを無視します。 .TP .B "keytime [6]" .I ex/vi は、後に続くキーを先のキーに続けて解釈しキーマッピングを行ないますが、 後に続くキー入力の待ち時間を1/10秒単位で指定します。 .TP .B "leftright [off]" .I \&vi のみ。 左右のスクロールを行ないます。 .TP .B "lines, li [24]" .I \&vi のみ。 画面の行数を設定します。 .TP .B "lisp [off]" .I \&vi のみ。 さまざまなサーチコマンドとオプションの動作を Lisp 言語編集用に 修正します。 .I "このオプションはまだ実装されていません。" .TP .B "list [off]" 行を曖昧でない形式で表示します。 .TP .B "lock [on]" どのファイルの編集、読み込み、書き込みに関しても、排他的ロックをする ように試みます。 .TP .B "magic [on]" ある種の文字を正規表現中で特殊扱いします。 .TP .B "matchtime [7]" .I \&vi のみ。 .B showmatch オプションが設定されている場合、 .I ex/vi は対になる括弧の上で一時停止しますが、その停止時間を 1/10 秒単位で指定します。 .TP .B "mesg [on]" 他のユーザからのメッセージ着信を許可します。 .TP .B "modelines, modeline [off]" それぞれのファイルの最初と最後の数行を .I ex コマンドとして読み込みます。 .I "このオプションが実装されることは決してありません。" .\" I cannot get a double quote to print between the square brackets .\" to save my life. The ONLY way I've been able to get this to work .\" is with the .tr command. .tr Q" .ds ms noprint [QQ] .TP .B "\*(ms" .tr QQ 表示可能な文字として扱われない文字を指定します。 .TP .B "number, nu [off]" 各行先頭に行番号を付けて表示します。 .TP .B "octal [off]" 表示出来ない文字を 8 進数で表示します。デフォルトでは 16 進表示です。 .TP .B "open [on]" .I \&ex のみ。 このオプションが設定されていなければ、 .B open と .B visual コマンドは許されません。 .TP .B "optimize, opt [on]" .I \&vi のみ。 ダム端末へのテキスト出力速度を最適化します。 .I "このオプションはまだ実装されていません。" .TP .B "paragraphs, para [IPLPPPQPP LIpplpipbp]" .I \&vi のみ。 .B \&{ と .B \&} コマンドで使用する段落境界の定義を追加します。 .TP .B "path []" 編集するファイルを探すディレクトリの追加分を定義します。 .\" I cannot get a double quote to print between the square brackets .\" to save my life. The ONLY way I've been able to get this to work .\" is with the .tr command. .tr Q" .ds ms print [QQ] .TP .B "\*(ms" .tr QQ 常に表示可能な文字として扱われる文字を指定します。 .TP .B "prompt [on]" .I \&ex のみ。 コマンドプロンプトを表示します。 .TP .B "readonly, ro [off]" ファイルとそのセッションを読み込み専用とします。 .TP .B "recdir [/var/tmp/vi.recover]" 復元用のファイルを置くディレクトリです。 .TP .B "redraw, re [off]" .I \&vi のみ。 ダム端末上で、インテリジェント端末をシミュレートします。 .I "このオプションはまだ実装されていません。" .TP .B "remap [on]" 解決されるまで、キーマップを解釈します。 .TP .B "report [5]" 変更ないしヤンクについて、エディタが報告する行数を設定します。 .TP .B "ruler [off]" .I \&vi のみ。 最下行に行/カラムを示す罫を表示します。 .TP .B "scroll, scr [window / 2]" スクロールする行数を設定します。 .TP .B "searchincr [off]" .B \&/ と .B \&? コマンドをインクリメンタルにセットします。 .TP .B "sections, sect [NHSHH HUnhsh]" .I \&vi のみ。 .B \&[[ と .B \&]] コマンドで使用するセクション境界の定義を追加します。 .TP .B "secure [off]" 外部プログラムへのすべてのアクセスを止めます。 .TP .B "shell, sh [環境変数 SHELL 、または /bin/sh]" エディタ上から使われるシェルを選択します。 .\" I cannot get a double quote to print between the square brackets .\" to save my life. The ONLY way I've been able to get this to work .\" is with the .tr command. .tr Q" .ds ms shellmeta [~{[*?$`'Q\e] .TP .B "\*(ms" .tr QQ ファイル名の拡張が必要なとき、その決定をするメタキャラクタを セットします。 .TP .B "shiftwidth, sw [8]" オートインデント、シフトコマンドで用いる幅を設定します。 .TP .B "showmatch, sm [off]" .I \&vi のみ。 ``{'' と ``('' に対し ``}'' と ``)'' の括弧の対応を表示します。 .TP .B "showmode, smd [off]" .I \&vi のみ。 現在のエディタのモードと ``変更'' フラグを表示します。 .TP .B "sidescroll [16]" .I \&vi のみ。 左右スクロールで動く幅を設定します。 .TP .B "slowopen, slow [off]" 文書を入力中、画面更新を遅らせて表示します。 .I "このオプションはまだ実装されていません。" .TP .B "sourceany [off]" 現在のユーザの所有でないスタートアップファイルを読み込みます。 .I "このオプションが実装されることは決してありません。" .TP .B "tabstop, ts [8]" このオプションは、表示で使用されるタブの幅を設定します。 .TP .B "taglength, tl [0]" タグの名前を判別可能な最大文字数を設定します。 .TP .B "tags, tag [tags /var/db/libc.tags /sys/kern/tags]" タグファイルのリストを設定します。 .TP .B "term, ttytype, tty [環境変数 TERM]" 端末の型を設定します。 .TP .B "terse [off]" このオプションは伝統的にエディタの示すメッセージをより簡潔なものにする ために作られています。 この実装では何の影響も与えません。 .TP .B "tildeop [off]" .B \&~ コマンドが連係動作をするように修正します。 .TP .B "timeout, to [on]" キーをマップする際のタイムアウト。 .TP .B "ttywerase [off]" .I \&vi のみ。 別の削除アルゴリズムを選択します。 .TP .B "verbose [off]" .I \&vi のみ。 エラーが起こる度にエラーメッセージを表示します。 .TP .B "w300 [no default]" .I \&vi のみ。 転送レートが 1200 ボー以下の場合に設定するウィンドウサイズ。 .TP .B "w1200 [no default]" .I \&vi のみ。 転送レートが 1200 ボーの場合に設定するウィンドウサイズ。 .TP .B "w9600 [no default]" .I \&vi のみ。 転送レートが 1200 ボー以上の場合に設定するウィンドウサイズ。 .TP .B "warn [on]" .I \&ex のみ。 このオプションは、 ファイルが最後に書き込まれた後でファイルが修正されている場合、 .B \&! コマンドが実行される前に端末に警告メッセージ を出すようにします。 .TP .B "window, w, wi [環境変数 LINES]" 画面のウィンドウサイズを設定します。 .TP .B "windowname [off]" アイコン名、ウィンドウ名を、たとえエディタ終了時に戻すことができなく なるとしても、現在作業中のファイル名に変えます。 .TP .B "wraplen, wl [0]" .I \&vi のみ。 左マージンから指定したカラム数で、行を自動的に折り返します。 もし、 .B wraplen と .B wrapmargin の両方の編集オプションがセットされると、 .B wrapmargin の値が使われます。 .TP .B "wrapmargin, wm [0]" .I \&vi のみ。 右マージンから指定したカラム数で、行を折り返します。 .B wraplen と .B wrapmargin 編集オプションの両方が指定されると、 .B wrapmargin の値が使われます。 .TP .B "wrapscan, ws [on]" 検索が、ファイルの最後に達したら最初へと戻ります。 .TP .B "writeany, wa [off]" ファイルの上書きチェックを切り替えます。 .SH 環境変数 .TP .I COLUMNS 画面のカラム数。 この値は、システムや端末固有のどの値をも上書きします。 .I ex/vi の起動時に環境変数 .I COLUMNS が設定されていない場合、または .B columns オプションによりユーザが明示的に値をリセットした場合は、 .I ex/vi は環境変数 .I COLUMNS にこの値を設定します。 .TP .I EXINIT .I \&ex のスタートアップコマンドのリスト。 .I NEXINIT が設定されていない場合に読み込まれます。 .TP .I HOME ユーザのホームディレクトリ。 起動時に ``$\fIHOME\fP/.nexrc'' と ``$\fIHOME\fP/.exrc'' を読み込むための初期ディレクトリパスとして使われます。 この値は、 .I \&vi の .B \&cd コマンドのデフォルトディレクトリとしても使われます。 .TP .I LINES 画面の行数。 この値は、システムや端末固有のどの値をも上書きします。 .I ex/vi 起動時に、環境変数 .I LINES が設定されていないか、 .B lines オプションによりユーザが明示的に値をリセットした場合は、 .I ex/vi は環境変数 .I LINES にこの値を設定します。 .TP .I NEXINIT .I \&ex のスタートアップコマンドのリスト。 .TP .I SHELL ユーザが選んだシェル 。 ( .B shell オプションを参照) .TP .I TERM ユーザの端末の型。デフォルトの型は ``unknown'' です。 .I ex/vi 起動時に環境変数 .I TERM の値が設定されていないか、または、 .B term オプションによりユーザが明示的に値をリセットした場合は、 .I ex/vi は環境変数 .I TERM にこの値を設定します。 .TP .I TMPDIR テンポラリファイルの作成される場所。 ( .B directory オプションを参照) .SH 非同期イベント .TP SIGALRM .I \&vi/ex は、ファイル編集時の定期的なバックアップを行なうためと、 処理に長い時間がかかりそうな時に画面に ``busy'' のメッセージを 表示するために、このシグナルを使います。 .TP SIGHUP .TP SIGTERM 最後にファイル全体を書き込んだ後、現在のバッファを変更した場合、 後に復旧できるように編集中のファイルを保存しようと試みます。 詳細は、 .I \&vi/ex リファレンスマニュアルの ``Recovery'' のセクションを参照して下さい。 .TP SIGINT この割り込みが発生した場合、現在の操作は停止され、コマンドレベルに戻ります。 テキスト入力中にこの割り込みが発生した場合は、テキスト入力を正常に終了させた かのように、ファイルに入力中のテキストを書き込みます。 .TP SIGWINCH スクリーンのサイズ変更を行ないます。 詳しくは、 .I \&vi/ex リファレンスマニュアルの ``Sizing the Screen'' のセクションを参照して下さい。 .TP SIGCONT .TP SIGQUIT .TP SIGTSTP .I \&vi/ex はこれらのシグナルを無視します。 .SH 関連ファイル .TP /bin/sh デフォルトのユーザシェル。 .TP /etc/vi.exrc システム全体における vi のスタートアップファイル。 .TP /tmp テンポラリファイルのディレクトリ。 .TP /var/tmp/vi.recover デフォルトの復元ファイルのディレクトリ。 .TP $HOME/.nexrc ユーザのホームディレクトリにあるスタートアップファイルで、 1 番最初に読まれるファイル。 .TP $HOME/.exrc ユーザのホームディレクトリにあるスタートアップファイルで、 2 番目に読まれるファイル。 .TP \&.nexrc ローカルディレクトリにあるスタートアップファイルで、 1 番最初に読まれるファイル。 .TP \&.exrc ローカルディレクトリにあるスタートアップファイルで、 2 番目に読まれるファイル。 .SH 関連項目 .IR ctags (1), .IR more (3), .IR curses (3), .IR dbopen (3) .sp ``Vi Quick Reference'' カード。 .sp ``An Introduction to Display Editing with Vi'' のセクション。 4.3BSD と 4.4BSD のマニュアルセットの ``UNIX User's Manual Supplementary Documents'' の中で見つかります。 これは、手に入るものの中で .I \&vi スクリーンエディタの入門書にもっとも近いものです。 .sp ``Ex Reference Manual (Version 3.7)'' のセクション。 4.3BSD と 4.4BSD のマニュアルセットの ``UNIX User's Manual Supplementary Documents'' の中で見つかります。 これは、 .I \&ex エディタのドキュメントで、伝統的な 4BSD と System V で配布された 最終的なリファレンスです。 .sp ``Edit: A tutorial'' セクション。 4.3BSD のマニュアルセットの ``UNIX User's Manual Supplementary Documents'' の中で見つかります。 これは、 .I \&ex スクリーンエディタの単純な版の入門用ドキュメントです。 .sp ``Ex/Vi Reference Manual'' セクション。 4.4BSD のマニュアルセットの ``UNIX User's Manual Supplementary Documents'' の中で見つかります。 これは、 .I \&nex/nvi テキストエディタのために 4.4BSD と 4.4BSD-Lite で配布された 最終的なリファレンスです。 .PP .I nex/nvi ドキュメントの .I roff ソース。 これらは .I nex/nvi のソースコードが置かれているディレクトリの .I nvi/USD.doc ディレクトリの中に一緒に配布されています。 .sp .I nex/nvi のソースコードが置かれている .I nvi/docs/internals ディレクトリの ``autowrite'', ``input'', ``quoting'', ``structures'' といったファイル群。 .SH 歴史 .I ex/vi エディタに代わる .I nex/nvi コマンドは、4.4BSD から登場しました。 .SH 規格 .I \&nex/nvi は、IEEE Std1003.2 (``POSIX'') に近いです。 この文書は、幾つかの点で従来の .I ex/vi の実際の動作とは異なります。 .I \&nex/nvi には、両方の面に則って作られたという違いがあります。 diff --git a/ja_JP.eucJP/man/man4/ddb.4 b/ja_JP.eucJP/man/man4/ddb.4 index 9de2b4b62c..fb123da821 100644 --- a/ja_JP.eucJP/man/man4/ddb.4 +++ b/ja_JP.eucJP/man/man4/ddb.4 @@ -1,580 +1,580 @@ .\" .\" Mach Operating System .\" Copyright (c) 1991,1990 Carnegie Mellon University .\" All Rights Reserved. .\" .\" Permission to use, copy, modify and distribute this software and its .\" documentation is hereby granted, provided that both the copyright .\" notice and this permission notice appear in all copies of the .\" software, derivative works or modified versions, and any portions .\" thereof, and that both notices appear in supporting documentation. .\" .\" CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" .\" CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR .\" ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. .\" .\" Carnegie Mellon requests users of this software to return to .\" .\" Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU .\" School of Computer Science .\" Carnegie Mellon University .\" Pittsburgh PA 15213-3890 .\" .\" any improvements or extensions that they make and grant Carnegie Mellon .\" the rights to redistribute these changes. .\" .\" changed a \# to #, since groff choked on it. .\" .\" HISTORY .\" ddb.4,v .\" Revision 1.1 1993/07/15 18:41:02 brezak .\" Man page for DDB .\" .\" Revision 2.6 92/04/08 08:52:57 rpd .\" Changes from OSF. .\" [92/01/17 14:19:22 jsb] .\" Changes for OSF debugger modifications. .\" [91/12/12 tak] .\" .\" Revision 2.5 91/06/25 13:50:22 rpd .\" Added some watchpoint explanation. .\" [91/06/25 rpd] .\" .\" Revision 2.4 91/06/17 15:47:31 jsb .\" Added documentation for continue/c, match, search, and watchpoints. .\" I've not actually explained what a watchpoint is; maybe Rich can .\" do that (hint, hint). .\" [91/06/17 10:58:08 jsb] .\" .\" Revision 2.3 91/05/14 17:04:23 mrt .\" Correcting copyright .\" .\" Revision 2.2 91/02/14 14:10:06 mrt .\" Changed to new Mach copyright .\" [91/02/12 18:10:12 mrt] .\" .\" Revision 2.2 90/08/30 14:23:15 dbg .\" Created. .\" [90/08/30 dbg] .\" .\" %Id: ddb.4,v 1.6 1997/04/12 21:54:48 joerg Exp % .\" jpman %Id: ddb.4,v 1.3 2000/05/06 08:15:07 isaki Stab % .\" .\" WORD: wired ハードコーディングされた [Jargon File] .\" WORD: modifier 修飾子 .\" .Dd January 16, 1996 .Dt DDB 4 .Os FreeBSD .Sh 名称 .Nm ddb .Nd 対話型カーネルデバッガ .Sh 書式 .Cd options DDB .Sh 解説 .Nm カーネルデバッガは古い kdb のほとんどの機能を、 .Xr gdb 1 の影響を受けた合理的なシンタックスでサポートしています。 .Pp 現在のロケーションは `dot' と呼ばれます。 `dot' はプロンプトに 16 進数の形式で表示されます。 検査と書き込みコマンドは、 最後に検査したか最後に変更したロケーションに `dot' を更新します。 そして、`next' を次に検査もしくは変更するロケーションのアドレスにセットします。 他のコマンドは `dot' を変更せず、`next' を `dot' と同じにします。 .Pp 一般的なコマンドシンタックスは .Cm command Ns Op Li \&/ Ns Ar modifier .Ar address Ns Op Li , Ns Ar count となります。 .Pp 空白行は直前のコマンドをアドレス `next' からカウントを 1、 修飾子 (modifier) なしとして繰り返し実行します。 .Ar address を指定すると `dot' はそのアドレスに設定されます。 .Ar address を省略すると `dot' がアドレスとして使われます。 .Ar count が指定されないと、表示コマンドに対しては 1 が指定されたものとされ、 スタックトレースに対しては無限が指定されたものとなります。 .Pp .Nm デバッガは出力に対し .Xr more 1 のような機能をサポートしています。 出力行が変数 .Li \&$lines で指定されている数を越えると、 .Dq Em --db_more-- を表示し応答を待ちます。 これに対する有効な応答は以下の通りです。 .Pp .Bl -tag -compact -width SPC .It Li SPC 次の 1 ページを表示します .It Li RET 次の 1 行を表示します .It Li q 現在のコマンドを中断し、コマンド入力モードに戻ります .El .Pp .Nm は小さい (現在は 10 項目) コマンドヒストリや、 簡単な Emacs 風のコマンド行編集機能を提供しています。 Emacs のコントロールキーに加え、 通常の ANSI の矢印キーでもヒストリバッファをブラウズしたり、 現在行の中でカーソルを動かしたりすることができるでしょう。 .Sh コマンド .Bl -ohang -compact .It Cm examine .It Cm x 修飾子のフォーマットによって、 指定されたアドレスロケーションの内容を表示します。 複数の修飾子を指定すると、複数のロケーションが表示されます。 フォーマットが指定されないと、 このコマンドに最後に使われたフォーマットが使われます。 .Pp フォーマット文字は以下の通りです。 .Bl -tag -compact -width indent .It Li b バイト (8 ビット) で表示します。 .It Li h ハーフワード (16 ビット) で表示します。 .It Li l ロングワード (32 ビット) で表示します。 .It Li a 表示されたロケーションを表示します。 .It Li A 可能ならばロケーションを行番号で表示します。 .It Li x 符号無しの 16 進数で表示します。 .It Li z 符号付きの 16 進数で表示します。 .It Li o 符号無しの 8 進数で表示します。 .It Li d 符号付きの 10 進数で表示します。 .It Li u 符号無しの 10 進数で表示します。 .It Li r 現在の基数を符号付きで表示します。 .It Li c 下位 8 ビットを文字として表示します。 表示できない文字は 8 進数のエスケープコード (例: `\e000') で表示されます。 .It Li s そのロケーションをナル文字で終了する文字列として表示します。 表示できない文字は 8 進数のエスケープコードで表示されます。 .It Li m 各行末に文字ダンプをつけて符号無しの 16 進数で表示します。 各行頭にロケーションも 16 進数で表示されます。 .It Li i 命令として表示します。 .It Li I マシンに依存したおそらく別のフォーマットで命令として表示します。 .Bl -tag -width MIPS -compact .It Tn VAX 外部ラベルを手続きのエントリマスクとして想定しません。 .It Tn i386 続くロングワードの境界の丸めを行いません。 .It Tn MIPS レジスタの内容を表示します。 .El .El .It Cm xf 前方検査: 最後に指定されたパラメータを使って、検査コマンドを実行します。 最後に実行されたコマンドによって表示されたアドレスが 開始アドレスとして使われます。 .It Cm xb 後方検査: 最後に指定されたパラメータを使って、検査コマンドを実行します。 最後に実行されたコマンドによって表示されたアドレスから 表示されたもののサイズを引いた結果が開始アドレスとして使われます。 .It Cm print Ns Op Cm /acdoruxz 指定された修飾子文字 (上述の .Li examine 参照) にしたがって、 .No Ar addr を表示します。 有効なフォーマットは .Li a , .Li x , .Li z , .Li o , .Li d , .Li u , .Li r , .Li c です。 修飾子が指定されないと、最後に指定されたものが使われます。 .Ar addr は文字列で指定することができます。 その場合はその通りに表示されます。 例えば、 .Bd -literal -offset indent print/x \&"eax = \&" $eax \&"\enecx = \&" $ecx \&"\en\&" .Ed .Pp は次のように表示されます。 .Bd -literal -offset indent eax = xxxxxx ecx = yyyyyy .Ed .It Xo .Cm write Ns Op Cm /bhl .No Ar addr Ar expr1 Op Ar "expr2 ..." .Xc コマンド行で .Ar addr の後に指定された式を .Ar addr からはじまるロケーションに書き込みます。 書き込みサイズの単位は修飾子として文字 .Li b (バイト), .Li h (ハーフワード), .Li l (ロングワード) としてそれぞれ指定できます。 これが省略されると、ロングワードが指定されたものとみなされます。 .Pp .Sy 警告 : 式の間にはデリミタがないので、奇妙なことが起こり得ます。 各式は括弧で括ったほうがいいでしょう。 .It Xo .Cm set .No Li \&$ Ns Ar variable .Op Li = .Ar expr .Xc 名前つき変数やレジスタに .Ar expr の値をセットします。 有効な変数名は後述します。 .It Cm break Ns Op Cm /u .Ar addr にブレークポイントをセットします。 .Ar count が指定されたら、ブレークポイントで停止するまで、 .Ar count - 1 回継続します。 ブレークポイントがセットされたら、ブレークポイント番号が .Sq Li \&# で表示されます。 この数字はブレークポイントを削除したり、 それに条件を追加するのに使うことができます。 .Pp 修飾子 .Li u が指定されると、 このコマンドはユーザ空間アドレスにブレークポイントをセットします。 .Li u オプションが指定されない場合は、 アドレスはカーネル空間のものであると判断され、 空間アドレスが間違っていると、 それは受け付けられずエラーメッセージが表示されます。 この修飾子は マシン依存ルーチンによってサポートされているときのみ使うことができます。 .Pp .Sy 警告 : ユーザテキストが通常のユーザ空間デバッガによってシャドウされている場合は、 ユーザ空間のブレークポイントは正しく動作しません。 また、低レベルのコードパスにおいてブレークポイントをセットすると 奇妙なことも起こるかもしれません。 .It Cm delete Ar addr .It Cm delete Li \&# Ns Ar number ブレークポイントを削除します。 削除対象のブレークポイントは .Li # でブレークポイント番号を指定するか、 元の .Cm break コマンドで指定したものと同じ .Ar addr によって指定します。 .It Cm step Ns Op Cm /p .Ar count 回シングルステップで実行します (ここではカンマは必ず付けなければなりません)。 修飾子 .Li p が指定されると、各ステップ毎に命令を表示します。 これが指定されない場合は、最後の命令のみを表示します。 .Pp .Sy 警告 : マシンのタイプによって異なります。 いくつかの低レベルのコードパスやユーザコードのシングルステップ実行は できないかもしれません。 ソフトウェアによってシングルステップをエミュレートしているマシン (例: pmax) では、割り込みハンドラで実行されているコードからの ステップ実行はおそらく間違ったことを行うことになるでしょう。 .It Cm continue Ns Op Cm /c ブレークポイントかウォッチポイントまで実行を継続します。 修飾子 .Li c が指定されると、実行中の命令をカウントします。 pmax のようないくつかのマシンでは load と store もカウントします。 .Pp .Sy 警告 : カウント中はデバッガは何も表示せずにシングルステップを実行しています。 これは低レベルのコードでのシングルステップ実行が奇妙な振舞いを引き起こす かもしれないことを意味しています。 .It Cm until Ns Op Cm /p 次の call か return 命令で止まります。 修飾子 .Li p が指定されると、 深くネストした call と命令の累積カウントを各 call もしくは return で表示します。 この指定がなければ、マッチする return にヒットした時にのみ表示します。 .It Cm next Ns Op Cm /p .It Cm match Ns Op Cm /p マッチする return 命令で止まります。 修飾子 .Li p が指定されると、 深くネストした call と命令の累積カウントを各 call もしくは return で表示します。 この指定がなければ、マッチする return にヒットした時にのみ表示します。 .It Xo .No Cm trace Ns Op Cm /u .Op Ar frame .Op Ar ,count .Xc スタックトレース。 オプション .Li u を指定すると、ユーザ空間をトレースします。 これがなければ、 .Cm trace はカーネル空間のみをトレースします。 .Ar count はトレースされるフレーム数です。 .Ar count が省略されると、全てのフレームが表示されます。 .Pp .Sy 警告 : ユーザ空間スタックトレースは、 マシン依存コードによってサポートされている場合のみ有効となります。 .It Xo .No Cm search Ns Op Cm /bhl .Ar addr .Ar value .Op Ar mask .Op Ar ,count .Xc メモリ中で .Ar value を検索します。 もし検索した値が見つからなければ、 このコマンドは興味深い方法で失敗するでしょう。 これは ddb がメモリを不正にアクセスした場合に常にリカバーしているわけでは ないことに起因しています。 オプションの引数 .Ar count によって検索を制限します。 .It Cm show all procs Ns Op Cm /m .It Cm ps Ns Op Cm /m 全てのプロセスの情報を表示します。 プロセスの情報はマシンによってサポートされていない場合や、 ターゲットのプロセスのスタックの底がその時にメインメモリにない場合は 表示されないかもしれません。 修飾子 .Li m によって、プロセスの VM マップアドレスを表示し、 他の情報を表示しないようにできます。 .It Cm show registers Ns Op Cm /u レジスタセットを表示します。 オプション .Li u が指定されると、カーネルか現在セーブされているものの代わりに ユーザレジスタが表示されます。 .Pp .Sy 警告 : 修飾子 .Li u のサポートはマシンに依ります。 サポートされていない場合は、正しくない情報が表示されるでしょう。 .It Xo .Cm show map Ns Op Cm /f .Ar addr .Xc .Ar addr における VM マップを表示します。 修飾子 .Li f が指定されると、完全なマップが表示されます。 .It Xo .Cm show object Ns Op Cm /f .Ar addr .Xc .Ar addr における VM オブジェクトを表示します。 オプション .Li f が指定されると、完全なオブジェクトが表示されます。 .It Cm "show watches" 全てのウォッチポイントを表示します。 .It Xo .Cm watch .No Ar addr Ns Li \&, Ns Ar size .Xc ある領域にウォッチポイントをセットします。 その領域への変更が試みられた時に、実行は停止します。 引数 .Ar size のデフォルトは 4 です。 間違った空間アドレスを指定すると、その要求は拒否されエラーメッセージが 表示されます。 .Pp .Sy 警告 : ハードコーディングされたカーネルメモリをウォッチポイントにセットすると、 i386 のようないくつかのシステムでは復旧不可能なエラーが発生することがあります。 ユーザアドレスでのウォッチポイントがもっともうまく動作します。 .It Cm gdb -リモート GDB モードと DDB モードを切替えます。 +リモート GDB モードと DDB モードを切り替えます。 リモート GDB モードでは、 リモートデバッグ機能を使って .Xr gdb 1 を実行するためにターゲットマシンのシリアルコンソールに接続されているもう 1 台のマシンが必要となります。 現在は .Em i386 アーキテクチャでのみ利用することができます。 .It Cm help 利用可能なコマンドとコマンドの短縮形の要約を表示します。 .El .Sh 変数 デバッガはレジスタと変数を .No Li \&$ Ns Em name としてアクセスします。 レジスタ名は .Dq Cm show registers コマンドで示されるものです。 変数には変数名の頭に数字を付加したり、 変数名の直後にコロンに続いていくつかの修飾子を指定することができます。 たとえば、レジスタ変数は .Li $eax:u のように修飾子 .Li u をつけてユーザレジスタを表すことができます。 .Pp 現在サポートされているビルトイン変数には次のものがあります。 .Bl -tag -width tabstops -compact .It Li radix 入力と出力の基数 .It Li maxoff offset が maxoff より大きくなければ、 アドレスは 'symbol'+offset として表示されます。 .It Li maxwidth 表示行の幅 .It Li lines 行数。"more" 機能で使われます。 .It Li tabstops タブストップ幅。 .It Li work Ns Ar xx ワーク変数。 .Ar xx は 0 から 31 の値をとることができます。 .El .Sh 式 .Sq Li \&~ と .Sq Li \&^ と 単項演算子の .Sq Li \&& を除き、C 言語のほとんど全ての式の演算子がサポートされています。 .Nm での特別ルールは以下の通りです。 .Bl -tag -width Identifiers .It Em 識別子 シンボルの名称はシンボルの値に翻訳されます。 それは対応するオブジェクトのアドレスとなります。 .Sq Li \&. と .Sq Li \&: は識別子に使うことができます。 オブジェクトフォーマット依存ルーチンによってサポートされていれば、 .No Xo .Op Em filename Ns Li \&: .Em func Ns Li \&: Ns Em lineno .Xc と .No Xo .Op Em filename Ns Li \&: .Em variable .Xc と .No Xo .Op Em filename Ns Li \&: .Em lineno .Xc はシンボルとして受け入れられます。 .It Em 数字 基数は最初の 2 文字で決定されます。 .Li 0x は 16 進数, .Li 0o は 8 進数, .Li 0t は 10 進数となり、これらの他は現在の基数にしたがいます。 .It Li \&. `dot' .It Li \&+ `next' .It Li \&.. 検査した最後の行の始めのアドレス。 `dot' や `next' とは違い、これは .Dq Li examine か .Dq Li write コマンドでのみ変更されます。 .It Li \&' 明示的に指定した最後のアドレス。 .It Li \&$ Ns Em variable 指定された変数の値に翻訳されます。 これに .Li : と修飾子を前述したように続けることができます。 .It Em a Ns Li \&# Ns Em b 左側を右側の次の倍数に切り上げる 2 項演算子。 .It Li \&* Ns Em expr 間接。 これに .Sq Li : と修飾子を前述したように続けることができます。 .El .Sh 関連項目 .Xr gdb 1 .Sh 歴史 .Nm デバッガは Mach 用に開発され、386BSD 0.1 に移植されました。 このマニュアルページは Garrett Wollman によって .Fl man マクロから書き換えられました。 diff --git a/ja_JP.eucJP/man/man4/opie.4 b/ja_JP.eucJP/man/man4/opie.4 index 6beed6b582..95418ad4fb 100644 --- a/ja_JP.eucJP/man/man4/opie.4 +++ b/ja_JP.eucJP/man/man4/opie.4 @@ -1,430 +1,430 @@ .\" opie.4: Overview of the OPIE software. .\" .\" %%% portions-copyright-cmetz-96 .\" Portions of this software are Copyright 1996-1997 by Craig Metz, All Rights .\" Reserved. The Inner Net License Version 2 applies to these portions of .\" the software. .\" You should have received a copy of the license with this software. If .\" you didn't get a copy, you may request one from . .\" .\" Portions of this software are Copyright 1995 by Randall Atkinson and Dan .\" McDonald, All Rights Reserved. All Rights under this copyright are assigned .\" to the U.S. Naval Research Laboratory (NRL). The NRL Copyright Notice and .\" License Agreement applies to this software. .\" .\" History: .\" .\" Modified by cmetz for OPIE 2.2. Removed MJR DES documentation. Removed .\" references to the old square brackets challenge delimiters. .\" Modified at NRL for OPIE 2.01. Updated UNIX trademark credit. .\" Definition of "seed" written by Neil Haller of Bellcore .\" Written at NRL for OPIE 2.0. .\" .\" WORD: challenge チャレンジ、誰何 .\" WORD: checksum チェックサム、検査合計(JIS-08.03.05) .\" WORD: cryptographic checksum 暗号的検査合計、暗号的チェックサム、暗号論的チェックサム .\" WORD: hash identifier ハッシュ識別子 .\" WORD: keystroke キー操作 .\" WORD: MD4 Message Digest MD4によるメッセージダイジェスト .\" WORD: MD5 Message Digest MD5によるメッセージダイジェスト .\" WORD: response レスポンス、応答 .\" WORD: secret pass phrase 秘密のパスフレーズ .\" WORD: secret password 秘密のパスワード(password:合言葉;JIS-08.06.05) .\" WORD: secure hash セキュアハッシュ、(暗号的)ハッシュ関数、(暗号)ハッシュ関数 .\" WORD: seed シード、種 .\" WORD: sequence number シーケンス番号 .\" .TH OPIE 4 "January 10, 1995" .\" jpman %Id: opie.4,v 1.3 2000/08/14 23:52:15 horikawa Stab % .SH 名称 .B OPIE \- 全てにワンタイムパスワードを .SH 解説 .LP OPIE は Bellcore 社の S/Key の第 1 版の配布物から派生したパッケージです。 このパッケージは、繰り返し攻撃 (下記参照) からシステムを守るのに役立ちます。 OPIE ではこのような機能を果たす為に、暗号的ハッシュ関数と チャレンジ / レスポンスシステムを用いています。 このパッケージでは、 .IR login (1) や、 .IR su (1) および、 .IR ftpd (8) などとの置換えとして OPIE 認証を組み込んだプログラムを提供しています。 更に、OPIE 認証を用いるためには、プログラムをどの様に書き直すべきか ということも例示します。 OPIE は、合衆国海軍研究所 (the United States Naval Research Laboratory "NRL") において、同研究所で使用する為に開発されました。 OPIE の或る部分は、 Berkeley Standard Distribution UNIX 及び、 Bellcore 社の S/Key の Version 1 の配布物から派生したものです。 .LP 通常のユーザの観点からすれば、 OPIE とは、ユーザのアカウントをクラックから守ってくれるものの、 面倒くさいというのが実情でしょう。 ユーザが初めて OPIE を使いたいと思ったときには、 .IR opiepasswd (1) コマンドを用いて、自分自身に関する項目を OPIE データベースに 登録する必要があります。 その後であれば、このユーザは、OPIE を組み込んだどのようなプログラムにおいても、 自らを認証するために OPIE を使用できます。 他に何もクライアントが使用されていない場合には、 .I telnet, .I rlogin, .I ftp によってシステムにログインするとき、 (モデムのような) 端末回線にログインするとき、 -他のユーザにアカウントを切替えるときに、 +他のユーザにアカウントを切り替えるときに、 OPIE を使用できます。 通常ならユーザにパスワードの入力を求めるというような場面では、 サーバはチャレンジを表示します。 この時、ユーザは、チャレンジをコピーして (又は、 ウィンドウシステムのようなもの によってコピーペーストが行えない場合には、手でタイプし直して) OPIE 計算機に入力し、 更にパスワード (パスフレーズ) も OPIE 計算機に入力しなければなりません。 それから、このユーザのパスワードとして、OPIE 計算機からレスポンス をコピーしなければなりません (又は、手でタイプし直さなければなりません)。 最初は、このような手続きは厄介に思えるかもしれません。 しかしながら、いくらか練習をすれば容易になるものです。 .SH 術語 .TP .I ユーザ名 システムがユーザを識別する名前です。例えば、"jdoe"。 .TP .I 秘密のパスワード 秘密のパスワードは通常ユーザが選定するもので、システムへのアクセス権を得る為に 必要となります。例えば、"SEc1_rt" 。 .\" 注: OPIE 固有のパスワードである "pass phrase" もあるので注意!(By T.F.) .TP .I チャレンジ (誰何) ユーザを認証する必要がある場合にシステムにより表示される、 一組の情報です。 OPIE では、チャレンジを構成する組合せは、 ハッシュ識別子、シーケンス番号、及びシード (種) の 3 項目です。 OPIE 計算機が適正なレスポンスを生成するには、 これらの情報が必要です。 例えば、"otp-md5 95 wi14321"。 .TP .I レスポンス (応答) このチャレンジから生成される一組の情報は、ユーザを認証する為にシステムにより 使用されます。 OPIE におけるレスポンスは、6 個の単語を一組にしたもので、その生成は チャレンジと秘密のパスワードを入力して OPIE 計算機を用いて 行います。 例えば、"PUP SOFT ROSE BIAS FLAG END"。 .TP .I シード (種) これは、レスポンスを計算する為に秘密のパスワードとシーケンス番号と一緒に 使用される 1 個の情報です。 その目的は同一の秘密のパスワードを、 シードを変更するだけで複数のチャレンジレスポンス系列に対して 使用できるようにしたり、 異なるシードを使うことで複数のマシンに対する認証に 使用できるようにすることです。 .TP .I シーケンス番号 鍵の繰り返しを見張るために用いられるカウンタです。 OPIE では、システムが受け取るレスポンスが成功する度に シーケンス番号は減っていきます。 例えば、"95" 。 .TP .I ハッシュ識別子 正しいレスポンスを生成するために使用する、 実際のアルゴリズムを識別するための文字列です。 OPIE では、有効なハッシュ識別子は 2 つしかありません。 1 つ目のハッシュ識別子は "otp-md4" で MD4 のハッシュ関数を指定します。 そして、 2 つ目のハッシュ識別子は "otp-md5" で MD5 のハッシュ関数を指定します。 .SH 繰り返し攻撃 読者が .IR telnet (1) のようなネットワーク通信プログラムを使用しているときや、 コンピュータシステムにログインするためにモデム迄も用いているときには、 ログイン名と秘密のパスワードが必要となります。 読者のログイン名と秘密のパスワードをシステムに入力できる人であれば、誰でも 読者であると識別されてしまいます。 それと言うのも、理論的には読者のパスワードを知っているのは 読者しかいないはずだからです。 残念なことに、今や多くのコンピュータ通信メディアでは盗聴が容易になっています。 モデムや多様なネットワークによって通信するとき、 ユーザのパスワードは遠隔地へのリンクにおいて通常安全とは言えません。 ユーザがパスワードをネットワークに流すときクラッカーが盗聴していたら、 そのクラッカーはパスワードのコピーを手に入れて何時でも好きなときに 読者のアカウントに侵入することができます。 一度ならず、インターネット上の多くのサイトではこの通りの手口で 侵入されてきました。 .LP 攻撃者にしてみればたった一度でよいからパスワードを捕捉して、 サーバに要求されたときに そのパスワードを繰り返しさえすればよいのです。 たとえパスワードが符号化や暗号化されてマシン間で通信されていても、 クラッカーが事前に捕捉していた通信を繰り返しするだけで侵入できる限り、 ユーザは危険な状態にあります。 ごく最近まで、Novell NetWare はこれが弱点でした。 クラッカーには本当のパスワードが何であるかは分かりませんでした。 しかし、クラッカーは知る必要もなかったのです \(em 何故なら、ユーザのアカウントに侵入する為には、 暗号化されたパスワードを捕捉しサーバに要求されたときに そのパスワードを返信しさえすればよかったからです。 .SH ワンタイムパスワード 繰り返し攻撃の問題に対する一つの解決策は、 パスワードを符号化する方法を変え続ける ことで、リンクを越えて他のシステムに送り込まれる暗号を 唯一度だけしか使用できないようにすることです。 もしこのようなことが可能であれば、 クラッカーは何度でも気が済む迄繰り返し攻撃が できるでしょう \(em しかし、 幾らやってもどこのシステムにも侵入できないでしょう。 とはいえここで重要なことは、符号化したパスワードを元にして 真のパスワードやこれから使用する符号化したパスワードを クラッカーが見破ってしまわない様な方法で、念入りに符号化を施すことです。 そうしなければ、符号化しない方式や固定的な符号化の方式に比べれば 改善ではあるものの、 やはりアカウントは侵入される可能性があります。 .SH S/KEY アルゴリズム これら総ての問題に対する解決策は、1981 年に Lamport が発明しました。 この技術は、Bellcore 研究所において Haller, Karn, Walden らにより 実装されました。 彼らが作成したフリーソフトウェアパッケージは "S/Key" と名付けられ、 暗号的チェックサム (暗号的検査合計) というアルゴリズムを使用していました。 暗号的チェックサムとは優れた一方向性の関数で、 関数の出力が分かったとしても それでもなお攻撃者は実質的には入力が特定できないようなものです。 そして、巡回冗長検査のチェックサム (CRC) と異なっていることは、 暗号的チェックサムには結果が同一のハッシュ値となる入力が 殆んど無いということです。 .LP S/Key では、変化するのはパスワードが暗号的ハッシュ関数に代入される回数です。 まずパスワードは暗号的ハッシュ関数に一度代入されます。 その出力のハッシュ関数値は再び暗号的ハッシュ関数に代入されます。 その出力値は更に又暗号的ハッシュ関数に代入されます。 そして、この繰り返しは、パスワードが暗号的ハッシュ関数に代入される回数が 目標のシーケンス番号に達するまで続けられます。 この方式は、まあ、例えばシーケンス番号をパスワードの前に挿入して 暗号的ハッシュ関数に一回だけ代入するやり方よりもかなり遅くはなります。 しかし、この方式にはユーザにとってとりわけ意義深い利点があります。 ユーザが接続しようとしているサーバマシンは 上述のゴチャゴチャの計算全体の結果が 正しいかどうかを判断するための何らかの手段を持たなければなりません。 サーバが何らの符号化もないままか、 或いは通常の符号化だけでパスワードを保管している 場合には、クラッカーはやはりユーザのパスワードを入手できるでしょう。 しかしサーバマシンが暗号的ハッシュでパスワードを保持しているならば、 シーケンス番号が変化しているのに、どうやって毎回レスポンスの変化 を計算すれば良いのでしょうか、 また、盗聴できないようなマシンにユーザがどうやっても辿りつけない場合には どうすべきでしょうか? ユーザはリンクを越えてパスワードを送信せずに どうやってパスワードを変更したらよいのでしょうか? .LP 心に留めておくべき Lamport が考案した巧妙な解決策とは、 シーケンス番号は常に 1 づつ減少させること、 次に S/Key システムでは 単にシーケンス番号 N のレスポンスを暗号的ハッシュ関数に代入して 計算するだけでシーケンス番号 N+1 のレスポンスを得ることがるできこと、 ただし、逆方向の計算はできないということです。 .\" cf.「Lamport署名方式」の使い捨て鍵署名。(By T.F.) さて、任意の指定された時刻に最後に有効であった システムが持っているレスポンスのシーケンス番号を N+1 とし、 ユーザがシステムに指定したレスポンスのシーケンス番号を N とします。 N 番のレスポンスを生成するパスワードが N+1 番の レスポンスを生成するパスワードと同じ場合には、N 番のレスポンスを 暗号的ハッシュ関数にもう一回代入して総計 N+1 回目の代入を行い、 N+1 番のレスポンスと同じものを得ることができます。 これら 2 個のレスポンスを比較して同じ場合には、N から 1 を引いて今 証明したばかりの N 番のキーを N+1 番の新しいキーにすることができます。 ユーザはこの新しいキーを保存して次回にキーを証明しなければならないときに 使用できます。 このことは次のことをも意味しています。 即ち、ユーザがパスワードを変更しなければならないのにマシンにアクセス する安全な方法がない場合には、ユーザのパスワードを認証する為に システムに本当に必要とされるものは、ユーザが開始したいシーケンス番号より 1 つだけ大きいシーケンス番号 に対する有効なレスポンスであるということです。 .LP 良い対策としてだけの理由で、実際にレスポンスを生成したり認証したりする時に、 この全ての認証のどちらの側においても パスワードに加えてシードを使用できます。 これにより、万一の時に備えて状況を複雑に混ぜ返すことに多少は役立ちます。 そうでなければ、潤沢な時間とディスクスペースを自由にできるクラッカーは、 数多くのありふれたパスワードに対応するレスポンスを全て生成して システムを打ち負かすことができるでしょう。 .LP 以上記述したことは決して S/Key アルゴリズムがどう機能するかということや 幾つかのより細部の項目 についての最良の説明ではありません。 ですから、ユーザはこの問題について現在公開されているいくつかの論文を 参照するべきでしょう。 以上は覆いの下で何が行われているかということについてのほんの間に合わせの 入門です。 .SH OPIE の構成要素 OPIE 配布物は 3 つの標準的なクライアントプログラムに組み込まれています。 即ち、 .IR login (1) , .IR su (1) , 及び .IR ftpd (8) です。 .LP OPIE 配布物には又、OPIE システムに固有な 3 つのプログラムがあります。 即ち、 .IR opiepasswd (1) はユーザがパスワードを設定したり変更したりするのに使用します。 .IR opieinfo (1) はユーザが現在のシーケンス番号やシードを調べるために使用します。そして、 .IR opiekey(1) は OPIE 鍵計算機です。 .SH OPIE のユーザプログラムへの組み込み OPIE 配布物にクライアントとして含まれている プログラム以外のユーザプログラムに OPIE 認証を組み込むことはさして困難なことではありません。 まず第 1 に、プログラムのどこかに が include されていることを 確認しなければなりません。 次に、 や他の include 宣言の後方でかつ、変数宣言の前方に、 を include しなければなりません。 "struct opie" 型の変数を読者のプログラムに加えなければなりません。 読者がユーザのパスワードを格納するのに用いるバッファが OPIE_RESPONSE_MAX+1 個の文字を充分保持できるだけ大きいことを確認する必要があります。 そして、チャレンジ文字列を格納するバッファも OPIE_CHALLENGE_MAX+1 個の文字を 充分保持できるだけ大きいことを確認しなければなりません。 .LP 読者がチャレンジ文字列を表示してユーザの名前を知ろうとする時は、 opiechallenge 関数を呼出して下さい。 更に、受取ったレスポンスを照合する為には opieverify 関数を呼出して下さい。 例えば、 .sp 0 .sp 0 #include .sp 0 . .sp 0 . .sp 0 #include .sp 0 . .sp 0 . .sp 0 char *user_name; .sp 0 /* 常に末尾のヌル文字を忘れないこと! */ .sp 0 char password[OPIE_RESPONSE_MAX+1]; .sp 0 . .sp 0 . .sp 0 struct opie opiedata; .sp 0 char opieprompt[OPIE_CHALLENGE_MAX+1]; .sp 0 . .sp 0 . .sp 0 opiechallenge(&opiedata, user_name, opieprompt); .sp 0 . .sp 0 . .sp 0 if (opieverify(&opiedata, password)) { .sp 0 printf("Login incorrect"); .sp 0 .SH 端末のセキュリティと OPIE ユーザが OPIE を使用する際には、誰かが盗聴をしてパスワードを捕捉できるような 安全でない経路を通じてパスワードを送信しない様に注意しなければなりません。 回線を盗聴してパスワードを取得しようとする者から、 ユーザを OPIE は保護可能です。しかし、これは実は限られた場合であって、 ユーザが必ずパスワードそのものを通信回線に送信しない様に 行動する時だけです。 肝腎なことは、OPIE 計算機を動作させるマシンは、常にユーザが 現実に手元で使用しているマシンでなければならないということで \(em 決してネットワークやダイアルアップ回線の向こう側のマシンであってはいけません。 .LP X ウィンドウシステムに関しては注意が必要です。 その理由は X ウィンドウシステムを使うと事情が大きく変わるからです。 例えば、ユーザが xterm (又は好みの同等プログラム) をどこか別のマシン上で動作させ それをユーザのマシンに表示させる場合には、OPIE 計算機を そのウィンドウで動作させてはいけません。 秘密のパスワードをキーインした場合には、 パスワードはやはりネットワーク上を xterm が 動作しているマシンまで伝送されます。 ネットワーク越しにしか OPIE 計算機を動作させられない X 端末のようなマシン を使用している人達は特に危険にさらされています。 というのも、実はこのような人達には他に選択の余地がないからです。 また、他の何らかのウィンドウシステム (例えば、NeWS) と同じように X ウィンドウシステムを使用している場合、 喩え OPIE 計算機をローカルマシン上で 動作させていたとしても読者のキー操作を読んでパスワードを 捕捉することは往々にして可能です。 X サーバを守るために常に読者のシステムで利用可能な 最高のセキュリティ手段を使用するべきです。 たとえそれが、XDM-AUTHORIZATION-1 や XDM-MAGIC-COOKIE-1、或いは ホストアクセスコントロールであったとしても。 *決して*どのマシンでも読者のサーバに接続できるようにしてはいけません。 何故なら、こうしてしまうと、読者が気がつかないうちに、読者の何らかの ウィンドウやキー操作を読み出すことを、任意のマシンに許すことになるからです。 .SH 関連項目 .BR ftpd (8) .BR login (1), .BR opie (4), .BR opiekeys (5), .BR opieaccess (5), .BR opiekey (1), .BR opieinfo (1), .BR opiepasswd (1), .sp Lamport, L. "Password Authentication with Insecure Communication (安全でない通信におけるパスワードの認証)", Communications of the ACM 24.11 (November 1981), pp. 770-772。 .sp Haller, N. "The S/KEY One-Time Password System (S/Key ワンタイムパスワードシステム)", Proceedings of the ISOC Symposium on Network and Distributed System Security, February 1994, San Diego, CA.。 .sp Haller, N. and Atkinson, R, "On Internet Authentication (インターネットの認証に関して)", RFC-1704、 DDN Network Information Center, October 1994。 .sp Rivest, R. "The MD5 Message Digest Algorithm (MD5 によるメッセージダイジェストのアルゴリズム)", RFC-1321、 DDN Network Information Center, April 1992。 .sp Rivest, R. "The MD4 Message Digest Algorithm (MD4 によるメッセージダイジェストのアルゴリズム)", RFC-1320、 DDN Network Information Center, April 1992。 .SH 作者 Bellcore 社の S/Key は Bellcore 社の Phil Karn, .br Neil M. Haller, John S. Walden が書きました。 OPIE は NRL において Randall Atkinson, Dan McDonald, Craig Metz が作成しました。 "S/Key" はベル通信研究所 (Bell Communications Research [Bellcore]) の 所有する登録商標です。 "UNIX" は X/Open の所有する登録商標です。 .SH 連絡先 OPIE は Bellcore 社の「 S/Key ユーザーズ」メーリングリスト において議論されています。 このメーリングリストに参加するには、申込みの電子メールを次のアドレスに 送って下さい: .sp skey-users-request@thumper.bellcore.com .\" 翻訳: Tetsuro Furuya (古谷 哲郎) , 1999. .\" ML: 猿丸(旧姓: 太田)芳彦 (Yoshihiko SARUMARU) .\" ML: Kazuo Horikawa (堀川和雄) .\" 査読: diff --git a/ja_JP.eucJP/man/man4/pcvt.4 b/ja_JP.eucJP/man/man4/pcvt.4 index 149186df66..ca2d7a2024 100644 --- a/ja_JP.eucJP/man/man4/pcvt.4 +++ b/ja_JP.eucJP/man/man4/pcvt.4 @@ -1,931 +1,931 @@ .\" .\" Copyright (c) 1992, 1995 Hellmuth Michaelis, Brian Dunford-Shore, .\" Joerg Wunsch and Holger Veit. .\" .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by Hellmuth Michaelis, .\" Brian Dunford-Shore, Joerg Wunsch and Holger Veit. .\" 4. The name authors may not be used to endorse or promote products .\" derived from this software without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR .\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES .\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. .\" IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT, .\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT .\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, .\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY .\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" .\" @(#)pcvt.4, 3.20, Last Edit-Date: [Sun Apr 2 18:23:39 1995] .\" jpman %Id: pcvt.4,v 1.3 2000/08/31 13:57:19 koich Stab % .\" %Id: pcvt.4,v 1.14.2.1 1999/02/07 05:43:14 yokota Exp % .\" .\" Man page pcvt(4) created after pcvt_ioctl.h on 13-Jan-93 .\" by Joerg Wunsch .\" .\" updated for rel 2.10 (-hm) .\" updated for rel 2.20 (-hm) .\" updated for rel 3.00 (-jw) .\" updated for final rel 3.00 (-hm) .\" removed references to 386BSD (-hm) .\" .\" WORD: virtual screen 仮想スクリーン .\" WORD: character set 文字集合 .Dd February 27, 1994 .Dt PCVT 4 i386 .Sh 名称 .Nm pcvt , .Nm vt .Nd PC コンソール仮想スクリーンシステム .Sh 書式 options .Do .Em PCVT_FREEBSD = version | .Em PCVT_NETBSD = version .Dc .br .Op options Dq Em PCVT_NSCREENS = number .br .Op options Dq Em PCVT_XXXX .Po .Sx 設定 の項目を参照してください。 .Pc .Pp .Cd "device vt0 at isa? tty" .Sh 説明 .Ss 概要 .Nm pcvt ドライバは、伝統的なコンソールドライバには無いいくつかの 機能を持った仮想スクリーンシステムを提供します。 複数の仮想スクリーンを扱えるほか、おそらく最も重要なものは 広範囲にわたる DEC VT-220 .if t \(tm .if n (TM) エミュレーションです。詳細は .Sx 特徴 の項目を参照してください。 .Pp .Nm pcvt ドライバを使用するには .Nm atkbd キーボードドライバがカーネルで設定されていることが必要です。 .Ss 特徴 .Bl -bullet .It ほぼ完全な DEC VT220 .if t \(tm .if n (TM) の機能 .Po VT320 .if t \(tm .if n (TM) へ移行中 .Pc 。 .It MDA/HGC/CGA/EGA および VGA のための完全に独立な仮想端末。 .It それぞれの仮想スクリーンに対する 25, 28, 35, 40, 43 あるいは 50x80 のスクリーン解像度。 .It 各国のキーボードをサポートするための、完全に再マップ可能なキーボード。 .It すべての VT220 文字集合に加え、ISO Latin-1 と DEC technical をサポート。 .It EGA/VGA 使用時における VT220 のダウンロード可能な文字集合の利用。 .It それぞれの仮想端末に対する VT220 ユーザ定義キー。 .It Hewlett-Packard のオプショナルなファンクションキーラベルのサポート。 .It ファンクションコードの表示機能。 .It MDA, CGA, EGA および VGA ディスプレイアダプタのサポート。 .It VGA チップセットにおける 132 カラムのサポート。 .It XFree86 バージョン 1.2 以上では pccons モデル、2.0 以上では syscons モデルを用いた X ウィンドウシステムのサポート .Po .Em PCVT_USL_VT_COMPAT が設定されていることが必要です .Pc 。 .El できないこと: .Bl -bullet .It 2 倍角文字は扱えません。 .It softscroll はありません。 .It 背景の反転はできません。 .It VT220 のプリンタ出力はサポートしません。 .It VT52 の機能のサポートは全くありません。 .It 8 ビットコントロールは使えません。 .It AT キーボード .Pq 84 キー に対しては、 .Pq 未だに 限定されたサポートしかありません。 .It お金を稼ぐのを助けることはできません... .El .Ss 設定 現在 .Nm pcvt コンソールドライバは、 Intel ベースの BSD オペレーティングシステムである .Tn NetBSD/i386 (リリース 0.9 以上) および .Tn FreeBSD (リリース 1.0-GAMMA 以上) で利用できます。 システムからの適切なサポートを得るために、 .Em PCVT_NETBSD または .Em PCVT_FREEBSD のうちどちらかのオプションをシステムの設定ファイルで 指定しなければなりません .Pq Xr config 8 を参照してください 。 さらに .Tn FreeBSD および .Tn NetBSD では、これらのオプションにオペレーティングシステムのバージョン番号を 設定する必要があります。 .Tn FreeBSD では、バージョン番号を 3 桁の数字で表現しなければなりません。 例えば、1.0 release .Pq 実際にはバージョン 1.0.2 を使っているなら、 .Em PCVT_FREEBSD = 102 のように定義しなければなりません。 .Em NetBSD では、NetBSD 0.9 の場合、このバージョン番号は 9 と表現されなければならず、 NetBSD-current (1.0 以前) の場合は 9 より大きい任意の値になります。 NetBSD 1.0の場合は ( .Tn FreeBSD と同様に) 100 を、NetBSD-current では 999 を使うことが推奨されます。 例えば .Nx 1.0 release の場合、 .Em PCVT_NETBSD = 100 と定義すべきです。 .Nm pcvt ドライバは、すべての人の要求を満足させるため、高度に設定可能であるように 設計されてきました。望ましい設定方法は、おそらくデフォルト値を 上書きするような形で、設定ファイルに適切な .Em options 行を書き込むことです。こうすることで、それぞれ異なる振る舞いをする ドライバを持つ別個のカーネルを 1 台のマシン上で コンパイルすることが可能です。 利用可能な設定オプションの通覧を次のリストに示します。 詳細はカーネルソースツリーの .Pa i386/isa/pcvt/pcvt_hdr.h を参照してください。 ノート: すべてのブール値オプションについて、次のような約束をします。 もしあるオプションが値なしで与えられた場合、1 という値 .Pq 有効 になります。 オプション値として 0 が与えられた場合、そのオプションは 無効になります。それ以外の値では 1 になります。 オプションが省略された場合、デフォルトの動作が仮定されます。 .Bl -tag -width indent -compact .It Em PCVT_NSCREENS 仮想スクリーンの数を定義します。 .br デフォルト: 8 .It Em PCVT_VT220KEYB 有効にすると、DEC VT200 (TM) に似たキーボードレイアウトが生成されます。 無効状態では、VT220 と HP の混成が使われます。完全な説明は、 .Nm pcvt のドキュメントディレクトリにある .Pa Keyboard.VT および .Pa Keyboard.HP というファイルを参照してください。 .br デフォルト: オフ .It Em PCVT_SCREENSAVER 内蔵スクリーンセーバの機能を有効にします。 .br デフォルト: オン .It Em PCVT_PRETTYSCRNS 有効状態では、星が点滅するスクリーンセーバが使われます。 無効にすると、スクリーンは単純に暗転します .Pq これは省電力モニタに対して有用でしょう 。 .br デフォルト: オン .It Em PCVT_CTRL_ALT_DEL 有効にすると、 .Aq Em Ctrl .Aq Em Alt .Aq Em Del というキーの組合わせで CPU をリセットします。 .br デフォルト: オフ .It Em PCVT_USEKBDSEC キーボードに対するセキュリティロックをオーバライドしません。 .br デフォルト: オン .It Em PCVT_24LINESDEF 有効にすると、オリジナルの DEC VT220 (TM) に対して互換性を 高める目的のためだけに、デフォルトの 25 行モードから 24 行モードにします。 .Po VT エミュレーションは 25 行で、HP エミュレーションは 28 行です .Pc したがって、特に変更をしなくても、それらの端末のための端末情報を利用する ことができるでしょう。これはスタートアップオプションであることに 注意してください。 .Xr scon 1 ユーティリティで 24 行モードと 25 行モードを 切り替えることができます。 .br デフォルト: オフ .It Em PCVT_EMU_MOUSE キーパッド経由で 3 ボタンマウスをエミュレートします。 ノートブックで XFree86 を使う時に便利です。後述の .Sx マウスエミュレーション の項目を参照してください。 .br デフォルト: オフ .It Em PCVT_META_ESC 有効にすると、 .Aq Em Alt キーと共に押されたキーは、 .Aq Em esc により構成されるシーケンスの後に、通常のキーコードを生成します。 無効状態では、通常のキーコードに .Em 0x80 を加算したものが送られます。 .br デフォルト: オフ .El 主にデバッグやハードウェアの問題に対処するために、さらにオプションが 用意されています。 .Pa i386/isa/pcvt/pcvt_hdr.h に説明があります。 .Ss 内部機能 .Nm pcvt ドライバに関連するデバイスノード上のオープンファイル記述子をともなって .Xr ioctl 2 システムコールを呼ぶことで、 以下に述べるような機能にアクセスすることができます。 それらを利用するためには、プログラムは次の行を含む必要があります: .Dl #include 以下に引用されたパラメータの定義は、このファイルの中に 見つけることができるでしょう。 .Em キーボードに関連する機能 基本的なキーボードのハードウェアに関係する機能が 3 つあります。 .Bl -tag -width 20n -offset indent -compact .It KBDRESET キーボードをリセットし、デフォルト値を設定します。 .It KBDGTPMAT 現在のキーリピートに関する値を取得します。パラメータは 値を格納する int 型変数へのポインタです。 .It KBDSTPMAT 現在のキーリピートに関する値を設定します。 パラメータは上のコマンドと同様です。 .El 適切な定数を表すシンボル値が利用できます。 キーリピート遅延時間の初期値を指定するのは、 250 ミリ秒を表す KBD_TPD250 から、1000 ミリ秒を表す KBD_TPD1000 までの 250 ミリ秒刻みの値です。 キーリピート速度は、 毎秒 30.0 文字を表す KBD_TPM300 から、 毎秒 2.0 文字を表す KBD_TPM20 までの値があります。 中間値は、毎秒 30.0, 26.7, 24.0, 21.8, 20.0, 18.5, 17.1, 16.0, 15.0, 13.3, 12.0, 10.9, 10.0, 9.2, 8.6, 8.0, 7.5, 6.7, 6.0, 5.5, 5.0, 4.6, 4.3, 4.0, 3.7, 3.3, 3.0, 2.7, 2.5, 2.3, 2.1, 2.0 文字が指定できます。 .Bl -tag -width 20n -offset indent -compact .It KBDGREPSW キーリピートスイッチの値を取得します。 .It KBDSREPSW キーリピートスイッチの値を設定します。 .El これらも値を格納する int 型変数へのポインタをパラメータとして 受け取り、ドライバ内部のキーリピートフラグを操作します。 可能な値は KBD_REPEATOFF あるいは KBD_REPEATON です。 .Bl -tag -width 20n -offset indent -compact .It KBDGLEDS LED の状態を取得します。 .It KBDSLEDS LED の状態を設定し、キーボードのインジケータを操作します。 ただし、ドライバが保持するキーのロック状態には影響しません。 .El 引数であるポインタの指す int 型変数は KBD_SCROLLLOCK, KBD_NUMLOCK, KBD_CAPSLOCK という値をとり、これらは論理和の組み合わせの形で使われるでしょう。 .Bl -tag -width 20n -offset indent -compact .It KBDGLOCK SCROLL,NUM,CAPS の状態を取得します。 .It KBDSLOCK SCROLL,NUM,CAPS および LED の状態を設定します。 .El これらも、ドライバが持つ LED フラグの状態を 設定したり取得したりするのと同じ方法で使われるべきです。 .Em キーボードの再マップ .Nm pcvt ドライバの重要な機能の一つとして、 内蔵のキー定義を再定義できる機能があります。 .Bl -tag -width 20n -offset indent -compact .It KBDGCKEY 現在のキーの値を取得します。 .It KBDSCKEY 新しいキー割り当て値を設定します。 .It KBDGOKEY オリジナルのキー割り当て値を取得します。 .El これらがその機能を構成します。これらは次に述べる .Em struct kbd_ovlkey へのポインタを引数として受け取ります。 加えて、次のような関数があります。 .Bl -tag -width 20n -offset indent -compact .It KBDRMKEY キー割り当てを解除します。対象となるキー番号を保持する int 型変数への ポインタを受け取ります。 .It KBDDEFAULT すべてのキー割り当てを解除します。 .El .Bd -literal struct kbd_ovlkey /* キーの完全な定義 */ { u_short keynum; /* キーそのもの */ u_short type; /* キーのタイプ。以下を参照。 */ u_char subu; /* サブタイプ。書き込み時には無視される。 */ char unshift[KBDMAXOVLKEYSIZE+1]; /* 非 shift 時に生成される文字列。 */ u_char subs; /* サブタイプ。書き込み時には無視される。 */ char shift[KBDMAXOVLKEYSIZE+1]; /* shift 時に生成される文字列。 */ u_char subc; /* サブタイプ。書き込み時には無視される。 */ char ctrl[KBDMAXOVLKEYSIZE+1]; /* control 時に生成される文字列。 */ u_char suba; /* サブタイプ。書き込み時には無視される。 */ char altgr[KBDMAXOVLKEYSIZE+1]; /* altgr 時に生成される文字列。 */ }; .Ed .Em type フィールドの適切な値は次の通りです。 .Bl -tag -width 20n -offset indent -compact .It KBD_NONE 機能なし。キーは無効。 .It KBD_SHIFT キーボードシフト。 .It KBD_META オルタネートシフト。ASCII コードの 8 ビット目をセット。 .It KBD_NUM 数字シフト。数字キーパッドモードおよびアプリケーションモード。 .It KBD_CTL コントロールコードの生成。 .It KBD_CAPS CAPS シフト。大文字小文字を入れ替える。 .It KBD_ASCII ASCII コードを生成するキー。 .It KBD_SCROLL 出力を停止する。 .It KBD_FUNC ファンクションキー。 .It KBD_KP キーパッドキー。 .It KBD_BREAK 無視される。 .It KBD_ALTGR AltGr 変換機能。 .It KBD_SHFTLOCK シフトロック。 .It KBD_CURSOR カーソルキー .It KBD_RETURN .Dq Return あるいは .Dq Enter キー。 .El .Em サブタイプ フィールドは次のうちの どれか 1 つの値を保持します。 .Bl -tag -width 20n -offset indent -compact .It KBD_SUBT_STR キーは文字列に結び付けられています。 .It KBD_SUBT_FNC キーは機能に結び付けられています。 .El .Em マウスエミュレーション マウスエミュレータは (もし設定されていれば) Mouse Systems プロトコルを使って 3 ボタンマウスの振りをします。 仮想スクリーンによって使われていない、最初の .Nm pcvt デバイスノードがマウスデバイスです。 例えば、デフォルト値である 8 つの仮想スクリーンの場合、 .Pa /dev/ttyv0 から .Pa /dev/ttyv7 までが仮想スクリーンを表わし、 .Pa /dev/ttyv8 がマウスエミュレータデバイスとなるでしょう。 マウスエミュレーションは .Aq Em NumLock キーを押すことによりオンになります。 マウスポインタは数字キーパッドにより、そのキーが示す方向へ動きます。 始めは 1 ステップずつ動き、調整可能な時間 .Pq デフォルトは 500 ミリ秒 の後、約 6 倍まで加速します。 マウスボタンは 3 つの通常のキーにより エミュレートされ、デフォルトではこれらは .Aq Em \&F1 , .Aq Em \&F2 , および .Aq Em \&F3 のファンクションキーに割り当てられています。 ここで 2 種類の動作が選択できます: 通常ボタンと、 .Dq stickey ボタンです。 通常ボタンは、期待通りの振舞いをします。 .Dq stickey ボタンは、最初の押下のときに、押されていることが 通知され、そのキーがもう一度押されるか、 他のボタンをエミュレートしているキーが押されるまで、 .Dq 押されたまま の状態になっています。ボタンの押下と離しは、PC 内蔵スピーカにより、それぞれ .Dq ピリッ とか .Dq ピロッ という音でユーザに通知されます。 次のコマンドにより、エミュレーションを制御します。 .Bl -tag -width 20n -offset indent -compact .It KBDMOUSEGET 現在の定義を取得します。 .It KBDMOUSESET 新しい定義を設定します。 .El どちらも .Li mousedefs 構造体へのポインタを ioctl 呼び出し時の 3 番目の引数として受け取ります: .Bd -literal struct mousedefs { int leftbutton; /* "左ボタン" のキーに対応する (PC) スキャンコード */ int middlebutton; /* "中ボタン" のキーに対応する (PC) スキャンコード */ int rightbutton; /* "右ボタン" のキーに対応する (PC) スキャンコード */ int stickybuttons; /* 真ならば "sticky" である。 */ int acceltime; /* マウスポインタが加速し始めるまでのマイクロ秒単位の時間 */ /* デフォルト値: scan(F1), scan(F2), scan(F3), 偽, 500000 */ }; .Ed .Em ダウンロード可能な文字集合のインターフェイス EGA および VGA ビデオアダプタは、ダウンロード可能なソフトウェアフォントを 扱うことができます。どの IBM 互換 PC ビデオボードの .Sq ネイティブな文字集合 も、DEC 多国籍文字集合や ISO Latin-1 .Pq ISO 8859-1 の完全な表現は不可能なので、これは U**X 環境にとって有用です。 .Bl -tag -width 20n -offset indent -compact .It VGASETFONTATTR フォント属性を設定します。 .It VGAGETFONTATTR フォント属性を取得します。 .El これらはダウンロードフォントに関する情報を扱います。 .Em struct vgafontattr へのポインタを引数としてとります: .Bd -literal struct vgafontattr { int character_set; /* VGA 文字集合 */ int font_loaded; /* フォントがロードされているかされていないかのマーク */ int screen_size; /* スクリーン当たりの行数 */ int character_scanlines; /* 文字当たりのスキャンライン数 - 1 */ int screen_scanlines; /* スクリーン当たりのスキャンライン数 - 1 バイト */ }; .Ed それぞれのフォントのそれぞれの文字は、次の関数によりダウンロードされます。 .Bl -tag -width 20n -offset indent -compact .It VGALOADCHAR vga 文字をロードする。 .El .Em struct vgaloadchar へのポインタを引数としてとります: .Bd -literal struct vgaloadchar { int character_set; /* ロードする VGA 文字集合 */ int character; /* ロードする文字 */ int character_scanlines; /* 文字のスキャンライン数 */ u_char char_table[32]; /* VGA 文字の形のテーブル */ }; .Ed EGA あるいは VGA において、 .Em character_set フィールドは CH_SET0, CH_SET1, CH_SET2, CH_SET3 という値を とります。VGA では、最大 8 つのフォントをロードして持つことが できますので、CH_SET4, CH_SET5, CH_SET6, CH_SET7 という値も とることができます。 フォントサイズと、表示可能なスクリーンの .Pq 行単位の 高さの関係は、使われるビデオカードに依存することに注意してください: .Bd -literal スクリーンの大きさ (行の数) EGA VGA フォントサイズ 8 x 8 43 50 8 x 10 35 40 8 x 14 25 28 8 x 16 利用不可 25 .Ed .Em 一般的なスクリーン操作コマンド .Bl -tag -width 20n -offset indent -compact .It VGACURSOR カーソルの形を設定します。 .El 以下の構造体へのポインタを引数としてとります: .Bd -literal struct cursorshape { int screen_no; /* 設定するスクリーン番号。 */ /* -1 は現在のアクティブなスクリーン。 */ int start; /* トップスキャンライン。0 から 文字の高さ -1 の範囲 */ int end; /* エンドスキャンライン。0 から 文字の高さ -1 の範囲 */ }; .Ed .Bl -tag -width 20n -offset indent -compact .It VGASETSCREEN スクリーンの情報を設定します。 .It VGAGETSCREEN スクリーンの情報を取得します。 .El これらは、いくつかの一般的なドライバ内部変数へのインタフェースを提供します。 それらの内部変数は、スクリーンの振舞いを変更したり、 -単にドライバをある一つのスクリーンへ強制的に切替えたりするものです。 +単にドライバをある一つのスクリーンへ強制的に切り替えたりするものです。 以下の構造体へのポインタを引数としてとります: .Bd -literal struct screeninfo { int adaptor_type; /* インストールされているビデオアダプタの */ /* タイプ。 */ /* 読み取り専用。書き込み時は (未だ!) 無 */ /* 視されます。 */ int totalfonts; /* ダウンロード可能なフォントの数。 */ /* 読み取り専用。書き込み時は無視されま */ /* す。 */ int totalscreens; /* 仮想スクリーンの数。 */ /* 読み取り専用。書き込み時は無視されま */ /* す。 */ int screen_no; /* 構造体の情報を取得したスクリーン番号。 */ /* 書き込み時に -1 ならば pure_vt_mode */ /* または/かつ screen_size を現在のスク */ /* リーンに適用し、それ以外ならば与えられ */ /* た screen_no のスクリーンに適用します。*/ int current_screen; /* 現在表示されているスクリーン番号。 */ /* 書き込み時に -1 ならば現在表示されてい */ /* るスクリーンをカレントスクリーンとし、 */ /* それ以外なら現在表示されているスクリー */ - /* ンをパラメータのスクリーンに切替えま */ + /* ンをパラメータのスクリーンに切り替えま */ /* す。 */ int pure_vt_mode; /* 純粋な VT モードか HP/VT モードかを表 */ /* すフラグ。 */ /* 書き込み時に -1 ならば変更しません。 */ int screen_size; /* スクリーンサイズ。 */ /* 書き込み時に -1 ならば変更しません。 */ int force_24lines; /* 純粋な VT220 のスクリーンサイズを得る */ /* ために 25 ライン VT モードか、 */ /* 28 ライン HP モードの場合に 24 ライン */ /* を強制します。 */ /* 書き込み時に -1 ならば変更ません。 */ int vga_family; /* adaptor_type が VGA ならば、読み取り後 */ /* チップセットファミリを反映しています。 */ /* 書き込み時には何も起こりません... */ int vga_type; /* adaptor_type が VGA ならば、読み取り後 */ /* チップセットを反映しています。 */ /* 書き込み時には何も起こりません... */ int vga_132; /* ドライバが 132 カラムをサポートしてい */ /* る場合、1 が設定されます。 */ /* 現在、書き込み時には無視されます。 */ }; .Ed .Em pure_vt_mode フィールドは、ファンクションキーラベルとステータスラインを伴う VTxxx と HP Mode の混成に対しては M_HPVT という値を取り、 ラベルを伴わない VTxxx シーケンスのみが認識されるものに対しては M_PUREVT を取ります。 .Bl -tag -width 20n -offset indent -compact .It VGASETCOLMS 現在のスクリーンに対してカラムの数を設定します。 .El これのパラメータは、80 あるいは 132 のどちらかの値を保持する int 型変数へのポインタです。 カラム数 132 がサポートされるのは VGA アダプタ使用時のみです。 サポートされないカラム数では ioctl は失敗し、 .Em errno .Pq Xr intro 2 を参照 に .Em EINVAL が設定されます。 .Em VGA カラーパレットインタフェース VGA アダプタにおいてのみ、出力にカラーパレットレジスタが存在します。 256 種類の内部カラーコードのそれぞれに対する 赤、緑、青の出力電圧を 保持し、0 から 63 までの値を取ります (63 はベースカラーについて もっとも明くなる値です)。 すなわち、これらのアダプタはそれぞれのカラーコードを、 262144 色の中から取り出した .Dq パレット の色へマップします。 .Bl -tag -width 20n -offset indent -compact .It VGAREADPEL VGA パレットエントリーを読み取ります。 .It VGAWRITEPEL VGA パレットエントリーに書き込みます。 .El これらのコマンドは、パレットレジスタに対するインタフェースを 確立します。引数は以下の構造体へのポインタです: .Bd -literal struct vgapel { unsigned idx; /* パレットへのインデクス。0 から 255 が有効。 */ unsigned r, g, b; /* RGB の値。VGA_PMASK (63) でマスクされる。 */ }; .Ed .Em ドライバの判別 .Bl -tag -width 20n -offset indent -compact .It VGAPCVTID 現在ドライバの中にコンパイルされているのが pcvt であるかどうかの 情報と、そのメジャーリビジョンおよびマイナーリビジョン番号を 返します。引数として以下の構造体へのポインタをとります: .El .Bd -literal struct pcvtid { #define PCVTIDNAMELN 16 /* ドライバ ID - 文字列の長さ */ char name[PCVTIDNAMELN]; /* ドライバの名前 == PCVTIDSTR */ #define PCVTIDNAME "pcvt" /* ドライバ ID - 文字列 */ int rmajor; /* メジャーリビジョン番号 */ #define PCVTIDMAJOR 3 int rminor; /* マイナーリビジョン番号 */ #define PCVTIDMINOR 00 }; .Ed .Bl -tag -width 20n -offset indent -compact .It VGAPCVTINFO 現在ドライバの中にコンパイルされているのが pcvt であるかどうかの 情報と、そのコンパイル時オプションを返します。 引数として以下の構造体へのポインタをとります: .El .Bd -literal struct pcvtinfo { u_int opsys; /* PCVT_xxx(x)BSD */ #define CONF_UNKNOWNOPSYS 0 #define CONF_386BSD 1 /* サポートされていません !!! */ #define CONF_NETBSD 2 #define CONF_FREEBSD 3 u_int opsysrel; /* NetBSD/FreeBSD に対するリリース */ u_int nscreens; /* PCVT_NSCREENS */ u_int scanset; /* PCVT_SCANSET */ u_int updatefast; /* PCVT_UPDATEFAST */ u_int updateslow; /* PCVT_UPDATESLOW */ u_int sysbeepf; /* PCVT_SYSBEEPF */ u_int pcburst; /* PCVT_PCBURST */ u_int kbd_fifo_sz; /* PCVT_KBD_FIFO_SZ */ /* 設定ブール値 */ u_long compile_opts; /* PCVT_xxxxxxxxxxxxxxx */ }; .Ed .Em スクリーンセーバ .Nm pcvt の設定によっては、シンプルなスクリーンセーバが利用できるかもしれません。 これは次のコマンドにより制御します。 .Bl -tag -width 20n -offset indent -compact .It VGASCREENSAVER スクリーンセーバのタイムアウトを秒単位で設定します。 0 はスクリーンセーバをオフにします。 .El これは整数へのポインタを引数としてとります。コマンドの名前とは関係なく、 .Xr config 8 の .Dq PCVT_SCREENSAVER オプションにより設定されていれば、 .Em どのような 種類のアダプタでも利用できます。 .Em USL スタイル VT のための互換コマンド この .Nm pcvt ドライバのリリース 3.00 では、仮想端末インタフェースを制御するのに使われる USL スタイルのコマンドのサブセットをサポートします。 この機能は、主に .Em XFree86 のリリース 2.0 以降で、X サーバが動いている時でも -仮想スクリーンを切替えることができるようにと意図されています。 +仮想スクリーンを切り替えることができるようにと意図されています。 それらは、暗黙のセマンティクスに関して醜く .Pq つまり、Berkeley セマンティクスを破っています 、したがって一般的な利用については推奨されません。 それらのドキュメンテーションについては、 .Pa i386/include/pcvt_ioctl.h を参照してください。 .Sh ファイル .Bl -tag -width /usr/include/machine/pcvt_ioctl.h .It Pa /usr/include/machine/pcvt_ioctl.h .Xr ioctl 2 ファンクションコールのための定義。 .It Pa /dev/ttyv? .It Pa /dev/console .Nm pcvt ドライバへアクセスするためのデバイスノード。 .It Pa i386/isa/pcvt/pcvt_hdr.h .Pq カーネルソースツリーに対する相対パス .Nm pcvt を仕立てるための様々なコンパイル時オプションについて書かれています。 .Sh 歴史 .Nm pcvt ドライバは 386BSD リリース 0.1 のために開発され、提供されてきました。 リリース 3.00 から、NetBSD 0.9 に対する明示的なサポートが 提供されています。リリース 3.00 以降は、pcvt において 386BSD 0.1 向けの さらなる開発はないと予想され、実際、リリース 3.20 では 386BSD のサポートは打ち切られました。 .Sh 作者 .An Brian Dunford-Shore Aq brian@morpheus.wustl.edu および .br .if n Joerg Wunsch .if t J\(:org Wunsch .Aq joerg_wunsch@uriah.sax.de らの協力の下、 .br .An Hellmuth Michaelis Aq hm@hcshh.hcs.de によって書かれました。 .br このドライバは数人によってなされた成果を元にしています。 特に、 .An William Jolitz' と .An Don Ahn's Aq ljolitz@cardio.ucsf.edu による歴史的な .Xr pccons 4 の実装、および .An Holger Veit Aq veit@first.gmd.de によるキーボードマップのコードによっています。 .Sh 関連項目 .Xr intro 2 , .Xr ioctl 2 , .Xr atkbd 4 , .Xr keyboard 4 , .Xr screen 4 , .Xr config 8 , .Xr ispcvt 8 .Sh バグ もちろん存在します。最新のバグリストは、ドキュメントディレクトリの .Pa BugList ファイルを参照してください。 .Ss 検証済みのビデオボード .Bd -literal 製造者 チップセット モニタ 2theMax (?) ET4000 VGA Color Video7 Inc. Video 7 VGA Color Diamond Stealth VRAM S3 NEC 3FGx Trident TVGA 8800CS NEC 3D Data General C&T P82C604 VGA Color NoName Hercules W86855AF Mono Kyocera (Mainboard) WD90C11 Sony Color unknown ET3000 NEC 3D .Ed .Ss 検証済みのキーボード .Bd -literal 製造者 タイプ レイアウト Cherry MF II US Cherry/Tandon MF II German Hewlett-Packard MF II US Hewlett-Packard MF II German Tatung AT German .Ed 古い PC キーボードは全くサポートされておりません .Pq それらは 83 個のキーがあります 。 F9 から F12 までは機能の制御のためにエミュレータが必要としているので、 AT キーボード .Pq 84 個のキーとそれとは別の数字キーパッドがあり、F11 と F12 はありません に対するサポートは制限されています。 また現在のキーボードドライバの設計のゆえに ALtGr キーを持たない各国のキーボードに対する .Pq 完全な サポートはありません。 MF キーボードは、101 キーおよび 102 キーのバージョンに ついて完全にサポートされております。 diff --git a/ja_JP.eucJP/man/man4/ppbus.4 b/ja_JP.eucJP/man/man4/ppbus.4 index b6d9c3ed13..95a6f9b87b 100644 --- a/ja_JP.eucJP/man/man4/ppbus.4 +++ b/ja_JP.eucJP/man/man4/ppbus.4 @@ -1,366 +1,366 @@ .\" Copyright (c) 1998, 1999 Nicolas Souchu .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" WORD: finite state automate 有限状態オートマトン .\" WORD: compatible mode コンパチブルモード .\" WORD: bidirectional mode 双方向モード .\" WORD: byte mode バイトモード .\" WORD: extended capability port mode ECP モード .\" WORD: enhanced parallel port mode EPP モード .\" WORD: mixed mode 混合モード .\" .Dd March 1, 1998 .\" jpman %Id: ppbus.4,v 1.3 1999/08/20 11:32:02 kuma Stab % .Dt PPBUS 4 .Os FreeBSD .Sh 名称 .Nm ppbus .Nd パラレルポートバスシステム .Sh 書式 .Cd "controller ppbus0" .Pp .Cd "controller vpo0 at ppbus?" .Pp .Cd "device nlpt0 at ppbus?" .Cd "device plip0 at ppbus?" .Cd "device ppi0 at ppbus?" .Cd "device pps0 at ppbus?" .Cd "device lpbb0 at ppbus?" .Sh 解説 .Em ppbus システムは、様々なパラレルデバイスを制御したり、 異なったパラレルポートチップセットを使うためのドライバを実装するための、 単一形態でモジュール化された、アーキテクチャに依存しないシステムを提供します。 .Sh デバイスドライバ 新しいドライバを書いたり、すでにあるドライバを移植するために、 ppbus システムは以下の機能を提供しています。 .Bl -bullet -item -offset indent .It パラレルポートをアクセスするための、アーキテクチャに依存しないマクロや関数 .It いろいろなデバイスが同じパラレルポートを共有できるようにするための機構 .It カーネル内のデバイスと競合することなく、 カーネルの外部からパラレルポートをアクセスすることができる .Xr ppi 4 と呼ばれるユーザインタフェース .El .Ss 新しいドライバを開発する .Pp ppbus システムは標準および非標準のソフトウェアの開発をサポートするために設計されてきました。 .Pp .Bl -column "ドライバ" -compact .It Em ドライバ Ta Em 説明 .It Sy vpo Ta "VPI0 パラレル - Adaptec AIC-7110 SCSI コントローラドライバ"。 これは標準および非標準のパラレルポートアクセスを使用しています。 .It Sy ppi Ta "一般の I/O のためのパラレルポートインタフェース" .It Sy pps Ta "秒単位パルス (pulse per second) タイミングインタフェース" .It Sy lpbb Ta "Philips 社公式のパラレルポート I2C ビット操作インタフェース" .El .Ss 現在あるドライバを移植する .Pp ppbus のもう 1 つのアプローチは現在あるドライバを移植するためのものです。 いろいろなドライバが既に移植されています。 .Pp .Bl -column "ドライバ" -compact .It Em ドライバ Ta Em 説明 .It Sy nlpt Ta "lpt プリンタドライバ" .It Sy plip Ta "lp パラレルネットワークインタフェースドライバ" .El .Pp ppbus を用いることで、同様なサービスを提供する他の オペレーティングシステムからでも、 ソフトウェアを移植することが可能となります。 .Sh パラレルポートチップセット パラレルポートチップセットは .Xr ppc 4 によってサポートされます。 .Pp ppbus システムは、新しいパラレルポートバスを割り当てるための 関数とマクロを提供し、 それと上位の周辺デバイスドライバを初期化します。 .Pp ppc はチップセットの検出と初期化を行った後、 ppbus システムを初期化するために ppbus 付属関数をコールします。 .Sh パラレルポートモデル ppbus システムで採用された論理パラレルポートモデルは、 PC のパラレルポートモデルです。 さらに i386 での ppbus の実装では、 ppc によって提供されているほとんどのサービスは inb() および outb() を 行うマクロです。 しかし、他のアーキテクチャでは、ppbus の論理レジスタ (データ、ステータス、制御...) へのアクセスは、 複数の I/O アクセスが必要となるかもしれません。 .Ss 解説 パラレルポートは以下のモードで操作することができます。 .Bl -bullet -item -offset indent .It コンパチブルモード、セントロニクスモードとも呼ばれる .It 双方向 8/4 ビットモード、ニブルモードとも呼ばれる .It バイトモード、PS/2 モードとも呼ばれる .It ECP モード (Extended Capability Port mode) .It EPP モード (Enhanced Parallel Port mode) .It ECP と EPP の混合モード、もしくは ECP と PS/2 の混合モード .El .Ss コンパチブルモード このモードは、ほとんどの PC で用いられている、 プリンタにデータを転送するためのプロトコルを定義するものです。 このモードでは、データはポートのデータ線にセットされ、 プリンタのステータスがエラーがなくビジーでないことがチェックされた後、 プリンタへのデータ送信のタイミングとして データストローブがソフトウェアによって生成されます。 .Pp コンパチブルモードプロトコルでデータを転送する際に、FIFO バッファを使う モードが実装されている I/O コントローラが多数あります。 このモードは "高速セントロニクス" もしくは "パラレルポート FIFO モード" と呼ばれています。 .Ss 双方向モード ニブルモードは、プリンタや周辺機器からの逆方向チャネルデータを 取り込むための最も一般的な方法です。 ホストからプリンタへの転送を行なう標準モードと組み合わせることで、 完全な双方向チャネルが提供されます。 .Pp このモードでは出力は 8 ビット長です。 入力は、ステータスレジスタの 8 ビットのうち 4 ビットを 読むことにより実現されています。 .Ss バイトモード このモードではデータレジスタは出力用にも入力用にも使われます。 この場合、全ての転送は 8 ビット長です。 .Ss ECP モード ECP プロトコルは、プリンタやスキャナタイプの周辺機器との通信のために、 さらに進んだモードとして提案されたものです。 EPP プロトコルと同様に、ECP モードはホストアダプタと周辺機器との間での 高性能な双方向通信を行なうための経路を提供しています。 .Pp ECP プロトコルには以下の機能が含まれています。 .Bl -item -offset indent .It ホストアダプタ用のランレングスエンコーディング (RLE) データ圧縮 .It 順方向および逆方向チャネル用の FIFO .It ホストレジスタインタフェースのためのプログラム I/O に加え DMA .El .Ss EPP モード EPPプロトコルはもともと標準のパラレルポートと互換性を保ちながら、 高性能なパラレルポートリンクを提供する手段として開発されました。 .Ss 混合モード SMC のように、混合モードをサポートするチップセットを供給している 製造業者がいくつかあります。 そのようなチップセットでは、拡張制御レジスタをアクセスすることによって、 いつでもモードを変更することができます。 .Sh IEEE1284-1994 標準 .Ss 背景 この標準は "IEEE Standard Signaling Method for a Bidirectional Parallel Peripheral Interface for Personal Computers" (「パーソナルコンピュータのための双方向パラレル周辺機器 インタフェースのIEEE 標準信号化方式」) とも呼ばれています。 これはホストとプリンタその他の周辺機器との間の、 非同期で完全に連動して動作する双方向のパラレル通信の 信号化方法を規定したものです。 この方式は、周辺機器識別用の文字列のフォーマットと、 双方向データストリーム外を通じてその文字列をホストに返す方法も 規定しています。 .Pp この標準はアーキテクチャに依存せず、 信号レベルでのハンドシェークのやりとりのみを規定しています。 マシン依存のレジスタ、マッピングされたメモリ、その他 これらの信号を制御するものすべてを操作するためには、 アーキテクチャに特化したドキュメントを参照する必要があるでしょう。 .Pp IEEE1284 プロトコルは、サポートしている全てのパラレルポートモードに 対して完全に適合します。 コンピュータはマスタとして、周辺機器はスレーブとして動作します。 .Pp 全ての転送は有限状態オートマトンとして定義されます。 これにより、ソフトウェアは、完全に連動して動作する信号化方式の体系を うまく管理することができるようになります。 コンパチブルモードはそれが「コンパチブル」なため、 一切のネゴシエーションなしでそのままサポートされます。 この他の全てのモードでは、周辺機器がそのモードをサポートしているかどうかを チェックし、その後、フォワードアイドル状態の一つに入るために、 ホストは最初にネゴシエーションが行なわれなければなりません。 .Pp どのような時にでも、スレーブからホストにデータを送る必要が生じることが あるでしょう。 スレーブからのデータ送信はフォワードアイドル状態 (ニブル、バイト、ECP...) からのみ可能です。 そのため、周辺機器がデータ転送要求を行うことを許可するために、 ホストは前もってネゴシエーションを行っておく必要があります。 時間を浪費するポーリング方式を避けるために、 割り込みラインをデータ要求信号用として使うこともできます。 .Pp しかし、マスタホストにとっては、周辺からの要求は単なるヒントで しかありません。 ホストが転送を受け付けると、まず逆方向モードのネゴシエーションを行って、 それから転送を開始します。 逆方向の転送中も、ホストはいつでも転送を止めることができますし、 スレーブももうデータがないことを信号によって知らせることができます。 .Ss 実装 IEEE1284 標準のサポートは、ppbus システムの上に実装されています。 どのモードにおいても標準が規定する低レベルの特性に煩わされることなく、 ネゴシエーション、ターミネーション、転送のような高レベルの機能を実行する 手続きのセットとして実装されています。 .Pp IEEE1284 は、ppbus システムとはできるだけ相互作用を おこなわないようになっています。 これは、現在のところ、ppbus をアクセスしたいときには ppbus に要求をしなければならないことを意味します。 ネゴシエーション機能では、ppbus へのアクセスは勝手には行われないと いうことです。 これをあとで解放しなければならないのは当然でしょう。 .Sh アーキテクチャ .Ss アダプタ層, ppbus 層, デバイス層 まず、ppbus システムの最下位に .Em アダプタ 層があります。 これは、論理モデルをその下位にあるハードウエアにマップする、 低レベルの関数の集合によって抽象化されたチップセットです。 .Pp その次には .Em ppbus 層があり、以下の機能を提供しています。 .Bl -enum -offset indent .It デイジーチェーンのように接続されたデバイス間でのパラレルポートバスの共有 .It ppbus に結合されたデバイスの管理 .It ハードウェア層をアクセスするためのアーキテクチャ独立のインタフェースの提供 .El .Pp 最後は .Em デバイス 層で、パラレル周辺デバイスドライバを集めたものとなっています。 .Pp 各階層は、それぞれが専用の C 構造体を一つ、それぞれ ppb_adapter, ppb_data, ppb_device を持ちます。 ppb_link 構造体は他の構造体へのポインタと、 異なった層の間で共有する情報をまとめたものです。 .Pp これらの構造体については .Xr ppbconf 9 の説明を参照してください。 .Ss パラレルモード管理 いろいろな ppbus システム層において、 動作モードを区別しなければなりません。 実際には、ppbus とアダプタの動作モード、 それぞれに対して、現在のモードと使用可能なモードは分離されています。 .Pp このレベルの抽象化によって、特定のチップセットでは、 上位層を煩わせることなく、ネイティブモードから、拡張モードによって -エミュレートされる他のどのようなモードへでも切替えることが +エミュレートされる他のどのようなモードへでも切り替えることが できるようになるかもしれません。 例えば、ほとんどのチップセットはニブルモードをネイティブモードとして サポートしており、それで、ECP や EPP モードをエミュレートしています。 .Pp このアーキテクチャによって IEEE1284-1994 のモードをサポートでき るはずです。 .Sh 特徴的な機能 .Ss ブートプロセス ブートプロセスは ISA バス (PC アーキテクチャ) の初期化中に、 .Xr ppc 4 ドライバのプローブから始まります。 ppc ドライバの attach 中に、ppbus 構造体が新しく割り当てられ 初期化 (アダプタ構造体とリンクされる) されて、関数 .Fn ppb_attachdevs "struct ppb_data *ppb" に渡されます。 .Pp .Fn ppb_attachdevs "" は PnP パラレル周辺機器 ( .%T "Plug and Play Parallel Port Devices" ドラフト(c)1993-4 Microsoft Corporation による) の検出を試みた後、プローブ処理と 既知のデバイスドライバの割り付け (attach) を行います。 .Pp プローブ中には、デバイスドライバは ppbus に要求を出して、 自分の動作モードの設定を試みることになっています。 設定された動作モードはコンテキスト構造体にセーブされ、 ドライバが ppbus に要求したときに戻されます。 .Ss バスの割り当てと割り込み ppbus の割り当ては他のデバイスの I/O を破壊しては ならないことが必須です。ppbus の割り当てのその他の使い方は、 ポートを予約して割り込みの入力を受けることです。 .Pp 割り込みは、 .Fn ppcintr "" 関数に接続されています。この関数は、 .Fn ppb_intr "struct ppb_link *pl" の呼び出しを用いて、割り込みを ppbus に直接届けます。 バスのオーナのハンドラが定義されていれば、 ppbus は割り込みをそのハンドラにリダイレクトします。 したがって、デバイスが割り込みを届けてもらいたければ、 ppbus のオーナとならなければなりません。 .Ss マイクロシーケンス .Em マイクロシーケンス はパラレルポートの高速な低レベルの操作を可能とするための、 汎用のメカニズムです。 マイクロシーケンスは (IEEE1284 モードにおける) 標準な転送にも、 非標準な転送にも使うことができるでしょう。 マイクロシーケンスの考えかたは、ppbus 層のオーバーヘッドを回避し、 ほとんどの仕事をアダプタレベルで行おうとするものです。 .Pp マイクロシーケンスはオペコードとパラメータの配列です。 各オペコードはオペレーションをコード化したものです。 (オペコードは .Xr microseq 9 で解説されています。) 標準の I/O 操作は ppbus レベルで実装されていますが、 基本的な I/O 操作とマイクロセック言語は、効率化のために アダプタレベルでコード化されています。 .Pp 例えば、 .Xr vpo 4 ドライバの実装では、 .Bl -bullet -offset indent .It ニブル転送モードの変更バージョン .It 周辺機器の初期化と選択と割り当てを行うさまざまな I/O シーケンス .El .Pp を実装するためにマイクロシーケンスが使われています。 .Sh 関連項目 .Xr ppbconf 9 , .Xr ppc 4 , .Xr ppi 4 , .Xr vpo 4 , .Xr nlpt 4 , .Xr plip 4 .Sh 歴史 .Nm マニュアルページは .Fx 3.0 で最初に登場しました。 .Sh 作者 このマニュアルページは .An Nicolas Souchu によって書かれました。 diff --git a/ja_JP.eucJP/man/man4/psm.4 b/ja_JP.eucJP/man/man4/psm.4 index eeae8989c2..353ecb59b1 100644 --- a/ja_JP.eucJP/man/man4/psm.4 +++ b/ja_JP.eucJP/man/man4/psm.4 @@ -1,830 +1,830 @@ .\" .\" Copyright (c) 1997 .\" Kazutaka YOKOTA .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer as .\" the first lines of this file unmodified. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR .\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES .\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. .\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, .\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT .\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, .\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY .\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" .\" %Id: psm.4,v 1.13.2.2 1999/02/10 14:49:51 yokota Exp % .\" jpman %Id: psm.4,v 1.3 2000/08/29 00:56:36 jsakai Stab % .\" .Dd January 30, 1999 .Dt PSM 4 i386 .Os FreeBSD .Sh 名称 .Nm psm .Nd PS/2 マウス方式のポインティングデバイス用ドライバ .Sh 書式 .Cd "options" \&"PSM_HOOKAPM\&" .Cd "options" \&"PSM_RESETAFTERSUSPEND\&" .Cd "options" \&"KBD_RESETDELAY=N\&" .Cd "options" \&"KBD_MAXWAIT=N\&" .Cd "options" \&"PSM_DEBUG=N\&" .Cd "options" \&"KBDIO_DEBUG=N\&" .Cd "device psm0 at isa? tty irq 12" .Sh 解説 .Nm ドライバは PS/2 方式のポインティングデバイスについての サポートを行ないます。 現在、システムには唯ひとつの .Nm デバイスノードをおくことができます。 PS/2 マウスポートはキーボードコントローラの補助ポートに配置されているので、 キーボードコントローラ用のドライバである .Nm atkbdc も一緒にカーネルに組み込まれていなければなりません。 なお現時点では .Em irq 番号を変更することはできないので注意して下さい。 .Pp 基本的な PS/2 方式のポインティングデバイスには 2 個または 3 個の ボタンがあります。 中にはローラ又はホイールやボタンが幾つか追加されている デバイスもあります。 .Ss デバイス分解能 通常 PS/2 方式のポインティングデバイスは何段階かの分解能、即ち、 移動についての感度を持っています。 これらの分解能は一般に、1 インチあたり 25、50、100、200 パルス となっています。 デバイスによってはより細密な分解能を有しているものもあります。 現在の分解能は実行時に変更できます。 .Nm ドライバでは、ユーザは予めドライバフラグを用いて分解能を 設定する .Po Sy ドライバの設定 を参照 .Pc か、または後で .Xr ioctl 2 コマンドの .Dv MOUSE_SETMODE .Po Sx IOCTL を参照 .Pc を用いて分解能を変更することができます。 .Ss 通知レート .\" 訳注 以下は 本マニュアルの作者である横田氏に加筆修正していただきました。 デバイスがホストシステムに移動とボタン状態の報告を行なう 頻度、即ち通知レートの設定も変更可能です。 一般的にいって PS/2 方式のポインティングデバイスは 毎秒 10、20、40、60、80、100、200 回 の報告を送信することができます。 .\" 訳注 ここ迄。 60 回または 100 回毎秒の通知レートが多数のデバイスについてのデフォルト値であると 思われます。 何の移動もなく、且つどのボタンもその状態を変更していない時は、 そのデバイスはホストシステムに何も通知しないということに注意してください。 通知レートは ioctl コールを用いて変更できます。 .Ss 動作レベル .Nm ドライバには 3 段階の動作レベルがあります。 現在の動作レベルは ioctl コールを用いて設定できます。 .Pp レベル 0 では基本的なサポートが行なわれます。 即ち、デバイスドライバは接続されたデバイスの水平方向と垂直方向の移動 及び最高 3 個までのボタンの状態を報告します。 移動とボタンの状態は一連の固定長データパケット .Po .Sy データパケット形式 参照 .Pc に符号化されます。 レベル 0 はデフォルトの動作レベルであって、ユーザプログラム がドライバをオープンしたとき、 最初はこのレベルにあります。 .Pp 動作レベル 1、即ち「拡張」レベルでは、もし存在するならローラ (又はホイール)、 及び最高 11 個迄のボタンがサポートされます。 ローラによる移動は Z 軸に沿った移動として報告されます。 このレベルでは 8 バイトのデータパケットがユーザプログラムに送られます。 .Pp 動作レベル 2 では、ポインティングデバイスからのデータはそのままユーザプログラム に渡されます。 最新の PS/2 方式のポインティングデバイスはしばしば固有のデータ形式を 用いています。 その為、ユーザプログラムではこのレベルでドライバを操作するときに 特殊なデバイスからのデータ形式に関する知識に精通していることが 求められます。 このレベルを「ネイティブ」レベルといいます。 .Ss データパケット形式 .\" 訳注 以下は 本マニュアルの作者である横田氏に加筆修正していただきました。 .Nm ドライバから引き渡されるデータパケットは動作レベルによって異なった形式 になっています。 .\" 訳注 ここ迄。 .Pp PS/2 マウス方式のポインティングデバイスからのデータパケットは、 動作レベル 0 では 3 バイトあります: .Pp .Bl -tag -width Byte_1 -compact .It Byte 1 .Bl -tag -width bit_7 -compact .It bit 7 1 は垂直移動カウントの算術あふれを示します。 .It bit 6 1 は水平移動カウントの算術あふれを示します。 .It bit 5 垂直移動カウントが負の場合にセットされます。 .It bit 4 水平移動カウントが負の場合にセットされます。 .It bit 3 常に 1 です。 .\" ALPS GlidePointはこのビットについてユーザがパッドの表面を「叩いた」ときに .\" クリアし、そうでないときにはセットします。 .\" 全てではないにしても、他の大抵のデバイスはいつもこのビットをセットします。 .It bit 2 中ボタンの状態; 押下されていればセットされます。中ボタンがないデバイス では、このビットは常に 0 です。 .It bit 1 右ボタンの状態; 押下されていればセットされます。 .It bit 0 左ボタンの状態; 押下されていればセットされます。 .El .It Byte 2 2 の補数での水平移動カウント; -256 から 255 まで。 符号ビットは第 1 バイトにあることに注意してください。 .It Byte 3 2 の補数での垂直移動カウント; -256 から 255 まで。 符号ビットは第 1 バイトにあることに注意して下さい。 .El .Pp .\" 訳注 以下は 本マニュアルの作者である横田氏に加筆修正していただきました。 レベル 1 では、 .Xr mouse 4 に定義されている標準形式である .Dv MOUSE_PROTO_SYSMOUSE 形式が用いられます。 .\" ここ迄。 .Pp レベル 2 、即ちネイティブレベルでは、データパケットの長さと形式には標準が ありません。 .Ss 加速 .Nm ドライバはポインティングデバイスの移動をある程度「加速」することができます。 デバイスを速く動かすほど、ポインタは画面上をより遠くまで移動します。 ドライバには加速の効果を支配する内部変数があります。 その変数の値はドライバフラグを用いるか又は ioctl コールを用いて 変更できます。 .Ss デバイス番号 .Nm のマイナデバイス番号は次式により生成されます。 .Bd -literal -offset indent minor = (`unit' << 1) | `non-blocking' .Ed .Pp ここで、「unit」とはデバイス番号 (通常 0) です。 そして「非ブロッキング」ビットがセットされるのは 「プロセスブロックを行なうことでマウス入力があるまでウェイトせずに、 直ちに復帰する」ことを示す為です。 「非ブロッキング」ビットは \fIXFree86\fP については セットされなければならず、 その為 \fIXFree86\fP について通常用いられるマイナデバイス番号は 1 です。 デバイスノード名については .Bf Sy 関連ファイル .Ef を参照して下さい。 .Sh ドライバの設定 .Ss カーネル設定オプション .Nm ドライバを制御する為に以下のようなカーネル設定オプションがあります。 これらオプションはカーネル設定ファイル .Po Xr config 8 を参照 .Pc に設定できます。 .Bl -tag -width MOUSE .It Em PSM_HOOKAPM .\" 訳注 以下は 本マニュアルの作者である横田氏に加筆修正していただきました。 ラップトップコンピュータの中には、システムが省電力モードから 「レジューム」した直後、どういう訳か 組み込まれた PS/2 ポインティングデバイスが操作不能になっているものがあります。 もっとも、結局は使用可能にはなります。 .\" 訳注 ここ迄。 .\" 訳注 以下は 本マニュアルの作者である横田氏に加筆修正していただきました。 入出力操作を実行してデバイスを刺激すればデバイスを早く目覚めさせる ことができるらしいという報告があります。 .\" 訳注 ここ迄。 .\" 訳注 以下は 本マニュアルの作者である横田氏に加筆修正していただきました。 このオプションは、一連のコードを .Nm ドライバに追加してAPM「レジューム」イベントをフックし、デバイスに 無害な入出力操作を施します。 .\" ここ迄。 .It Em PSM_RESETAFTERSUSPEND このオプションにより上述の問題に対しもっと強力な動作を加えます。 このオプションを指定すると、APM レジュームイベントの後 .Nm ドライバはデバイスをリセットします。 .\" 訳注 以下は 本マニュアルの作者である横田氏に加筆修正していただきました。 このオプションを使うには .Em PSM_HOOKAPM オプションもまた一緒に指定して下さい。 .\" 訳注 ここ迄。 .It Em KBD_RESETDELAY=X, KBD_MAXWAIT=Y .Nm ドライバは起動の過程でポインティングデバイスをリセットしようとします。 時々リセット後にデバイスが応答するまで時間がかかることがあります。 .\" 訳注 以下は 本マニュアルの作者である横田氏に加筆修正していただきました。 これらのオプションによりドライバがどのくらいの時間待つべきかを制御します。 .\" 訳注 ここ迄。 .\" 訳注 以下は 本マニュアルの作者である横田氏に加筆修正していただきました。 ドライバは最高で .Fa X * .Fa Y ミリ秒の間ウェイトします。 .\" 訳注 ここ迄。 ドライバがユーザのポインティングデバイスを検出できないように見える場合には、 ユーザはこれらの値を増加させたいと考えるかも知れません。 デフォルト値は .Fa X に対しては 200 ミリ秒で .Fa Y に対しては 5 です。 .It Em PSM_DEBUG=N, KBDIO_DEBUG=N これはデバッグレベルを .Fa N に設定します。 デフォルトのデバッグレベルは 0 です。 デバッグログについては .Bf Sy 診断 .Ef を参照して下さい。 .El .Ss ドライバフラグ .Nm ドライバは以下のようなフラグを受け付けます。 カーネル設定ファイルの中かまたは起動時のユーザ設定メニュー .Po .Xr boot 8 を参照 .Pc でこれらのフラグを 設定して下さい。 .Pp .Bl -tag -width MOUSE .It bit 0..3 RESOLUTION このフラグはポインティングデバイスの分解能を指定します。 0 から 4 迄でなければなりません。 この値が大きければ大きいほど、デバイスは分解能が高くなります。 このフィールドにより指定される実際の分解能はデバイスのモデルにより 異なります。 一般的な分解能は以下の通りです。 .Pp .Bl -tag -width 0_(medium_high)__ -compact .It Em 1 (low) 25 パルス毎インチ (ppi) .It Em 2 (medium low) 50 ppi .It Em 3 (medium high) 100 ppi .It Em 4 (high) 200 ppi .El .Pp このフラグを 0 のままにしておけば、(それが何であれ) デバイスのデフォルトの分解能となります。 .It bit 4..7 ACCELERATION このフラグは加速効果の程度を加減します。 このフラグの値が小さければ小さいほど、移動の感度は上がります。 許容される最小値は 1 であり、この値で最も感度が高い設定となります。 このフラグを 0 に設定すれば完全に加速効果を無効にします。 .It bit 8 NOCHECKSYNC .Nm ドライバはデータパケットの第 1 バイトの検出を そのバイトのビットパターンを検査することにより行なおうとします。 このやり方は大抵の PS/2 ポインティングデバイスでは旨く行きます。 しかし既知のデバイスとあまり互換性のないデバイスの中には このやり方と相容れないものがあるかも知れません。 もし、あなたのポインティングデバイスが期待通りには機能していないと考えられ、 且つカーネルが頻繁に .Bd -literal -offset indent psmintr: out of sync (xxxx != yyyy). .Ed .Pp のようなメッセージをコンソールに表示する場合には、 同期検査を無効にする為にこのフラグをセットして 効果があるかどうかを調べて下さい。 .It bit 9 NOIDPROBE このフラグが指定されると、 .Nm ドライバはポインティングデバイスのモデルを調査しようとしたり モデル固有の初期化をしません。 .\" 訳注 以下は 本マニュアルの作者である横田氏に加筆修正していただきました。 その場合、デバイスは標準的な PS/2 マウスのように振舞うはずです。 .\" 訳注 ここ迄。 ホイールや追加されたボタンのような特別な機能は .Nm ドライバには認識されないでしょう。 .It bit 10 NORESET このフラグがセットされていれば、 デバイスを初期化するときに .Nm ドライバはポインティングデバイスをリセットしません。 .\" 訳注 以下は 本マニュアルの作者である横田氏に加筆修正していただきました。 もし FreeBSD カーネルが他の OS の起動した後に立ち上がったなら、 ポインティングデバイスは以前の OS の設定を継承することになります。 .\" 訳注 ここ迄。 しかし、 .Nm ドライバにはその設定を知る為の方法がないので、 デバイスとドライバは正しく動作しないかも知れません。 このフラグは正常な環境下では決して必要とはならないはずです。 .It bit 11 FORCETAP パッドデバイスの中には、デバイスの表面をユーザが「軽く叩く(タップする)」と、 あたかも 4 番目のボタンが押されたかのように報告するものがあります .Po .Sy 警告 参照 .Pc 。 このフラグにより .Nm ドライバはデバイスがこのように振舞うと仮定します。 このフラグがなければ、 本ドライバは ALPS GlidePoint モデルに対してのみ このような振舞いを仮定します。 .It bit 12 IGNOREPORTERROR このフラグによって、PS/2 マウスポートを検査するときに .Nm ドライバは若干のエラー状態を無視します。 これは正常な環境下では決して必要にはならないはずです。 .El .Sh IOCTL マウスドライバにはいくつかの .Xr ioctl 2 コマンドがあります。 これらのコマンドと関連する構造体及び定数は .Ao Pa machine/mouse.h Ac に定義されています。 コマンドの一般的な解説は .Xr mouse 4 に与えられています。 このセクションでは .Nm ドライバに固有の機能について解説します。 .Pp .Bl -tag -width MOUSE -compact .It Dv MOUSE_GETLEVEL Ar int *level .It Dv MOUSE_SETLEVEL Ar int *level これらのコマンドで .Nm ドライバの動作レベルを操作します。 .Pp .It Dv MOUSE_GETHWINFO Ar mousehw_t *hw これは接続されたデバイスのハードウェア情報を以下の構造体で返します。 .Bd -literal typedef struct mousehw { int buttons; /* ボタンの数 */ int iftype; /* I/F の種類 */ int type; /* マウス/トラックボール/パッド... */ int model; /* I/F に固有のモデル ID */ int hwid; /* I/F に固有のハードウェア ID */ } mousehw_t; .Ed .Pp .Dv buttons フィールドはデバイスにあるボタンの数を保持します。 現在 .Nm ドライバは Logitech 製の 3 ボタンマウスを検出して そのように報告することができます。 他のメーカ製の 3 ボタンマウスについては正しく報告されるかどうかは 分かりません。 .\" 訳注 以下は 本マニュアルの作者である横田氏に加筆修正していただきました。 しかし、 ボタンの数が正しく検出されてもされなくてもドライバの運用には影響しません。 .\" 訳注 ここ迄。 .Pp .Dv iftype フィールドは常に .Dv MOUSE_IF_PS2 です。 .Pp .Dv type フィールドは次のようなデバイスの種類を示します。即ち .Dv MOUSE_MOUSE , .Dv MOUSE_TRACKBALL , .Dv MOUSE_STICK , .Dv MOUSE_PAD , .Dv MOUSE_UNKNOW です。 ユーザはこのフィールドに頼り過ぎてはいけません。 というのは、ドライバは必ずしも常に デバイスの種類を識別できる訳ではないからです。 .\" 訳注 以下は 本マニュアルの作者である横田氏に加筆修正していただきました。 実際のところデバイスの種類を識別できることは稀なのです。 .\" 訳注 ここ迄。 .Pp .Dv model フィールドは動作レベル 0 では常に .Dv MOUSE_MODEL_GENERIC です。 これはより高次の動作レベルでは .Dv MOUSE_MODEL_GENERIC かまたは .Dv MOUSE_MODEL_XXX のうちのどれか 1 つになるかも知れません。 この場合にも .Nm ドライバがこのフィールドに適切な値をセットするかどうかは分かりません。 .Pp .Dv hwid フィールドはデバイスにより返された ID の値です。 一般的な ID は以下の通りです。 .Pp .Bl -tag -width 0__ -compact .It Em 0 マウス (Microsoft, Logitech 及び他の多数のメーカ) .It Em 2 Microsoft Ballpoint mouse .It Em 3 Microsoft IntelliMouse .El .Pp .It Dv MOUSE_GETMODE Ar mousemode_t *mode このコマンドによりマウスドライバの現在の動作パラメータを得ます。 .Bd -literal typedef struct mousemode { int protocol; /* MOUSE_PROTO_XXX */ int rate; /* 通知レート (毎秒)、不明の時は -1 */ int resolution; /* MOUSE_RES_XXX、不明の時は -1 */ int accelfactor; /* 加速因子 */ int level; /* ドライバの動作レベル */ int packetsize; /* データパケットの長さ */ unsigned char syncmask[2]; /* 同期ビット */ } mousemode_t; .Ed .Pp .Dv protocol フィールドは動作レベル 0 と 2 では .Dv MOUSE_PROTO_PS2 です。 動作レベル 1 では、 .Dv MOUSE_PROTO_SYSMOUSE です。 .Pp .Dv rate フィールドは状態を通知する頻度 (1 秒当りに報告する回数) で、 この頻度でデバイスはホストコンピュータに移動の報告を送ります。 サポートされている一般的な値は、10, 20, 40, 60, 80, 100, 200 です。 中には他の任意の値をも受容するマウスもあるでしょう。 .Pp .Dv resolution フィールドはポインティングデバイスの分解能で、定数 .Dv MOUSE_RES_XXX の中のいずれかひとつの値かまたはある正の値です。 この値が大きいほど、マウスは分解能が細密になります。 定数 .Dv MOUSE_RES_XXX によって指定される実際の分解能はマウスのモデルによって異なります。 一般的な分解能は次の通りです: .Pp .Bl -tag -width MOUSE_RES_MEDIUMHIGH__ -compact .It Dv MOUSE_RES_LOW 25 ppi .It Dv MOUSE_RES_MEDIUMLOW 50 ppi .It Dv MOUSE_RES_MEDIUMHIGH 100 ppi .It Dv MOUSE_RES_HIGH 200 ppi .El .Pp .Dv accelfactor フィールドは加速機能 .Po Sy 加速 を参照 .Pc を管理する為の値を保持します。 この値は 0 か正でなければなりません。 もしこの値が 0 であれば、加速は無効となります。 .Pp .Dv packetsize フィールドはデータパケットの長さを示します。 これは動作レベルやポインティングデバイスのモデルによって変わります。 .Pp .Bl -tag -width level_0__ -compact .It Em level 0 3 バイト .It Em level 1 8 バイト .It Em level 2 デバイスのモデルで決まります .El .Pp 配列である .Dv syncmask フィールドはデータパケットの第 1 バイトを検出する為の ビットマスクとビットパターンを保持します。 .Dv syncmask[0] フィールドは各バイトと AND をとるためのビットマスクです。 その結果が .Dv syncmask[1] フィールドに等しい場合には、恐らくそのバイトはデータパケットの第 1 バイト であろう思われます。 注意すべきことは、この検出方法は 100% 信頼できるものではなく、そのため、 単に参考となる手段でしかないと見なすべきことです。 .Pp .It Dv MOUSE_SETMODE Ar mousemode_t *mode このコマンドはマウスドライバの現在の動作パラメータを .Ar mode フィールドに指定された通りに変更します。 .Dv rate , .Dv resolution , .Dv level , .Dv accelfactor の各フィールドだけが変更できます。 その他のフィールドに値をセットしても エラーを生成しませんし効果もありません。 .Pp あるフィールドの現在の設定を変更したくない場合には、 そのフィールドに -1 を入れて下さい。 .Dv resolution フィールドと .Dv rate フィールドには 0 を入れることもでき、この場合にはそのフィールドのデフォルト値 が設定されます。 .\" .Pp .\" .It Dv MOUSE_GETVARS Ar mousevar_t *vars .\" .It Dv MOUSE_SETVARS Ar mousevar_t *vars .\" これらのコマンドは .\" .Nm .\" ドライバはサポートしていません。 .Pp .It Dv MOUSE_READDATA Ar mousedata_t *data .\" このコマンドは生のデータをデバイスから読みだします。 .\" .Bd -literal .\" typedef struct mousedata { .\" int len; /* バッファ内のデータの数 */ .\" int buf[16]; /* データバッファ */ .\" } mousedata_t; .\" .Ed .\" .Pp .\" ユーザプログラムに戻った直後に、ドライバはバッファ内の有効なデータバイトの数を .\" .Dv len .\" フィールドにセットします。 .\" .Pp .It Dv MOUSE_READSTATE Ar mousedata_t *state .\" このコマンドはデバイスからハードウェアの設定を読み出します。 .\" ユーザプログラムに戻った直後に、 .\" ドライバはバッファ内の有効なデータバイトの数を .\" .Dv len .\" フィールドにセットします。 .\" これは通常 3 バイトです。 .\" バッファは次のようにフォーマットされます: .\" .Pp .\" .Bl -tag -width Byte_1 -compact .\" .It Byte 1 .\" .Bl -tag -width bit_6 -compact .\" .It bit 7 .\" 予約済み。 .\" .It bit 6 .\" 0 - ストリームモード、 1 - リモートモード。 .\" ストリームモードでは、ポインティングデバイスはその状態が変わる度に .\" デバイス状態を送ります。 .\" リモートモードでは、ホストコンピュータはデバイスの状態を送るように .\" リクエストしなければなりません。 .\" .Nm .\" ドライバはデバイスをストリームモードにします。 .\" .It bit 5 .\" ポインティングデバイスが現在有効であればセットされます。 .\" 有効でなければ 0 です。 .\" .It bit 4 .\" 0 - 1:1 スケーリング、 1 - 2:1 スケーリング .\" 1:1 スケーリングがデフォルトです。 .\" .It bit 3 .\" 予約済み。 .\" .It bit 2 .\" 左ボタン状態;押下されていればセット。 .\" .It bit 1 .\" 中ボタン状態;押下されていればセット。 .\" .It bit 0 .\" 右ボタン状態;押下されていればセット。 .\" .El .\" .It Byte 2 .\" .Bl -tag -width bit_6_0 -compact .\" .It bit 7 .\" 予約済み。 .\" .It bit 6..0 .\" 分解能コード: 0 から 3 迄。分解能コードに対する実際の分解能は .\" デバイスによって変わります。 .\" .El .\" .It Byte 3 .\" 状態通知レート(1秒当りの報告の回数)で、この頻度でデバイスはホストコンピュータ .\" に移動報告を行ないます。 .\" .El これらのコマンドについては、現在 .Nm ドライバはサポートしていません。 .Pp .It Dv MOUSE_GETSTATE Ar mousestatus_t *status このコマンドは .Xr mouse 4 に記述されているようにボタンの現在の状態と移動カウントを返します。 .El .Sh 関連ファイル .Bl -tag -width /dev/npsm0 -compact .It Pa /dev/psm0 「非ブロッキング」型デバイスノード .It Pa /dev/bpsm0 .Em devfs での「ブロッキング」型デバイスノード。 .El .Sh 使用例 .Dl "options" \&"PSM_HOOKAPM\&" .Dl "device psm0 at isa? tty irq 12" .Pp 「レジューム」イベント後にポインティングデバイスを刺激するための オプションのコードとともに .Nm ドライバをカーネルに組み込みます。 .Pp .Dl "device psm0 at isa? tty flags 0x024 irq 12" .Pp デバイス分解能を高く (4) セットし、加速因子を 2 にセットします。 .Sh 診断 .Pp デバッグレベル 0 では、起動過程での以下のような行以外には 殆ど情報はログされません: .Bd -literal -offset indent psm0: device ID X .Ed .Pp ここで .Fa X は発見されたポインティングデバイスから返されたデバイス ID コードです。 既知の ID については .Dv MOUSE_GETINFO を参照して下さい。 .Pp デバッグレベル 1 ではドライバが補助ポート (マウスポート) を検査している間により多くの情報がログされます。 メッセージは LOG_DEBUG の level で LOG_KERN を facility として .Po Xr syslogd 8 を参照 .Pc ログされます。 .Bd -literal -offset indent psm0: current command byte:xxxx kbdio: TEST_AUX_PORT status:0000 kbdio: RESET_AUX return code:00fa kbdio: RESET_AUX status:00aa kbdio: RESET_AUX ID:0000 [...] psm: status 00 02 64 psm0 irq 12 on isa psm0: model AAAA, device ID X, N buttons psm0: config:00000www, flags:0000uuuu, packet size:M psm0: syncmask:xx, syncbits:yy .Ed .Pp 第 1 行目は補助ポートが検査される直前のキーボードコントローラの コマンドバイトの値を示します。 これは通常は、4D, 45, 47, 65 のいずれかで、通電時にマザーボード BIOS が キーボードコントローラを初期化した方法により決まります。 .Pp 第 2 行目は補助ポートインタフェースに対してキーボードコントローラが テストした結果を示し、0 でエラーが無いことを示します。 しかしながら、たとえシステムにポートが存在しなくてもエラーが無いと 報告するコントローラも中にはあることに注意して下さい。 .Pp 第 3 行目から第 5 行目まではポインティングデバイスのリセット状態を示します。 機能しているデバイスであれば FA AA という順序に並んだデータ を返すはずです。 この ID コードは上で解説したものです。 .Pp 第 7 行目は現在のハードウェアの設定を示します。 .\" 定義については .\" .Dv MOUSE_READSTATE .\" を参照して下さい。 これらのバイトは次のようにフォーマットされます: .Pp .Bl -tag -width Byte_1 -compact .It Byte 1 .Bl -tag -width bit_6 -compact .It bit 7 予約済み。 .It bit 6 0 - ストリームモード、1 - リモートモード。 ストリームモードでは、ポインティングデバイスはその状態が変わる度に デバイス状態を送ります。 リモートモードでは、ホストコンピュータはデバイスの状態が送られるように 要求しなければなりません。 .Nm ドライバはデバイスをストリームモードにします。 .It bit 5 ポインティングデバイスが現在有効であればセットされます。 有効でなければ 0 です。 .It bit 4 0 - 1:1 スケーリング、1 - 2:1 スケーリング。 1:1 スケーリングがデフォルトです。 .It bit 3 予約済み。 .It bit 2 左ボタン状態; 押下されていればセット。 .It bit 1 中ボタン状態; 押下されていればセット。 .It bit 0 右ボタン状態; 押下されていればセット。 .El .It Byte 2 .Bl -tag -width bit_6_0 -compact .It bit 7 予約済み。 .It bit 6..0 分解能コード: 0 から 3 迄。 分解能コードに対応する実際の分解能はデバイスにより異なります。 .El .It Byte 3 状態通知レート (1 秒当りに報告する回数) で、この頻度でデバイスは 移動報告をホストコンピュータに送ります。 .El .Pp .Nm ドライバがユーザプログラムによりオープンされるまでは ポインティングデバイスは有効にならないことに注意して下さい。 .Pp 残りの行についてはデバイス ID コード、検出されたボタンの数、及び 内部変数を表示します。 .Pp デバッグレベル 2 では、ずっと多くの詳細な情報がログされます。 .Sh 警告 多くのパッドデバイスは、ユーザがパッドの表面を「軽く叩いた(タップした)」時に、 まるで第 1 (左) ボタンが 押下されたかのように振舞います。 これに対し、ALPS GlidePoint のパッドモデルの中には、軽く叩く(タッピング)動作を 第 4 番目のボタンのイベントとして処理するものがあります。 .Pp MouseSystems 製の PS/2 マウスの中には、正しく機能させるために 高分解能モードにする必要があるものがあります。 ドライバフラグを用いて分解能を設定して下さい。 .Pp 一旦データストリームの同期がずれた場合には、 パケットの第 1 バイトに再び同期することを保証する方法はありません。 しかしながら、X サーバが .Xr moused 1 を用いてマウスにアクセスしていない場合には、 ユーザが \fIXFree86\fP サーバを使用中に問題が生じても、 -仮想端末に切替えてから X サーバに戻れば X サーバを +仮想端末に切り替えてから X サーバに戻れば X サーバを マウスと同期させることができるかも知れません。 マウスを移動させないでいずれかのボタンをクリックすれば やはり効果があるかも知れません。 .Sh バグ ioctl コマンドの .Dv MOUSEIOCREAD は削除されました。 どのみち、これは機能していなかったのです。 .Sh 関連項目 .Xr ioctl 2 , .Xr syslog 3 , .Xr atkbdc 4 , .Xr mouse 4 , .Xr mse 4 , .Xr sysmouse 4 , .Xr moused 8 , .Xr syslogd 8 .\".Sh 歴史 .Sh 作者 .Nm ドライバは非常に多くの人々によりなされた仕事に基づいています。 これらの人々の中から少数の方々を挙げれば .An Eric Forsberg , .An Sandi Donno , .An Rick Macklem , .An Andrew Herbert , .An Charles Hannum , .An Shoji Yuen , .An Kazutaka Yokota がいます。 .Pp このマニュアルページは .An Kazutaka Yokota Aq yokota@FreeBSD.org が書きました。 .\"Translated by Tetsuro Furuya (古谷 哲郎) ,Dec.,1999. .\" Supervised by Kazutaka YOKOTA , Jan. 10, 2000. .\" ML Checked by 井崎哲也 , Jan 12, 2000. .\" Final Checked by diff --git a/ja_JP.eucJP/man/man4/splash.4 b/ja_JP.eucJP/man/man4/splash.4 index a79aa3a213..411b76b46a 100644 --- a/ja_JP.eucJP/man/man4/splash.4 +++ b/ja_JP.eucJP/man/man4/splash.4 @@ -1,261 +1,261 @@ .\" .\" Copyright (c) 1999 .\" Kazutaka YOKOTA .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer as .\" the first lines of this file unmodified. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR .\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES .\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. .\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, .\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT .\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, .\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY .\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" .\" %Id: splash.4,v 1.1.2.2 1999/02/10 14:49:52 yokota Exp % .\" jpman %Id: splash.4,v 1.3 1999/09/26 12:24:44 horikawa Stab % .\" .\" WORD: splash screen 起動画面 .\" WORD: welcome banner .\" WORD: color depth 色数 .\" .Dd February 9, 1999 .Dt SPLASH 4 i386 .Os FreeBSD .Sh 名称 .Nm splash .Nd 起動画面 (splash screen) とスクリーンセーバのインタフェース .Sh 書式 .Cd "pseudo-device splash" .Sh 解説 .Nm 疑似デバイスドライバは、カーネルに 起動画面とスクリーンセーバのサポートを加えます。 このドライバは起動画面のビットマップイメージを読み込みたい時や、 スクリーンセーバを使いたい時に必要です。 .Sh 起動画面 (SPLASH SCREEN) システムが起動しようとしている時に、任意のビットマップイメージを 画面上に表示できます。 この画像はカーネルの初期化プロセスの間じゅう画面に表示され、 ``Login'' プロンプトが画面に現れるか、 スクリーンセーバが読み込まれて初期化されるまで残ります。 また、この画像はキーを打つと消えますが、 カーネルがまだデバイスを検出している間は すぐには消えないかもしれません。 .Pp もしカーネルを読み込む際に .Fl c ないし .Fl v ブートオプションを指定すると、起動画面の画像は表示されません。 ただしそれでも画像は読み込まれていて、後でスクリーンセーバとして使えます。 下記を参照してください。 .Pp ビットマップを表示するためには、ビットマップファイルと、 それに対応した起動画面イメージ復号モジュールが ブートローダによって読み込まれていることが必要です。 現在、以下の復号モジュールが利用可能です: .Pp .Bl -tag -width splash_decoder -compact .It Pa splash_bmp.ko W*ndows BMP ファイル復号器。 BMP ファイルフォーマットにはさまざまな色数のものがありますが、 この復号器は現在のところ 256 色のビットマップのみを扱えます。 それ以外の色数のビットマップは表示できません。 .El .Pp .Sx 使用例 の節で起動画面の設定法を詳しく説明しています。 .Pp VGA の標準的なビデオモードを使う場合には ビットマップのサイズは 320x200 以下であることが必要です。 VESA モジュールを静的にリンクするか もしくは VESA モジュールを読み込むかして、 カーネルの VESA モードサポートを有効にしているのなら .Pq Xr vga 4 参照 、VESA BIOS とビデオカード上のビデオメモリの量にもよりますが、 最大で 1024x768 の解像度のビットマップを読み込むことができます。 .Sh スクリーンセーバ .\" 原文 will activate は will be activated ? スクリーンセーバはシステムがアイドル状態だと考えられる時に起動されます。 アイドル状態とは、 指定した時間の間、ユーザがキーを打たず、マウスも動かさなかった時です。 スクリーンセーバは選択可能なモジュールですので、 明示的にメモリに読み込まれている必要があります。 現在、以下のスクリーンセーバモジュールが利用可能です: .Pp .Bl -tag -width splash_module.ko -compact .It Pa blank_saver.ko これは単に画面を空白にするだけです。 .It Pa daemon_saver.ko BSD デーモンのアニメーション。 .It Pa fade_saver.ko 画面が徐々に消えてゆきます。 .It Pa green_saver.ko モニタが省電力モードを備えていれば、電源を切ります。 .It Pa logo_saver.ko グラフィックによる BSD デーモンのアニメーション。 .It Pa rain_saver.ko 画面に夕立を描きます。 .It Pa snake_saver.ko 文字列でできた蛇を描きます。 .It Pa star_saver.ko 星が瞬きます。 .It Pa warp_saver.ko 星が素早く流れます。 .El .Pp スクリーンセーバモジュールは .Xr kldload 1 を使って読み込みます: .\" ここに余計な空行が入ってしまう .Pp .Dl kldload logo_saver .Pp 以下のようにしてタイムアウトの秒数を指定できます: .Pp .Dl vidcontrol -t N .Pp また .Pa /etc/rc.conf ファイルの .Ar saver 変数をあなたの選んだスクリーンセーバに設定し タイムアウトを .Ar blanktime 変数に設定できます。これによりシステム起動時に、 自動的にスクリーンセーバを読み込み、タイムアウトを設定できます。 .Pp .Ar saver キーを押すことで スクリーンセーバを直ちに起動できます。 デフォルトは AT 拡張キーボードでは .Em Shift-Pause 、AT 84 キーボードでは .Em Shift-Ctrl-NumLock/Pause です。 キーマップ .Pq Xr kbdcontrol 1 、 Xr keymap 5 参照 を書き換えて .Ar saver 機能をお好みのキーに割り当てることで、 .Ar saver キーを変更できます。 .Pp 画面がテキストモードでない時にはスクリーンセーバは機能しません。 .Sh 起動画面をスクリーンセーバとして使う 起動画面の画像を読み込んでいてスクリーンセーバを読み込んでいない場合、 起動画面の画像をスクリーンセーバとして使い続けることができます。 -画面を切替えるまでの間隔は、上の +画面を切り替えるまでの間隔は、上の .Sx スクリーンセーバ の節にあるやりかたで指定できます。 .\".Sh DRIVER CONFIGURATION .Sh 関連ファイル .Bl -tag -width /modules/splash_xxxx.ko -compact .It /boot/loader.rc ブートローダが読み込むスクリプト .It /etc/rc.conf システムの設定情報 .It /modules/splash_*.ko 起動画面イメージ復号モジュール .It /modules/*_saver.ko スクリーンセーバモジュール .It /modules/vesa.ko VESA サポートモジュール .El .Sh 使用例 起動画面やスクリーンセーバを読み込むためには、 カーネル設定ファイルに以下の行があることが必要です。 .Pp .Dl pseudo-device splash .Pp 以下の例は、ブートローダのプロンプトから起動画面の画像を 読み込む方法を示しています。 これらはプロンプトのところで手で打っても良いですし、 ブートローダのスクリプト .Pa /boot/loader.rc .Pq Xr loader.rc 5 参照 に書いてもかまいません。 .Bd -literal -offset indent load kernel load -t splash_image_data chuck.bmp load splash_bmp .Ed .Pp 2 行目で起動画面に使うビットマップイメージファイルを読み込みます。 上の例では、ファイル .Pa chuck.bmp が読み込まれます。 この行に .Fl t Ar splash_image_data というオプションを含めることが非常に重要です。 起動画面イメージ復号モジュールは、 既に読み込まれているはずのビットマップデータを探す時に このタグ名を探すからです。 3 行目で起動画面イメージ復号モジュール .Pa splash_bmp を読み込んでいます。 .Pp 以下の例では、VESA モジュールを読み込んでいるので、 標準の VGA モードでは表示できないビットマップファイルも、 VESA ビデオモードを使って表示されるはずです。 .Bd -literal -offset indent load kernel load vesa load -t splash_image_data chuck.bmp load splash_bmp .Ed .Pp もし VESA サポートがカーネルに静的にリンクされているなら、 VESA モジュールを読み込む必要はありません。 上の最初の例のように、ただビットマップファイルと 起動画面イメージ復号モジュールを読み込むだけで良いです。 .\".Sh DIAGNOSTICS .Sh 警告 起動画面もスクリーンセーバも、コンソールドライバとして .Xr syscons 4 を用いる場合にのみ有効です。 もうひとつのコンソールドライバ .Xr pcvt 4 では利用できません。 .Sh バグ スクリーンセーバが既に読み込まれている時に 他のスクリーンセーバを読み込んだ場合、 最初のスクリーンセーバは自動的には取り除かれずにメモリに残り、 カーネルのメモリを無駄に消費します。 .Sh 関連項目 .Xr vidcontrol 1 , .Xr syscons 4 , .Xr vga 4 , .Xr rc.conf 5 , .Xr kldload 8 , .Xr kldunload 8 .Sh 歴史 .Nm ドライバは .Fx 3.1 に初めて登場しました。 .Sh 作者 .Nm ドライバとこのマニュアルページは .An Kazutaka Yokota Aq yokota@FreeBSD.org が書きました。 .Pa splash_bmp モジュールは .An Michael Smith Aq msmith@FreeBSD.org と .An Kazutaka Yokota が書きました。 diff --git a/ja_JP.eucJP/man/man4/vga.4 b/ja_JP.eucJP/man/man4/vga.4 index bb81502abf..f8ef245443 100644 --- a/ja_JP.eucJP/man/man4/vga.4 +++ b/ja_JP.eucJP/man/man4/vga.4 @@ -1,184 +1,184 @@ .\" .\" Copyright (c) 1999 .\" Kazutaka YOKOTA .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer as .\" the first lines of this file unmodified. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR .\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES .\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. .\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, .\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT .\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, .\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY .\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" .\" %Id: vga.4,v 1.1.2.2 1999/02/10 14:49:52 yokota Exp % .\" jpman %Id: vga.4,v 1.3 1999/08/18 16:40:13 horikawa Stab % .\" .Dd February 9, 1999 .Dt VGA 4 .Os FreeBSD .Sh 名称 .Nm vga .Nd 汎用ビデオカードインタフェース .Sh 書式 .Cd "options" \&"VESA\&" .Cd "options" \&"VESA_DEBUG=N\&" .Cd "options" \&"VGA_ALT_SEQACCESS\&" .Cd "options" \&"VGA_NO_FONT_LOADING\&" .Cd "options" \&"VGA_NO_MODE_CHANGE\&" .Cd "options" \&"VGA_SLOW_IOACCESS\&" .Cd "options" \&"VM86\&" .Cd "device vga0 at isa? port ? conflicts" .Sh 解説 .Nm ドライバは汎用ビデオカードドライバであり、 ビデオカードを利用できるようにします。 このドライバはコンソールドライバ .Xr syscons 4 のために必要です。 コンソールドライバは .Nm ドライバを呼び出してビデオハードウェアを操作します (ビデオモードの変更、フォントの読み込み、など)。 .Pp ビデオカードは他のドライバと同じ範囲の I/O ポートを使用するかもしれないので、 キーワード .Em conflicts が必要です。 .Pp .Nm ドライバは次の規格のビデオカードをサポートします: MDA, CGA, EGA, VGA。 さらに、ビデオカードがサポートしていれば VESA 拡張 BIOS を利用することもできます。 VESA サポートは静的にカーネルに含めておくことも、 独立したモジュールとして読み込むこともできます。 .Pp VESA サポートをカーネルに静的にリンクするためには、 カーネル設定ファイルで .Em VESA オプション(以下参照) と .Em VM86 オプションを定義することが必要です。 .Pp .Nm vesa モジュールは .Xr kldload 8 を使って動的にカーネルに読み込むことができます。 このためには、 .Em VM86 オプションをカーネル設定ファイルで定義しておく必要があります。 .Sh ドライバの設定 .Ss カーネル設定オプション .Nm ドライバを制御するために、 以下のカーネル設定オプション .Pq Xr config 8 参照 が使えます。 これらのオプションはある種の VGA カードとの互換性をとるためのものです。 .Bl -tag -width MOUSE .It Em VGA_ALT_SEQACCESS マウスポインタが正しく描画されない場合や、 あるいはフォントが VGA カードにうまく読み込めていないように思える場合には、 このオプションを試すと良いかも知れません。 ただしシステムによってはちらつきが生じるようになるかもしれません。 .It Em VGA_SLOW_IOACCESS 古い VGA カードを正しく動作させるためにこのオプションが必要かもしれません。 これによってドライバは VGA レジスタに対しバイト幅の I/O を行なうようになり、 若干動作が遅くなります。 .El .Pp 以下のオプションはドライバに任意選択の機能を付け加えます。 .Bl -tag -width MOUSE .It Em VESA ドライバに VESA BIOS サポートを加えます。 もし VGA カードが VESA 拡張 BIOS 1.2 以降を持っていれば、 -このオプションによって高解像度モードへの切替えに +このオプションによって高解像度モードへの切り替えに VESA BIOS を利用するようになります。 このオプションを使用するには .Em VM86 オプションも必要です。 .It Em VESA_DEBUG=N VESA サポートのデバッグレベルを .Fa N にします。 デフォルトは 0 で、すべてのデバッグ出力は抑制されます。 .El .Pp 以下のオプションは .Nm ドライバから機能を削り、カーネルの使用メモリを節約します。 .Bl -tag -width MOUSE .It Em VGA_NO_FONT_LOADING .Nm ドライバは EGA や VGA のカードにソフトウェアフォントを読み込めます。 このオプションはこの機能を削ります。 .It Em VGA_NO_MODE_CHANGE このオプションはドライバがビデオモードを変更できないようにします。 .El .\".Sh 関連ファイル .Sh 使用例 カーネル設定ファイルには普通は以下の記述があるはずです: .Pp .Dl "device vga0 at isa? port ? conflicts" .Pp VESA 拡張 BIOS サポートを有効にするためには、 カーネル設定ファイルに次の 3 行を含めてください。 .Pp .Dl "options" \&"VM86\&" .Dl "options" \&"VESA\&" .Dl "device vga0 at isa? port ? conflicts" .Pp VESA サポートをカーネルに含めたくないが、たまには使いたい場合には、 次の 2 行をカーネル設定ファイルに加えてください: .Pp .Dl "options" \&"VM86\&" .Dl "device vga0 at isa? port ? conflicts" .Pp そして使いたくなったら .Nm vesa モジュールを読み込んでください: .Pp .Dl kldload vesa .Pp .\".Sh 診断 .\".Sh 警告 .\".Sh バグ .Sh 関連項目 .Xr syscons 4 , .Xr config 8 , .Xr kldload 8 , .Xr kldunload 8 .Sh 規格 .Rs .%T "VESA BIOS Extension (VBE)" .%A Video Electronics Standards Association .Re .Sh 歴史 .Nm ドライバは .Fx 3.1 に初めて登場しました。 .Sh 作者 .Nm ドライバは .ie t .An S\(/oren Schmidt Aq sos@FreeBSD.org .el .An Soren Schmidt Aq sos@FreeBSD.org と .An Kazutaka Yokota Aq yokota@FreeBSD.org が書きました。このマニュアルページは .An Kazutaka Yokota が書きました。 diff --git a/ja_JP.eucJP/man/man5/remote.5 b/ja_JP.eucJP/man/man5/remote.5 index 45b6f9a21d..244ea7d37b 100644 --- a/ja_JP.eucJP/man/man5/remote.5 +++ b/ja_JP.eucJP/man/man5/remote.5 @@ -1,193 +1,193 @@ .\" Copyright (c) 1983, 1991, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)remote.5 8.1 (Berkeley) 6/5/93 .\" %FreeBSD: src/share/man/man5/remote.5,v 1.5 1999/08/28 00:20:49 peter Exp % .\" jpman %Id: remote.5,v 1.3 1998/07/02 14:12:58 horikawa Stab % .\" .Dd June 5, 1993 .Dt REMOTE 5 .Os BSD 4.2 .Sh 名称 .Nm remote .Nd リモートホスト記述ファイル .Sh 解説 .Xr tip 1 によって知られるシステムとその属性は、 .Xr termcap 5 ファイルのような構造の .Tn ASCII ファイルに記録されます。 ファイルの各行は、1 つの .Em システム についての記述を提供します。 フィールドはコロン (``:'') で分けられています。 \e 文字の直後に改行がある行末は、次の行へ継続されます。 .Pp 最初のエントリはホストシステムの (複数の) 名称です。 システムの名称が 1 つ以上ある場合、名称は縦棒で区切られます。 システムの名称の後に記述フィールドが続きます。 `=' 記号が続くフィールド名は、文字列型を示します。 `#' 記号が続くフィールド名は、数値を示します。 .Pp ``tip*'' と ``cu*'' という名前が付いたエントリは、 .Xr tip 1 や、以下で述べるように .Nm tip に対するインタフェース .Xr cu 1 でデフォルトのエントリとして使われます。 .Nm tip が電話番号だけをつけて呼び出された時、 ``tip300'' の形式のエントリを探 します。 ここで、 300 は接続が張られたボーレートです。 .Nm cu インタフェースが使われた時は、 ``cu300'' という形式のエントリが使わ れます。 .Sh ケーパビリティ ケーパビリティは、文字列 (str) ・数値 (num) ・ブーリアンフラグ (bool) のいずれかです。文字列ケーパビリティは .Em capability Ns Ar = Ns Em value のように指定されます。例えば、 ``dv=/dev/harris'' のように指定します。 数値ケーパビリティは .Em capability Ns Ar # Ns Em value のように指定されます。例えば、 ``xa#99'' のように指定します。 ブーリアンケーパビリティは単にケーパビリティを記述するだけで 指定されます。 .Bl -tag -width indent .It Cm \&at (str) 自動呼び出しユニットの形式です。 .It Cm \&br (num) リモートホストと接続を確立するために使われるボーレート。 これは、10 進の数値です。デフォルトのボーレートは 300 ボーです。 .It Cm \&cm (str) リモートホストに送られる初期接続メッセージです。 例えば、ホストにポート選択器を通して到達する場合、 -ここにはホストに切替えるために必要とされる適切なシーケンスが設定されて +ここにはホストに切り替えるために必要とされる適切なシーケンスが設定されて いるべきです。 .It Cm \&cu (str) 電話の呼び出しが行われる場合の呼び出しユニットです。 デフォルトは、 `dv' フィールドと同じです。 .It Cm \&di (str) ユーザによって切断が要求されている時にホストに送られる 切断メッセージです。 .It Cm \&du (bool) このホストはダイヤルアップ線上にあることを示します。 .It Cm \&dv (str) 接続を確立するためにオープンする (複数の) .Tn UNIX デバイスです。このファイルが端末線を参照している場合、 .Xr tip 1 は、1 度に 1 ユーザだけがポートにアクセスすることを保証するために、 デバイスを排他的にオープンします。 .It Cm \&el (str) 行末 (end-of-line) を示す文字です。 デフォルトでは .Dv NULL 文字です。`el' 中の 1 文字もしくは復帰文字 (carriage return) の後の `~' エスケープは .Nm tip だけで認識されます。 .It Cm \&fs (str) 転送のためのフレームサイズです。 デフォルトフレームサイズは .Dv BUFSIZ と同じです。 .It Cm \&hd (bool) ホストが半 2 重通信を使い、ローカルエコーが行われることを示します。 .It Cm \&ie (str) 入力のファイル終了 (end-of-file) マークです。 デフォルトは .Dv NULL です。 .It Cm \&oe (str) 出力のファイル終了 (end-of-file) 文字列です。 デフォルトは .Dv NULL です。 .Nm tip がファイルを転送している時、この文字列はファイル終了時に送られます。 .It Cm \&pa (str) データをホストに送っている時に使われるパリティの形式です。 これは ``even'', ``odd'', ``none'', ``zero'' (いつでも 8 ビット目を 0 に設定する), ``one'' (いつでも 8 ビット目を 1 に設定する)のいずれかです。 デフォルトではイーブンパリティです。 .It Cm \&pn (str) ホストに対する (複数の) 電話番号です。 電話番号フィールドが @ 符号を含んでいる場合、 .Nm tip は電話番号の一覧を .Pa /etc/phones ファイルから検索します ( .Xr phones 5 参照)。 .It Cm \&tc (str) ケーパビリティのリストが、名前で与えられた記述に継続されることを示し ます。これは主に共通のケーパビリティ情報を共有するために使われます。 .El .Pp ここで、ケーパビリティの継続機能の利用をしめす短い例をお見せしましょう: .Bd -literal UNIX-1200:\e :dv=/dev/cau0:el=^D^U^C^S^Q^O@:du:at=ventel:ie=#$%:oe=^D:br#1200: arpavax|ax:\e :pn=7654321%:tc=UNIX-1200 .Ed .Sh 関連ファイル .Bl -tag -width /etc/remote -compact .It Pa /etc/remote .Pa /etc に置かれた .Nm リモート ホスト記述ファイル。 .El .Sh 関連項目 .Xr tip 1 , .Xr phones 5 .Sh 歴史 .Nm ファイル書式は .Bx 4.2 から登場しました。 diff --git a/ja_JP.eucJP/man/man5/termcap.5 b/ja_JP.eucJP/man/man5/termcap.5 index 682a74e656..fb84d438f7 100644 --- a/ja_JP.eucJP/man/man5/termcap.5 +++ b/ja_JP.eucJP/man/man5/termcap.5 @@ -1,2081 +1,2081 @@ .\" Copyright (c) 1985, 1991, 1993, 1994 .\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)termcap.5 8.3 (Berkeley) 4/16/94 .\" .\" /*************************************************************************** .\" * COPYRIGHT NOTICE * .\" **************************************************************************** .\" * ncurses is copyright (C) 1992-1995 * .\" * Zeyd M. Ben-Halim * .\" * zmbenhal@netcom.com * .\" * Eric S. Raymond * .\" * esr@snark.thyrsus.com * .\" * * .\" * Permission is hereby granted to reproduce and distribute ncurses * .\" * by any means and for any fee, whether alone or as part of a * .\" * larger distribution, in source or in binary form, PROVIDED * .\" * this notice is included with any such distribution, and is not * .\" * removed from any of its header files. Mention of ncurses in any * .\" * applications linked with it is highly appreciated. * .\" * * .\" * ncurses comes AS IS with no warranty, implied or expressed. * .\" * * .\" ***************************************************************************/ .\" .\" %FreeBSD: src/share/termcap/termcap.5,v 1.12 2000/03/01 14:50:06 sheldonh Exp % .\" .\" jpman %Id: termcap.5,v 1.4 1998/06/13 12:34:58 horikawa Stab % .\" FreeBSD jpman project 訳語表 .\" WORD: terminal 端末 .\" WORD: text テキスト .\" WORD: convention 約束 .\" WORD: virtual terminal 仮想端末 .\" WORD: print 印字 .\" WORD: display 描画 .\" WORD: screen 画面 .\" WORD: CRT CRT .\" WORD: attribute 属性 .\" WORD: underline 下線 .\" WORD: standout 強調表示 .\" WORD: column 桁 .\" WORD: row 行 .\" WORD: carriage return キャリッジリターン .\" WORD: home など ホーム(ホームポジション)、home(home キー) .\" など、キーそのものについては英語のままとした .\" WORD: foreground color 前景色 .\" WORD: background color 背景色 .\" WORD: bottom margin 下マージン .\" WORD: top margin 上マージン .\" WORD: bold mode ボールドモード .\" WORD: scroll forward 前進スクロール .\" WORD: scroll backward 後退スクロール .\" WORD: glitch グリッチ (他の端末と不整合な機能) .\" その他 Beehive はメーカ名です(.Ss Glitches and Braindamages 参照)。 .Dd April 16, 1994 .Dt TERMCAP 5 .Os BSD 3 .Sh 名称 .Nm termcap .Nd 端末ケーパビリティのデータベース .Sh 書式 .Nm .Sh 解説 .Nm ファイルは端末に関するデータベースであり、例えば .Xr \&vi 1 や .Xr ncurses 3 が使用します。 .Nm には、端末が持つケーパビリティと、 操作がどのように行われるのかが記述されています。 パディングの必要性および初期化シーケンスも .Nm に記述されています。 .Pp .Nm のエントリは `:' で区切られた複数個のフィールドからなります。 各端末の最初のエントリは、`|' 文字で区切った端末名です。 最初の名前は、その端末の最も一般的な省略形です。 最後の名前は端末を完全に識別するための長い名前であり、 その他は端末名の類義語です。 最後以外の名前は小文字を使い、空白を含まないようにしてください; 最後の名前は、可読性のために大文字や空白を含んでかまいません。 .Pp 端末名 (最後の冗長なエントリを除く) は次の約束に従い選んでください。 端末を構成するハードウェアの特定の一部を、 .Dq hp2621 のように根幹の名前として選びます。 この名前はハイフンを含んではなりません。 ハードウェアのモードやユーザのプリファレンスは、 ハイフンとモード指示子を追加して示します。 ですから、132 桁モードの .Dq vt100 は .Dq vt100-w になります。可能ならば、以下の接尾辞を使用してください: .Pp .Bd -filled -offset indent .Bl -column indent "With automatic margins (usually default)xx" .Sy 接尾辞 意味 例 -w 広いモード (80 桁超) vt100-w -am 自動マージン付 (通常はデフォルト) vt100-am -nam 自動マージン無し vt100-nam .Pf \- Ar n Ta No "画面上の行数 aaa-60" -na 矢印キー無し (ローカルのままにする) concept100-na .Pf \- Ar \&np Ta No "メモリページ数 concept100-4p" -rv 反転表示 concept100-rv .El .Ed .Sh ケーパビリティ 記述フィールドに、ケーパビリティの意味を示そうとしています。 記述フィールドには次のようなコードが書いてあることがあります: .Pp .Bl -tag -width #[1-9] .It (P) パディングが指定されるかもしれないことを表します。 .It #[1-9] 記述フィールドでは、文字列が (#\fIi\fP) として与えられる引数として .Xr tparm や .Xr tgoto を介して渡されることを示します。 .It (P*) 影響を受ける行数に従いパディングが変化することを示します。 .It (#\d\fIi\fP\u) \fIi\fP 番目のパラメータを表します。 .El .Pp 以下、ブール値のケーパビリティです: .Bd -literal \fBブール値 TCap 記述\fR \fB変数 コード\fR auto_left_margin bw cursor_left は桁 0 から最後の桁に回り込む auto_right_margin am 端末は自動マージンを持つ no_esc_ctlc xb beehive (f1=escape, f2=ctrl C) ceol_standout_glitch xs 強調表示は上書きによって消去されない (hp) eat_newline_glitch xn 80 桁より後の改行は無視される (concept) erase_overstrike eo 空白を上打ちすることで消去可能 generic_type gn 一般的な行タイプ hard_copy hc ハードコピー端末 has_meta_key km メタキーを持ち、最上位ビットをセットする has_status_line hs 追加のステータス行を持つ insert_null_glitch in 挿入モードはナルを区別する memory_above da 画面より上の描画が保存される memory_below db 画面より下の描画が保存される move_insert_mode mi 挿入モードでの移動が安全 move_standout_mode ms 強調表示モードでの移動が安全 over_strike os 端末は上打ちが可能 status_line_esc_ok es ステータス行でエスケープを使用可能 dest_tabs_magic_smso xt 破壊的タブ、強調文字の奇妙な動作 (t1061) tilde_glitch hz ~ を印字できない (hazeltine) transparent_underline ul 下線文字の上打ち xon_xoff xo 端末は xon/xoff のハンドシェークを使用 needs_xon_xoff nx パディングは動作しないので xon/xoff が必要 prtr_silent 5i プリンタ出力は画面にエコーしない hard_cursor HC カーソルが見にくい non_rev_rmcup NR enter_ca_mode は exit_ca_mode を反転しない no_pad_char NP パディング文字が存在しない non_dest_scroll_region ND スクロール領域が非破壊的 can_change cc 端末は既存の色を再定義可能 back_color_erase ut 画面は背景色で消される hue_lightness_saturation hl 端末は HLS カラー表現のみ使用 (tektronix) col_addr_glitch YA 桁位置指定および micro_column_address ケーパビリティは正方向の動きのみ cr_cancels_micro_mode YB cr を使用するとマイクロモードがオフになる has_print_wheel YC オペレータが文字セットを変更する必要がある プリンタ row_addr_glitch YD row_address および micro_row_address は 正方向の動きのみ semi_auto_right_margin YE 最終桁で印字すると cr となる cpi_changes_res YF 文字ピッチを変えると解像度が変わる lpi_changes_res YG 行ピッチを変えると解像度が変わる .Ed .Pp 以下、数値のケーパビリティです: .Bd -literal \fB数値 TCap 記述\fR \fB変数 コード\fR columns co 1 行の桁数 init_tabs it タブの初期設定は # 個の空白ごと lines li 画面もしくはページの行数 lines_of_memory lm 行より大きい場合はメモリの行数、 0 の場合はさまざま .\" => は大小関係を表すのではない See .Sh その他 magic_cookie_glitch sg enter_standout_mode や exit_standout_mode が残す空白文字数 padding_baud_rate pb パディングが必要な最低ボーレート virtual_terminal vt 仮想端末番号 (CB/unix) width_status_line ws ステータス行の桁数 num_labels Nl 画面上のラベル数 label_height lh 各ラベルの行数 label_width lw 各ラベルの桁数 max_attributes ma 端末が扱える属性の最大の組み合わせ maximum_windows MW 定義可能なウィンドウ数の最大 magic_cookie_glitch_ul ug 下線により残される空白数 # # 以下は SVr4 のカラーサポートにより導入 # max_colors Co 画面上の最大色数 max_pairs pa 画面上の色の組の最大数 no_color_video NC 色付きでは使用できないビデオ属性 # # 以下の数値ケーパビリティは SVr4.0 の term 構造体に存在しますが、 # マニュアルには記述されていません。 # これらは SVr4 のプリンタサポートにより追加されました。 # buffer_capacity Ya 印字前にバッファされるバイト数 dot_vert_spacing Yb 1 インチあたりのピン数で表した垂直ピン間隔 dot_horz_spacing Yc 1 インチあたりのドット数で表した水平 ドット間隔 max_micro_address Yd micro_..._address での最大値 max_micro_jump Ye parm_..._micro での最大値 micro_char_size Yf マイクロモードでの文字サイズ micro_line_size Yg マイクロモードでの行サイズ number_of_pins Yh プリントヘッドのピン数 output_res_char Yi 行あたりのユニット数による水平解像度 output_res_line Yj 行あたりのユニット数による垂直解像度 output_res_horz_inch Yk インチあたりのユニット数による水平解像度 output_res_vert_inch Yl インチあたりのユニット数による垂直解像度 print_rate Ym 1 秒あたりの文字数による印字レート wide_char_size Yn 倍幅モードでの文字ステップサイズ buttons BT マウスのボタン数 bit_image_entwining Yo 各ビットイメージ行として渡される数 bit_image_type Yp ビットイメージデバイスのタイプ .Ed .Pp 以下、文字列ケーパビリティです: .Bd -literal \fB文字列 TCap 記述\fR \fB変数 コード\fR back_tab bt 後退タブ (P) bell bl 可聴シグナル (ベル) (P) carriage_return cr キャリッジリターン (P*) change_scroll_region cs 領域を行 #1 から行 #2 までに変更 (P) clear_all_tabs ct 全タブストップをクリア (P) clear_screen cl 画面を消去しカーソルをホームに移動 (P*) clr_eol ce 行末までクリア (P) clr_eos cd 画面末までクリア (P*) column_address ch 絶対指定での水平位置 #1 (P) command_character CC 端末がプロトタイプで設定可能なコマンド文字 cursor_address cm 行 #1 桁 #2 に移動 cursor_down do 1 行下に移動 cursor_home ho カーソルをホームに移動 cursor_invisible vi カーソルを見えなくする cursor_left le 1 つ左に移動 cursor_mem_address CM メモリ相対のカーソル位置指定 cursor_normal ve 通常のカーソル表示にする (cursor_invisible/cursor_visible の無効化) cursor_right nd 1 つ右に移動 cursor_to_ll ll 最終行の最初の桁 cursor_up up 1 行上に移動 cursor_visible vs カーソルを非常に見易くする delete_character dc 文字削除 (P*) delete_line dl 行削除 (P*) dis_status_line ds ステータス行を無効にする down_half_line hd 半行下に移動 enter_alt_charset_mode as 別の文字セット開始 (P) enter_blink_mode mb 点滅オン enter_bold_mode md ボールド (さらに明るい) モードオン enter_ca_mode ti cursor_address を使用するプログラムを開始 する文字列 enter_delete_mode dm 削除モードへ入る enter_dim_mode mh 半輝度モードオン enter_insert_mode im 挿入モードへ入る enter_secure_mode mk ブランクモードオン (文字が見えません) enter_protected_mode mp 保護モードオン enter_reverse_mode mr 反転表示モードオン enter_standout_mode so 強調表示モード開始 enter_underline_mode us 下線モード開始 erase_chars ec #1 個文字を削除 (P) exit_alt_charset_mode ae 別の文字セット終了 (P) exit_attribute_mode me 全属性をオフ exit_ca_mode te cup 使用のプログラムを終了する文字列 exit_delete_mode ed 削除モード終了 exit_insert_mode ei 挿入モードから抜ける exit_standout_mode se 強調表示モードから抜ける exit_underline_mode ue 下線モードから抜ける flash_screen vb 可視ベル (カーソルは移動しません) form_feed ff ハードコピー端末でのページ排出 (P*) from_status_line fs ステータス行からの復帰 init_1string i1 初期化文字列 init_2string is 初期化文字列 init_3string i3 初期化文字列 init_file if 初期化ファイルの名前 insert_character ic 文字挿入 (P) insert_line al 行挿入 (P*) insert_padding ip 挿入された文字の後にパディングを挿入 key_backspace kb backspace キー key_catab ka clear-all-tabs キー key_clear kC clear-screen または erase キー key_ctab kt clear-tab キー key_dc kD delete-character キー key_dl kL delete-line キー key_down kd down-arrow キー key_eic kM 挿入モードで mir や smir により送られる key_eol kE clear-to-end-of-line キー key_eos kS clear-to-end-of-screen キー key_f0 k0 F0 ファンクションキー key_f1 k1 F1 ファンクションキー key_f10 k; F10 ファンクションキー key_f2 k2 F2 ファンクションキー key_f3 k3 F3 ファンクションキー key_f4 k4 F4 ファンクションキー key_f5 k5 F5 ファンクションキー key_f6 k6 F6 ファンクションキー key_f7 k7 F7 ファンクションキー key_f8 k8 F8 ファンクションキー key_f9 k9 F9 ファンクションキー key_home kh home キー key_ic kI insert-character キー key_il kA insert-line キー key_left kl left-arrow キー key_ll kH last-line キー key_npage kN next-page キー key_ppage kP prev-page キー key_right kr right-arrow キー key_sf kF scroll-forward キー key_sr kR scroll-backward キー key_stab kT set-tab キー key_up ku up-arrow キー keypad_local ke 'キーボード送出' モードから抜ける keypad_xmit ks 'キーボード送出' モードに入る lab_f0 l0 非 f0 の時、ファンクションキー f0 のラベル lab_f1 l1 非 f1 の時、ファンクションキー f1 のラベル lab_f10 la 非 f10 の時、ファンクションキー f10 の ラベル lab_f2 l2 非 f2 の時、ファンクションキー f2 のラベル lab_f3 l3 非 f3 の時、ファンクションキー f3 のラベル lab_f4 l4 非 f4 の時、ファンクションキー f4 のラベル lab_f5 l5 非 f5 の時、ファンクションキー f5 のラベル lab_f6 l6 非 f6 の時、ファンクションキー f6 のラベル lab_f7 l7 非 f7 の時、ファンクションキー f7 のラベル lab_f8 l8 非 f8 の時、ファンクションキー f8 のラベル lab_f9 l9 非 f9 の時、ファンクションキー f9 のラベル meta_off mo メタモードオフ meta_on mm メタモードオン (8 ビット目をオン) newline nw 改行 (cr の後に lf が来たように振舞います) pad_char pc パディング文字 (ナルの代り) parm_dch DC #1 文字を削除 (P*) parm_delete_line DL #1 行を削除 (P*) parm_down_cursor DO #1 行下に移動 (P*) parm_ich IC #1 文字を挿入 (P*) parm_index SF #1 行の前進スクロール (P) parm_insert_line AL #1 行を挿入 (P*) parm_left_cursor LE #1 文字左に移動 (P) parm_right_cursor RI #1 文字右に移動 (P*) parm_rindex SR #1 行の後退スクロール (P) parm_up_cursor UP #1 行上に移動 (P*) pkey_key pk 文字列 #2 をタイプする プログラムファンクションキー #1 pkey_local pl 文字列 #2 を実行する プログラムファンクションキー #1 pkey_xmit px 文字列 #2 を転送する プログラムファンクションキー #1 print_screen ps 画面の内容を印字 prtr_off pf プリンタオフ prtr_on po プリンタオン repeat_char rp 文字 #1 を #2 回繰り返す (P*) reset_1string r1 リセット文字列 reset_2string r2 リセット文字列 reset_3string r3 リセット文字列 reset_file rf リセットファイルの名前 restore_cursor rc save_cursor の最後の位置へカーソルを戻す row_address cv 絶対指定での垂直位置 #1 (P) save_cursor sc 現在のカーソル位置を保存 (P) scroll_forward sf テキストを上にスクロール (P) scroll_reverse sr テキストを下にスクロール (P) set_attributes sa ビデオ属性 #1-#9 を定義 (PG9) set_tab st 全ての行において今いる桁にタブを設定 set_window wi 現在のウィンドウを、行 #1-#2 桁 #3-#4 に 設定 tab ta 次の 8 スペースハードウェアタブストップへ タブ to_status_line ts ステータス行へ移動 underline_char uc 文字に下線を引きその後に移動 up_half_line hu 半行上に移動 init_prog iP 初期化プログラムのパス名 key_a1 K1 キーパッドの左上キー key_a3 K3 キーパッドの右上キー key_b2 K2 キーパッドの中央キー key_c1 K4 キーパッドの左下キー key_c3 K5 キーパッドの右下キー prtr_non pO #1 バイトだけプリンタをオンする termcap_init2 i2 2 番目の初期化文字列 termcap_reset rs 端末リセット文字 # # SVr1 のケーパビリティはここまでです。 # IBM の terminfo はここまでは SVr4 と同じですが、ここから先は異なります。 # char_padding rP insert_padding と似ていますが挿入モード時 に使用 acs_chars ac 図形文字セットの組 - def=vt100 plab_norm pn プログラムラベル #1 は文字列 #2 を表示 key_btab kB back-tab キー enter_xon_mode SX xon/xoff ハンドシェークオン exit_xon_mode RX xon/xoff ハンドシェークオフ enter_am_mode SA 自動マージンオン exit_am_mode RA 自動マージンオフ xon_character XN XON 文字 xoff_character XF XOFF 文字 ena_acs eA 別の文字セットを有効にする label_on LO ソフトラベルオン label_off LF ソフトラベルオフ key_beg @1 begin キー key_cancel @2 cancel キー key_close @3 close キー key_command @4 command キー key_copy @5 copy キー key_create @6 create キー key_end @7 end キー key_enter @8 enter/send キー key_exit @9 exit キー key_find @0 find キー key_help %1 help キー key_mark %2 mark キー key_message %3 message キー key_move %4 move キー key_next %5 next キー key_open %6 open キー key_options %7 options キー key_previous %8 previous キー key_print %9 print キー key_redo %0 redo キー key_reference &1 reference キー key_refresh &2 refresh キー key_replace &3 replace キー key_restart &4 restart キー key_resume &5 resume キー key_save &6 save キー key_suspend &7 suspend キー key_undo &8 undo キー key_sbeg &9 シフト状態の begin キー key_scancel &0 シフト状態の cancel キー key_scommand *1 シフト状態の command キー key_scopy *2 シフト状態の copy キー key_screate *3 シフト状態の create キー key_sdc *4 シフト状態の delete char キー key_sdl *5 シフト状態の delete line キー key_select *6 select キー key_send *7 シフト状態の end キー key_seol *8 シフト状態の end-of-line キー key_sexit *9 シフト状態の exit キー key_sfind *0 シフト状態の find キー key_shelp #1 シフト状態の help キー key_shome #2 シフト状態の home キー key_sic #3 シフト状態の insert char キー key_sleft #4 シフト状態の left キー key_smessage %a シフト状態の message キー key_smove %b シフト状態の move キー key_snext %c シフト状態の next キー key_soptions %d シフト状態の options キー key_sprevious %e シフト状態の previous キー key_sprint %f シフト状態の print キー key_sredo %g シフト状態の redo キー key_sreplace %h シフト状態の replace キー key_sright %i シフト状態の right キー key_srsume %j シフト状態の resume キー key_ssave !1 シフト状態の save キー key_ssuspend !2 シフト状態の suspend キー key_sundo !3 シフト状態の undo キー req_for_input RF 次の入力文字を送る (pty で使用) key_f11 F1 F11 ファンクションキー key_f12 F2 F12 ファンクションキー key_f13 F3 F13 ファンクションキー key_f14 F4 F14 ファンクションキー key_f15 F5 F15 ファンクションキー key_f16 F6 F16 ファンクションキー key_f17 F7 F17 ファンクションキー key_f18 F8 F18 ファンクションキー key_f19 F9 F19 ファンクションキー key_f20 FA F20 ファンクションキー key_f21 FB F21 ファンクションキー key_f22 FC F22 ファンクションキー key_f23 FD F23 ファンクションキー key_f24 FE F24 ファンクションキー key_f25 FF F25 ファンクションキー key_f26 FG F26 ファンクションキー key_f27 FH F27 ファンクションキー key_f28 FI F28 ファンクションキー key_f29 FJ F29 ファンクションキー key_f30 FK F30 ファンクションキー key_f31 FL F31 ファンクションキー key_f32 FM F32 ファンクションキー key_f33 FN F33 ファンクションキー key_f34 FO F34 ファンクションキー key_f35 FP F35 ファンクションキー key_f36 FQ F36 ファンクションキー key_f37 FR F37 ファンクションキー key_f38 FS F38 ファンクションキー key_f39 FT F39 ファンクションキー key_f40 FU F40 ファンクションキー key_f41 FV F41 ファンクションキー key_f42 FW F42 ファンクションキー key_f43 FX F43 ファンクションキー key_f44 FY F44 ファンクションキー key_f45 FZ F45 ファンクションキー key_f46 Fa F46 ファンクションキー key_f47 Fb F47 ファンクションキー key_f48 Fc F48 ファンクションキー key_f49 Fd F49 ファンクションキー key_f50 Fe F50 ファンクションキー key_f51 Ff F51 ファンクションキー key_f52 Fg F52 ファンクションキー key_f53 Fh F53 ファンクションキー key_f54 Fi F54 ファンクションキー key_f55 Fj F55 ファンクションキー key_f56 Fk F56 ファンクションキー key_f57 Fl F57 ファンクションキー key_f58 Fm F58 ファンクションキー key_f59 Fn F59 ファンクションキー key_f60 Fo F60 ファンクションキー key_f61 Fp F61 ファンクションキー key_f62 Fq F62 ファンクションキー key_f63 Fr F63 ファンクションキー clr_bol cb 行頭までクリア clear_margins MC 左右のソフトマージンをクリア set_left_margin ML 左のソフトマージンを設定 set_right_margin MR 右のソフトマージンを設定 label_format Lf ラベルフォーマット set_clock SC 時刻を #1 時 #2 分 #3 秒に設定 display_clock DK 位置 (#1,#2) に時計を表示 remove_clock RC 時計を取り除く create_window CW ウィンドウ #1 を #2, #3 から #4, #5 までと 定義 goto_window WG ウィンドウ #1 に移動 hangup HU 電話をハングアップする dial_phone DI 番号 #1 にダイヤルする quick_dial QD チェックせずに番号 #1 にダイヤルする tone TO タッチトーンダイヤルを選択 pulse PU パルスダイヤルを選択 flash_hook fh スイッチフックをフラッシュする fixed_pause PA 2-3 秒待つ wait_tone WA ダイヤルトーンを待つ user0 u0 ユーザ文字列 #0 user1 u1 ユーザ文字列 #1 user2 u2 ユーザ文字列 #2 user3 u3 ユーザ文字列 #3 user4 u4 ユーザ文字列 #4 user5 u5 ユーザ文字列 #5 user6 u6 ユーザ文字列 #6 user7 u7 ユーザ文字列 #7 user8 u8 ユーザ文字列 #8 user9 u9 ユーザ文字列 #9 # # SVr4 は以下のケーパビリティを追加してカラーをサポートしました # orig_pair op デフォルトのペアを元の値に戻す orig_colors oc 色のペア全てを元に戻す initialize_color Ic 色 #1 を (#2,#3,#4) に設定 initialize_pair Ip 色のペア #1 を fg=(#2,#3,#4), bg=(#5,#6,#7) に設定 set_color_pair sp 現在の色のペアを #1 に設定 set_foreground Sf 前景色を #1 に設定 set_background Sb 背景色を #1 に設定 # # SVr4 は以下のケーパビリティを追加してプリンタをサポートしました # change_char_pitch ZA 1 インチあたりの文字数を変更 change_line_pitch ZB 1 インチあたりの行数を変更 change_res_horz ZC 水平解像度を変更 change_res_vert ZD 垂直解像度を変更 define_char ZE 文字を定義 enter_doublewide_mode ZF 倍幅モードに入る enter_draft_quality ZG ドラフト印字モードに入る enter_italics_mode ZH イタリックモードに入る enter_leftward_mode ZI キャリッジの左向き移動開始 enter_micro_mode ZJ マイクロ移動モードに入る enter_near_letter_quality ZK NLQ 印字モードに入る enter_normal_quality ZL 通常品質印字モードに入る enter_shadow_mode ZM シャドウプリントモード開始 enter_subscript_mode ZN 下付き文字モード enter_superscript_mode ZO 上付き文字モード enter_upward_mode ZP キャリッジの上向き移動開始 exit_doublewide_mode ZQ 倍幅印字モード終了 exit_italics_mode ZR イタリックモード終了 exit_leftward_mode ZS 左向き移動モード終了 exit_micro_mode ZT マイクロ移動モード終了 exit_shadow_mode ZU シャドウプリントモード終了 exit_subscript_mode ZV 下付き文字モード終了 exit_superscript_mode ZW 上付き文字モード終了 exit_upward_mode ZX 逆向き文字移動終了 micro_column_address ZY マイクロモードの column_address micro_down ZZ マイクロモードの cursor_down micro_left Za マイクロモードの cursor_left micro_right Zb マイクロモードの cursor_right micro_row_address Zc マイクロモードの row_address micro_up Zd マイクロモードの cursor_up order_of_pins Ze ソフトウェアビットを印字ヘッドピンに あわせる .\" Match software bits to print-head pins ? parm_down_micro Zf マイクロモードの parm_down_cursor parm_left_micro Zg マイクロモードの parm_left_cursor parm_right_micro Zh マイクロモードの parm_right_cursor parm_up_micro Zi マイクロモードの parm_up_cursor select_char_set Zj 文字セットの選択 set_bottom_margin Zk 現在の行を下マージンに設定 set_bottom_margin_parm Zl 下マージンを行 #1 または下から #2 行に設定 set_left_margin_parm Zm 左 (右) マージンを桁 #1 (#2) に設定 set_right_margin_parm Zn 右マージンを桁 #1 に設定 set_top_margin Zo 上マージンを現在の行に設定 set_top_margin_parm Zp 上 (下) マージンを行 #1 (#2) に設定 start_bit_image Zq ビットイメージグラフィクスの印刷開始 start_char_set_def Zr 文字セットの定義開始 stop_bit_image Zs ビットイメージグラフィクスの印刷停止 stop_char_set_def Zt 文字セットの定義終了 subscript_characters Zu 下付き文字となりうる文字のリスト superscript_characters Zv 上付き文字となりうる文字のリスト these_cause_cr Zw 印字すると CR となる文字 zero_motion Zx 次の文字表示では移動しない # # 以下の文字列ケーパビリティは SVr4.0 の term 構造体にありますが、 # マニュアルページには記述されていません。 # char_set_names Zy 文字セット名のリスト key_mouse Km マウスイベントが発生した mouse_info Mi マウス状態の情報 req_mouse_pos RQ マウス位置の要求 get_mouse Gm curses がボタンイベントを取得すべき set_a_foreground AF ANSI 前景色を設定 set_a_background AB ANSI 背景色を設定 pkey_plab xl 文字列 #2 をタイプし、文字列 #3 を表示する プログラムファンクションキー device_type dv 言語/コードセットサポートの表示 code_set_init ci 複数コードセットシーケンスの初期化 set0_des_seq s0 コードセット 0 へシフト (EUC セット 0, ASCII) set1_des_seq s1 コードセット 1 へシフト set2_des_seq s2 コードセット 2 へシフト set3_des_seq s3 コードセット 3 へシフト set_lr_margin ML 左右マージンをそれぞれ #1, #2 に設定 set_tb_margin MT 上下マージンをそれぞれ #1, #2 に設定 bit_image_repeat Xy ビットイメージセル #1 を #2 回繰り返す bit_image_newline Zz ビットイメージの次の行に移動 bit_image_carriage_return Yv 同一行の先頭に移動 color_names Yw 色 #1 の名前を与える define_bit_image_region Yx 長方形のビットイメージ領域を定義 end_bit_image_region Yy ビットイメージ領域の終了 set_color_band Yz 色リボン #1 に変更 set_page_length YZ ページ長を #1 行に設定 # # SVr4 は以下のケーパビリティを追加し、直接 PC クローンをサポートしました # display_pc_char S1 PC 文字を表示 enter_pc_charset_mode S2 PC 文字表示モードに入る exit_pc_charset_mode S3 PC 文字表示モード終了 enter_scancode_mode S4 PC スキャンコードモードに入る exit_scancode_mode S5 PC スキャンコードモードから抜ける pc_term_options S6 PC 端末オプション scancode_escape S7 スキャンコードエミュレーションのための エスケープ alt_scancode_esc S8 スキャンコードエミュレーションのための 別のエスケープ # # XSI curses 標準は、以下のケーパビリティを追加しました。 # enter_horizontal_hl_mode Xh 水平ハイライトモードに入る enter_left_hl_mode Xl 左ハイライトモードに入る enter_low_hl_mode Xo 下ハイライトモードに入る enter_right_hl_mode Xr 右ハイライトモードに入る enter_top_hl_mode Xt 上ハイライトモードに入る enter_vertical_hl_mode Xv 垂直ハイライトモードに入る .Pp 以下は廃れた termcap ケーパビリティです。 新しいソフトウェアはどれにも依存しないようにしてください。 .Bd -literal \fBブール値 TCap 記述\fR \fB変数 コード\fR linefeed_is_newline NL ^J で下に移動 even_parity EP 端末は偶数パリティを要求 odd_parity OP 端末は奇数パリティを要求 half_duplex HD 端末は半 2 重 lower_case_only LC 端末は小文字のみ持つ upper_case_only UC 端末は大文字のみ持つ has_hardware_tabs pt ^I で起動される 8 文字タブがある return_does_clr_eol xr リターンは行をクリアする tek_4025_insert_line xx Tektronix 4025 の insert-line グリッチ backspaces_with_bs bs 左に移動するために ^H を使用 crt_no_scrolling ns crt はスクロールできない no_correctly_working_cr nc 行頭に行く手段が無い .Ed .Bd -literal \fB数値 TCap 記述\fR \fB変数 コード\fR backspace_delay dB ^H に必要なパディング form_feed_delay dF ^L に必要なパディング horizontal_tab_delay dT ^I に必要なパディング vertical_tab_delay dV ^V に必要なパディング number_of_function_keys kn ファンクションキーの数 carriage_return_delay dC CR に必要なパディング new_line_delay dN LF に必要なパディング .Ed .Bd -literal \fB文字列 TCap 記述\fR \fB変数 コード\fR other_non_function_keys ko 自己にマップされたキーのリスト arrow_key_map ma 矢印キーを rogue(1) の移動キーにマップ memory_lock_above ml 現在の行より上の画面で見える部分のメモリを ロック memory_unlock mu 現在の行より上の画面で見える部分のメモリの ロックを解除 linefeed_if_not_lf nl 下に移動するために使用 backspace_if_not_bs bc ^H でない場合に左に移動 .Ed .Ss エントリのサンプル 以下のエントリは Concept\-100 について記述しており、 本書の中でも最も複雑なエントリの 1 つです。 .Pp .Bd -literal ca\||\|concept100\||\|c100\||\|concept\||\|c104\||\|concept100-4p\||\|HDS Concept\-100:\e :al=3*\eE^R:am:bl=^G:cd=16*\eE^C:ce=16\eE^U:cl=2*^L:cm=\eEa%+ %+ :\e :co#80:.cr=9^M:db:dc=16\eE^A:dl=3*\eE^B:do=^J:ei=\eE\e200:eo:im=\eE^P:in:\e :ip=16*:is=\eEU\eEf\eE7\eE5\eE8\eEl\eENH\eEK\eE\e200\eEo&\e200\eEo\e47\eE:k1=\eE5:\e :k2=\eE6:k3=\eE7:kb=^h:kd=\eE<:ke=\eEx:kh=\eE?:kl=\eE>:kr=\eE=:ks=\eEX:\e :ku=\eE;:le=^H:li#24:mb=\eEC:me=\eEN\e200:mh=\eEE:mi:mk=\eEH:mp=\eEI:\e :mr=\eED:nd=\eE=:pb#9600:rp=0.2*\eEr%.%+ :se=\eEd\eEe:sf=^J:so=\eEE\eED:\e :.ta=8\et:te=\eEv \e200\e200\e200\e200\e200\e200\eEp\er\en:\e :ti=\eEU\eEv 8p\eEp\er:ue=\eEg:ul:up=\eE;:us=\eEG:\e :vb=\eEk\e200\e200\e200\e200\e200\e200\e200\e200\e200\e200\e200\e200\e200\e200\eEK:\e :ve=\eEw:vs=\eEW:vt#8:xn:\e :bs:cr=^M:dC#9:dT#8:nl=^J:ta=^I:pt: .Ed .Pp 行末文字に \e を使用すれば、複数行にエントリを続けることができます。 また空のフィールドを含めて可読性を上げることもできます (ある行の最後のフィールドから次の行の最初のフィールドまでです)。 コメントは .Dq # で始まる行に含めることができます。 .Ss ケーパビリティの型 .Nm のケーパビリティには次の 3 種類があります: 特定の機能を端末が持つかどうかを示す、ブール値ケーパビリテイ; 画面の大きさや他の属性の大きさを与える、数値ケーパビリティ; そして特定の端末操作を行うために使用可能な文字列を与える、 文字列ケーパビリティです。 全てのケーバビリティが 2 文字のコードを持ちます。 例えば、Concept が .Em 自動マージン (行末に到達すると、自動的にリターンおよびラインフィードする機能) を持つという事実は、ブール値ケーパビリティ .Sy \&am で示されます。 それゆえ Concept の記述は .Sy \&am を含みます。 .Pp 数値ケーパビリティの後には文字 `#' が続き、そして値が続きます。 上の例では、画面の桁数を示す .Sy \&co は Concept に対しては値 `80' を与えます。 .Pp 最後に、文字列値のケーパビリティ、例えば .Sy \&ce (行末までクリアのシーケンス) は、2 文字のコード、単一の `='、 そして次の `:' までの文字列で与えられます。 このケーパビリティにおいては、ミリ秒指定の遅延を `=' の後に指定可能です。 この場合、残りの文字列が送られた後、パディング文字が .Xr tputs により与えられ、この遅延を発生させます。 遅延は `20' のような数値または `3*' のような `*' が続く数値です。 `*' は、 この操作により影響を受ける行数に必要なパディングが比例すること、 そして指定量は影響を受ける各行に必要なパディングであることを示します。 (insert-character の場合でも、係数は影響を受ける .Em 行 数です; ただし、端末が .Sy \&in を持っていてソフトウェアがこれを使用する場合以外は、この値は常に 1 です。) `*' が指定される時、`3.5' のような形式により 1/10 ミリ秒単位で 行あたりの遅延を指定するのが便利な場合があります。 (10 進数 1 桁分のみ許されます。) .Pp 多くのエスケープシーケンスが文字列値のケーパビリティで提供されますので、 ここでは容易に制御文字をエンコードできます。 .Sy \&\eE は .Dv ESC 文字にマップし、 .Sy \&^X は適切な X に対して control-X にマップし、シーケンス .Sy \&\en .Sy \&\er .Sy \&\et .Sy \&\eb .Sy \&\ef はそれぞれ、ラインフィード、リターン、タブ、バックスペース、フォームフィード にマップします。 最後に、文字は .Sy \&\e の後に 3 桁 8 進数として指定可能ですし、 .Sy \&^ と .Sy \&\e の文字は .Sy \&\e^ と .Sy \&\e\e として与えられます。 ケーパビリティ中に .Sy \&: を入れる必要がある場合、8 進数で .Sy \&\e072 とエスケープする必要があります。 文字列ケーパビリティ中に .Dv NUL 文字を入れる必要がある場合、 .Sy \&\e200 とエンコードする必要があります。( .Nm を扱うルーチンは C の文字列を使用し、 出力の最上位ビットをかなり遅い段階で取り除くので、 .Sy \&\e200 は .Sy \&\e000 として出力されます。) .Pp 個々のケーパビリティをコメントアウトする必要があるかもしれません。 その場合には、ケーパビリティ名の前にピリオドを付けます。 例えば、例における最初の .Sy \&cr と .Sy \&ta を見てください。 .Ss 記述の準備 端末記述を準備する最も効果的な方法は、 .Nm 中の似た端末の記述を真似し、 .Xr \&vi を使用して部分記述の正しさを確認することにより、 徐々に記述を構築するというものです。 非常に稀なことですが、端末によっては、 .Nm ファイルの記述能力不足や .Xr \&vi のバグが露呈することがありますので注意してください。 あなたが新しく作った端末記述を簡単にテストするには、 あなたのホームディレクトリに .Pa .termcap という名前のファイルとして置き、 プログラムが .Pa /usr/share/misc/termcap の前にこれを見るようにします。 環境変数 .Ev TERMPATH をあなたが作成した記述を含む絶対ファイルパス名のリスト (空白もしくはコロンで区切ります) に設定することにより、 プログラムはこれらをリスト順に検索し、他は検索しないようになります。 .Xr termcap 3 を参照してください。 .Ev TERMCAP 環境変数は、通常 .Nm エントリ自身に設定され、プログラム起動時にファイルを読むことを避けます。 .Pp 行挿入に対する適切なパディングを得るためには (端末製造元が記述しなかった場合には)、 .Xr \&vi を使用して .Pa /etc/passwd を 9600 ボーで編集し、およそ 16 行を画面中央から削除し、 それから `u' キーを何度か素早く押すという、厳しいテストを行います。 画面がぐちゃぐちゃになった場合には、 通常はより多くのパディングが必要となります。 同様のテストを文字挿入に対しても行うことが可能です。 .Ss 基本ケーパビリティ 表示の各行の桁数は .Sy \&co 数値ケーパビリティで与えられます。 表示が .Tn CRT になされる場合、画面の行数は .Sy \&li ケーパビリティで与えられます。 カーソルが右マージンに到達した時に、表示が次の行の先頭に回り込む場合には、 .Sy \&am ケーパビリティを持ちます。 端末が画面をクリア可能な場合には、そうするためのコードが .Sy \&cl 文字列ケーパビリティで与えられます。 端末が (上書きされる文字の位置をクリアするのではなく) 上打ちする場合には、 .Sy \&os ケーパビリティがあります。 端末がプリント端末でソフトコピーユニットを持たない場合、 .Sy \&hc と .Sy \&os を指定してください。 .Pf ( Sy \&os があてはまるのは Tektronix 4010 シリーズのようなストレージスコープ端末、 ハードコピー端末、そして .Tn APL 端末です。) カーソルを直ちに左端に移動するためのコードがある場合には、それを .Sy \&cr で指定します。 (通常これは復帰文字(キャリッジリターン)、すなわち .Sy \&^M です。) 可聴シグナル (ベルやビープなど) を発生するコードがある場合には、それを .Sy \&bl で指定します。 .Pp (バックスペースのように) カーソルを 1 つ左に移動するコードがある場合には、 このケーパビリテイは .Sy \&le で指定します。 同様に、右上下に移動するコードはそれぞれ .Sy \&nd , .Sy \&up , .Sy \&do で指定します。 これらの .Em ローカルなカーソル移動 は、カーソルが通過する文字を変化させてはなりません; 例えば、通常は .Dq nd=\ \& を使用してはなりません。例外は 端末が .Sy \&os ケーパビリティを持つ場合です。 この理由は、通過する文字を空白が消してしまうからです。 .Pp ここで非常に重要なポイントは、 .Nm でエンコードされるローカルなカーソル移動は、 .Tn CRT 表示の左端および上端では動作が未定義だということです。 ローカルなカーソル移動を使用している場合には、 左端においては .Sy \&bw が与えられているのでなければ、 プログラムはバックスペースを試してはなりませんし、 上端においては上への移動を試してはなりません。 .Pp テキストを上にスクロールするには、プログラムは画面左下角に移動して、 .Sy \&sf (インデックス) 文字列を送ります。 テキストを下にスクロールするには、プログラムは画面左上角に移動して、 .Sy \&sr (逆インデックス) 文字列を送ります。 期待された角以外での .Sy \&sf および .Sy \&sr 文字列の動作は未定義です。 パラメータ化したバージョンのスクロールシーケンスは .Sy \&SF および .Sy \&SR で、 .Sy \&sf および .Sy \&sr と同様の意味ですが、 1 つパラメータを取ってその行数だけスクロールさせるというところが違います。 これらもまた、画面上の適切な角以外での動作は未定義です。 .Pp .Sy \&am ケーパビリティは、画面の右端にてテキスト出力を行った時に、 カーソルがその位置に留まるか否かを示します。 しかしこれは、最後の桁での .Sy \&nd を必ずしも意味しません。 左端らかの左向きのローカル移動は、 .Sy \&bw が与えられている場合のみ定義されます; この場合、左端における .Sy \&le は、直前行の右端へ移動します。 例えば、画面の周囲に箱を描画する場合に便利です。 -端末が切替選択式の自動マージンを持つ場合には、 +端末が切り替え選択式の自動マージンを持つ場合には、 .Nm 記述は通常この機能、 .Em すなわち .Sy \&am がオンであることを仮定します。 次行の先頭桁への移動コマンドを端末が持つ場合、このコマンドは .Sy \&nw (改行) で与えることができます。 これを使用して現在の行の残りの部分をクリアすることができますので、 正しく動作する .Tn \&CR および .Tn \&LF を持たない場合には、これらの代りに使用することができます。 .Pp これらの機能で、ハードコピー端末および .Dq ガラスの tty 端末を記述するためには十分です。 Teletype model 33 は以下のように記述されています .Bd -literal -offset indent T3\||\|tty33\||\|33\||\|tty\||\|Teletype model 33:\e :bl=^G:co#72:cr=^M:do=^J:hc:os: .Ed .Pp また Lear Siegler .Tn ADM Ns \-3 は以下のように記述されています .Bd -literal -offset indent l3\||\|adm3\||\|3\||\|LSI \s-1ADM\s0-3:\e :am:bl=^G:cl=^Z:co#80:cr=^M:do=^J:le=^H:li#24:sf=^J: .Ed .Ss パラメータ化された文字列 カーソル位置設定などのパラメータを要求する文字列は、 パラメータ化された文字列ケーパビリティで記述します。 ここでは .Xr printf 3 に似たエスケープ .Sy \&%x を使用します。その他の文字は変更されずに渡されます。 例えば、カーソル位置設定のために .Sy \&cm ケーパビリティが与えられますが、これは 2 つのパラメータを使用します: それぞれ移動先の行と桁です。 (行と桁は 0 から番号が振られ、ユーザから見える物理画面を参照します。 見えないメモリは参照しません。 端末がメモリ相対のカーソル位置設定機能を持つ場合には、 .Sy \&CM という似たケーパビリティで指定されます。) .Pp .Sy \&% エンコードは以下の意味を持ちます: .Bl -column xxxxx .It %% Ta No `%' を出力 .It "%d 値を" .Xr printf %d のように出力 .It "%2 値を" .Xr printf %2d のように出力 .It "%3 値を" .Xr printf %3d のように出力 .It "%. 値を" .Xr printf %c のように出力 .It "%+" Ns Em x Ta No 値に .Em x を加え、% を実行 .It "%>" Ns Em \&xy Ta No もし 値 \&> .Em x の場合には .Em y を加える。無出力 .It "%r 2 つのパラメータの順を逆転。無出力" .It "%i 1 増加。無出力" .It "%n 全パラメータに関した 0140 との排他的論理和 (Datamedia 2500)" .It "%B" Ta Tn BCD No "(16*(value/10)) + (value%10) を実行。無出力" .It "%D 逆コーディング (value \- 2*(value%16))。無出力 (Delta Data)" .El .Pp Hewlett-Packard 2645 において第 3 行第 12 桁に移動する場合、 .Dq \eE&a12c03Y を送って 6 ミリ秒パディングする必要があります。 行と桁の関係がここでは逆であり、行および桁は 2 桁の整数として送る ことに注意してください。 よって、この端末の .Sy \&cm ケーパビリティは .Dq Li cm=6\eE&%r%2c%2Y となります。 .Pp Datamedia 2500 は現在の行と桁を .Dq \&%. でバイナリエンコードして送る必要があります。 .Dq \&%. を使用する端末は、カーソルをバックスペース .Po Sy \&le Pc させる機能と画面上で 1 行カーソルを上に移動 .Po Sy \&up Pc する機能を持つ必要があります。 なぜなら .Sy \&\en , .Sy \&^D , .Sy \&\er を送出するのは常に安全というわけではなく、 システムがこれらに変更を加えたり捨てたりする場合があるからです。( .Nm を使用するプログラムは、タブが展開されないように端末モードを設定し、 .Sy \&\et が安全に送られるようにしなければなりません。 これは Ann Arbor 4080 において本質的です。) .Pp 最後の例は Lear Siegler .Tn ADM Ns \-3a です。この端末では行と桁は空白文字で与えますので、 .Dq Li cm=\eE=%+ %+\ となります。 .Pp 絶対値での行や桁のカーソル位置設定は、単一パラメータのケーパビリティ .Sy \&ch (水平絶対位置) および .Sy \&cv (垂直絶対位置) で与えられます。 一般的な 2 パラメータシーケンスよりもこれらを使用する方が短かいことがあり (Hewlett-Packard 2645 の場合)、 .Sy \&cm よりも好んで使用され得ます。 パラメータ化されたローカル移動 .Pf ( Em 例えば 、 .Ar n 個右に移動) の機能がある場合、 .Sy \&DO , .Sy \&LE , .Sy \&RI , .Sy \&UP として与えられます。これらは単一パラメータを取り、 いくつ移動するのかを示します。 第 1 に Tektronix 4025 のような .Sy \&cm を持たない端末で有用です。 .Ss カーソル移動 .Pp 端末が高速にカーソルをホーム (画面の左上角) に移動する方法がある場合、これは .Sy \&ho として与えられます。 同様に、高速に左下角に移動する方法は、 .Sy \&ll で与えられます; これには、ホームポジションにて .Sy \&up を使用することによる上への移動を含みますが、 プログラム自身がこれを実行してはなりません (ただし .Sy \&ll が実行する場合を除く)。 なぜならプログラムはホームポジションでの上への移動の効果を 仮定できないからです。) ホームポジションは、カーソル位置 (0,0) と同じです: 画面の左上角であり、メモリは無関係です。 (それゆえ、Hewlett-Packard 端末の .Dq \eEH シーケンスは、 .Sy \&ho としては使用できません。) .Ss 領域クリア 端末が、現在位置に留まりつつ、現在位置から行末までクリア可能である場合には、 この機能は .Sy \&ce として与えられます。 端末が、現在位置から描画終端までをクリア可能である場合には、この機能は .Sy \&cd として与えられます。 .Sy \&cd は行の最初の桁においてのみ起動可能です。(よって、真の .Sy \&cd が利用できない場合、この機能は多数の行を削除する要求にてシミュレート可能です。) .Ss 行の挿入および削除 端末が、カーソルがいる行の前に新しい空行を開けることが可能な場合、この機能は .Sy \&al として与えられます; この機能を起動するには行頭にいる必要があります。 行を開けると、カーソルは新しい空行の左端に移動します。 端末が、カーソルがいる行を削除可能な場合、この機能は .Sy \&dl として与えられます; この機能を起動するには削除する行の先頭にいる必要があります。 1 つパラメータを取ってその数だけ行を挿入および削除する .Sy \&al および .Sy \&dl の変形は、 .Sy \&AL および .Sy \&DL として与えられます。 端末が、(VT100 のように) 設定可能なスクロール領域を持つ場合、 設定コマンドは 2 つのパラメータを取る .Sy \&cs ケーパビリティとして記述されます: パラメータはスクロール領域の上端行および下端行です。 なんとしたことか、このコマンド使用後のカーソル位置は未定義です。 行挿入および行削除の効果はこのコマンドを使用することで得られます \(em .Sy \&sc および .Sy \&rc (カーソルの保存と回復) コマンドもまた有用です。 画面の上端または下端における行挿入は、 真の行挿入/削除を持たない多くの端末において、 .Sy \&sr または .Sy \&sf にて実行できます。 また、真の行挿入/削除機能を持つ端末においても、 こちらの方が高速な場合が多いです。 .Pp メモリの一部を、 全コマンドが影響するウィンドウとして定義する能力を端末が持つ場合、 これはパラメータ化された文字列 .Sy \&wi で与えられます。 4 つのパラメータは順番に、メモリにおける開始行・終了行・開始桁・終了桁です。 (この .Xr terminfo ケーパビリティは完全性のために記述しています。 .Nm を使用するプログラムはこの機能を使ってはいないでしょう。) .Pp 端末が画面より上方の表示メモリを保存する場合、 .Sy \&da ケーパビリティが与えられます; 下方の表示メモリが保存される場合、 .Sy \&db が与えられます。 これらの機能は、 行削除やスクロールにより非空白行が下から現れることや、 .Sy \&sr による後退スクロールにより非空白行が上から現れることを示します。 .Ss 文字の挿入および削除 .Nm にて記述可能な文字挿入および削除に関しては、 基本的に 2 種類のインテリジェント端末があります。 最も一般的な文字の挿入/削除操作は現在行の文字にのみ作用し、 行末までの文字を厳格にシフトします。 他の端末、Concept\-100 や Perkin Elmer Owl では、 タイプされた空白とタイプされたものではない空白を区別し、 挿入/削除に際するシフトは 画面上のタイプされたものではない空白にのみ適用されます。 タイプされたものではない空白は、削除されるか、 2 つのタイプされたものではない空白に拡張されます。 使用している端末の種類を判別するためには、 画面をクリアし、カーソル移動を含めてテキストをタイプします。例えば .Dq Li abc\ \ \ \ def を、 .Dq abc と .Dq def の間でローカルなカーソル移動 (空白ではありません) を行ってタイプします。 その後、カーソルを .Dq abc の前に移動し、端末を挿入モードにします。 そこで文字をタイプすると 行の残りの部分が厳密にシフトされ終端から出て行く場合、 あなたの端末は空白とタイプされたものではない位置とを区別しません。 もし挿入に際して、 .Dq abc が .Dq def のところまでシフトし、 それから一緒に現在の行の終端まで移動して次行に移動する場合、 あなたの端末は 2 番目の種類の端末を持っていますので、 .Dq ナル挿入 を表すケーパビリティ .Sy \&in を指定します。 これら 2 つは論理的に別の属性 (1 行 .Em 対 複数行の挿入モードでタイプされたものではない空白を特別に扱う) ですが、 挿入モードをどちらかで記述できない端末を我々は見たことがありません。 .Pp .Nm エントリは、挿入モードを持つ端末も、 単純なシーケンスを送って現在の行に空白位置を開ける端末も、両方記述可能です。 .Sy \&im は挿入モードに入るシーケンスを表します。 .Sy \&ei は挿入モードから抜けるシーケンスを表します。そして、 .Sy \&ic は、挿入する文字を送る直前に送る必要があるシーケンスを表します。 真の挿入モードを持つほとんどの端末は、 .Sy \&ic を指定しません; 一方、画面上の位置を開けるためにシーケンスを使用する端末は、 これを指定する必要があります。 (端末が両方の機能を持つ場合には、挿入モードは通常 .Sy \&ic が好まれます。実際に両機能を組み合せる必要がある端末の場合以外は、 両方を指定しないでください。) 挿入後にパディングが必要な場合、ミリ秒数にて .Sy \&ip (文字列オプション) で与えます。 1 文字挿入後に送る必要があるシーケンスもまた .Sy \&ip で指定します。`挿入モード' である必要があり、 なおかつ挿入文字の前に特別のコードを送る必要がある端末の場合、 .Sy \&im Ns / Sy \&ei と .Sy \&ic が与えられ、両方を使用します。 単一のパラメータ .Em n を取る .Sy \&IC ケーパビリティは、 .Sy \&ic の効果を .Em n 回繰り返します。 .Pp 挿入モード中で同一行の文字を削除するために、時々移動が必要になります .Pf ( Em 例えば 挿入位置の後にタブがある場合)。 挿入モード中で移動を許す端末の場合、ケーパビリティ .Sy \&mi を指定して、このような場合の挿入を高速化できます。 .Sy \&mi を省略しても速度に影響するだけです。 端末によっては (特に Datamedia のものでは)、挿入モードの動作方法の理由により、 .Sy \&mi を指定してはなりません。 .Pp 最後に、1 文字削除のために .Sy \&dc を指定可能です。 .Sy \&DC は単一パラメータ .Em n を取り .Em n 文字削除します。 そして削除モードは、 .Sy \&dm および .Sy \&ed で、削除モードの入り方および抜け方を示します (削除モードとは、 .Sy \&dc が動作するために端末がいるべきモードです)。 .Ss ハイライト・下線・可視ベル 端末が 1 つまたはそれ以上の種類の表示属性を持つ場合、 これらは様々な方法で表現されていることでしょう。 1 つの表示形式を .Em 強調表示モード として選択してください。このモードは十分高いコントラストで見易く、 エラーメッセージや注意を引く表示のハイライトに適します。 (選択可能ならば、反転表示に半分の明るさ、もしくは反転表示のみが良いでしょう。) 強調表示モードに入るシーケンスおよび出るシーケンスは、それぞれ .Sy \&so および .Sy \&se で与えられます。 .Tn TVI 912 や Teleray 1061 のように、 強調表示モードの出入りのコードが、 1 つ 2 つの空白やごみの文字を画面上に残す場合、 .Sy \&sg を指定して、何文字残されるのかを指定してください。 .Pp 下線の開始および下線の終了は、それぞれ .Sy \&us および .Sy \&ue で指定します。 下線モード変更によるごみは、 .Sy \&sg 同様 .Sy \&ug として指定します。 Microterm Mime のように、現在位置の文字に下線を引き、 カーソルをひとつ右の位置に移動するコードを端末が持つ場合、 このコードは .Sy \&uc で指定します。 .Pp その他もろもろのハイライトモードに入るケーパビリティには、 .Sy \&mb (点滅)、 .Sy \&md (ボールドまたは更に明るい)、 .Sy \&mh (暗いまたは半輝度)、 .Sy \&mk (空白または見えないテキスト)、 .Sy \&mp (保護状態)、 .Sy \&mr (反転表示)、 .Sy \&me .Pf ( Em 全て の属性モードをオフ)、 .Sy \&as (別の文字セットモードに入る) そして .Sy \&ae (別の文字セットモードから抜ける) があります。 これらのモードを単独でオンにした場合、 他のモードをオフにする場合もありますし、オフにしない場合もあります。 .Pp モードの任意の組み合わせを設定するシーケンスがある場合、 これは 9 個のパラメータを取る .Sy \&sa (属性設定) で指定します。 それぞれのパラメータは 0 または 1 であり、 対応する属性がオンまたはオフされます。 9 個のパラメータは順番に次の通りです: 強調表示・下線・反転・点滅・ 暗い・ボールド・空白・保護・別の文字セット。 全モードが .Sy \&sa によりサポートされている必要は無く、 サポートされているものに対応するコマンドが存在することのみ必要です。( .Nm を使用するプログラムはこのケーパビリティをサポートしていないでしょう。 このケーパビリティは .Xr terminfo との互換性のために定義しています。) .Pp 各文字セルに追加された属性ビットを管理するのではなく、 .Dq マジッククッキー グリッチ .Pf ( Sy \&sg および .Sy \&ug ) を持つ端末では、 描画アルゴリズムに影響するモード設定シーケンスを受信した時に、 特別な .Dq クッキー または .Dq ごみ文字 を画面に残します。 .Pp Hewlett-Packard 2621 のように、 新しい行へ移動した時やカーソル位置を設定した時に 自動的に強調表示モードから抜ける端末があります。 このような端末においては、強調表示モードを使用するプログラムは、 カーソル移動や改行送信前に強調表示モードから抜ける必要があります。 このような問題が無い端末では、 .Sy \&ms ケーパビリティが存在し、このオーバヘッドが不要であることを示します。 .Pp エラーを静かに伝えるために端末が画面をフラッシュさせる方法を持つ場合 (ベルの代りです)、これは .Sy \&vb として指定します; この機能はカーソルを移動してはなりません。 .Pp カーソルが最下行になくても、 通常時よりも見易くする必要がある場合 (例えば、点滅していない下線を、 より見付け易いブロックや点滅する下線に変更する場合)、このシーケンスは .Sy \&vs で与えます。 カーソルを完全に見えなくする方法がある場合には、これは .Sy \&vi ケーパビリティで指定します。 これらのモードの効果を打ち消すケーパビリティ .Sy \&ve も指定する必要があります。 .Pp (特別なコードを必要とせずに) 下線を引かれた文字を端末が正しく表示する場合、 しかもその機能が上打ちではない場合、 このケーパビリティを .Sy \&ul で示します。 上打ちを空白にて消去可能な場合、これは .Sy \&eo で示します。 .Ss キーパッド キーを押した時にコードを送出するキーパッドを持つ端末では、 この情報を指定することができます。 キーパッドがローカルモードにおいてのみ動作する端末は 扱うことができないことに注意してください。 (これは例えば Hewlett-Packard 2621 でシフト状態でないキーにあてはまります)。 キーコードの送出 / 非送出をキーパッドに設定できる場合は、 設定のためのコードは .Sy \&ks および .Sy \&ke で指定します。 そうでない場合はキーパッドは常にコードを送出するものと仮定されます。 left-arrow, right-arrow, up-arrow, down-arrow, home のキーで送出されるコードは それぞれ .Sy \&kl , .Sy \&kr , .Sy \&ku , .Sy \&kd , .Sy \&kh , で指定します。 f0, f1, ..., f9 のようなファンクションキーがある場合には、 これらのキーが送るコードは .Sy \&k0 , .Sy \&k1 , ..., .Sy \&k9 で指定します。 これらのキーがデフォルトの f0 から f9 以外のラベルを持つ場合、このラベルは .Sy \&l0 , .Sy \&l1 , ..., .Sy \&l9 で指定します。 その他の特殊キーで送出されるコードは次のように与えられます: .Sy \&kH (ホームダウン)、 .Sy \&kb (バックスペース)、 .Sy \&ka (全タブクリア)、 .Sy \&kt (この桁のタブストップをクリア)、 .Sy \&kC (画面クリアまたは消去)、 .Sy \&kD (文字削除)、 .Sy \&kL (行削除)、 .Sy \&kM (挿入モードから抜ける)、 .Sy \&kE (行末までクリア)、 .Sy \&kS (画面の終りまでクリア)、 .Sy \&kI (文字挿入または挿入モードに入る)、 .Sy \&kA (行挿入)、 .Sy \&kN (次のページ)、 .Sy \&kP (前のページ)、 .Sy \&kF (前進/下降スクロール)、 .Sy \&kR (後退/上昇スクロール)、 .Sy \&kT (この桁にタブストップを設定)。 更に、キーパッドが 4 つの矢印キーを含む 3 × 3 のキー配列を持つ場合、 他の 5 つのキーは .Sy \&K1 , .Sy \&K2 , .Sy \&K3 , .Sy \&K4 , .Sy \&K5 で指定します。 3 × 3 の方向パッドが必要な時、これらのキーは有用です。 以前 .Dq その他 のファンクションキーを記述するために使用された、廃れた .Sy \&ko ケーパビリティは、上記のケーパビリティにより完全に置き換えられました。 .Pp .Sy \&ma エントリはまた、 端末の矢印キーが 1 文字矢印キーであることを示すためにも使用されます。 これは廃れた方法ですが、 .Sy \&vi のバージョン 2 で未だ使用されています。 メモリ制約の理由で、このコマンドを使用しているミニコンピュータがあるでしょう。 このフィールドは .Sy \&kl , .Sy \&kr , .Sy \&ku , .Sy \&kd , .Sy \&kh と冗長関係にあります。 このフィールドは 2 文字の複数グループから構成されます。 各グループにおいては、最初の文字は矢印キーが何を送るかを表し、 2 番目の文字は対応する .Sy \&vi のコマンドを表します。 コマンドは、 .Ar h が .Sy \&kl に、 .Ar j が .Sy \&kd に、 .Ar k が .Sy \&ku に、 .Ar l が .Sy \&kr に、 .Ar H が .Sy \&kh に対応します。 例えば Mime では .Dq Li ma=^Hh^Kj^Zk^Xl となり、矢印キーの left (^H), down (^K), up (^Z), down (^X) を示します。 (Mime には home キーはありません。) .Ss タブおよび初期化 これらのケーパビリティを使用するプログラムを実行する時に 端末を特別なモードにすることが必要な場合、 このモードに入るコードおよび出るコードは .Sy \&ti と .Sy \&te で指定します。 これが関係あるのは、例えば Concept のようなメモリページを複数持つ端末です。 端末がメモリ相対のカーソル位置設定のみ持ち、 画面相対のカーソル位置設定を持たない場合には、 画面サイズのウィンドウに表示を固定し、 カーソル位置設定が正しく動作するようにする必要があります。 これは Tektronix 4025 でも使用され、 .Sy \&ti はコマンド文字を .Nm が使うように設定します。 .Pp 他のケーパビリティとしては、端末初期化文字列 .Sy \&is や、長い初期化文字列を格納するファイル名 .Sy \&if があります。 これらの文字列は、端末を .Nm 記述と矛盾がないモードに設定するものと期待されています。 これらは通常、ユーザがログインするたびに、 .Xr tset プログラムによって端末に送られます。 印字は次の順に行われます: まず .Sy \&is ; 次に .Sy \&ct と .Sy \&st によるタブ設定; そして最後に .Sy \&if です。 .Pf ( Xr terminfo では .Sy \&is の代りに .Sy \&i\&1-i2 を使用し、プログラム .Sy \&iP を実行し、他の初期化の後 .Sy "\&i\&3" を印字します。) まったくわけがわからない状態から回復するためのよりハードな リセットシーケンスの組が、類推できる名前 .Sy \&rs および .Sy \&rf で与えられます。 これらの文字列は、端末がはまった状態に陥いった時に使用される .Xr reset プログラムにより出力されます。 .Pf ( Xr terminfo は .Sy \&rs の代りに .Sy "\&r1-r3" を使用します。) これらのコマンドが画面上を騒がせ、 なおかつログイン時に必ずしも必要ではない場合に限り、 通常これらは .Sy \&rs および .Sy \&rf に格納します。 例えば、VT100 を 80 桁モードに設定するコマンドは、普通に考えると .Sy \&is の一部に入れるでしょうが、これは画面に困ったゴミを生じさせますし、 端末は普段既に 80 桁モードですので、実際は入れる必要はありません。 .Pp 端末がハードウェアタブを持つ場合、 次のタブストップまで進むコマンドは .Sy \&ta で指定します (通常は .Sy \&^I です)。 直前のタブストップへ左向きに移動する .Dq バックタブ コマンドは、 .Sy \&bt で指定します。 タブストップが端末には送られずに計算機により展開されることを 端末ドライバモードが示す場合、 .Sy \&ta や .Sy \&bt が存在するとしても、プログラムでこれらを使用しないというのが約束になって います。 なぜなら、ユーザがタブストップを正しく設定していないかもしれないからです。 端末電源オン時に各 .Ar n 位置ごとにハードウェアタブが初期設定される端末の場合、 数値パラメータ .Sy \&it を使用し、タブストップ間隔を示します。 このコマンドは通常 .Xr tset コマンドが使用し、ドライバモードをハードウェアタブ展開に設定するか否か、 およびタブストップを設定するか否かを決定します。 端末が不揮発性メモリにタブストップを保存可能な場合、 .Nm 記述はタブストップが正しく設定されるものと仮定できます。 .Pp タブストップを設定およびクリアするコマンドが存在する場合、 これらのコマンドは .Sy \&ct (全タブストップをクリア) および .Sy \&st (全ての行における現在の桁にタブストップを設定) で指定します。 タブ設定のために、ここで示した方法より複雑なシーケンスが必要な場合、 このシーケンスは .Sy \&is や .Sy \&if で指定します。 .Ss 遅延 端末ドライバのパディングを制御するケーパビリティもあります。 これらのケーパビリティは、第 1 にハードコピー端末にて必要とされ、 .Xr tset プログラムにより端末ドライバのモードを適切に設定するために使用されます。 ケーパビリティ .Sy \&cr , .Sy \&sf , .Sy \&le , .Sy \&ff , .Sy \&ta に埋め込まれる遅延は、端末ドライバの適切な遅延ビットを設定する効果があります。 .Sy \&pb (パディングボーレート) を指定した場合、 この値より低いボーレートにおいては、これらの値は無視されます。 .Bx 4.2 の .Xr tset では、遅延は別の数値ケーパビリティ .Sy \&dC , .Sy \&dN , .Sy \&dB , .Sy \&dF , .Sy \&dT で与えられます。 .Ss その他 端末が .Dv NUL (0) 文字以外のパディング文字を必要とする場合には、 .Sy \&pc で指定します。 .Sy \&pc 文字列の最初の文字のみが使用されます。 .Pp 端末がカーソル位置を保存および回復するコマンドを持つ場合には、これらは .Sy \&sc および .Sy \&rc で指定します。 .Pp 通常はソフトウェアが使用しない追加の .Dq ステータス行 を端末が持つ場合、この事実を示すことができます。 ステータス行が最下行の下に追加の行として見える場合には、ケーパビリティ .Sy \&hs を指定します。 ステータス行の位置への移動およびステータス行からの復帰のための特別な文字列は、 .Sy \&ts および .Sy \&fs で指定します。 .Pf ( Sy \&ts の前にカーソルが存在した位置に、 .Sy \&fs はカーソルを戻す必要があります。必要ならば、 .Sy \&sc および .Sy \&rc の文字列を .Sy \&ts および .Sy \&fs に含めてこの効果を得ることができます。) ケーパビリティ .Sy \&ts は、ステータス行の何桁目にカーソルが移動すべきを示すパラメータを 1 つ取ります。 エスケープシーケンスや他の特殊コマンド、 例えばタブがステータス行でも動作するならば、フラグ .Sy \&es を指定します。 ステータス行をオフにする (または内容を消去する) 文字列は、 .Sy \&ds で指定します。 通常、ステータス行の幅は画面の他の部分、 .Em すなわち .Sy \&co と同じであると仮定されます。(端末が行全体の使用を許さない等の理由で) ステータス行の幅が異なる場合には、その幅を桁数で数値パラメータ .Sy \&ws で指定します。 .Pp 端末が半行上下に移動可能な場合、 .Sy \&hu (半行上) および .Sy \&hd (半行下) で指定します。 これは、ハードコピー端末で上付き文字および下付き文字を使用するために有用です。 ハードコピー端末がページを排出して次のページに移動 (フォームフィード) する ことができる場合、これは .Sy \&ff (通常 .Sy \&^L です) で指定します 。 .Pp 指定した文字を指定した回数繰り返すコマンド (同一文字を何度も送出する時間を節約します) がある場合、 パラメータ化された文字列 .Sy \&rp で指定します。 最初のパラメータは繰り返される文字であり、2 番目のパラメータは 繰り返す回数です。(これは .Xr terminfo の機能であり、 .Nm を使用するプログラムはこの機能をサポートしていないでしょう。) .Pp Tektronix 4025 のように端末が設定可能なコマンド文字を持つ場合、 .Sy \&CC で指定します。 全ケーパビリティで使用されるプロトタイプコマンド文字が選択されます。 この文字を識別するために、この文字が .Sy \&CC ケーパビリティにより与えられます。 次の約束をサポートしている .Ux システムがあります: すなわち、 .Ev \&CC 環境変数を検査し、もし設定されている場合には、 プロトタイプ文字を環境変数で設定されているものと置き換えるという約束です。 このように .Ev \&CC 環境変数を使用することは、 .Xr make 1 との衝突が発生しますので、非常に悪い考えです。 .Pp 特定の既知の端末を表現するものではない端末記述、 .Em switch , .Em dialup , .Em patch , .Xr network では .Sy \&gn (一般) ケーパビリティを設定し、 端末に対してどのように話しかければよいのか分らないと プログラムが文句を言えるようにします。 (このケーパビリティは、エスケープシーケンスが既知である .Em 仮想 端末記述にはあてはまりません。 .Pp 端末が xoff/xon .Pq Tn DC3 Ns / Ns Tn DC1 ハンドシェークを使用してフロー制御する場合、 .Sy \&xo を指定します。 コストに関するより良い判定を可能とするために 依然としてパディング情報を指定する必要がありますが、 実際にパディング文字が送出されるということはありません。 .Pp シフトキーのように動作し、送出される文字の 8 ビット目をセットする .Dq メタキー を端末が備える場合、 .Sy \&km を設定してこの事実を示すことができます。 これが指定されない場合は、ソフトウェアは 8 ビット目はパリティであると仮定し、 通常これをクリアしてしまいます。 .Dq メタモード をオンおよびオフする文字列が存在する場合、これらは .Sy \&mm および .Sy \&mo で指定します。 .Pp 画面 1 枚分より多くのメモリ行を端末が備える場合、 メモリの行数を .Sy \&lm で指定します。 明示的に値 0 を指定すると、行数は固定ではないものの 画面分より多くのメモリがあることを示します。 .Pp .Ux システムの仮想端末プロトコルにてサポートされる端末である場合、 端末番号は .Sy \&vt で与えられます。 .Pp 端末に接続された外部プリンタを制御するメディアコピー文字列は、 次のように与えられます。すなわち .Sy \&ps : 画面内容の印字; .Sy \&pf : プリンタオフ; および .Sy \&po : プリンタオンです。 プリンタオン時には、端末に送られる全てのテキストはプリンタに送られます。 プリンタオン時に端末画面にもテキストが表示されるか否かは未定義です。 このバリエーションである .Sy \&pO は単一のパラメータを取り、 パラメータ値で指定される文字数だけプリンタをオンにし、 その後プリンタをオフにします。 このパラメータは 255 を越えてはなりません。 .Sy \&pf を含む全テキストは、 .Sy \&pO が有効である間、透過的にプリンタに渡されます。 .Pp プログラムファンクションキーへの文字列は .Sy \&pk , .Sy \&pl , .Sy \&px で指定します。 これらの文字列は次の 2 つのパラメータを取ります: それぞれ、プログラム対象のファンクションキー番号 (0 から 9 まで) と、 プログラムの文字列です。 この範囲外のファンクションキー番号を指定すると、 ここでは定義できないキーを端末依存の方式でプログラムするかもしれません。 これらのケーパビリティの差異は、 .Sy \&pk は指定したキーを押すと指定した文字列を ユーザがタイプしたものとして扱うものであり; .Sy \&pl はローカルモードの端末にて指定した文字列を実行させるものであり; .Sy \&px は指定した文字列を計算機に送出させるものである点です。 不幸なことに、 .Nm では文字列パラメータが定義されていないため、 .Xr terminfo のみがこれらのケーパビリティをサポートします。 .Ss グリッチと不良 文字 `~' を表示できない Hazeltine 端末は .Sy \&hz を指定する必要があります。 .Pp .Sy \&nc ケーパビリティは現在廃れていますが、 以前は Datamedia 端末を表すために使用していました。 この端末では、キャリッジリターンに対して .Sy \&\er \en をエコーし、続くラインフィードを無視します。 .Pp Concept のように .Sy \&am による折り返しの直後のラインフィードを無視する端末では、 .Sy \&xn を指定します。 .Pp 強調表示を取り除くために (単に通常のテキストを上書きするだけで済まず) .Sy \&ce が必要な場合、 .Sy \&xs を指定します。 .Pp タブによって移動された全ての文字が空白にされてしまう Teleray 端末では、 .Sy \&xt (破壊的なタブ) を指定する必要があります。 このグリッチは、\*(lqマジッククッキー\*(rq の先頭に カーソル位置を設定できないことと、 強調表示を消すためには行削除と行挿入が必要であることも表現します。 .Pp .Dv ESC や .Sy \&^C の文字を正しく送出できない Beehive Superbee は .Sy \&xb を指定し、 .Dq \&f\&1 キーが .Dv ESC として使用され、 .Dq \&f\&2 キーが ^C として使用されることを示します。( 特定の Superbee のみがこの問題を持ち、これは .Tn ROM に依存します。) .Pp ある特定の端末に他の問題がある場合、 .Sy x Ns Em x の形式のケーパビリティを追加することにより正しく動作するようにしても 構いません。 .Ss 似た端末 2 つの非常によく似た端末がある場合、 例外はあるもののもう一方にそっくりであると、 一方を定義することができます。 文字列ケーパビリティ .Sy \&tc には似た端末の名前を与えます。 このケーパビリティは .Em 最後 である必要があり、組み合わせたエントリの長さは 1024 を越えてはなりません。 .Sy \&tc の前に指定したケーパビリティは .Sy \&tc により呼び出される端末タイプの記述に優先します。 ケーパビリティのキャンセルのためには .Sy \&xx@ を .Sy \&tc の呼び出しの左に置きます。 .Sy \&xx はキャンセルされるケーパビリティです。 例えば、エントリ .Bd -literal -offset indent hn\||\|2621\-nl:ks@:ke@:tc=2621: .Ed .Pp は、ビジュアルモードでファンクションキーラベルをオンにしないために .Sy \&ks と .Sy \&ke のケーパビリティを持たない .Dq 2621\-nl を定義します。 端末の種々のモードやユーザの種々のプリファレンスを記述するために有用です。 .Sh 関連ファイル .Bl -tag -width /usr/share/misc/termcap.db -compact .It Pa /usr/share/misc/termcap 端末記述を格納するファイル .It Pa /usr/share/misc/termcap.db 端末記述を格納するハッシュデータベースファイル .Pf ( Xr cap_mkdb 1 を参照)。 .El .Sh 関連項目 .Xr cap_mkdb 1 , .Xr ex 1 , .Xr more 1 , .Xr tset 1 , .Xr ul 1 , .Xr vi 1 , .Xr ncurses 3 , .Xr printf 3 , .Xr termcap 3 , .Xr term 5 .Sh 警告およびバグ .Em 注 : .Nm の機能は .At V Release 2.0 の .Xr terminfo に置き換えられました。 .Dq 廃れた とされるケーパビリティを使用していなければ、 移行のための苦痛は比較的少ないです。 .Pp 現在、行数および桁数は、 termcap エントリに格納するものと同様に、カーネルが格納します。 現在、ほとんどのプログラムはカーネルの情報を最初に使用します; このファイルに記述されている情報は、 カーネルが情報を持たない時のみ使用されます。 .Pp .Xr \&vi 1 プログラムは文字列ケーパビリティには 256 文字しか許しませんが、 .Xr termlib 3 のルーチンはこのバッファの溢れをチェックしません。 単一エントリの総計の長さは 1024 を越えてはなりません (エスケープされた改行は除きます)。 .Pp 全てのプログラムが全てのエントリをサポートしているわけではありません。 .Sh 歴史 .Nm ファイルフォーマットは .Bx 3 に登場しました。 diff --git a/ja_JP.eucJP/man/man7/groff_mm.7 b/ja_JP.eucJP/man/man7/groff_mm.7 index d4889a948e..b3303b5173 100644 --- a/ja_JP.eucJP/man/man7/groff_mm.7 +++ b/ja_JP.eucJP/man/man7/groff_mm.7 @@ -1,2032 +1,2032 @@ .\" .\" %Id: groff_mm.man,v 1.32 1999/09/03 05:33:12 jh Exp % .\" .\" Original Revision: 1.1.1.2 .\" jpman %Id: groff_mm.7,v 1.4 1999/01/20 17:21:55 kuma Stab % .\" .\" WORD: abstract アブストラクト .\" WORD: broken varable list 変則可変リスト .\" WORD: bullet list 黒丸リスト .\" WORD: diversion 転換 .\" WORD: exhibit エグジビット .\" WORD: front page 表題紙 .\" WORD: hanging indent ハンギングインデント .\" WORD: heading 見出し .\" WORD: justification 行末揃え .\" WORD: memorandum 覚書 .\" WORD: multiple columns 多段組 .\" WORD: nesting 入れ子 .\" WORD: overprint 重ね打ちする .\" WORD: released paper style 公開論文形式 .\" WORD: separate environment 隔離された環境 .\" WORD: static display スタティックディスプレイ .\" WORD: trap トラップ .\" WORD: variable item list 可変項目リスト .\" " .de T2 .ne 2v .ti -.5i \\$1 .sp -1 .. .de T3 .ne 2v .ti -.5i \fB\\$1\fP .br .. .TH GROFF_MM 7 "12 January 2000" "Groff Version 1.15" .SH 名称 groff_mm \- groff mm マクロ .SH 書式 .B groff .B \-mm [ .IR options .\|.\|. ] [ .IR files .\|.\|. ] .SH 解説 groff mm マクロは、DWB mm マクロと互換であるように設計されています。 しかし、以下のような制限があります: .TP .B \(bu ベル研の方言は実装されていません。 .TP .B \(bu マクロ OK 及び PM は実装されていません。 .TP .B \(bu groff mm は、カットマークをサポートしません。 .LP \fBmm\fP は、国際化されて設計されています。 そのため、各国語対応用の短いマクロファイルを書き換えて、 英語のテキストを好みの言語対応に置き換えることができます。 \fBmmse\fP を例として用いて下さい。 .LP .\"########################################################################" .LP 大域変数の初期化後に \fBlocale\fP か \fIlang\fP\fB_locale\fP という ファイルを読み込みます。そのため、企業名などについてのマクロを ローカライズすることができます。 .sp このマニュアルでは、角括弧は省略可能な引数を表示するのに用いられます。 .sp 3 \fB数値レジスタと文字列変数\fP .br 多くのマクロを数値レジスタと文字列変数によって制御することが出来ます。 数値レジスタは、\fBnr\fP コマンドによって、代入が出来ます。 .br \fB\&.nr\fP \fIXXX\fP \fI[+-]n [i]\fP .br \fBXXX\fP はレジスタの名前です。 \fBn\fP は、代入されるべき値です。 そして、\fBi\fP は、自動増加に使われる増分値です。 もし現在値の増減が必要ならば、\fBn\fP には、 前に接頭辞として正符号や負符号をつけることが出来ます。 (自動増加や自動減少が行なわれるのは、 数値レジスタが正符号か負符号とともに用いられた時のことで、 \fB\en+[XXX]\fP か \fB\en-[XXX]\fP の様になります。) .sp 文字列変数は、\fBds\fP により定義されます。 .br \fB\&.ds\fP \fIYYY string\fP .br 文字列 \fIstring\fP としては、空白も含めて行末までの全部が割り当てられます。 \fIstring\fP の中の最初の空白は、二重引用符が前につけられなければなりません。 (テキストの中では、文字列変数は \fB\e*[YYY]\fP の様に使われます。) .sp \fB数値レジスタの特殊な形式\fP .br 数値レジスタというものは、形式が何も指定されなければ、 通常の数字で表示されます。 形式は \fBaf\fP によって設定出来ます: .br \fB\&.af\fP \fIR c\fP .br \fIR\fP はレジスタの名前で、\fIc\fP はその形式です。 .in +.5i .T2 \fB形式\fP \fB数の並び\fP .T2 1 0, 1, 2, 3, ... .T2 001 000, 001, 002, 003, ... .T2 i 0, i, ii, iii, iv, ... .T2 I 0, I, II, III, IV, ... .T2 a 0, a, b, c, ..., z, aa, ab, ... .T2 A 0, A, B, C, ..., Z, AA, AB, ... .in .LP \fBマクロ:\fP .TP .B ")E level text" \fBtext\fP (見出しテキスト) を目次に加えます。 \fBlevel\fP は 0 か 1-7 の間です。 本マクロは目次のカスタマイズに使用します。 .TP .B "1C [1]" 1 段の段組処理を開始します。引数としての \fB1\fP はページ区切りを無効にします。 広い脚注を用いて下さい。 狭い脚注は重ね打ちになってしまうでしょう。 .TP .B 2C 2 段の段組処理を開始します。ページを 2 段のカラムに分割します。 これは、\fBMC\fP の特殊な場合になります。 関連項目は \fB1C\fP です。 .TP .B AE アブストラクトの終わり。 \&\fBAS\fP を参照して下さい。 .TP .B "AF [企業名]" 著者の帰属する企業。\fBAU\fP の前に呼び出さなければなりません。 関連項目は \fBCOVER\fP です。 .TP .B "AL [type [text-indent [1]]]" 自動番号付けリストを開始します。 項目は、1 から始められる番号を振付けられます。 引数の \fItype\fP は数字の型を制御します。 .in +.5i .T2 引数 数字の型 .T2 1 アラビア数字 (デフォルト) .T2 A 大文字 (A-Z) .T2 a 小文字 (a-z) .T2 I 大文字 ローマ数字 .T2 i 小文字 ローマ数字 .in \fItext-indent\fP はインデントを設定し、\fBLi\fP よりも優先されます。 3 番目の引数は、各項目の前に空行を出力することを禁止します。 .TP .B "APP name text" \fIname\fP という名前の付録を開始します。 \fIname\fP が "" である場合には、自動的に名前がつけられます。 名前が自動生成されるならば、付録は \fBA\fP から始まります。 数値変数の \fBAph\fP が非 0 であれば、新しいページに切り替えられ、 ヘッダも生成されます。 これが、デフォルトです。 付録は、常に「List of contents」の中に正しいページ番号とともに表示されます。 \fIAPPENDIX\fP という名前は、 文字列変数の \fBApp\fP に望みのテキストを代入すれば、 変えることが出来ます。 文字列 \fBApptxt\fP は、現在の付録テキストを含みます。 .TP .B "APPSK name pages text" \&\fB.APP\fP とほぼ同じです。異なるのは、\fIpages\fP だけ ページ番号が増加されることです。 これが使用されるのは、図表や、その他整形されていない文書が 付録に含まれる時です。 .TP .B "AS [arg [indent]]" アブストラクトの開始。 インデントは、「en (半角)」で指定されますが、単位付きの指定も可能です。 引数の \fIarg\fP は、アブストラクトが印字される場所を制御します。 .in +.5i .T2 arg 配置 .T2 0 公開論文形式 (\fBMT 4\fP) の場合には、 アブストラクトは第 1 ページと表紙に印字されます。 それ以外の場合には、表紙はなく、第 1 ページに印字されます。 .T2 1 アブストラクトは表紙だけに印字されます (\fBMT 4\fP の場合のみ)。 .T2 2 アブストラクトは表紙だけに印字されます (\fBMT 4\fP 以外の場合のみ)。 表紙の印字には、\fBCS\fP は必要ありません。 .in 外部へのレター形式 (\fBMT 5\fP) では、アブストラクトは全く印字されません。 \fIindent\fP は両側マージンのインデントを制御します。 指定されない時は、通常のテキストのインデントが用いられます。 .TP .B "AST [title]" アブストラクトの題目。 デフォルトでは、\fBABSTRACT\fP です。 アブストラクトのテキストの上にそのテキストを設定します。 .TP .B "AT title1 [title2 ...]" 著者の肩書。\fBAT\fP は、各々の \fBAU\fP のすぐ後に現れなければなりません。 肩書は、署名ブロックで名前の後に現れます。 .TP .B "AU [name [initials [loc [dept [ext [room [arg [arg [arg]]]]]]]]]" 著者に関する情報。これは、覚書や論文の著者を明示し、表紙や他の同様の場所に 印字されます。 \fBAU\fP は \fBTL\fP の前に現れなければなりません。 著者情報には、イニシャル (initials)、所在地 (loc)、部局 (dept)、 電話内線番号 (ext)、部屋番号又は部屋の名前 (room)、そして 3 個までの 追加引数を含めることが出来ます。 .TP .B "AV [name [1]]" 承認署名。これは、署名と日付を伴う承認欄を生成します。 変数 \fBLetapp\fP を用いて文字列 \fBAPPROVED:\fP を変更することが出来ます。 また、文字列 \fBDate\fP は \fBLetdate\fP に入っています。 .TP .B "AVL [name]" 手紙の署名。署名用の空間の行を生成します。 .TP .B "B [bold-text [prev-font-text [bold...]]]" ボールド体の開始。引数の数には、制限はありません。 すべての引数は、1 個の単語に結合されます。 第 1 番目の引数、第 3 番目の引数、などなどがボールド体で印字されます。 .TP .B B1 (ms マクロのような) ボックスの開始。テキストの周りにボックスを描きます。 テキストは 1 文字インデントされ、右マージンは 1 文字短くなります。 .TP .B B2 ボックスの終了。\fBB1\fP によって開始されたボックスを終了します。 .TP .B BE ページ底部のブロックの終了。\fBBS\fP を参照して下さい。 .TP .B "BI [bold-text [italic-text [bold-text [...]]]]" ボールド体とイタリック体。 引数の数には制限はありません。 \fBB\fP を参照して下さい。 .TP .B "BL [text-indent [1]]" 黒丸リストの開始。これは、黒丸記号と空白を各リスト項目の先頭部分に配置する リストを初期化します (\fBLI\fP を参照して下さい)。 \fItext-indent\fP は、数値レジスタ \fBPi\fP により設定されるリスト項目の デフォルトのインデントより優先されます。 第 3 番目の引数により、各項目前の空行の出力が禁止されます。 .TP .B "BR [bold-text [roman-text [bold-text [...]]]]" ボールド体とローマン体。 引数の数には、制限はありません。 .TP .B BS ページ底部のブロック開始。これは、テキストブロックの定義を開始します。 このブロックは各ページの底部に印字されます。 ブロックは、\fBBE\fP で終了します。 .TP .B BVL 変則可変項目リスト。 この変則可変項目リストには、定まった項目記号がありません。 その代わり、各 \fBLI\fP に項目記号が定義されていると仮定しています。 テキストは必ず、項目記号の後の次の行で始まります。 \fItext-indent\fP によって、テキストのインデントが設定されます。 そして、\fImark-indent\fP によって、現在のインデントから項目記号までの 距離が設定されます。 第 3 番目の引数は、各項目の前に空行を出力することを禁止します。 .TP .B "COVER [arg]" \&\fBCOVER\fP は表紙の定義を開始します。 重要なことは、\fB.COVER\fP がすべての通常のテキストより前に現れることです。 \&\fB.COVER\fP では、\fIarg\fP を使用して、 /usr/share/tmac/mm/\fIarg\fP.cov というファイル名を構成します。 このお陰で、無制限な型の表紙を創作することが可能です。 \fIms.cov\fP の目的としていることは、\fBms\fP の表紙に似せることです。 \&\fB.COVER\fP では、表紙の定義の最後に \fB.COVEND\fP があることが要求されます。 必ず、以下のような順番で表紙マクロを使用して下さい: .nf \&.COVER \&.TL \&.AF \&.AU \&.AT \&.AS \&.AE \&.COVEND .fi しかし、必ず必要なのは \fB.TL\fP と \fB.AU\fP だけです。 .TP .B COVEND これによって表紙の記述は終了し、表紙が印字されます。 このマクロは、表紙ファイルに定義されています。 .TP .B DE ディスプレイ終了。これは、\fBDS\fP 又は \fBDF\fP で始まったテキストブロック やディスプレイを終了させます。 .TP .B "DF [format [fill [rindent]]]" フローティングディスプレイを開始します (入れ子にはできません)。 フローティングディスプレイは、キューに保存され、入れられた順番で印字されます。 \fIformat\fP, \fIfill\fP, \fIrindent\fP は、\fBDS\fP の場合と同じです。 フローティングディスプレイは、2 個の数値レジスタ \fBDe\fP と \fBDf\fP とによって制御されます。 .sp \fBDe レジスタ\fP .in +.5i .T2 0 特別なことは何もありません。これがデフォルトです。 .T2 1 ディスプレイが印字された後で改ページが行われます。 その為、1 ページに唯 1 つのディスプレイが出力されます。 その後ろには、テキストは何も続きません。 .in .sp \fBDf レジスタ\fP .in +.5i .T2 0 (セクション - ページの番号付けが有効な時は) 各セクションの最後に、 そうでない時には文書の最後に、ディスプレイは印字されます。 .T2 1 充分な余地があれば、新しいディスプレイは現在のページに印字されます。 そのような余地がなければ、ディスプレイは文書の最後に印字されます。 .T2 2 1 つのディスプレイが、各ページの、又は (多段組のモードでは) 各カラムの一番上に印字されます。 .T2 3 もし充分な余地があるならば、1 つのディプレイを印字します。 余地がなければ、ディスプレイは次ページか次のカラムの一番上に印字されます。 .T2 4 新しいページまたはカラムに、入るだけのディスプレイを印字します。 もし \fBDe\fP が 0 でなければ、各ディスプレイの間に改ページが出力されます。 .T2 5 現在のページをディスプレイで満たします。 そして、残りは、新しいページまたはカラムから始めます。(これがデフォルトです)。 もし \fBDe\fP が 0 でなければ、各ディスプレイの間に改ページが出力されます。 .in .TP .B "DL [text-indent [1]]" ダッシュリストの開始。これは、各項目がダッシュの後に印字されるリスト を開始します。 \fItext-indent\fP は、数値レジスタの \fBPi\fP によって設定される、リスト項目の デフォルトのインデントを変更します。 第 3 引数は各項目の前に空行を印字することを禁止します。 第 2 引数は印字されるべきリスト項目の間の空行を抑止します。 \fBLI\fP を参照して下さい。 .TP .B "DS [format [fill [rindent]]]" スタティックディスプレイの開始。これは、\fBDE\fP に至るまでテキストの収集を 始めます。 テキストは、ページ長より長くならない限り同一のページに印字されます。 \fBDS\fP は入れ子にできます。入れ子の深さには限度はありません (合理的な程度に :-)。 .sp \fBformat\fP .in +.5i .ds x " .\" " .T2 """""" インデントしません。 .T2 none インデントしません。 .T2 L インデントしません。 .T2 I 数値レジスタ \fBSi\fP の値だけテキストをインデントします。 .T2 C 各行を中央揃えします。 .T2 CB ディスプレイ全体をブロックとして中央揃えします。 .T2 R 行を右揃えします。 .T2 RB ディスプレイ全体をブロックとして右揃えします。 .in .sp L, I, C, CB は 0, 1, 2, 3 とも指定できます。これは互換性の理由からです。 (この機能は使用しないで下さい。:-) .sp \fBfill\fP .in +.5i .T2 """""" 行詰め機能を無効にします。 .T2 none 行詰め機能を無効にします。 .T2 N 行詰め機能を無効にします。 .T2 F 行詰め機能を有効にします。 .in .sp N と F は 0 と 1 とも指定できます。 通常は空行がディスプレイの前と後に印字されます。 数値レジスタ \fBDs\fP に 0 を設定すればこれを抑止出来ます。 \fIrindent\fP を指定すれば、行の長さをその量だけ短く出来ます。 .TP .B "EC [title [override [flag [refname]]]]" 数式の題目。 数式に題目をつけます。 引数に \fIoverride\fP を指定すれば、数式番号を変更出来ます。 .sp \fBflag\fP .in +.5i .T2 none \fIoverride\fP は、番号の接頭辞となります。 .T2 0 \fIoverride\fP は、番号の接頭辞となります。 .T2 1 \fIoverride\fP は、番号の接尾辞となります。 .T2 2 番号は \fIoverride\fP に置き換えられます。 .in \&\fBEC\fP は数値レジスタの \fBEc\fP をカウンタとして使います。 番号の形式を変更する為に、\fB.af\fP を用いることが出来ます。 もし数値レジスタの \fBOf\fP が 1 であれば、題目の形式として番号の後にはドット の代わりにダッシュが使われます。 .br 文字列変数の \fBLe\fP は、式一覧 (List of Equations) の題目を 制御します。 式一覧は、数値レジスタ \fBLe\fP が 1 の場合のみ表示されます。 デフォルトは 0 です。 これは、デフォルトでは \fILIST OF EQUATIONS\fP です。 数値レジスタの \fBLiec\fP は単語 \fIEquation\fP を含みます。 この文字列は番号の前に印字されます。 もし \fIrefname\fP が指定されている時には、数式番号が \fB.SETR\fP によって 保存されます。これは、\fB.GETST\fP \fIrefname\fP によって取り出せます。 .br \fBEC\fP が \fBDS\fP/\fBDE\fP の内部で使用されている場合、 特別な表題処理を行います。 \fBDS\fP の書式には影響されません。 .TP .B "EF [arg]" 偶数ページのフッタ。これは偶数ページの通常のページフッタの すぐ上に印字されます。 \&\fBPF\fP を参照して下さい。 .TP .B "EH [arg]" 偶数ページのヘッダ。これは偶数ページの通常のページヘッダの すぐ下に印字されます。 \&\fBPH\fP を参照して下さい。 .TP .B EN 数式の終了。 \&\fBEQ\fP を参照して下さい。 .TP .B EOP ページ終了のユーザ定義マクロ。 フッタを通常通り印字する代わりにこのマクロが呼び出されます。 このマクロは何のトラップもアクティブではない状態の隔離された環境下で 実行されます。 \&\fBTP\fPを参照して下さい。 .sp \fBEOP に利用できる文字列変数\fP .in +.5i .T2 EOPf \&\fBPF\fP からの引数。 .T2 EOPef \&\fBEF\fP からの引数。 .T2 EOPof \&\fBOF\fP からの引数。 .in .TP .B "EPIC width height [name]" \fBEPIC\fP は指定された \fIwidth\fP (幅) と \fIheight\fP (高さ) の 箱を描きます。 また、テキスト \fIname\fP を表示するか、 \fIname\fP が指定されていない場合にはデフォルト文字列を表示します。 外部ピクチャを取り込むときに使用し、 この場合、ピクチャの大きさだけを指定してください。 \fBPIC\fP を見てください。 .TP .B "EQ [label]" 数式の開始。 \fBEQ\fP/\fBEN\fP は、\fBeqn\fP への入力として書かれた数式の区切り記号です。 \fBEQ\fP/\fBEN\fP は \fBDS\fP/\fBDE\fP ペアに囲まれていなければなりません。 しかし、\fBEQ\fP が \fBeqn\fP のオプションを設定するのに使用されているだけ ならば、その必要はありません。 数値レジスタの \fBEq\fP が 1 でなければ、\fIlabel\fP は数式の右マージンに 現れます。1 であれば、ラベルは左マージンに現れます。 .TP .B "EX [title [override [flag [refname]]]]" エグジビットの題目。 引数は \fBEC\fP と同じです。 \&\fBEX\fP は数値レジスタの \fBEx\fP をカウンタとして使用します。 文字列変数の \fBLx\fP は、エグジビット一覧 (List of Exhibits) の題名を 制御します。デフォルトでは \fILIST OF EXHIBITS\fP となります。 エグジビット一覧が表示されるのは、 数値レジスタ \fBLx\fP が 1 の場合のみです。 デフォルトは 1 です。 文字列変数の \fBLiex\fP は、\fIExhibit\fP という単語を含みます。 この単語は、番号の前に印字されます。 もし \fIrefname\fP が指定されたなら、その時はエグジビット番号は、 \&\fB.SETR\fP により保存されます。 これは、\fB.GETST\fP \fIrefname\fP によって取り出せます。 .br \fBEX\fP が \fBDS\fP/\fBDE\fP の内部で使用されている場合、 特別な表題処理を行います。 \fBDS\fP の書式には影響されません。 .TP .B "FC [closing]" レターや覚書の正式な締めくくりとして \fIYours\ very\ truly,\fP を印字します。 引数でデフォルトの文字列を置き換えられます。 デフォルトは文字列変数の \fBLetfc\fP に保管されています。 .TP .B "FD [arg [1]]" 脚注のデフォルトの形式。 これは、ハイフネーション (hyphen)、右マージン揃え (adjust)、 脚注テキストのインデント (indent) を制御します。 また、ラベル揃え (ljust) も変更することが出来ます。 .sp .ne 14v .nf .ta .5i +.8i +.8i +.8i +.8i \fBarg hyphen adjust indent ljust\fP 0 no yes yes left 1 yes yes yes left 2 no no yes left 3 yes no yes left 4 no yes no left 5 yes yes no left 6 no no no left 7 yes no no left 8 no yes yes right 9 yes yes yes right 10 no no yes right 11 yes no yes right .sp .fi .DT 11 以上の引数は、引数 0 と見なされます。mm でのデフォルトは 10 です。 .TP .B FE 脚注の終了。 .TP .B "FG [title [override [flag [refname]]]]" 図の題名。 引数は \fBEC\fP のものと同じです。 \&\fBFG\fP は数値レジスタの \fBFg\fP をカウンタとして使用します。 文字列変数の \fBLf\fP は、図一覧 (List of Figures) の題名を 制御します。デフォルトでは \fILIST OF FIGURES\fP となります。 図一覧が表示されるのは、 数値レジスタ \fBLf\fP が 1 の場合のみです。 デフォルトは 1 です。 文字列変数の \fBLifg\fP は、\fIFigure\fP という単語を含みます。 この単語は、番号の前に印字されます。 もし \fIrefname\fP が指定されていれば、図番号が \&\fB.SETR\fP によって保存されます。 これは、\fB.GETST\fP \fIrefname\fP によって取り出せます。 .br \fBFG\fP が \fBDS\fP/\fBDE\fP の内部で使用されている場合、 特別な表題処理を行います。 \fBDS\fP の書式には影響されません。 .TP .B "FS [label]" 脚注の開始。 脚注は \fBFE\fP で閉じられます。 通常脚注は自動的に番号が付されます。 この番号は、文字列変数の \fBF\fP により利用出来ます。 ただ \fB\e*F\fP をテキストに加えて下さい。 また、\fIlabel\fP を引数として加えることで、 他の番号や名前を脚注に付けることが出来ます。 ディスプレイの中の脚注も今では可能です。 空行が、脚注同士を分離します。 行の高さは、数値レジスタの \fBFs\fP により制御されます。 デフォルト値は 1 です。 .TP .B "GETHN refname [varname]" これは、対応する \fBSETR\fP \fIrefname\fP が配置された場所の セクションヘッダ番号を挿入します。 これは、1 回目のパスでは、X.X.X. となっているでしょう。 \fBINITR\fP を参照して下さい。 もし varname が指定されているなら、\fBGETHN\fP により文字列変数の \&\fIvarname\fP にはセクションヘッダ番号が代入されます。 .TP .B "GETPN refname [varname]" これは、対応する \fBSETR\fP \fIrefname\fP が配置された場所の ページ番号を挿入します。 これは、1 回目のパスでは、9999 となっているでしょう。 \fBINITR\fP を参照して下さい。 もし varname が指定されているなら、\fBGETPN\fP により文字列変数の \&\fIvarname\fP にはページ番号が代入されます。 .TP .B "GETR refname" これは \fBGETHN\fP と \fBGETPN\fP をテキストの 「chapter」と「, page」とともに結合します。 文字列変数の \fIQrf\fP は参照用のテキストを保持しています: .ti +.5i \&.ds Qrf See chapter \e\e*[Qrfh], page \e\e*[Qrfp]. .br \fIQrf\fP は他の言語をサポートする為に変更出来ます。 文字列変数の \fIQrfh\fP と \fIQrfp\fP は \fBGETR\fP により設定され、 セクションヘッダ番号とページ番号が入っています。 .TP .B "GETST refname [varname]" これは、\fB.SETR\fP の第 2 引数により保存された文字列を挿入します。 これは、1 回目のパスでは、ダミー文字列になっているでしょう。 もし varname が指定されたなら、\fBGETST\fP により文字列変数の \fIvarname\fP には保存された文字列が代入されます。 \&\fBINITR\fP を参照して下さい。 .TP .B "H level [heading-text [heading-suffix]]" 番号付セクション見出し。 セクションヘッダには、1 から 7 迄のレベルを付けられます。 レベル 1 が、トップレベルです。 テキストは引数 \fIheading-text\fP に与えられます。 テキストに空白があるときには、二重引用符で括らなければなりません。 \fBheading-suffix\fP をセクションヘッダのテキスト中に付け加えられます。 しかし、これは目次には現れません。 通常、これは脚注マークや同様のものに用いられます。 \fIheading-suffix\fP の中では \fB\e*F\fP を使わないで下さい。 \fB\e*F\fP は機能しません。 手動のラベルを使わなければなりません。 \fBFS\fP を参照して下さい。 .sp \fBH\fP の直後に置かれた段落 \fBP\fP は、無視されます。 \fBH\fP によって、行送りとインデントの処理が行われます。 .sp -\fB見出しの前のページ切替\fP +\fB見出しの前のページ切り替え\fP .br -数値レジスタの \fBEj\fP は見出しの前のページ切替を制御します。 +数値レジスタの \fBEj\fP は見出しの前のページ切り替えを制御します。 通常、レベル 1 の見出しは、その前に 2 行の空行が印字されます。 それより高次のレベルの見出しの前では 1 行になります。 数値レジスタの \fBEj\fP が 1 であれば、各第 1 レベルの見出しの前で 新しいページが排出されます。 レベルが \fBEj\fP の値以下の見出しすべてについて、ページが切り替えられます。 \fBEj\fP のデフォルト値は 0 です。 .sp \fB見出しの行区切りレベル\fP .br もし見出しレベルが数値レジスタ \fBHb\fP 以下ならば、 見出しの後で行区切りが起こります。 このレジスタのデフォルト値は 2 です。 .sp \fB見出しの空白行のレベル\fP .br もし見出しレベルが数値レジスタ \fBHs\fP 以下ならば、 空白行が見出しの後に挿入されます。 このレジスタのデフォルト値は 2 です。 .sp もしレベルが \fBHb\fP と \fBHs\fP の両方より大きければ、 テキストは同じ行で見出しの後に続きます。 .sp \fB見出しの後のインデント\fP .br 見出しの後のテキストのインデントは数値レジスタの \fBHi\fP によって制御 されます。 このレジスタのデフォルト値は 0 です。 .sp \fBHi\fP .in +.5i .T2 0 テキストは左揃えされます。 .T2 1 テキストのインデントは数値レジスタの \fBPt\fP の値に従います。 \fBP\fP を参照して下さい。 .T2 2 テキストは見出しの最初の単語に合わせて 1 列に並べられます。 .in .sp \fBセクション見出しの中央揃え\fP .br そのレベルが数値レジスタの \fBHc\fP 以下で、かつ \fBHb\fP 又は \fBHs\fP 以下の見出しはすべて、中央揃えされます。 .sp \fB見出しのフォントの管理\fP .br 各見出しレベルでのフォントは文字列変数の \fBHF\fP を用いて管理されています。 この変数には各レベルでのフォント番号又はフォント名が入れられています。 デフォルトでは \fB2\ 2\ 2\ 2\ 2\ 2\ 2\fP (すべての見出しでイタリック体) です。 これをまた \fBI\ I\ I\ I\ I\ I\ I\fP の様にも書くことが出来ます。 省略された値はすべて 1 であると推定されます。 .sp \fBポイントサイズの管理\fP .br 各見出しのポイントサイズは、フォントが \fBHF\fP により管理されるのと同様な 方法で、文字列変数の \fBHP\fP により管理されます。 値 0 は、デフォルトのポイントサイズを選びます。 デフォルト値は \fB0\ 0\ 0\ 0\ 0\ 0\ 0\fP です。 ポイントサイズのみが変わるのであって、垂直サイズではないことに気をつけて下さい。 垂直サイズはユーザにより指定されるマクロ \fBHX\fP や \fBHZ\fP によって 管理出来ます。 .sp \fB見出しカウンタ\fP .br \fBH1\fP から \fBH7\fP 迄の名前をつけられた 7 個の数値レジスタには 各見出しレベルのカウンタが入れられています。 それらの値はアラビア数字を使って印字されます。 これらは、マクロの \fBHM\fP (下記参照) によって変えられます。 すべての記号は印字する前に結合されます。 これを避ける為には、数値レジスタの \fBHt\fP に 1 を代入して下さい。 これにより各見出しでは、現在の見出しのカウンタだけが印字されます。 .sp \fB自動の目次\fP .br その見出しレベルが数値レジスタ \fBCl\fP 以下の見出しは、 目次に印字する為に保存されます。 このレジスタのデフォルト値は 2 です。 .sp \fB見出しの特別な管理、ユーザ定義マクロ\fP .br これから記述するマクロは垂直行送り、フォント、または他の機能を細かく 制御するためにユーザが定義できるものです。 引数 \fIlevel\fP は \fBH\fP へのレベル引数です。 しかし、これは番号無し見出しでは 0 になります (\fBHU\fP を参照して下さい)。 引数 \fIrlevel\fP は実際のレベルです。 これは、番号無し見出しの為に数値レジスタ \fBHu\fP に代入されます。 引数 \fIheading-text\fP は、\fBH\fP や \fBHU\fP へのテキスト引数です。 .sp \fBHX\ \fP\fIlevel\ rlevel\ heading-text\fP .br \fBHX\fP は見出し印字の直前に呼び出されます。 以下のようなレジスタが \fBHX\fP に利用出来ます。 \fBHX\fP は\ \fB}0\fP, \fB}2\fP, \fB;3\fP を変更してもかまいません。 .in +.5i .T3 "文字列変数\ }0" もし \fIrlevel\fP が非 0 であれば、見出し記号と 2 個のスペースが入っています。 そうでなければ、空です。 .T3 "数値レジスタ\ ;0" 見出しの後のテキストの位置が入っています。 0 はテキストが見出しと同じ行に続くはずであることを意味しています。 1 はテキストの前で行区切りが生ずるはずであることを意味します。 2 は空白行が見出しとテキストを分離するはずであることを 意味します。 .T3 "文字列変数\ }2" 数値レジスタの \fB;0\fP が 0 であれば、このレジスタには 2 個のスペースが入ります。 これは見出しからテキストを分離するのに使われます。 もし \fB;0\fP が非 0 であれば、この文字列変数は空です。 .T3 "数値レジスタ\ ;3" これには見出しの後に必要とされる行送りが単位付きで入ります。 デフォルトは 2v です。 これらは番号付け (\fB}0\fP)、垂直行送り (\fB}2\fP)、そして 見出しの後に必要な行送りの様な事柄を変更するのに使用出来ます。 .in .sp \fBHY\ \fP\fIdlevel\ rlevel\ heading-text\fP .br \fBHY\fP はサイズとフォントの計算の後に呼び出されます。 インデントを変更するために使えるでしょう。 .sp \fBHZ\ \fP\fIdlevel\ rlevel\ heading-text\fP .br \fBHZ\fP は見出しの印字の後で、\fBH\fP 又は \fBHU\fP が終了する直前に、 呼ばれます。 これは、セクション見出しに従いページヘッダを変更する為に使うことが出来るでしょう。 .TP .B "HC [hyphenation-character]" ハイフネーション文字を設定します。 デフォルト文字は \e% です。 引数なしで呼ばれた時はデフォルトに再設定します。 ファイルの初めで数値レジスタ \fBHy\fP に 0 を設定すれば、 ハイフネーションを止められます。 .TP .B "HM [arg1 [arg2 [... [arg7]]]]" 見出し記号の型。 見出しカウンタを印字する為の記号の型を制御します。 デフォルトは、すべてのレベルで 1 です。 .sp \fB引数\fP .in +.5i .T2 1 アラビア数字 .T2 0001 ひとつ以上の 0 を先行したアラビア数字 .T2 A 大文字のアルファベット .T2 a 小文字のアルファベット .T2 I 大文字のローマ数字 .T2 i 小文字のローマ数字 .T2 \fI空\fP アラビア数字 .in .TP .B "HU heading-text" 番号無しセクションヘッダ。 数値レジスタ \fBHu\fP をレベルとして \fBHU\fP は \fBH\fP の様に振舞います。 \fBH\fP を参照して下さい。 .TP .B "HX dlevel rlevel heading-text" ユーザ定義見出しの終了。 セクションヘッダを印字する直前に呼ばれます。 \fBH\fP を参照して下さい。 .TP .B "HY dlevel rlevel heading-text" ユーザ定義見出しの終了。 セクションヘッダを印字する直前に呼ばれます。 \fBH\fP を参照して下さい。 .TP .B "HZ dlevel rlevel heading-text" ユーザ定義見出しの終了。 セクションヘッダを印字した直後に呼ばれます。 \fBH\fP を参照して下さい。 .TP .B "I [italic-text [prev-font-text [italic-text [...]]]]" イタリック体です。 これは引数なしで呼ばれたならフォントをイタリック体に変更します。 引数が 1 個の場合には、これはその単語をイタリック体にします。 引数が 2 個の場合には、これは引数を連結し最初の単語にイタリック体を 設定し、2 番目に以前のままのフォントを設定します。 引数の数には制限はありません。 すべての引数は、連結されます。 .TP .B "IA [addressee-name [title]]" これはレター形式の受信人 (addressee) と受信人のアドレスの記述を 開始します。 いくつかの名前が空の \fBIA\fP/\fBIE\fP ペアにより指定できます。 しかし、アドレスは唯 1 つになります。 \fBLT\fP を参照して下さい。 .TP .B "IB [italic-text [bold-text [italic-text [...]]]]" イタリック体とボールド体。 偶数番目の引数がイタリック体で、奇数番目がボールド体で印字されます。 \fBI\fP を参照して下さい。 .TP .B IE \fPIA\fP の後でアドレス指定を終了します。 .TP .B "INITI filename [type]" 新しいインデックスシステムを初期化し、 インデックス行を集めるファイル名を \fBIND\fP に設定します。 引数 \fItype\fP はインデックスのタイプ、 すなわち、ページ番号・ヘッダマーク・両方のいずれかを選択します。 デフォルトは \fIN\fP です。 .sp \fBtype\fP .in +.5i .T2 N ページ番号 .T2 H ヘッダマーク .T2 B ページ番号とヘッダマークの両方をタブで区切ります .in .TP .B "IND arg1 [arg2 [...]]" \fBIND\fP は、\fBINITI\fP で選択されたインデックスファイルへ、 全引数とページ番号またはヘッダマークをタブで区切った 1 行を書き込みます。 .in +.5i \fB礼\fP .br arg1\etページ番号 .br arg1\etarg2\etページ番号 .br arg1\etヘッダマーク .br arg1\etページ番号\etヘッダマーク .in .TP .B "INDP" \fBINDP\fP は、文字列変数 \fBIndcmd\fP で指定されるコマンドを実行し、 インデックスを表示します。通常は \fIsort\ -t\et\fP を実行します。 \fBINDP\fP はコマンドの出力を読み、インデックスを生成します。 通常は 2 桁の書式です (\fBTYIND\fP の定義により変更可能です)。 インデックスは、文字列変数 \fBIndex\fP のヘッダと共に表示されます。 この変数のデフォルト値は \fBINDEX\fP です。 1 桁の処理は、一覧の後で返されます。 \fBINDP\fP は、ユーザ定義マクロ \fBTXIND\fP, \fBTYIND\fP, \fBTZIND\fP が 定義されていれば呼び出します。 \fBTXIND\fP は、\fBINDEX\fP の表示前に呼び出されます。 \fBTYIND\fP は、\fBINDEX\fP の表示の代りに呼び出されます。 \fBTZIND\fP は、表示の後で呼び出され、再度通常動作へ戻る処理を行うべきです。 .TP .B "INITR filename" 参照用マクロの初期化。 参照はファイル \fIfilename.tmp\fP と \fIfilename.qrf\fP とに 書き込まれます。 これには、groff の 2 回のパスが必要とされます。 最初のパスでは参照を探し、2 回目のパスではそれらを取り込みます。 \fBINITR\fP は数回使用できます。 しかし、有効なのは最初に出現した \fBINITR\fP だけです。 \fBunsafe\fP-error 発生時には、オプション \fB-U\fP が必要かもしれません。 関連項目は、\fBSETR\fP, \fBGETPN\fP, \fBGETHN\fP です。 .TP .B "IR [italic-text [roman-text [italic-text [...]]]]" イタリック体とローマン体。 偶数番目の引数がイタリック体で、奇数番目がローマン体で印字されます。 \fBI\fP を参照して下さい。 .TP .B "LB text-indent mark-indent pad type [mark [LI-space [LB-space]]]" リスト開始マクロ。 これはすべてのリストに使用される共通のマクロです。 引数 \fItext-indent\fP は現在のインデントからテキストをインデントする スペースの数です。 .sp \fIpad\fP と \fImark-indent\fP は項目記号を置く所を指定します。 項目記号は記号領域に配置されます。 \fImark-indent\fP はこの領域の前のスペースの数を設定します。 これは通常 0 です。 記号領域はテキストが始まる所で終ります。 それでもなお、テキストの開始は \fItext-indent\fP により決められます。 .sp もし \fIpad\fP が 0 ならば、項目記号は記号領域の中で左揃えされます。 もし\fIpad\fP が 0 より大きければ、その時は \fImark-indent\fP は無視されます。 そして項目記号はテキストに対しスペースで \fIpad\fP 個分前に配置されます。 この操作では、項目記号は右揃えされます。 .sp もし \fItype\fP が 0 であれば、リストはハンギングインデントになるか、又は 引数の \fImark\fP が与えられていたら、文字列の \fImark\fP が項目記号 となります。 .sp もし \fItype\fP が 0 より大きければ、自動的な番号付けが行われます。 更に \fImark\fP が空であれば、番号はアラビア数字となります。 この時、\fImark\fP には \fB1\fP, \fBA\fP, \fBa\fP, \fBI\fP, \fBi\fP のどれでも指定出来ます。 .sp \fItype\fP には項目記号を表示するため 6 通りの可能な方法の中から 1 つを選べます。 .br \fBtype\fP .in +.6i .T2 1 x. .T2 2 x) .T2 3 (x) .T2 4 [x] .T2 5 .T2 6 {x} .in .sp リストの各項目の前には \fILI-space\fP 行の空行が置かれます。 デフォルトは 1 です。 .sp \fBLB\fP 自体には \fILB-space\fP 行の空行が印字されます。 デフォルトは 0 です。 .TP .B "LC [list-level]" リスト状態情報のクリア。 これにより、アクティブなリストが \fIlist-level\fP レベル迄、 あるいは引数が指定されなかった場合には 0 レベル迄、すべて終了されます。 これはアクティブなリストをすべてクリアする為に \fBH\fP により使用されます。 .TP .B "LE [1]" リストの終了。 これは現在のリストを終了します。 \fBLE\fP はもし引数が指定されているなら、空行を印字します。 .TP .B "LI [mark [1]]" リスト項目。 これは、リストの各項目の最初に置かれます。 引数がないときは、\fBLI\fP は、現在のリスト形式で決められる項目記号 を印字します。 \fBLI\fP に引数を 1 つ指定すると、それが代わりの項目記号として使用されます。 \fBLI\fP に引数を 2 つ指定すれば、\fImark\fP は現在の項目記号の接頭辞と なります。 第 2 引数が \fB1\fP ではなく \fB2\fP の場合、 接頭辞と項目記号の区切り空白は生成されません。 この動作は、数値レジスタ \fBLimsp\fP を 0 に設定することでも実現可能です。 長さ 0 の \fImark\fP を指定した場合はハンギングインデントが生成されます。 .sp 通常はリスト項目の前に空行が印字されます。 この挙動は数値レジスタの \fBLs\fP を用いて制御出来ます。 \fBLs\fP 以下のすべてのリストレベルで先行する行送りが生成されます。 このレジスタのデフォルト値は 99 です。 (リストの入れ子は無制限です。:-) .sp インデントは数値レジスタの \fBLi\fP によって変えられます。 デフォルトは 6 です。 .sp すべてのリストはリスト初期化マクロの \fBLB\fP により始まります。 しかし、リストを使いやすくする為に予め定義されているリストの形式が 7 つあります。 これらの形式はすべて異なったデフォルト値で \fBLB\fP を呼び出します。 .in +.5i .T2 \fBAL\fP 自動増加番号リスト .T2 \fBML\fP 記号付きリスト .T2 \fBVL\fP 可変項目リスト .T2 \fBBL\fP 黒丸リスト .T2 \fBDL\fP ダッシュリスト .T2 \fBRL\fP 参照文献リスト .T2 \fBBVL\fP 変則可変リスト .in これらのリストについてはこのマニュアルのほかの所に記述してあります。 関連項目は \fBLB\fP です。 .TP .B "LT [arg]" 引数に基づいて 4 つの異なった形式の内の 1 つでレターを構成します。 関連項目は \fB内部\fP セクションです。 .in +.5i .T2 \fBarg 形式\fP .T2 BL ブロック形式。日付欄、返送先アドレス、著者のアドレスと結辞は行の中央から始まります。 他のすべての行は左マージンから始まります。 .T2 SB 半ブロック形式。ブロック形式と同様ですが、 各段落の最初の行が スペース 5 個分インデントされます。 .T2 FB 全ブロック形式。すべての行が左マージンから始まります。 .T2 SP 簡易形式。全ブロック形式とほぼ同じです。 主題と著者の身分がすべて大文字で印字されます。 .in .TP .B "LO type [arg]" レターのオプションを指定します (\fB.LT\fP を参照して下さい)。 以下に示すのは標準のオプションです。 .in +.5i .T2 CN 機密表記。 日付欄の下 2 行目に \fBRESTRICTED\fP を印字します。 引数で \fBRESTRICTED\fP を置き換えられます。 関連項目は文字列変数 \fBLetCN\fP です。 .T2 RN 参考文献表記。 \fBIn reference to:\fP と引数を日付欄の 2 行下に印字します。 関連項目は文字列変数 \fBLetRN\fP です。 .T2 AT 気付。\fBATTENTION:\fP と引数を内部アドレスの下に印字します。 関連項目は文字列変数 \fBLetAT\fP です。 .T2 SA 頭辞。\fBTo Whom It May Concern:\fP か、又はもし指定されていた時には引数を 印字します。 頭辞は内部アドレスの 2 行下に印字されます。 関連項目は \fBLetSA\fP です。 .T2 SJ 主題欄。 レター形式 \fBSP\fP 以外の場合には、主題として \fBSUBJECT:\fP を 接頭辞として付けた引数を内部アドレスの 2 行下に印字します。 レター形式 \fBSP\fP の場合には、主題は接頭辞なしで、すべて大文字で印字されます。 関連項目は文字列変数の \fBLetSJ\fP です。 .in .TP .B "MC column-size [column-separation] " 多段組の開始。\fB1C\fP で通常状態に戻ります。 \fBMC\fP により現在の行長に入るだけの数のカラムが作られます。 \fIcolumn-size\fP は各カラムの幅で、\fIcolumn-separation\fP はカラムの間の 間隔です。 デフォルトの間隔は column-size/15 です。 関連項目は \fB1C\fP です。 .TP .B "ML mark [text-indent [1]]" 記号付きリストの開始。 各リスト項目の前に引数の \fImark\fP が印字されます。 \fItext-indent\fP の指定により、インデントが設定され、 \fBLi\fP よりも優先されます。 第 3 引数により各項目の前の空行の印字が禁止されます。 .TP .B "MT [arg [addressee]]" 覚書形式。 引数 \fIarg\fP は \fI/usr/share/tmac/mm/*.MT\fP というファイル名の部分です。 覚書の形式としては、\fI"string"\fP を含んで 0 から 5 迄サポートされています。 \fIaddressee\fP は単に、AT&T のマクロで使われる変数を設定するだけです。 .br \fBarg\fP .in +.5i .T2 0 通常の覚書。形式は印字されません .T2 1 \fIMEMORANDUM FOR FILE\fP が印字される覚書。 .T2 2 \fIPROGRAMMER'S NOTES\fP が印字される覚書。 .T2 3 \fIENGINEER'S NOTES\fP が印字される覚書。 .T2 4 公開論文形式。 .T2 5 外部へのレター形式。 .in 関連項目は、もっと柔軟な表題紙 \fBCOVER\fP/\fBCOVEND\fP です。 .TP .B "MOVE y-pos [x-pos [line-length]]" ある位置へ移動し、ページオフセットが \fIx-pos\fP に設定されます。 もし \fIline-length\fP が指定されなかったときは、現在の行長と 新しいページオフセットの差が使われます。 正常状態に戻るには、引数なしの \fBPGFORM\fP を使って下さい。 .TP .B "MULB cw1 space1 [cw2 space2 [cw3 ...]]" 特殊多段組モードの開始。 各カラムの幅を指定しなければなりません。 また、カラム間の間隔も指定しなければなりません。 最後のカラムの後には間隔指定は必要ありません。 MULB により転換が開始し、MULE により転換が終了しカラムが印字されます。 幅と間隔の単位は「n」です。 しかし、MULB は「c」や「i」のような通常の単位指定をすべて受け付けます。 MULB は、隔離された環境下で機能します。 .TP .B "MULN" 次のカラムの開始。 これは、カラムを切り替える唯一の方法です。 .TP .B "MULE" 多段組モードの終了とカラムの印字。 .TP .B "nP [type]" 2 段階のヘッダレベルを持つ番号付き段落の印字。 \&\fB.P\fP を参照して下さい。 .TP .B "NS [arg [1]]" 異なる形式の注釈を印字します。 引数は予め定義された形式の注釈の中から選びます。 もし 2 番目の引数が利用可能であれば、引数が注釈全体になります。 もし引数が予め定義されたものの中になければ、このマクロは \&\fBCopy (\fP\fIarg\fP\fB) to\fP のように印字されます。 さらに標準の注釈を加えることも可能です。 文字列変数の \fBLetns\fP と \fBLetnsdef\fP を参照して下さい。 .nf .in +.5i .T2 \fBarg 注釈\fP .T2 \fIなし\fP Copy To .T2 """"" .\" " Copy To .T2 1 Copy To (with att.) to .T2 2 Copy To (without att.) to .T2 3 Att. .T2 4 Atts. .T2 5 Enc. .T2 6 Encs. .T2 7 Under separate cover .T2 8 Letter to .T2 9 Memorandum to .T2 10 Copy (with atts.) to .T2 11 Copy (without atts.) to .T2 12 Abstract Only to .T2 13 Complete Memorandum to .T2 14 CC .in .fi .TP .B "ND new-date" 新しい日付。 現在の日付を置き換えます。 もし \fInew-date\fP が空文字列であれば、日付は印字されません。 .TP .B "OF [arg]" 奇数ページフッタ。 通常のフッタのすぐ上に 1 行印字されます。 \fBEF\fP と \fBPF\fP を参照して下さい。 .TP .B "OH [arg]" 奇数ページヘッダ。 通常のヘッダのすぐ下に 1 行印字されます。 \fBEH\fP と \fBPH\fP を参照して下さい。 .TP .B OP 後続するテキストが奇数ページの一番上に印字されることを確認します。 もし現在奇数ページの一番上にいるなら、白紙ページの出力はしません。 .TP .B "P [type]" 新しい段落の開始。 引数なしの \fBP\fP は、段落の一番最初の行も左揃えしたテキストを生成します。 これは、\fItype\fP に 0 を指定するのと同じです。 もし引数が 1 であれば、\fBP\fP に続くテキストの最初の行は 数値レジスタ \fBPi\fP に設定された数のスペースだけインデントされます。 この値は通常 5 です。 .sp \&\fBP\fP への引数として 1 を指定する代わりに、数値レジスタ \fBPt\fP に 段落の形式を設定することも可能です。 0 と 1 を設定することは、その値を \fBP\fP に与えることと同じになります。 値 2 により、すべての段落がインデントされます。 ただし見出し、リスト、ディスプレイの後は例外です。 .sp 段落間の間隔は数値レジスタの \fBPs\fP により制御され、 デフォルトでは 1 です(1 行の空白行)。 .TP .B "PGFORM [linelength [pagelength [pageoffset [1]]]]" 行長やページ長、ページオフセットを設定します。 このマクロは、レターヘッドや他のものの様に、特別の形式を生成するために 使用出来ます。 これは、通常はファイル中の最初のコマンドですが、必須ではありません。 \&\fBPGFORM\fP を引数なしで使用すれば、 \&\fBMOVE\fP の後ですべてを再初期化することが出来ます。 4 番目の引数が指定されなければ、行区切りが生成されます。 このマクロは、新しい行長とページ長を設定する一方、 最初のページにページ番号を出力するのを避けるために使用できます。 (このマクロが十分に動作していないように見えるときがあります。 代りにコマンド行引数を使用して、 行の長さ、ページの長さ、ページオフセットを変えてください。 ごめんなさい。) .TP .B PGNH 次のページにヘッダが印字されません。 レターや他の特殊なテキストのヘッダを取り除くために使われます。 最初のページのページヘッダを禁止するためには、いかなるテキストよりも前に このマクロが使われなければなりません。 .TP .B PIC [-L] [-C] [-R] [-I n] filename [width [height]] \fBPIC\fP は Postscript ファイルを文書に取り込みます。 本マクロは \fBmgm_ref\fP と \fBINITR\fP に依存します。 \fB-L\fP, \fB-C\fP, \fB-R\fP, \fB-I n\fP は、 ピクチャを調整するか、ピクチャをインデントします。 オプションの \fIwidth\fP と \fIheight\fP もまた、 ピクチャの大きさを変えるために指定可能です。 .TP .B PE ピクチャの終り。 \&\fBpic\fP コマンドの為のピクチャを終了します。 \&\fBpic\fP コマンドのマニュアルを参照して下さい。 .TP .B "PF [arg]" ページフッタ。 \&\fBPF\fP は各ページの一番下に印字される行を設定します。 通常は空です。 引数の指定に関しては \fBPH\fP を参照して下さい。 .TP .B "PH [arg]" ページヘッダ。 各ページの一番上に 1 行印字されます。 引数は「'left-part'center-part'right-part'」のように 指定されなければなりません。 ここで、left-part, center-part, right-part はそれぞれ左揃え、中央揃え、右揃え に印字されます。 文字 \fB%\fP は現在のページ番号に変更されます。 デフォルトのページヘッダは「''- % -''」で、ページ番号が 2 個のダッシュ記号に はさまれます。 .TP .B PS ピクチャの開始 (pic コマンドより)。 \&\fBpic\fP の為のピクチャを開始します。 マニュアルを参照して下さい。 .TP .B PX ページヘッダのユーザ定義による出口マクロ。 \&\fIno-space\fP モードでページヘッダの印字の直後に \fBPX\fP は呼び出されます。 .TP .B R ローマン体。 ローマンフォントに戻ります。 関連項目は \fBI\fP です。 .TP .B "RB [roman-text [bold-text [roman-text [...]]]]" ローマン体とボールド体。 偶数番目の引数はローマン体で印字されます。 奇数番目は、ボールド体で印字されます。 \fBI\fP を参照して下さい。 .TP .B "RD [prompt [diversion [string]]]" 標準入力から転換や文字列変数に読み込みます。 テキストは \fIdiversion\fP という名前の転換に保存されます。 テキストを取り出すには、空行にドットの後に転換の名前を書いて下さい。 もし \fIstring\fP が指定されたなら文字列変数 \fIstring\fP も定義されます。 \&\fIdiversion\fP や \fIprompt\fP は空 ("") にすることが出来ます。 .TP .B RF 参考文献の終了。 参考文献の定義を終了し、通常の処理に復帰します。 \&\fBRS\fP を参照して下さい。 .TP .B "RI [roman-text [italic-text [roman-text [...]]]]" 偶数番目の引数はローマン体で印字されます。 奇数番目はイタリック体で印字されます。 \&\fBI\fP を参照して下さい。 .TP .B "RL [text-indent [1]]" 参考文献リストの開始。 各項目の前に角括弧で挟まれた自動増加の番号を付けたリストを開始します。 \&\fItext-indent\fP によって、デフォルトのインデントを変更出来ます。 .TP .B "RP [arg1 [arg2]]" 参考文献ページを生成します。 もし参考文献ページが文書のどこかで必要とされているなら \fBRP\fP を用いることが出来ます。 もし \fBTC\fP が目次の生成に使われているなら、このマクロは必要ありません。 その時は参考文献ページは自動的に印字されます。 .sp もし \fIarg1\fP が 1 ならば参考文献カウンタは再初期化されません。 .sp -引数 \fIarg2\fP により \fBRP\fP に対しページ切替が行われるか否か +引数 \fIarg2\fP により \fBRP\fP に対しページ切り替えが行われるか否か を指定出来ます。 .br \fBarg2\fP .in +.5i .T2 0 参考文献ページは別のページに印字されます。 これがデフォルトです。 .T2 1 リストの後でページを切り替えません。 .T2 2 ページの前でページを切り替えません。 .T2 3 リストの前後でページを切り替えません。 .in 参考文献の項目は空行で分離されます。 数値レジスタの \fBLs\fP を 0 に設定すれば、この空行は抑止出来ます。 .sp 文字列変数の \fBRp\fP には参考文献ページの題名が入っています。 この題名は通常は \fIREFERENCES\fP に設定されています。 .TP .B "RS [string-name]" \&\fBRS\fP により自動番号付けの参考文献の定義が開始します。 文字列変数の \fB\e*(Rf\fP を参考文献記号があるべき所に配置し、 参考文献を参考文献記号の後の次の改行のところから \fBRS\fP/\fBRF\fP の間に挟んで書いて下さい。 参考文献番号は数値レジスタの \fB:R\fP に保存されています。 もし \fIstring-name\fP が指定されたら、その名前の文字列変数が 定義され、現在の参考文献記号が入れられます。 文字列変数はその後テキスト中で \fB\e*[\fIstring-name\fP]\fP により 参照することが出来ます。 .TP .B "S [size [spacing]]" ポイントサイズと垂直行送りを設定します。 もし引数のどれかが「P」に等しければ、そのときは以前の値が用いられます。 「C」は現在の値を表し、「D」はデフォルトの値を表します。 もし、「+」又は「-」が値の前に用いられているなら、現在の値に加算又は減算 が行われます。 .TP .B "SA [arg]" 右マージン行末揃えが設定されます。 通常、行末揃えは機能しています。 引数がないか、または \fB0\fP であれば、行末揃えは機能を止められます。 引数が \fB1\fP であれば、行末揃えは機能を働かせます。 .TP .B "SETR refname [string]" 現在のヘッダ番号とページ番号を refname として記憶します。 もし \fIstring\fP が定義されていれば、\fIstring\fP を保存します。 \fIstring\fP は \fB.GETST\fP によって取り出されます。 \fBINITR\fP を参照して下さい。 .TP .B "SG [arg [1]]" 署名欄。 正式な結辞の後に著者(達)の名前を印字します。 引数は参照データに加えられて、最初か最後の著者の箇所に印字されます。 参照データとは \fB.AU\fP により指定される 所在地、部局、及びイニシャルです。 このデータは、最初の著者か、そうでなければ最後の著者の箇所に印字されます。 著者(達)が \fB.WA\fP/\fB.WE\fP で指定されていれば、 何の参照データも印字されません。 \&\fBLetter 内部\fP セクションを参照して下さい。 .TP .B "SK [pages]" ページ送りします。 もし \fIpages\fP が \fB0\fP であるか省略されている場合には、既に印字位置が ページの一番上でなければ、次のページ迄ページ送りされます。 また、\fIpages\fP がこれら以外であれば、\fIpages\fP のページを ページ送りします。 .TP .B "SM string1 [string2 [string3]]" 文字列を小さくします。 もし \fIstring2\fP が指定されたときには、\fIstring1\fP は小さくなり、\fIstring2\fP は通常の大きさで \fIstring1\fP に結合されます。 引数が 3 個あるときには、すべての引数が結合され、 \fIstring2\fP だけが小さくなります。 .TP .B "SP [lines]" 垂直に行送りします。 \fIlines\fP には \fI3i\fP や \fI8v\fP の様に、何らかの単位を付けられます。 1 行にいくつかの \fBSP\fP を記述しても、それらの合計の行数ではなく、 それらのうちで最大の行数の行送りを生成します。 またページの最初のテキスト行までは \fBSP\fP は無視されます。 これを避けるには、\fBSP\fP の前に \fB\e&\fP を加えて下さい。 .TP .B TAB タブ位置を 5n 毎に再設定します。 通常はそれまでの任意のタブ設定位置を再設定するのに使用されます。 .TP .B "TB [title [override [flag [refname]]]]" 表の題目。 引数は \fBEC\fP のものと同じです。 \&\fBTB\fP は数値レジスタの \fBTb\fP をカウンタとして使用します。 文字列変数の \fBLt\fP は、表一覧 (List of Tables) の題名を 制御します。デフォルトでは \fILIST OF TABLES\fP となります。 表一覧が表示されるのは、 数値レジスタ \fBlLt\fP が 1 の場合のみです。 デフォルトは 1 です。 文字列変数の \fBLitb\fP は、\fITABLE\fP という単語を含みます。 この単語は、番号の前に印字されます。 .br \fBTB\fP が \fBDS\fP/\fBDE\fP の内部で使用されている場合、 特別な表題処理を行います。 \fBDS\fP の書式には影響されません。 .TP .B "TC [slevel [spacing [tlevel [tab [h1 [h2 [h3 [h4 [h5]]]]]]]]]" 目次。 通常このマクロは文書の最後の行に置かれます。 このマクロは、数値レジスタの \fBCl\fP によって制御されるレベルまでの 見出しで構成される目次を生成します。 \fBCl\fP は見出しの保存を制御するのであって、\fBTC\fP には 何の関わりもないことに注意して下さい。 \fIslevel\fP 以下のレベルの見出しにはそれらの前に \fIspacing\fP だけの空行が生成されます。 \fItlevel\fP 以下のレベルの見出しには右揃えした対応するページ番号が置かれます。 これらの見出しのテキストとページ番号はドットか空白によって分離されます。 もし \fItab\fP が 0 より大きければ、空白が用いられます。 そうでなければ、ドットが用いられます。 その他の見出しには見出しテキストの末尾にページ番号が直接置かれます (\fI右揃えしない\fP)。 .sp 引数の残りのものは、目次の前に中央揃えで印字されます。 .sp もし \fBTC\fP が多くて 4 個の引数を伴って呼び出されるならば、ユーザ定義の マクロ \fBTX\fP と \fBTY\fP が使われます。 \fBTX\fP は \fICONTENTS\fP の印字の前に呼び出されます。 そして \fBTY\fP は \fICONTENTS\fP を印字する代わりに呼び出されます。 .sp 等価のマクロを、図一覧、表一覧、式一覧、エクジビット一覧用に定義可能です。 これは \fBTXxx\fP または \fBTYxx\fP を定義することにより行い、 \fBxx\fP は \fBFg\fP, \fBTB\fP, \fBEC\fP, \fBEX\fP のいずれかです。 .sp 文字列変数 \fBCi\fP を各見出しレベルのインデントを制御するために 設定できます。 インデントには \fB.ds\ Ci\ .25i\ .5i\ .75i\ 1i\ 1i\fP の様に 単位を付けなければなりません。 インデントは通常各レベルの見出しの最大長によって制御されます。 .sp すべてのテキストは再定義が出来ます。 新しい文字列変数の \fILifg\fP, \fILitb\fP, \fILiex\fP, \fILiec\fP, \fILicon\fP にはそれぞれ 「Figure」、「TABLE」、「Exhibit」、「Equation」及び「CONTENTS」 が入っています。 これらの変数は、他の言語に再定義できます。 .TP .B TE 表の終了。 \&\fBTS\fP を参照して下さい。 .TP .B "TH [N]" 表のヘッダ。 \&\fBTS\fP を参照して下さい。 \&\fBTH\fP により表のヘッダが終了します。 もしページ区切りが起こればこのヘッダはもう一度印字されます。 引数の \fIN\fP はまだ実装されていません。 .TP .B TL [charging-case number(s) [filing-case number(s)]] 覚書の題名の開始。 次の \fBAU\fP 迄のすべてのテキストが題名に含められます。 \&\fIcharging-case number\fP と \fIfiling-case number\fP は 表題紙を処理するために保存されます。 .TP .B TM [num1 [num2 [...]]] \&\fB.MT\fP で使われる技術覚書番号。 無制限な数の引数を指定できます。 .TP .B TP ユーザが定義するページ最上部のマクロです。 このマクロは通常のページヘッダの代わりに呼ばれます。 ヘッダに対して完全な制御が出来ます。 ヘッダとフッタは隔離された環境下で印字されることに注意して下さい。 ただし、行長は保持されています。 .TP .B "TS [H]" 表の開始。 これは \fBtbl\fP に対する表の指定の開始です。 \&\fBtbl\fP については別個のマニュアルを参照して下さい。 \&\fBTS\fP は、\fBTE\fP により終了します。 引数 \fIH\fP は \fBmm\fP に対し表にはヘッダがあることを指定します。 \&\fBTH\fP を参照して下さい。 .TP .B TX ユーザが定義する目次の出口マクロ。 このマクロは \fBTC\fP が単語 \fICONTENTS\fP を印字する直前に呼び出されます。 \&\fBTC\fP を参照して下さい。 .TP .B TY ユーザが定義する目次の出口マクロ (「CONTENTS」は印字しません)。 \&\fICONTENTS\fP を印字する代わりにこのマクロが呼び出されます。 \&\fBTC\fP を参照して下さい。 .TP .B VERBON [flag [pointsize [font]]] クーリエフォントを用いた逐語的な出力の開始。 通常プログラムの印字のためです。 すべての文字が等しい幅を持ちます。 ポイントサイズは第 2 引数により変更できます。 font 引数を指定すればクーリエの代わりに他のフォントを使うことが出来ます。 \fIflag\fP によりいくつかの特別な機能を制御します。 この引数は必要とする機能をすべて合計したものとなります。 .in +.5i .T2 値 説明 .T2 1 エスケープ文字 (\e) を無効にします。 通常、これは冗長出力の間は働いています。 .T2 2 冗長テキストの前に空行を付加します。 .T2 4 冗長テキストの後に空行を付加します。 .T2 8 冗長テキストに行番号を振って印字します。 これにより各行の先頭に数字幅のスペースが 4 個付加されます。 文字列変数の \fBVerbnm\fP でより微妙な調節が可能です。 この変数には、\fBtroff\fP コマンドの \fB.nm\fP に指定できる すべての引数が入ります。 通常は「1」が指定されています。 .T2 16 冗長テキストを 5 個の「n」だけインデントします。 これは数値変数の \fBVerbin\fP (単位付き) により管理されます。 .in .TP .B VERBOFF 逐語的出力を終了させます。 .TP .B "VL text-indent [mark-indent [1]]" 可変項目リストには決まった項目記号はありません。 代わりに、このマクロでは各 \fBLI\fP に項目記号が指定されている と仮定しています。 \fItext-indent\fP によりテキストへのインデントが設定されます。 そして \fImark-indent\fP により現在のインデント位置から項目記号までの 距離が設定されます。 第 3 引数は各項目の前に空行が印字されることを禁止します。 .TP .B "VM [top [bottom]]" 垂直マージン。 .TP .B "WA [writer-name [title]]" 著者と著者のアドレスの記述を開始します。 空の \fBWA\fP/\fBWE\fP ペアでいくつかの名前を指定出来ます。 しかしアドレスについては 1 つだけです。 .TP .B WE \&\fP.WA\fP の後でアドレスの指定を終了します。 .TP .B "WC [format]" 脚注とディスプレイの幅の調整。 .in +.5i .T2 N デフォルトのモードを設定します。 \&\fB-WF\fP, \fB-FF\fP, \fB-WD\fP 及び \fBFB\fP です。 .T2 WF 広い脚注です。2 段組モードでもやはり広い脚注です。 .T2 -WF 通常の脚注の幅です。段組モードに従います。 .T2 FF すべての脚注は最初に出現した脚注と同じ幅になります。 .T2 -FF 通常の脚注です。幅は \fBWF\fP と \fB-WF\fP に従います。 .T2 WD 広いディスプレイです。2 段組モードでもやはり広いディスプレイです。 .T2 -WD 通常のディスプレイの幅です。段組モードに従います。 .T2 FB フローティングディスプレイが現在のページに印字された時には 行区切りを生成します。 .T2 -FB フローティングディスプレイは行区切を生成しません。 .in .sp 3 .LP .\"########################################################################" .LP .B "mm で用いられている文字列変数:" .TP .B App 単語「APPENDIX」が入れてある文字列変数です。 .TP .B "EM" em ダッシュ文字列です。 .TP .B Apptxt .TP 現在の付録テキスト。 .B H1txt \fB.H\fP と \fB.HU\fP で、現在の見出しテキストに更新されます。 目次とその類似のものにおいても、更新されます。 .TP .B HF 見出し用のフォントの目録です。 通常は「2 2 2 2 2 2 2」です。 数字ではないフォント名も使用できます。 .TP .B HP 見出し用のポイントサイズの目録です。 通常は「0 0 0 0 0 0 0」です。 これは、「10 10 10 10 10 10 10」と同じです。 .TP .B Index .TP \fIINDEX\fP を含みます。 .B Indcmd .TP インデックスコマンド \fIsort\ -t\et\fP を含みます。 .B Lifg \fIFigure\fP を入れている文字列変数です。 .TP .B Litb \fITABLE\fP を入れている文字列変数です。 .TP .B Liex \fIExhibit\fP を入れている文字列変数です。 .TP .B Liec \&\fIEquation\fP を入れている文字列変数です。 .TP .B Licon \&\fICONTENTS\fP を入れている文字列変数です。 .TP .B Lf 「LIST OF FIGURES」を入れています。 .TP .B Lt 「LIST OF TABLES」を入れています。 .TP .B Lx 「LIST OF EXHIBITS」を入れています。 .TP .B Le 「LIST OF EQUATIONS」を入れています。 .TP .B Letfc 「Yours very truly,」を入れています。 \&\fB.FC\fP で使用されます。 .TP .B Letapp 「APPROVED:」を入れています。 \&\fB.AV\fP で使用されます。 .TP .B Letdate 「Date」を入れています。 \&\fB.AV\fP で使用されます。 .TP .B LetCN 「CONFIDENTIAL」を入れています。 \&\fB.LO CN\fP で使用されます。 .TP .B LetSA 「To Whom It May Concern:」を入れています。 \&\fB.LO SA\fP で使用されます。 .TP .B LetAT 「ATTENTION:」を入れています。 \&\fB.LO AT\fP で使用されます。 .TP .B LetSJ 「SUBJECT:」を入れています。 \&\fB.LO SJ\fP で使用されます。 .TP .B LetRN 「In reference to:」を入れています。 \&\fB.LO RN\fP で使用されます。 .TP .B Letns これは \fB.NS\fP で使用されている色々な文字列を入れている配列です。 これらは実は、\fBLetns!\fP を接頭辞とするいくつかの文字列変数です。 もし \fB.NS\fP への引数が (訳注: 予め定義されているものの中に) 存在しなければ、 その引数は \fBLetns!copy\fP を接頭辞とし \fBLetns!to\fP を接尾辞 として \fB()\fP の間に挟まれます。 \fBcopy\fP の後と \fBto\fP の前の空白に注意して下さい。 .nf .ta 1.5i \fB変数名 値\fP Letns!0 Copy to Letns!1 Copy (with att.) to Letns!2 Copy (without att.) to Letns!3 Att. Letns!4 Atts. Letns!5 Enc. Letns!6 Encs. Letns!7 Under separate cover Letns!8 Letter to Letns!9 Memorandum to Letns!10 Copy (with atts.) to Letns!11 Copy (without atts.) to Letns!12 Abstract Only to Letns!13 Complete Memorandum to Letns!14 CC Letns!copy Copy " Letns!to " to .fi .TP .B Letnsdef \&\fB.NS\fP に何も引数が指定されていないときに使用される標準的な注釈を 定義します。 デフォルトは \fB0\fP です。 .TP .B "MO1 - MO12" \&\fIJanuary\fP から \fIDecember\fP 迄が入っている文字列変数です。 .TP .B Qrf 「See chapter \e\e*[Qrfh], page \e\en[Qrfp].」 が入っている文字列変数です。 .TP .B Rp 「REFERENCES」が入っています。 .TP .B Tm 商標記号 \e(tm が入っています。 .TP .B Tcst 目次の現在状態と XXXX の一覧を含みます。 \&\fB.TC\fP の外では空です。 \&\fB.TP\fP のようなユーザ定義マクロでは、便利です。 .nf .ta 1.5i \fB値 意味\fP co 目次 fg 図一覧 tb 表一覧 ec 式一覧 ex エクジビット一覧 ap 付録 .fi .ta .TP .B Verbnm \&\fB.VERBON\fP で使用されている \fB.nm\fP への引数です。 デフォルト: \fB1\fP。 .\"-----------------------------------" .LP .B "mm で使用されている数値変数:" .TP .B Aph もしこの数値変数が非 0 であれば、 各々の新しい付録について新しい付録ページに印字します。 もし \fBAph\fP が 0 であれば何も出力されません。 しかし、「目次」には付録の見出し項目が常に含まれます。 .TP .B Cl 目次の見出し項目レベル。範囲は [0:7] です。 もし見出しレベルが Cl 以下であれば、目次の見出し項目は保存されます。 デフォルトは 2 です。 .TP .B Cp もし、Cp が 0 であれば、LIST OF XXXX の間で改ページを行います。 デフォルトは 0 です。 .TP .B D デバッグフラグ。 値が正値であれば、様々な段階のデバッグリストを出力します。 値が 1 であれば整形についての進行情報を提供します。 デフォルトは 0 です。 .TP .B De フローティングディスプレイの後で改ページが出力されます。 範囲は [0:1] です。デフォルトは 0 です。 .TP .B Dsp 定義されている場合、 スタティックディスプレイの前後の空白出力を制御します。 定義されていない場合には、Lsp の値が使用されます。 .TP .B Df フローティングキープの出力形式。 範囲は [0:5] です。デフォルトは 5 です。 .TP .B Ds もし 1 であれば、ディスプレイの前後で \fBLsp\fP だけ行送りします。 範囲は [0:1] です。デフォルトは 1 です。 .TP .B Ej 改ページ。デフォルトは 0 です。 .TP .B Eq 数式ラベルの行揃え。 0 なら左揃え、1 なら右揃え。デフォルトは 0 です。 .TP .B Fs 脚注の行送り。デフォルトは 1 です。 .TP .B "H1-H7" 見出しカウンタ。 .TP .B H1dot 0 より大の場合、レベル 1 の見出し番号の後にドットを付けます。 デフォルトは 1 です。 .TP .B H1h 数値レジスタ \fBH1\fP をコピーしますが、 ページブレイク直前に増加されます。 ユーザ定義のヘッダマクロにおいて有用です。 .TP .B Hb 見出し行区切りのレベル。 範囲は [0:7] です。デフォルトは 2 です。 .TP .B Hc 見出し中央揃えのレベル。 範囲は [0:7] です。デフォルトは 0 です。 .TP .B Hi 見出しの一時的なインデント。 範囲は [0:2] です。デフォルトは 1 です。 .br 0\ ->\ 0 インデント、左マージン .br 1\ ->\ 右へインデント、.P 1 と同様 .br 2\ ->\ 先行する見出しのテキスト部分に合わせてインデント .TP .B Hps 見出しに先立つ行送りのレベルについての数値変数です。 もし見出しレベルが \fBHps\fP 以下ならば、 セクション見出しには 1 行ではなく 2 行が先行します。 デフォルトは第 1 レベルだけです。 行送りの実際の量は変数 \fBHps1\fP と \fBHps2\fP により制御されます。 .TP .B Hps1 見出しレベルが \fBHps\fP より大きい場合に \fB.H\fP に先行する行数です。 値には単位を付けます。通常は 0.5 です。 .TP .B Hps2 見出しレベルが \fBHps\fP 以下の場合に \fB.H\fP に先行する行数です。 値には単位を付けます。通常は 1 です。 .TP .B Hs 見出し行送りレベル。 範囲は [0:7] です。デフォルトは 2 です。 .TP .B Hss 見出しレベルが \fBHs\fP 以下のとき、 \fB.H\fP の後にこの数の行が続きます。 値は単位指定であり、通常 1 です。 .TP .B Ht 見出し番号の形式。デフォルトは 0 です。 0 -> 複合番号 (1.1.1 ...) .br 1 -> 単一番号。 .TP .B Hu 番号無し見出しのレベル。デフォルトは 2 です。 .TP .B Hy 本文のハイフネーション。デフォルトは 1 です。 .br 0\ ->\ ハイフネーションしない。 .br 1\ ->\ 14 でハイフネーションをする。 .TP .B Letwam \fB.WA\fP/\fB.WE\fP で使われる返送先アドレスの最大行数。 デフォルトは 14 です。 .TP .B "Lf, Lt, Lx, Le" それぞれ、図一覧、表一覧、エグジビット一覧、式一覧の 印字の許可 (1)、又は禁止 (0) です。 デフォルトは、Lf=1, Lt=1, Lx=1, Le=0 です。 .TP .B Li \&.AL で使われるリストのインデントです。 デフォルトは 6 です。 .TP .B Limsp 自動リスト (.Al) 用の、接頭辞と記号の間の空白のフラグです。 .br 0\ ==\ 空白無し .br 1\ ==\ 空白有り .TP .B Ls リストの行送り。 もし現在のリストレベルが Ls より大きければ、 リストの周囲には行送りは生じません。 デフォルトは 99 です。 .TP .B Lsp 空行の大きさ。通常は 0.5v です。 しかし、もし \fBn\fP が設定されていれば (\fB.nroff\fP)、1v となります。 .TP .B N 番号付けの形式。範囲は [0:5] です。デフォルトは 0 です。 .br 0\ ==\ (デフォルト) すべてのページで通常のヘッダ。 .br 1\ ==\ 最初のページのフッタはヘッダに置き換えられます。 ヘッダ部分には何もありません。 .br 2\ ==\ 最初のページのページヘッダは取り除かれます。 .br 3\ ==\ 「セクション - ページ」の番号付けが有効になります。 .br 4\ ==\ 最初のページのページヘッダは取り除かれます。 .br 5\ ==\ 「セクション - ページ」と「セクション - 図」の番号付けが有効になります。 関連項目は数値レジスタの Sectf と Sectp です。 .TP .B Np 番号付きの段落です。デフォルトは 0 です。 .br 0\ ==\ 番号を振りません。 .br 1\ ==\ 第 1 レベルの見出しに番号を振ります。 .TP .B Of 図、表、エグジビット、数式の題目の形式です。 デフォルトは 0 です。 .br 0\ =\ ". " .br 1\ =\ " - " .TP .B P 現在のページ番号です。 「セクション - ページ」の番号付けが有効でなければ、 通常は % と同じです。 .TP .B Pi 段落のインデントです。 デフォルトは 5 です。 .TP .B Pgps ヘッダとフッタのポイントサイズが、現在の設定に従うべきか、 あるいはヘッダとフッタが定義されたときにだけ変更されるべきかを制御します。 .in +.5i .ti -.5i .T2 値 説明 .T2 0 \fB.PH\fP, \fB.PF\fP, \fB.OH\fP, \fP.EH\fP, \fB.OF\fP, \fB.OE\fP が実行された時だけ、ポイントサイズが現在の設定に変更されます。 .T2 1 ポイントサイズは \fB.S\fP のたびに変更されます。 これがデフォルトです。 .in .TP .B Ps 段落の行送り。デフォルトは 1 です。 .TP .B Pt 段落の形式です。デフォルトは 0 です。 .br 0\ ==\ 左揃え .br 1\ ==\ インデントする .P .br 2\ ==\ .H, .DE, .LE の後以外では、インデントする .P .TP .B Sectf 「セクション - 図」を制御するフラグです。 非 0 値であれば有効になります。 関連項目はレジスタ N です。 .TP .B Sectp 「セクション - ページ番号」を制御するフラグです。 非 0 値であれば有効になります。 関連項目はレジスタ N です。 .TP .B Si ディスプレイのインデントです。デフォルトは 5 です。 .TP .B Verbin \&\fB.VERBON\fP のインデントです。デフォルトは 5n です。 .TP .B .mgm 常に 1 です。 .LP .SH 内部 レターマクロではレターの形式により決まる種々の副マクロが使用されています。 副マクロの名前にはレターの形式が接尾辞として入っています。 そのため他のレターの形式の定義を、 その国のマクロファイル内や、局所的な追加として行うことが可能です。 \&\fB.LT\fP は数値変数の \fBPt\fP と \fBPi\fP を 0 と 5 に設定します。 新しいレター形式については、 以下の文字列変数とマクロを定義しなければなりません: .TP \fBlet@init_\fP\fItype\fP このマクロは \fB.LT\fP によって直接呼び出されます。 変数や他の要素を初期化することになっています。 .TP \fBlet@head_\fP\fItype\fP このマクロはレターヘッドを印字します。 通常のページヘッダの代わりに呼び出されます。 \fBlet@header\fP という別名を取り除くことになっています。 そうしなければ、この別名はすべてのページにおいて呼び出されてしまいます。 .TP \fBlet@sg_\fP\fItype\ name\ title\ n\ flag\ [arg1\ [arg2\ [...]]]\fP レターの場合だけ、\fB.SG\fP がこのマクロを呼び出します。 覚書にはそれ独自の処理機構があります。 \fIname\fP と \fItitle\fP は \fB.WA\fP/\fB.WB\fP によって指定されます。 \fIn\fP はカウンタで、1 から max までです。 そして \fIflag\fP は、\fIname\fP が最後の名前であれば真の値になります。 \&\fB.SG\fP に対する他の引数が追加されます。 .TP \fBlet@fc_\fP\fItype\ closing\fP このマクロは \fB.FC\fP によって呼び出され、正式な結辞を引数とします。 .LP \&\fB.LO\fP が包括的なオプションマクロとして実装されています。 \&\fB.LO\fP には \fBLet\fP\fItype\fP という名前の文字列変数が 定義されていることが必要とされます。 ここで、\fItype\fP はレターの形式です。 そのとき、\fB.LO\fP は引数を文字列変数 \fBlet*lo-\fP\fItype\fP に 割り当てます。 .LP .\".SH バグ .\" " .SH 作者 .ie t J\(:orgen H\(:agg, Lund, Sweden .el Jorgen Hagg, Lund, Sweden .SH 関連ファイル .TP .B /usr/share/tmac/tmac.m .TP .B /usr/share/tmac/mm/*.cov .TP .B /usr/share/tmac/mm/*.MT .TP .B /usr/share/tmac/mm/locale .SH 関連項目 .BR groff (1), .BR troff (1), .BR tbl (1), .BR pic (1), .BR eqn (1) .br .BR mm (7) .BR mmse (7) .\" Translated by Tetsuro FURUYA , Dec., 1998. diff --git a/ja_JP.eucJP/man/man8/boot_i386.8 b/ja_JP.eucJP/man/man8/boot_i386.8 index d12071c9f4..bb730725ac 100644 --- a/ja_JP.eucJP/man/man8/boot_i386.8 +++ b/ja_JP.eucJP/man/man8/boot_i386.8 @@ -1,328 +1,328 @@ .\" Copyright (c) 1991, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" This code is derived from software written and contributed .\" to Berkeley by William Jolitz. .\" .\" Almost completely rewritten for FreeBSD 2.1 by Joerg Wunsch. .\" .\" Substantially revised for FreeBSD 3.1 by Robert Nordier. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)boot_i386.8 8.2 (Berkeley) 4/19/94 .\" %FreeBSD: src/sbin/reboot/boot_i386.8,v 1.23.2.1 2000/05/13 14:43:14 hoek Exp % .\" .\" jpman %Id: boot_i386.8,v 1.5 1997/12/04 18:33:50 ken Exp % .\" .\" .Dd April 19, 1994 .Dt BOOT 8 i386 .Os .Sh 名称 .Nm boot .Nd システム立上げ時の手続き .Sh 解説 .Sy 電源断とクラッシュからの回復。 通常、電源復旧時とクラッシュ発生後には、システムは自動的にリブートし ます。ファイルシステムの整合性チェックが自動実行され、途中で失敗しな ければ、システムはマルチユーザ・モードに移行します。 .Pp .Sy コールドスタート。 大多数の i386 PC は、まずフロッピドライブ 0 (ドライブ A: ともいう) からのブートを試み、 それに失敗すると、 ハードディスクドライブ 0 (ドライブ C: もしくは BIOS のドライブ 0x80 ともいう) からブートしようとします。いくつかの BIOS では、この デフォルトの順序を変えたり、CD-ROM デバイスをブートデバイスとして 含めることができます。 .Pp デフォルトでは 3 段階のブートストラップが使用され、 ブートブロック (ブートストラップの 第 1 および 第 2 段階) から、 これとは別の第 3 段階のブートストラッププログラム .Xr loader 8 へと自動的に制御が移行されます。 この第 3 段階では、 ブート処理において、 ブートブロックにおいて可能なことよりも洗練された制御を提供します。 ブートブロックには、 ディスクやスライスの限られた空間しか与えられないという制約があります。 .Pp しかしながら、第 3 段階をまったく使用せずに済ますこともできます。 このようにするには、ブートブロックパラメータファイル .Pa /boot.config においてカーネル名を指定するか、 .Xr loader 8 が起動される前の短い待ち時間 (文字 .Dv - , .Dv \e , .Dv \&| , .Dv / のいずれかが表示されている間) にキーを打ちます。 第 3 段階をロードできない場合にも、第 2 段階においてブートが試みられます。 .Pp 本サブセクションの残りの部分では、ブートブロックについてのみ扱います。 .Pa loader プログラムの文書は別にあります。 .Pp ブートブロックがロードされたあとで、次のようなプロンプトが現れます。 .Bd -literal >> FreeBSD/i386 BOOT Default: 0:ad(0,a)/kernel boot: .Ed .Pp 自動ブートにおいては、フロッピ もしくはハードディスクのパーティション .Ql a から .Pa /kernel をロードしようとします。 この動作は .Ql boot: というプロンプトが出ている間なら、キーボードから適当な文字を入力する ことで中断できます。以下にあげるような入力はブート動作に対する指示と して受付けられます。 .Bl -tag -width 10x .It \&? ブートファイルを探す際のヒントとして、デフォルトのブートデバイスの ルートディレクトリにあるファイルの名前を表示します。 (パスの最後の部分に .Dv \&? を指定することもできます。この場合、任意のサブディレクトリの一覧となります。) .Pp .It bios_drive:interface(unit,part) filename Op Fl aCcDdghPrsv ブートファイルとブートフラグを指定します。 .Bl -tag -width 10x -compact .It bios_drive BIOS によって認識されるドライブ番号です。 1 つ目のドライブに対しては 0 、 2 つ目のドライブに対しては 1 、などです。 .It interface そこからブートするコントローラのタイプです。ブートファイルのイメージ をロードするのには BIOS の機能を使用するので、そのコントローラに対す る BIOS サポートが必要となることに注意して下さい。 .Pp サポートされているインタフェースを以下にあげます。 .Bl -tag -width "adXX" -compact .It ad WD100[2367] とその互換コントローラ上の ST506, IDE, ESDI, RLL ディスク .It fd 5 1/4" または 3 1/2" 高密度 フロッピ .It da サポートされている SCSI コントローラ上の SCSI ディスク .\".It cd .\"CDROM からのブート .El .It unit 使用されているインタフェース上のドライブのユニット番号です。 1 つ 目のドライブに対しては 0 、 2 つ目のドライブに対しては 1 、などです。 .It part ディスク上の BSD 部分内のパーティション文字です。詳しくは .Xr disklabel 8 を参照して下さい。慣例として、パーティション .Ql a のみが ブート可能なイメージを含んでいます。ディスクにスライス .Pq Dq fdisk パーティション か設けられていた場合、任意のスライスからブート可能です。 デフォルトでは、アクティブスライスから、 これがない場合は最初の .Fx スライスからのブートとなります。 .It filename ブートファイルの (指定されたパーティションのルートディレクトリからの 相対) パス名です。デフォルトでは .Pa /kernel となります。シンボリックリンクはサポートされていません (ハードリンク は使用できます)。 .It Fl acCdDghPrsv ブートフラグです。 .Bl -tag -width "-CXX" -compact .It Fl a カーネル初期化中に、ルートファイルシステムとしてマウントされるデバイスを 尋ねて来るようにします。 .It Fl C CDROM からブートします。 .It Fl c ロードしたカーネルに対し、ハードウェアのパラメータを変更するため、 UserConfig を実行します。 USERCONFIG, INTRO_USERCONFIG, VISUAL_USERCONFIG のいずれかのオプション付きでカーネルが構築された場合、 スクリプト中に .Ic quit コマンドがあったとしても、UserConfig 中にとどまります。 .It Fl D シングルとデュアルのコンソール設定を切り替えます。シングル設定では、 下記の .Fl h オプションの状態によって、コンソールは内部ディスプレイかシリアルポートの いずれかになります。デュアルコンソール設定では、内部ディスプレイ とシリアルポートの両方が、 .Fl h オプションの状態によらず、同時にコンソールになります。しかし、 デュアルコンソール設定は、ブートプロンプトの間だけでしか効果を持ちません。 一旦カーネルがロードされると、 .Fl h オプションによって指定されたコンソールが唯一のコンソールになります。 .It Fl d カーネルの初期化のできる限り早い段階で DDB カーネルデバッガ .Pq Xr ddb 4 を参照 に入ります。 .It Fl g GDB リモートデバッギングプロトコルを使用します。 .It Fl h -内部コンソールとシリアルコンソールの切替えを行います。これを使用して +内部コンソールとシリアルコンソールの切り替えを行います。これを使用して コンソールデバイスを変更できます。例えば、内部コンソールからブートし た場合、カーネルがコンソールデバイスとしてシリアルポートを使用するよ うにするため、 .Fl h オプションを使用できます。反対に、シリアルポートからブートした場合、 カーネルがコンソールとして代わりに内部ディスプレイを使用するようにす るため、このオプションを使用できます。 シリアルポートドライバ .Xr sio 4 には、このオプションに優先するフラグがあります。 そのフラグが設定されると、ここで記述した .Fl h オプションとは無関係に、シリアルポートが常にコンソールとして使用されます。 更なる詳細については、マニュアルページ .Xr sio 4 を参照してください。 .It Fl P キーボードを検出します。キーボードが発見できなかった場合には、 .Fl D と .Fl h オプションが自動的にセットされます。 .It Fl r ルートファイルシステムを含むデバイスとしてスタティックに config され たデフォルトを使用します .Pq Xr config 8 を参照 。 .It Fl s シングルユーザ・モードで立上がるようになります。コンソールが .Dq insecure .Pq Xr ttys 5 を参照 に設定されていた場合には、root のパスワードを入力しなければなり ません。 .It Fl v デバイス検出の際 (そしてその後も) 、詳細を出力します。 .El .El .El .Pp デフォルトを設定するため、BIOS ドライブ番号, コントローラタイプ, ユニット番号, パーティション, カーネルファイル名と 有効なオプションを .Pa /boot.config に書くこともできます。 .Ql boot: プロンプトでタイプするように、 1 行で書いてください。 .Sh 関連ファイル .Bl -tag -width /kernel.old.config -compact .It Pa /boot.config ブートブロックに対するパラメータ (必須ではない) .It Pa /boot/boot1 第 1 段階のブートストラップ .It Pa /boot/boot2 第 2 段階のブートストラップ .It Pa /boot/loader 第 3 段階のブートストラップ .It Pa /kernel デフォルトカーネル .It Pa /kernel.old 普通は非デフォルトカーネル (必須ではない) .El .Sh 関連項目 .Xr ddb 4 , .Xr ttys 5 , .Xr boot0cfg 8 , .Xr btxld 8 , .Xr config 8 , .Xr disklabel 8 , .Xr halt 8 , .Xr loader 8 , .Xr reboot 8 , .Xr shutdown 8 .Sh 診断 ディスク関連のエラーが発生すると、 第 2 段階のブートストラップがエラーを報告します。 BUOS が返すものと同じエラーコードを使用し、 例えば .Dq Disk error 0x1 (lba=0x12345678) などと報告します。 エラーコードの一部のリストを示します: .Bl -tag -width "0x80" -compat .It 0x1 不正な引数 .It 0x2 アドレスマークが見付かりません .It 0x4 セクタが見付かりません .It 0x8 DMA オーバラン .It 0x9 64K 境界を越えて DMA を試みました .It 0xc 不正なメディア .It 0x10 訂正できない CRC/ECC エラー .It 0x20 コントローラの異常 .It 0x40 シークの失敗 .It 0x80 タイムアウト .El .Pp 要注意: BIOS が提供する伝統的なディスクインタフェースの制約のため、 ブートフェーズにアクセスされるブート関連の全ファイルと構造 (カーネルを含みます) は、ディスク上で (BIOS が理解するジオメトリにおいて) シリンダ 1023 以下に置かれることが必要です。 第 2 段階のブートストラップが .Dq Disk error 0x1 を報告する場合、通常はこの条件が満されていないことを意味します。 .Sh バグ このバージョンの .Bx で使用されているディスクラベルのフォーマットは、他のアーキテクチャで 使用されている物とは全く異なっています。 .Pp 空間の制約により、 .Fl P オプションにより起動されるキーボード検出は、BIOS が .Dq 拡張 キーボードを検出したかを単にテストするだけです。 .Dq XT/AT キーボード (F11, F12 キーなどを持ちません) を接続した場合、 検出は失敗します。 .Pp まだ記述されていない機能があります。 diff --git a/ja_JP.eucJP/man/man8/chat.8 b/ja_JP.eucJP/man/man8/chat.8 index 96f6a33ca4..118a7a4c3a 100644 --- a/ja_JP.eucJP/man/man8/chat.8 +++ b/ja_JP.eucJP/man/man8/chat.8 @@ -1,521 +1,521 @@ .\" -*- nroff -*- .\" manual page [] for chat 1.8 .\" %FreeBSD: src/usr.bin/chat/chat.8,v 1.15 2000/03/02 14:53:27 sheldonh Exp % .\" jpman %Id: chat.8,v 1.3 1997/08/31 14:02:42 horikawa Stab % .\" SH section heading .\" SS subsection heading .\" LP paragraph .\" IP indented paragraph .\" TP hanging label .TH CHAT 8 "27 Sep 1997" "Chat Version 1.17" .SH 名称 chat \- モデム接続の確立を自動化するスクリプト言語 .SH 書式 .B chat [ .I options ] .I script .SH 解説 .LP \fIchat\fR プログラムはコンピュータとモデムの間のメッセージ交換を制御します。 このコマンドの主な目的は、Point-to-Point Protocol デーモン (\fIpppd\fR) と リモートの \fIpppd\fR プロセスの間の接続を確立することです。 .SH オプション .TP .B -f \fI チャットスクリプトを \fIchat file\fR から読み込みます。このオプションと script パラメータとは、互いに排他の関係にあります。 chat コマンドを実行するユーザは、このファイルのリードアクセス権を 持っていなければなりません。このファイルの中では、文字列の区切りとして スペースとタブを使うことができます。 .TP .B -t \fI 文字列の受信待ちのタイムアウトを指定します。もし、タイムリミットまでに 指定された文字列を受信できなかった場合には、応答文字列の送信をおこないません。 この時、かわりの応答文字列が指定されていれば それが送信され、 指定されていなければ スクリプトの実行が失敗します。 スクリプトの実行が失敗すると、\fIchat\fR プログラムは 0 以外のエラーコードを返して終了します。 .TP .B -r \fI レポート文字列を出力するファイルを指定します。 キーワード \fIREPORT\fR を用いると、結果の文字列がこのファイルに 出力されます。このオプションを指定せずに \fIREPORT\fR キーワードを 使用すると、レポート文字列は \fIstderr\fR に出力されます。 .TP .B -e エコーオプションを有効にして開始します。 \fIchat\fR スクリプトの特定の場所において \fIECHO\fR キーワードにて エコーの有効および無効を切り替えることができます。 エコーが有効にされると、モデムからの出力は全て \fIstderr\fR へエコーされます。 .TP .B -v \fIchat\fR スクリプトを冗長モードで実行します。 これを指定すると、\fIchat\fR プログラムは、チャットスクリプトの実行状態、 モデムから受信した全てのテキスト、 モデムに送った全てのテキストのログをとります。 デフォルトでは .IR syslogd (8) を介して取得します。ログの方法は -S および -s のフラグで変更できます。 冗長トレースのログとりは \fIlocal2\fR ファシリティのレベル \fIinfo\fR でおこなわれ、エラーについてはレベル \fIerr\fR が使われます。 .TP .B -V \fIchat\fR スクリプトを標準エラー出力冗長モードにて実行するように要求します。 \fIchat\fR プログラムは、 モデムから受信する全てのテキストおよびモデムへ送信する全てのテキストを 標準エラー出力デバイスへログします。 chat もしくは pppd プログラムを動作させている場所では、 このデバイスは通常ローカルのコンソールです。 .TP .B -s 標準エラー出力を使用します。'-v' による全ログメッセージ および全エラーメッセージを標準エラー出力へ送られます。 .TP .B -S .IR syslog (3) を使用しません。デフォルトではエラーメッセージは .IR syslog (3) へ送られます。-S を使用すると '-v' によるログおよびエラーメッセージは .IR syslog (3) へは送られなくなります。 .TP .B -T \fI 送信文字列において \\T 置換メタ文字を置き換える任意の文字列を渡します。 通常は電話番号です。 .TP .B -U \fI 送信文字列において \\U 置換メタ文字を置き換える第 2 文字列を渡します。 通常は電話番号です。 2 つの番号を要する ISDN ターミナルアダプタでタイアルする場合に有用です。 .TP .B script \fI-f\fR オプションのファイルでスクリプトが指定されていなければ、 \fIchat\fR プログラムに対するパラメータ文字列が スクリプトとして読み込まれます。 .SH チャットスクリプト .LP \fIchat\fR スクリプトには通信の手順を定義します。 .LP スクリプトは一つまたはそれ以上の「受信待ち-送信」文字列の組からなり、 それぞれは空白で区切られています。 オプションとして「副受信待ち-副送信」文字列の組を追加することもでき、 その場合には以下の例のようにダッシュで区切ります: .IP ogin:-BREAK-ogin: ppp ssword: hello2u2 .LP これにより、\fIchat\fR プログラムは文字列 "ogin:" の受信待ちをおこないます。 もしもタイムアウトする前にログインプロンプトを受信できなければ、 リモートホストにブレーク信号を送信し、それから文字列 "ogin:" を受信待ちします。 もしも最初の "ogin:" が受信できていれば、ブレーク信号は送信されません。 .LP 一旦ログインプロンプトを受信すると、\fIchat\fR プログラムは文字列 ppp を 送信して、プロンプト "ssword:" の受信を待ちます。 パスワードプロンプトを 受信すると、chat プログラムはパスワード hello2u2 を送信します。 .LP 応答文字列に続いて、通常はキャリッジリターン文字が送られます。 「受信待ち」文字列中では、\\r 文字シーケンスで明示的に指定しないかぎり、 キャリッジリターンは文字列に含まれません。 .LP 目的の文字列を識別するのに必要な部分だけを受信待ち文字列に 指定するようにするべきです。 なぜなら、受信待ち文字列は通常ディスクファイルに記録されるため、 動的に変化する情報を含むことができないからです。 一般には、時刻を表す文字列やネットワーク ID 文字列その他の 変化するデータの塊を受信待ちさせることはできません。 .LP 通信の初期段階では、文字が化けて受信される場合があります。 この場合にも正しく認識ができるように、 文字列 "login:" ではなく "ogin:" を待つようにします。 仮に最初の "l" という文字が化けて受信されたとしますと、 リモートシステムが "login:" を送信したとしても、 その文字列は認識されないことになります。 このため、スクリプトでは "login:" ではなく "ogin:" を、 "password:" ではなく "ssword:" を待つようにします。 .LP 非常に単純なスクリプトは、以下のようになるでしょう: .IP ogin: ppp ssword: hello2u2 .LP 言いかえると、....ogin: を受信待ちして ppp を送信し、...ssword: を 受信待ちして hello2u2 を送信するということになります。 .LP 現実問題としては、単純なスクリプトが使われることはほとんどないでしょう。 少なくとも、最初の受信待ち文字列が受信できなかった場合に、 副受信待ち文字列を実行するようにするべきでしょう。 たとえば、以下のスクリプトを考えてみます: .IP ogin:--ogin: ppp ssword: hello2u2 .LP これは以前に使った単純なものよりも良いスクリプトでしょう。 以前のものと同様に login: プロンプトを待ちますが、もし受信できなかった場合には リターンを一つ送ってから再び login: が送られてくるのを待ちます。 最初のログインプロンプトがラインノイズによって化けたとしても、 空行が送られることで、通常はもう一度ログインプロンプトが送信されます。 .SH コメント コメントを chat スクリプト中に埋め込むことが可能です。 コメントは \fB#\fR (ハッシュ) 文字をカラム 1 から開始する行です。 このようなコメント行は chat プログラムは単に無視します。 「受信待ち」文字列の最初の文字が `#' 文字の場合、 「受信待ち」文字列をクォートする必要があります。 文字 # (ハッシュ)から始まるプロンプトを待ちたい場合には、 以下のように書かねばならないでしょう: .IP # Now wait for the prompt and send logout string .br \'# ' logout .LP .SH 中断文字列 多くのモデムはダイヤルの結果を文字列としてレポートします。 これらの文字列は \fBCONNECTED\fR だったり、\fBNO CARRIER\fR や \fBBUSY\fR だったりするでしょう。 モデムが相手との接続に失敗した場合には、スクリプトを終了させたいと 思うことがよくあるでしょう。 問題は、どの文字列を次に受信するかということを、 スクリプトが正確に知ることはできないということです。 ある時には \fBBUSY\fR を受信するかもしれませんが、 次には \fBNO CARRIER\fR を受信するかもしれません。 .LP これらの「中断」文字列は、\fIABORT\fR シーケンスにより スクリプト中に指定することができます。 それは、以下の例のようにスクリプトに指定します: .IP ABORT BUSY ABORT 'NO CARRIER' '' ATZ OK ATDT5551212 CONNECT .LP このシーケンスは受信待ちをおこないません。それから文字列 ATZ を送信します。 受信待ち文字列は \fIOK\fR です。 \fIOK\fR を受信すると、電話をかけるために文字列 ATDT5551212 を送信します。 受信待ち文字列は \fICONNECT\fR です。 文字列 \fICONNECT\fR を受信すると、スクリプトの残りが実行されます。 一方、モデムが話中を検出すると、文字列 \fIBUSY\fR が送られて 中断文字列への一致が起こります。 この一致が起きたことにより、スクリプトは失敗します。 もしも文字列 \fINO CARRIER\fR を受信すると、それは同じ理由で中断されます。 どちらの文字列が受信されても、\fIchat\fR スクリプトは終了します。 .SH CLR_ABORT 文字列 このシーケンスは以前に設定した \fBABORT\fR 文字列をクリアします。 \fBABORT\fR 文字列は規定サイズ(コンパイル時に決定)の配列に保持されます; \fBCLR_ABORT\fR はクリアされたエントリの領域を再要求し、 新たな文字列をそこに格納できるようにします。 .SH SAY 文字列 \fBSAY\fR ディレクティブにて、 script が標準エラー出力を介してユーザ端末ヘ文字列を送ることができます。 \fBchat\fR が pppd から起動される場合、 -pppd はデーモンとして実行され(制御端末から切離され)、 +pppd はデーモンとして実行され(制御端末から切り離され)、 標準エラー出力は通常 /etc/ppp/connect-errors へとリダイレクトされます。 .LP \fBSAY\fR 文字列は、シングルクォートもしくはダブルクォートにて 括る必要があります。 出力中にキャリッジリターンおよびラインフィードが必要な場合、 明示的に文字列中に含める必要があります。 .LP SAY 文字列を使用して script の進捗状況メッセージを表示することで、'ECHO OFF' しつつもユーザになにが起っているのか示すことが可能です。 例を示します: .IP ABORT BUSY .br ECHO OFF .br SAY "Dialling your ISP...\\n" .br \'' ATDT5551212 .br TIMEOUT 120 .br SAY "Waiting up to 2 minutes for connection ... " .br CONNECT '' .br SAY "Connected, now logging in ...\n" .br ogin: account .br ssword: pass .br $ \c SAY "Logged in OK ...\n" \fIetc ...\fR .LP このシーケンスは SAY 文字列のみユーザに示し、script の詳細は隠します。 例えば、上記 script を実行した場合、ユーザが見るのは以下です: .IP Dialling your ISP... .br Waiting up to 2 minutes for connection ... Connected, now logging in ... .br Logged in OK ... .LP .SH レポート文字列 \fBレポート\fR 文字列は ABORT 文字列に似ています。 違うのは、その文字列自身とキャリッジリターン等の 次の制御文字までの 全ての文字がレポートファイルに書かれるということです。 .LP レポート文字列はモデムのコネクト文字列の転送レートと chat ユーザへのリターン値を切りわけるために使えます。 レポート文字列ロジックの分析は、受信待ち文字列の検索などの 他の文字列処理と同時におこなわれます。 レポート文字列と中断文字列に同じ文字列を使用することも可能ですが、 おそらくあまり使い道がないでしょう。 .LP レポート文字列はプログラムの終了コードに影響を及ぼしません。 .LP これらの「レポート」文字列は、\fIREPORT\fR シーケンスにより スクリプト中に指定することができます。 それは、以下の例のようにスクリプトに指定します: .IP REPORT CONNECT ABORT BUSY '' ATDT5551212 CONNECT '' ogin: account .LP このシーケンスは受信待ちをおこなわず、文字列 ATDT5551212 を送信して 電話をかけます。受信待ち文字列は \fICONNECT\fR です。 文字列 \fICONNECT\fR を受信すると、スクリプトの残りが実行されます。 さらに、文字列 "CONNECT" と、それに続く接続レートなどの 任意の文字がレポートファイルに記録されます。 .\" 原文では expect-file となっているが、report-file の間違いと思われる。 .\" send-pr する予定。 .\" 2.2.2R 対象(1997/06/04) Saeki Takashi .SH CLR_REPORT 文字列 このシーケンスを使用して、以前に設定した \fBREPORT\fR 文字列をクリア できます。 \fBREPORT\fR 文字列は規定サイズ(コンパイル時に決定)の配列に保持されます; \fBCLR_REPORT\fR はクリアされたエントリの領域を再要求し、 新たな文字列をそこに格納できるようにします。 .SH エコー エコーオプションはモデムからの出力を \fIstderr\fR へエコーするか否か を制御します。 このオプションを \fI-e\fR オプションにて設定することができますし、 \fIECHO\fR キーワードにて制御することもできます。 「受信待ち-送信」文字列の組 \fIECHO\fR \fION\fR はエコーを有効にし、 \fIECHO\fR \fIOFF\fR は無効にします。 このキーワードを使用してどの会話を見せるかを選択可能です。 例えば以下の script では: .IP ABORT 'BUSY' .br ABORT 'NO CARRIER' .br '' ATZ .br OK\\r\\n ATD1234567 .br \\r\\n \\c .br ECHO ON .br CONNECT \\c .br ogin: account .LP モデム設定結果およびダイヤル結果は見せませんが、 \fICONNECT\fR (もしくは \fIBUSY\fR) メッセージ語は全てをエコーします。 .SH 回線切断 HANGUP オプションはモデムの回線切断をエラーと扱うか否かを制御します。 このオプションは、 システムにダイヤル後に回線切断しコールバックする script 中で有効です。 HANGUP オプションは \fBON\fR もしくは \fBOFF\fR にできます。 .br HANGUP を OFF に設定しモデムを回線切断 (つまりコールバックシステムへの最初のログイン)すると、\fBchat\fR は script の実行を続けます (つまり呼び出しと二度目のログインプロンプトを待ちます)。 呼び出しにて接続後すぐに、\fBHANGUP ON\fR ディレクティブを使用して 通常の回線切断シグナルの動作を戻す必要があります。 (簡単な) script 例を示します: .IP ABORT 'BUSY' .br '' ATZ .br OK\\r\\n ATD1234567 .br \\r\\n \\c .br CONNECT \\c .br \'Callback login:' call_back_ID .br HANGUP OFF .br ABORT "Bad Login" .br \'Callback Password:' Call_back_password .br TIMEOUT 120 .br CONNECT \\c .br HANGUP ON .br ABORT "NO CARRIER" .br ogin:--BREAK--ogin: real_account .br \fIetc ...\fR .LP .SH タイムアウト タイムアウトの初期値は 45 秒です。これは \fB-t\fR パラメータにより 変更することができます。 .LP 次に受信待ちする文字列のタイムアウト値を変更するには、以下のようにします: .IP ATZ OK ATDT5551212 CONNECT TIMEOUT 10 ogin:--ogin: TIMEOUT 5 assword: hello2u2 .LP これは login: プロンプトを受信待ちする際のタイムアウトを 10 秒に変更します。 さらに password プロンプトを受信待ちする際にはタイムアウトを 5 秒に変更します。 .LP 一旦タイムアウト値が変更されると、次に変更されるまでは そのままになります。 .SH EOT の送信 チャットプログラムは特殊な応答文字列 \fIEOT\fR により、 リモート側へ EOT 文字を送信します。 通常、これはファイル終了を表す文字です。 EOT に続けてリターン文字が送られることはありません。 .PR \fI^D\fR シーケンスを使って EOT を送信文字列に埋め込むことができます。 .SH ブレークの生成 特殊な応答文字列 \fIBREAK\fR により、ブレーク信号が送られます。 ブレークは送信側では特殊な信号として扱われます。 受信側では通常、転送レートの変更要求として処理されます。 これにより、正常に login プロンプトを受信できるまで ブレーク信号を送ることで、リモート側がサポートしている転送レートを -順次切替えさせることができます。 +順次切り替えさせることができます。 .PR \fI\\K\fR シーケンスを使ってブレーク信号を送信文字列に埋め込むことができます。 .SH エスケープシーケンス 受信待ち文字列と応答文字列には、エスケープシーケンスを指定することができます。 応答文字列では、全てのエスケープシーケンスが使えます。 受信待ち文字列では、ほとんどのエスケープシーケンスが使えます。 受信待ち文字列では使えないエスケープシーケンスについては、 説明文中にそのことが書かれています。 .TP .B '' 空文字列を受信待ちしたり、送信したりします。 もし、空文字列を送信しようとすると、それはリターン文字を送ることになります。 このシーケンスはアポストロフィ文字またはクォート文字のペアの どちらでもかまいません。 .TP .B \\\\b バックスペース文字を表します。 .TP .B \\\\c 応答文字列の末尾の改行を抑制します。 これは末尾に改行文字のつかない文字列を送る唯一の方法です。 これは送信文字列の最後に置かれなければいけません。 たとえば、文字列 hello\\c は単に h, e, l, l, o という文字だけを送ります。 .I (受信待ち文字列では使えません) .TP .B \\\\d 1 秒のディレイです。プログラムは 1 秒のディレイのために sleep(1) を使います。 .I (受信待ち文字列では使えません) .TP .B \\\\K ブレーク信号を挿入します。 .I (受信待ち文字列では使えません) .TP .B \\\\n 改行文字を送信します。 .TP .B \\\\N 空 (null) 文字を送信します。\\0 でも同じシーケンスを表すことができます。 .I (受信待ち文字列では使えません) .TP .B \\\\p 1 秒以下のポーズです。ディレイ時間は 1/10 秒です。 .I (受信待ち文字列では使えません) .TP .B \\\\q .IR syslogd (8) への文字列出力を抑止します。 かわりに文字列 ?????? がログに出力されます。 .I (受信待ち文字列では使えません) .TP .B \\\\r キャリッジリターン文字を送信または受信待ちします。 .TP .B \\\\s 文字列中のスペース文字を表します。 これはスペースを含む文字列をクォートしたくない場合に使います。 シーケンス 'HI TIM' と HI\\sTIM は等価です。 .TP .B \\\\t タブ文字を送信または受信待ちします。 .TP .B \\\\\\\\ バックスラッシュ文字を送信または受信待ちします。 .TP .B \\\\ddd 8 進数 (ddd) を一つの ASCII 文字に変換し、その文字を送信します。 .I (受信待ち文字列では使えない文字がいくつかあります) .TP .B \^^C C で表現される制御文字に置きかえられます。 例えば、文字 DC1 (17) は \^^Q で表されます。 .I (受信待ち文字列では使えない文字がいくつかあります) .SH 終了コード \fIchat\fR プログラムは以下の終了コードを返します。 .TP .B 0 プログラムは正常終了しました。これは、スクリプトがエラーを起こさずに 実行されて、正常に終了したことを示します。 .TP .B 1 一つまたはそれ以上のパラメータが不正であるか、受信待ち文字列が 内部バッファよりも大きすぎます。これはプログラムが正しく 実行されなかったことを示します。 .TP .B 2 プログラムの実行中にエラーが発生しました。これは、何らかの理由で リードまたはライトの操作が失敗したか、chat が SIGINT のような シグナルを受信したためでしょう。 .TP .B 3 「-副送信」文字列のない\fI受信待ち\fR文字列があり、タイムアウトイベントが 発生しました。これは、スクリプトが正しくプログラムされていないか、 予期しないイベントが発生して受信待ち文字列を見つけられなかったためでしょう。 .TP .B 4 \fIABORT\fR 条件としてマークされた 1 番目の文字列を検出しました。 .TP .B 5 \fIABORT\fR 条件としてマークされた 2 番目の文字列を検出しました。 .TP .B 6 \fIABORT\fR 条件としてマークされた 3 番目の文字列を検出しました。 .TP .B 7 \fIABORT\fR 条件としてマークされた 4 番目の文字列を検出しました。 .TP .B ... その他の終了コードも、\fIABORT\fR 条件としてマークされた文字列を 検出したことを示します。 .LP 終了コードを使うと、どのイベントによりスクリプトが終了したのかを 判断することができます。 つまり、"NO DIAL TONE" を受信したのか "BUSY" を受信したのかを 識別することができるということです。 最初のイベント (BUSY) ならばリトライする価値がありますが、 二つ目のイベント (NO DIAL TONE) だと、 おそらくリトライしてもそれがうまくいく可能性は低いでしょう。 .SH 関連項目 UUCP のドキュメントからも、\fIchat\fR スクリプトに関する 追加情報が得られるでしょう。 \fIchat\fR スクリプトは \fIuucico\fR プログラムで使われる スクリプトによって提示されたアイデアを基にしています。 .LP uucico(1), uucp(1), syslog(3), syslogd(8). .SH 著作権 \fIchat\fR プログラムは、パブリックドメインのソフトウェアです。 これは GNU のパブリックライセンス (一般公有使用許諾) とは異なります。 このプログラムを分割する場合には、その両方を管理するようにしてください。 .\" 原文は The \fIchat\fR program is in public domain. This is not .\" the GNU public license. If it breaks then you get to keep both pieces. .\" 最後の文章にはあまり自信がありません。(^_^;; .\" 2.2.2R 対象(1997/06/26) Saeki Takashi diff --git a/ja_JP.eucJP/man/man8/ldconfig.8 b/ja_JP.eucJP/man/man8/ldconfig.8 index a9ad772f84..9d93556cee 100644 --- a/ja_JP.eucJP/man/man8/ldconfig.8 +++ b/ja_JP.eucJP/man/man8/ldconfig.8 @@ -1,195 +1,195 @@ .\" .\" Copyright (c) 1993 Paul Kranenburg .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by Paul Kranenburg. .\" 3. The name of the author may not be used to endorse or promote products .\" derived from this software without specific prior written permission .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR .\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES .\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. .\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, .\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT .\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, .\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY .\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" .\" %FreeBSD: src/sbin/ldconfig/ldconfig.8,v 1.19.2.1 2000/07/18 02:24:33 jdp Exp % .\" jpman %Id: ldconfig.8,v 1.3 1997/07/22 16:49:42 horikawa Stab % .\" .Dd October 3, 1993 .Dt LDCONFIG 8 .Os FreeBSD .Sh 名称 .Nm ldconfig .Nd 共有ライブラリのキャッシュを設定する .Sh 書式 .Nm ldconfig .Op Fl aout | Fl elf .Op Fl Rmrsv .Op Fl f Ar hints_file .Op Ar directory | file Ar ... .Sh 解説 .Nm は、ダイナミックリンカ が、複数のディレクトリから利用可能な共有ライブラリを素早く捜し出すために 使う .Dq ヒント の集合を準備するために使われます。 コマンドは、組み込みのシステムディレクトリと コマンドラインで指定された任意の .Ar ディレクトリ (を指定された順番) で共有ライブラリを探し、 その結果を システムファイル に保存します。 これは、 ダイナミックリンカ が要求された共有ライブラリを読み込む際のディレクトリ検索操作 オーバヘッドをあらかじめ払っていることになります。 .Pp コマンドラインにて指定するファイル名は共有ライブラリを検査するディレクトリ を含むことが期待されます。 各ディレクトリのパス名は行の先頭から始まる必要があります。 空行およびコメント文字 .Ql \&# から始まる行は無視されます。 .Pp 共有ライブラリは、実行されようとするプログラムによって必要とされる ならば、利用可能なものが自動的に読み込まれることになります。 これは、実行形式に検索パスを保存する必要性を無くします。 .Pp .Ev LD_LIBRARY_PATH 環境変数は、キャッシュから使用するディレクトリ (や、その順序関係) を 上書きしたり、共有ライブラリを探す追加のディレクトリを 指定するために使われます。 .Ev LD_LIBRARY_PATH は、共有ライブラリを読み込む必要がある時、 ダイナミックリンカ によって検索されるディレクトリパスのリストを コロン .Sq \: で区切って指定します。 これは、 .Xr ld 1 における .Fl L オプションと、実行時点では等価です。 .Pp .Nm ldconfig は典型的にはブート時の手続きのひとつとして実行されます。 .Pp 以下のオプションが .Nm ldconfig で認識されます。 .Bl -tag -width indent .It Fl aout a.out 形式の共有ライブラリに対するヒントを生成します。 .It Fl elf ELF 形式の共有ライブラリに対するヒントを生成します。 .It Fl R 以前に設定したディレクトリを再度検索します。 以前作成したヒントファイルをオープンし、 ヘッダからディレクトリリストを取り出します。 コマンドラインに指定したパス名も処理します。 これが、パラメータ無指定時のデフォルト動作です。 .It Fl f Ar hints_file 標準のファイルの代りに、 特定のヒントファイルを読み込んだり、更新したり、その両方を 行ったりします。 このオプションは、テストのために提供されています。 .It Fl m ヒントファイルの内容を指定されたディレクトリで見付かったものに 置き換える代りに、新しいディレクトリの内容を .Dq 併合 (merge) します。 以前の .Nm の実行によってヒントファイル内に記録されているディレクトリも、 新しい共有ライブラリのために再び検索されます。 .It Fl r 現在のヒントファイルの中身について、標準出力に表示します。 ヒントファイルは変更されません。 ヒントファイル中のディレクトリリストが組み込まれます。 .It Fl s 共有ライブラリのために、システムの組み込みディレクトリ .Pq Dq /usr/lib を検索しません。 .It Fl v -冗長モードに切替えます。 +冗長モードに切り替えます。 .Sh セキュリティ .Ev セット uid (set-user-Id) プログラムのアドレス空間に共有ライブラリを読み込む時には、 特別の注意をしなければなりません。 そのようなプログラムが実行される時はいつでも、 ダイナミックリンカ はヒントファイルからだけ共有ライブラリを読み込みます。 特に、 .Ev LD_LIBRARY_PATH は、ライブラリを探すためには使われません。 従って、ldconfig の役割には 2 つあります。 素早い検索のためにヒント集合を作成することに加えて、 共有オブジェクトが共有ライブラリを安全に読み込むことができる ディレクトリの集まりを特定することも、その役割です。 .Nm ldconfig によって特定されたディレクトリ集合は、システム管理者の制御下にあること が仮定されています。 .Sh 環境変数 .Bl -tag -width OBJFORMATxxx -compact .It Ev OBJFORMAT .Pa /etc/objformat (後述) に優先し、 .Fl aout と .Fl elf のどちらがデフォルトであるかを決定します。 設定されている場合、値は .Ql aout もしくは .Ql elf のいずれかである必要があります。 .El .Sh 関連ファイル .Bl -tag -width /var/run/ld-elf.so.hintsxxx -compact .It Pa /var/run/ld.so.hints a.out ダイナミックリンカの標準ヒントファイル。 .It Pa /var/run/ld-elf.so.hints ELF ダイナミックリンカの標準ヒントファイル。 .It Pa /etc/ld.so.conf 伝統的な設定ファイルであり、 .Fl aout 付きで起動した場合のためにディレクトリ名を格納します。 .It Pa /etc/ld-elf.so.conf 伝統的な設定ファイルであり、 .Fl elf 付きで起動した場合のためにディレクトリ名を格納します。 .It Pa /etc/objformat .Fl aout と .Fl elf のどちらがデフォルトであるかを決定します。 存在する場合、 .Ql OBJFORMAT=aout か .Ql OBJFORMAT=elf のいずれかの 1 行から成る必要があります。 .Sh 関連項目 .Xr ld 1 , .Xr link 5 .Sh 歴史 .Nm ユーティリティは SunOS 4.0 で初めて現れました。 現在の形は、FreeBSD 1.1 からです。 diff --git a/ja_JP.eucJP/man/man8/named-xfer.8 b/ja_JP.eucJP/man/man8/named-xfer.8 index 49c74db8f0..e6172450f6 100644 --- a/ja_JP.eucJP/man/man8/named-xfer.8 +++ b/ja_JP.eucJP/man/man8/named-xfer.8 @@ -1,190 +1,190 @@ .\" ++Copyright++ 1985 .\" - .\" Copyright (c) 1985 .\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" - .\" Portions Copyright (c) 1993 by Digital Equipment Corporation. .\" .\" Permission to use, copy, modify, and distribute this software for any .\" purpose with or without fee is hereby granted, provided that the above .\" copyright notice and this permission notice appear in all copies, and that .\" the name of Digital Equipment Corporation not be used in advertising or .\" publicity pertaining to distribution of the document or software without .\" specific, written prior permission. .\" .\" THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL .\" WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES .\" OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT .\" CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL .\" DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR .\" PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS .\" ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS .\" SOFTWARE. .\" - .\" Portions Copyright (c) 1999 by Check Point Software Technologies, Inc. .\" .\" Permission to use, copy, modify, and distribute this software for any .\" purpose with or without fee is hereby granted, provided that the above .\" copyright notice and this permission notice appear in all copies, and that .\" the name of Check Point Software Technologies Incorporated not be used .\" in advertising or publicity pertaining to distribution of the document .\" or software without specific, written prior permission. .\" .\" THE SOFTWARE IS PROVIDED "AS IS" AND CHECK POINT SOFTWARE TECHNOLOGIES .\" INCORPORATED DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, .\" INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. .\" IN NO EVENT SHALL CHECK POINT SOFTWARE TECHNOLOGIES INCORPRATED .\" BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR .\" ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER .\" IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT .\" OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" .\" --Copyright-- .\" .\" from named.8 6.6 (Berkeley) 2/14/89 .\" .\" jpman %Id: named-xfer.8,v 1.2 1997/06/06 11:08:51 bobson Stab % .Dd June 26, 1993 .Dt NAMED-XFER 8 .Os BSD 4 .Sh 名称 .Nm named-xfer .Nd ゾーン転送のための補助エージェント .Sh 書式.Nm named-xfer .Fl z Ar zone_to_transfer .Fl f Ar db_file .Fl s Ar serial_no .Op Fl d Ar debuglevel .Op Fl l Ar debug_log_file .Op Fl i Ar ixfr_file .Op Fl t Ar trace_file .Op Fl p Ar port# .Op Fl S .Ar nameserver .Op Ar [ Sy axfr | .Op Sy ixfr ] .Sh 解説 .Nm は、 .Xr named 8 によって実行される補助プログラムです。 インターネットネームサーバから呼び出されて、ゾーン情報を受け取ります。 直接実行されることはまれであり、ゾーン転送の問題を解決するために システム管理者にいよってのみ実行されることがある程度です。 インターネットネームドメインシステムについての詳細は、 RFC 1033 、1034 、1035 を参照してください。 .Pp オプションとしては、以下のものがあります: .Bl -tag -width Fl .It Fl z Ar zone_to_transfer 転送されるゾーン名を指定します。 .It Fl f Ar db_file プライマリサーバーからゾーンが転送された際に、ゾーンの情報をダンプ (格納) する .Ar db_file のファイル名を指定します。 .It Fl s Ar serial_no 転送されるゾーンの情報のシリアル番号を指定します。プライマリサーバから 得た .Sy SOA RR が、このシリアル番号よりも高いシリアル番号を持たない 場合は、転送は中止されます。 .It Fl d Ar debuglevel デバッグ情報を出力します。 .Ar debuglevel 出力されるメッセージのレベルを決定します。 .It Fl l Ar debug_log_file デバッグメッセージのログファイルを指定します。デフォルトでは システムに依存しますが、通常は .Pa /var/tmp または .Pa /usr/tmp です。このオプションは .Fl d と同時に指定されたときのみ適用されますので注意してください。 .It Fl i Ar ixfr_file .Ar ixfr_file の名前を指定します。 Incremental Zone Transfer (IXFR) によりゾーン変更内容を プライマリサーバから受信すると、 このゾーン変更内容をこのファイルにダンプ (格納) します。 .It Fl t Ar trace_file ゾーン情報転送のプロトコルトレースを格納するトレースファイル .Ar trace_file を指定します。 このオプションはネームサーバそのものをデバッグする人にとってのみ 有益なのかもしれません。 .It Fl p Ar port# デフォルト以外のポート番号を使用するときに指定します。 デフォルトの標準ポートナンバーは ``domain'' サービスの .Xr getservbyname 3 の返す値になります。 .It Fl S SOA レコードと NS レコードの転送のみを許可し、 ゾーンに対して A レコードを結合します。 SOA レコードは .Xr named 8 によって読み込まれませんが、 NS レコードをいつ検証するのかを決定するのに使用されます。 詳しくは .Xr named 8 の .Dq Li stubs を参照してください。 .El .Pp 付加的な引数としてネームサーバのアドレスを、いわゆる .Dq dotted-quad 構文で .Em のみ 、とります。ネームサーバのアドレスの省略は許されません。 少なくとも一つのアドレスを指定しなくてはなりません。 ネームサーバのアドレスが複数指定されると、最初のサーバが転送を失敗すると、 -順番にサーバを切替えて転送を試みます。 +順番にサーバを切り替えて転送を試みます。 ネームサーバアドレスの後の .Sy axfr または .Sy ixfr は、実行するゾーン転送タイプを指定します。 全ゾーン転送には .Sy axfr を使用し、インクリメンタルゾーン転送には .Sy ixfr を使用してください。 .Sh 関連項目 .Xr hostname 7, .Xr named 8 , .Xr resolver 3 , .Xr resolver 5 , RFC 882, RFC 883, RFC 973, RFC 974, RFC 1033, RFC 1034, RFC 1035, RFC 1123, RFC 1995 .Dq Name Server Operations Guide for Sy BIND . diff --git a/ja_JP.eucJP/man/man8/timedc.8 b/ja_JP.eucJP/man/man8/timedc.8 index 862f69e9ca..721b60d855 100644 --- a/ja_JP.eucJP/man/man8/timedc.8 +++ b/ja_JP.eucJP/man/man8/timedc.8 @@ -1,149 +1,149 @@ .\" Copyright (c) 1980, 1991, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)timedc.8 8.1 (Berkeley) 6/6/93 .\" %FreeBSD: src/usr.sbin/timed/timedc/timedc.8,v 1.6 1999/08/28 01:20:21 peter Exp % .\" .\" jpman %Id: timedc.8,v 1.3 1997/07/26 22:14:11 horikawa Stab % .\" .Dd June 6, 1993 .Dt TIMEDC 8 .Os BSD 4.3 .ad .Sh 名称 .Nm timedc .Nd timed の動作を制御する .Sh 書式 .Nm timedc .Oo Ar command\ \& .Op Ar argument ... .Oc .Sh 解説 .Nm は、 .Xr timed 8 を制御するために使用します。具体的には、以下に示す機能を有します。 .Bl -bullet .It 複数のマシン間の時刻の差の計測 .It マスタタイムサーバの所在の検索 .It .Xr timed 8 -が受信したメッセージのトレースの有効/無効の切替え +が受信したメッセージのトレースの有効/無効の切り替え .It 様々なデバッグ動作 .El .Pp .Nm を引数なしで起動した場合、 .Nm はプロンプトを表示し、標準入力からの コマンド入力待ちの状態になります。起動時に引数を指定した場合、 .Nm は、最初の引数をコマンドとして、残りの引数をそのコマンドのパラメータとして 解釈します。 また .Nm は、標準入力の代わりにリダイレクションを使用してファイルからコマンドを 読み込むこともできます。 コマンドは短縮可能です; 使用可能なコマンドは以下の通りです: .Bl -tag -width Ds -compact .It Ic \&? Op Ar command ... .Pp .It Ic help Op Ar command ... 引数リストに指定されたコマンドについての簡単な説明を表示します。 引数を指定しない場合は、 使用可能なコマンドの一覧を表示します。 .Pp .It Ic clockdiff Ar host ... .Nm を実行したマシンの時刻と、引数で指定したマシンの時刻 の比較を行ない、その結果を表示します。 .Pp .It Ic msite Op Ar host ... .Ar host で指定したホストのマスタタイムサーバを表示します。 .It Xo .Ic trace .Li \&{ Ar on Li \&| .Ar off \&} .Xc .Xr timed 8 へのメッセージの .Pa /var/log/timed.log への記録の有効/無効を指定します。 .It Ic election Ar host1 Op Ar host2 ... .Ar host で指定したホスト上の timed デーモンに対し、"election" タイマをリセットし、 新たにマスタタイムサーバが選択されていることを確実にするよう要求します。 .Pp .It Ic quit timedc を終了します。 .El .Pp 上記以外のコマンドも、 .Xr timed 8 のテストやデバッグのために実装してあります。 それらのコマンドについては、 .Nm の help コマンドを用いたり、本コマンドのソースを参照するなどして調べて下さい。 .Sh 関連ファイル .Bl -tag -width /var/log/timed.masterlog -compact .It Pa /var/log/timed.log timed 用のトレースファイル。 .It Pa /var/log/timed.masterlog マスタ timed 用のログファイル。 .El .Sh 関連項目 .Xr date 1 , .Xr adjtime 2 , .Xr icmp 4 , .Xr timed 8 .Rs .%T "TSP: The Time Synchronization Protocol for UNIX 4.3BSD" .%A R. Gusella .%A S. Zatti .Re .Sh 診断 .Bl -tag -width Ds -compact .It ?Ambiguous command 省略入力に該当するコマンドが複数存在します。 .It ?Invalid command 該当するコマンドが見つかりません。 .It ?Privileged command 本コマンドは、root 権限でのみ実行できます。 .El .Sh 歴史 .Nm コマンドは .Bx 4.3 から登場しました。