Index: head/ja_JP.eucJP/man/man1/mkdep.1 =================================================================== --- head/ja_JP.eucJP/man/man1/mkdep.1 (revision 22767) +++ head/ja_JP.eucJP/man/man1/mkdep.1 (revision 22768) @@ -1,125 +1,125 @@ .\" Copyright (c) 1987, 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. .\" .\" @(#)mkdep.1 8.1 (Berkeley) 6/6/93 .\" %FreeBSD: src/usr.bin/mkdep/mkdep.1,v 1.15 2004/07/02 22:22:28 ru Exp % .\" .\" $FreeBSD$ .\" .Dd June 6, 1993 .Dt MKDEP 1 .Os .Sh 名称 .Nm mkdep .Nd Makefile の依存関係リストを構築する .Sh 書式 .Nm .Op Fl ap .Op Fl f Ar file .Op Ar flags .Ar .Sh 解説 .Nm ユーティリティは、 C コンパイラへのフラグと C のソースファイルリストを引数にとり、 インクルードファイルの依存関係リストを構築し、 ファイル ``.depend'' に書き出します。 例えば Makefile においては以下のように用いられます: .Bd -literal -offset indent CFLAGS= -O -I../include SRCS= file1.c file2.c depend: mkdep ${CFLAGS} ${SRCS} .Ed .Pp ここでマクロ SRCS は C のソースファイルのリストであり、 CFLAGS は C コンパイラへ与えるフラグのリストです。 .Pp ユーザは、使用するプリプロセッサとプリプロセッサオプションを変更可能です。 例えば、gcc をプリプロセッサとして使用し、システムのヘッダを無視するには、 次のようにします: .Bd -literal -offset indent depend: env MKDEP_CPP="gcc -E" MKDEP_CPP_OPTS=-MM mkdep \\ ${CFLAGS} ${SRCS} .Ed .Pp オプションは以下の通りです: .Bl -tag -width Ds .It Fl a 結果を出力ファイルに追加します。 これにより同一の Makefile から .Nm を複数回実行することができます。 .It Fl f インクルードファイル依存関係を、デフォルトの ``.depend'' ではなく、ファイル .Ar file に書き出します。 .It Fl p 依存関係を以下の形式で出力します: .Bd -literal -offset indent program: program.c .Ed .Pp これにより、後続の make は中間ファイル .Pa \&.o を経ることなく、直接 C のソースモジュールから .Ar program を生成することができるようになります。 この機能は、ソースが単一のモジュールから構成されているプログラムに便利です。 .El -.Sh 関連項目 -.Xr cc 1 , -.Xr cpp 1 , -.Xr make 1 -.Sh 関連ファイル -.Bl -tag -width .depend -compact -.It Pa .depend -依存関係リストを含むファイル -.El .Sh 環境変数 .Bl -tag -width MKDEP_CPP_OPTS .It Ev CC 使用する C コンパイラを指定します。 指定されたコンパイラは、 GNU C コンパイラと一貫性のあるオプションを持つと仮定されます。 .It Ev MKDEP_CPP 使用するプリプロセッサを指定します。デフォルトは "${CC} -E" です。 .It Ev MKDEP_CPP_OPTS プリプロセッサに対する CFLAGS 以外のオプションを指定します。 デフォルトは "-M" です。 +.El +.Sh 関連項目 +.Xr cc 1 , +.Xr cpp 1 , +.Xr make 1 +.Sh 関連ファイル +.Bl -tag -width .depend -compact +.It Pa .depend +依存関係リストを含むファイル .El .Sh 歴史 .Nm コマンドは .Bx 4.3 Tahoe から登場しました。 Index: head/ja_JP.eucJP/man/man3/fgets.3 =================================================================== --- head/ja_JP.eucJP/man/man3/fgets.3 (revision 22767) +++ head/ja_JP.eucJP/man/man3/fgets.3 (revision 22768) @@ -1,153 +1,155 @@ .\" Copyright (c) 1990, 1991, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" This code is derived from software contributed to Berkeley by .\" Chris Torek and the American National Standards Committee X3, .\" on Information Processing Systems. .\" .\" 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. .\" .\" @(#)fgets.3 8.1 (Berkeley) 6/4/93 .\" .\" %FreeBSD: src/lib/libc/stdio/fgets.3,v 1.6.2.6 2001/12/14 18:33:57 ru Exp % .\" $FreeBSD$ .\" .Dd June 4, 1993 .Dt FGETS 3 .Os .Sh 名称 .Nm fgets , .Nm gets .Nd ストリームから行を取得 +.Sh ライブラリ +.Lb libc .Sh 書式 .In stdio.h .Ft char * .Fn fgets "char *str" "int size" "FILE *stream" .Ft char * .Fn gets "char *str" .Sh 解説 .Fn fgets 関数は、最大で .Fa size で指定された文字数より 1 だけ少ない数の文字を .Fa stream から読み込み、文字列 .Fa str に保存します。 読込みは、改行文字が見つかったり、ファイルの終了 あるいはエラーが見つかったりした場合に停止します。 改行文字は、存在していれば保持されます。 任意の文字を読み込んでエラーが発生しなかった場合、 文字列の最後には .Ql \e0 文字が追加されます。 .Pp .Fn gets 関数は .Fn fgets 関数で .Fa size を無限にし、 .Em stdin を .Fa stream にしたものと等価ですが、 文字列中で改行文字が保存されない (改行文字が存在した場合) 点が 異なります。 入力行が存在する場合、それが十分短く文字列に収まりきる ことを保証するのは呼び出し側の責任です。 .Sh 戻り値 正常終了すると、 .Fn fgets と .Fn gets は文字列のポインタを戻します。 キャラクタを読み込む前にファイルの終了に達すると、 .Dv NULL が戻されます。 この場合、バッファの内容は変化しません。エラーが発生すると .Dv NULL が戻され、バッファの内容は不定になります。 .Fn fgets 関数と .Fn gets 関数はファイルの終了とエラーとを区別しません。 ファイルの終了かエラーかを判断するには、呼び出し側が .Xr feof 3 と .Xr ferror 3 を使用しなくてはなりません。 .Sh エラー .Bl -tag -width Er .It Bq Er EBADF 指定された .Fa stream が、読込み可能なストリームではありません。 .El .Pp .Fn fgets 関数がエラーになると、ルーチン .Xr fflush 3 , .Xr fstat 2 , .Xr read 2 , .Xr malloc 3 用に指定されたエラーのいずれかが .Va errno に設定される場合があります。 .Pp .Fn gets 関数がエラーになると、ルーチン .Xr getchar 3 用に指定されたエラーが .Va errno に設定される場合があります。 .Sh 関連項目 .Xr feof 3 , .Xr ferror 3 , .Xr fgetln 3 .Sh 規格 .Fn fgets 関数と .Fn gets 関数は、 .St -isoC に適合しています。 .Sh バグ 通常、次の入力行がある任意の長さより短いことを保証するのは 不可能であり、また入力バッファをオーバフローすると ほぼ必ずセキュリティ違反となるため、 プログラムでは .Fn gets を .Em 絶対に 使用しないでください。 .Fn gets は、 .St -isoC に適合するためだけに存在しています。 Index: head/ja_JP.eucJP/man/man3/libalias.3 =================================================================== --- head/ja_JP.eucJP/man/man3/libalias.3 (revision 22767) +++ head/ja_JP.eucJP/man/man3/libalias.3 (revision 22768) @@ -1,1051 +1,1051 @@ .\"- .\" Copyright (c) 2001 Charles Mott .\" 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. .\" .\" %FreeBSD: src/lib/libalias/libalias.3,v 1.23.2.11 2001/12/17 10:08:22 ru Exp % .\" .\" $FreeBSD$ .Dd April 13, 2000 .Dt LIBALIAS 3 .Os .Sh 名称 .Nm libalias .Nd マスカレードおよびネットワークアドレス変換用パケットエイリアシングライブラリ .Sh 書式 .In sys/types.h .In netinet/in.h .In alias.h .Pp 関数のプロトタイプは、このテキストの本文で紹介します。 .Sh 解説 .Nm ライブラリは、IP パケットのエイリアスおよびエイリアス解除用の関数群であり、 マスカレードおよびネットワークアドレス変換 (NAT) を目的としています。 -.Pp 導入 +.Sh 導入 このライブラリは、IP のローカルネットワークアドレスの変換 および変換処理サポート用にデザインされた関数です。 ローカルネットワークの未登録の IP アドレスから発信するパケットは、 アクセス可能な IP アドレスから来たかのように見せかけることができます。 外から入ってくるパケットに対しては、 ローカルネットワーク上の正しいマシンに送られるよう エイリアス解除されます。 .Pp パケットエイリアシングエンジンには、 ある程度の柔軟性が組み込まれています。 もっとも簡単な操作では、 ローカルネットワークアドレスとパケットエイリアスホストとの間で 多対 1 対応付けが行なわれます。 これは仮装 IP として知られていることです。 更に、ローカルアドレスとパブリックアドレスの間での 1 対 1 対応付けも実装することが可能で、 静的 NAT として知られています。 これらの間には、異なるプライベートアドレスのグループを それぞれ異なるパブリックアドレスにリンクさせることができ、 その中にははっきりした多対 1 対応もいくつか見られます。 更に、パブリックアドレスおよびポートは 固定的にプライベートアドレスおよびポートに リダイレクトさせることができます。 .Pp パケットエイリアシングエンジンは、 カーネル外部のユーザ空間で作用するように設計されており、 そのためプライベートなカーネルデータ構造へのアクセスは不要です。 ただし、ソースコードはカーネル環境に組み込むことができます。 .Sh 初期化と制御 2 つの特殊な関数、 .Fn PacketAliasInit および .Fn PacketAliasSetAddress は、 パケット操作が完了する前に呼ぶ必要があります。 また、パケットエイリアシングエンジンの操作モードに対し .Fn PacketAliasSetMode 呼び出しによりカスタマイズできます。 .Pp .Ft void .Fn PacketAliasInit "void" .Bd -ragged -offset indent この関数には引数がなく、また戻り値もありません。 内部データ構造の初期化に使用されます。 以下に示すモードビットは .Fn PacketAliasInit の呼び出し後、必ずセットされます。 これらのモードビットの意味については、後述の .Fn PacketAliasSetMode を参照してください。 .Bl -item -offset indent -compact .It .Dv PKT_ALIAS_SAME_PORTS .It .Dv PKT_ALIAS_USE_SOCKETS .It .Dv PKT_ALIAS_RESET_ON_ADDR_CHANGE .El .Pp この関数はパケットエイリアスエンジンに対し、 常時同一の初期状態を返します。 .Fn PacketAliasSetAddress 呼び出しは、これに続いて行ないます。 また、前述したデフォルトモードビットを変更する場合は .Fn PacketAliasSetMode を呼び出します。 .Pp この関数呼び出しは、 パケット操作の前にプログラム開始段階で実行する必要があります。 .Ed .Pp .Ft void .Fn PacketAliasUninit void .Bd -ragged -offset indent この関数には引数も戻り値もなく、 内部データ構造に設定された値をクリアする場合に使用されます。 .Pp この関数はプログラムでエイリアスエンジンの使用を 停止させる場合に呼び出す必要があります。 それにより、ファイアウォールに空いた隙間を塞ぐことになります。 以前との互換性や特別なセキュリティを備えるために、本関数を .Fn PacketAliasInit が .Xr atexit 3 チェーンに付加しています。 何度呼び出しても問題はありません。 .Ed .Pp .Ft void .Fn PacketAliasSetAddress "struct in_addr addr" .Bd -ragged -offset indent この関数は、ローカル領域のネットワーク外へ パケットが発信する先のソースアドレスをセットします。 .Fn PacketAliasRedirectAddr により生成された 静的アドレス対応により上書きされない限り、 発信パケットはすべてこのアドレスに再対応付けされます。 .Pp .Dv PKT_ALIAS_RESET_ON_ADDR_CHANGE モードビット (デフォルト操作モード) が設定されている場合、 内部的なエイリアスリンクテーブルは、 エイリアスアドレスが変更されるたび、 リセットされます。 これは一連のダイアルアップ操作の中で IP アドレス状態に関わらず、 .Xr ppp 8 のようなインタフェースに便利です。 .Pp .Dv PKT_ALIAS_RESET_ON_ADDR_CHANGE モードビットが 0 にセットされていた場合、この関数は、 パケット間のエイリアスの動的変更に使用できます (オーバヘッドの少ない呼び出しです)。 .Pp パケット操作の前にこの関数を呼び出す必要があります。 .Ed .Pp .Ft unsigned int .Fn PacketAliasSetMode "unsigned int flags" "unsigned int mask" .Bd -ragged -offset indent この関数は、 .Fa flags 値に従ってモードビットの設定やクリアを行ないます。 .Fa mask により示されたビットだけが対象となります。 以下に示すモードビットは .Aq Pa alias.h で定義されています。 .Bl -tag -width indent .It Dv PKT_ALIAS_LOG .Pa /var/log/alias.log ファイルへのロギングを可能にします。 ログファイルには、エイリアス・リンクの作成、削除のたびに icmp、tcp、udp へのリンク回数が記録されます。 ログファイルが .Xr tail 1 により継続的に見ることができれば、 主としてデバッグ用として有効です。 .It Dv PKT_ALIAS_DENY_INCOMING このモードビットが設定されていると、 TCP 接続や UDP トランザクションに関連する 外部から着信するあらゆるパケットは、 呼び出しプログラムで無視 ( .Fn PacketAliasIn であれば .Dv PKT_ALIAS_IGNORED を返す) するための印が付けられます。 パケットのエイリアスホストや ローカルネットワークから発生した接続や トランザクションに対するレスポンスに対する影響はありません。 このモードビットは片方向のファイアウォールを実装する時に有効です。 .It Dv PKT_ALIAS_SAME_PORTS このモードビットが設定されていると、 パケットエイリアスエンジンは実際のローカルポート番号を そのままエイリアスポート番号にしようとします。 このことは (proto, alias addr, alias port, remote addr, remote port) の 5 つのパラメータのペアが一意であれば可能です。 競合が起きる場合は、このビットが設定されていても エイリアスポート番号には別の番号が選択されます。 .It Dv PKT_ALIAS_USE_SOCKETS このビットは、エイリアスホストがパケット移送時のように ネットワーク上にトラフィックを発生させる場合必ず設定します。 パケットエイリアスホストが不明なホストアドレスや 不明のポート番号 (例えば、FTP データ接続時) からの接続を待っている時は、このモードビットは、 ポートの競合が起きないように プレースホルダとしてソケットの割り当てを定義します。 接続が確立されると、 通常は 1 分ほどでソケットは閉じられます。 .It Dv PKT_ALIAS_UNREGISTERED_ONLY このビットが設定されていると、未登録のアドレス空間から生じた以外の ローカルネットワーク上のトラフィックが無視されます。 標準クラス A, B および C の未登録アドレスは次の通りです。 .Bd -literal -offset indent 10.0.0.0 -> 10.255.255.255 (Class A subnet) 172.16.0.0 -> 172.31.255.255 (Class B subnets) 192.168.0.0 -> 192.168.255.255 (Class C subnets) .Ed このオプションは、パケットエイリアスホストが 別々のインタフェースに登録済みおよび 未登録サブネットがある場合に有効です。 登録済みサブネットは完全に外部と接続しているので、 パケットエイリアスエンジンにより パケットを送り出す必要はありません。 .It Dv PKT_ALIAS_RESET_ON_ADDR_CHANGE このモードビットが設定されており、 .Fn PacketAliasSetAddress が エイリアスアドレス変更のために呼ばれるケースでは、 パケットエイリアスエンジンの内部リンクテーブル内容がクリアされます。 この操作モードは、 ダイアルアップ間でのインタフェースアドレスを変更したり、 変更せずにおく .Xr ppp 8 リンクの場合に有効です。 このモードビットが設定されていない場合、 リンクテーブルはアドレスが変更されてもリセットされません。 .It Dv PKT_ALIAS_PUNCH_FW このオプションにより、 .Nm は、 FTP/IRC DCC 接続に対する .Xr ipfirewall 4 ベースのファイアウォールの `隙間' を作ることになります。 開けられた隙間は IP アドレスやポートと結び付いており、 別の接続に使用することはできません。 隙間はそれを使用している接続が消滅すれば除去されます。 .Nm を使用しているプログラムを強制的に終了させる (例えば kill -9) 仕組みは、フラグの状態により、 隙間に割り当てられた全ファイアウォール領域をクリアすることで実現されています。 このことはまた .Fn PacketAliasSetFWBase に対する 初期呼び出しでも起こります。 この呼び出しはフラグの設定の前に行なう必要があります。 .It Dv PKT_ALIAS_REVERSE 本オプションは、ライブラリが内向きパケットと外向きパケットを扱う方法を 反転させます。 これにより、外部インタフェースの代りに内部インタフェースを通過する パケットを食わせることができます。 .It Dv PKT_ALIAS_PROXY_ONLY 本オプションは、ライブラリが透過プロキシルールのみに従うよう指示します。 通常のパケットエイリアスは実行されません。 詳細は後述の .Fn PacketAliasProxyRule を参照してください。 .El .Ed .Pp .Ft void .Fn PacketAliasSetFWBase "unsigned int base" "unsigned int num" .Bd -ragged -offset indent ファイアウォールに ( .Dv PKT_ALIAS_PUNCH_FW フラグにより) ファイアウォールの隙間に対する領域を割り当てます。 領域は全初期化ルールに従いクリアされます。 .Ed .Sh パケット操作 パケット処理関数は、着信 (リモート -> ローカル) および発信 (ローカル -> リモート) パケットの修正に使用されます。 ネットワークインタフェース経由でのパケットの送受信は、 呼び出し側プログラムが行ないます。 .Pp .Fn PacketAliasInit および .Fn PacketAliasSetAddress とともに、 .Fn PacketAliasIn と .Fn PacketAliasOut の 2 つのパケット処理ルーチンが基本的な、 見かけの IP 実装に必要な最小機能として用意されています。 .Pp .Ft int .Fn PacketAliasIn "char *buffer" "int maxpacketsize" .Bd -ragged -offset indent リモートのマシンからローカルネットワークへの着信パケットは この関数によりエイリアス解除されます。 IP パケットは引数 .Fa buffer で指定されます。 .Fa maxpacketsize はパケットを含むデータ構造の長さを示しており、 実際のパケット長より大きくとる必要があります。 .Pp 戻りコード : .Bl -tag -width indent .It Dv PKT_ALIAS_OK パケットエイリアシング処理は成功しました。 .It Dv PKT_ALIAS_IGNORED パケットは無視され、エイリアスは解除されませんでした。 これは、プロトコルが認識されないとき、 ICMP のメッセージタイプは処理されていないか、 あるいは新たな接続についての入力パケットが 無視されたときに発生します ( .Fn PacketAliasSetMode が .Dv PKT_ALIAS_DENY_INCOMING を設定した場合)。 .It Dv PKT_ALIAS_UNRESOLVED_FRAGMENT ヘッダフラグメントが未送信のため フラグメントが解消されないときにこのコードが返されてきます。 この場合、フラグメントはヘッダフラグメントが見つかるまで .Fn PacketAliasSaveFragment により保存しておく必要があります。 .It Dv PKT_ALIAS_FOUND_HEADER_FRAGMENT パケットエイリアシング処理は成功し、 ヘッダフラグメントも見つかりました。 これは解消されていないフラグメントを、 .Fn PacketAliasGetFragment により探し、 .Fn PacketAliasFragmentIn を使って エイリアス解除する時のシグナルとなります。 .It Dv PKT_ALIAS_ERROR パケットエイリアシングエンジン内で発生した内部エラー。 .El .Ed .Pp .Ft int .Fn PacketAliasOut "char *buffer" "int maxpacketsize" .Bd -ragged -offset indent ローカルネットワークからリモートのマシンへ発信するパケットは、 この関数によりエイリアスされます。 IP パケットは引数 .Fa buffer で指定され、 .Fa maxpacketsize はパケットが取りうる最大長を示します。 IP 表現形式プロトコルは、アドレスと、修正され、 またパケット長の変更にからむ一連のデータ内のポート情報を設定します。 プロトコルのよく知られた事例としては、 FTP と IRC DDC があります。 -Pp +.Pp 戻りコード : .Bl -tag -width indent .It Dv PKT_ALIAS_OK パケットエイリアシング処理は成功しました。 .It Dv PKT_ALIAS_IGNORED パケットは無視され、エイリアス解除はされませんでした。 これはプロトコルが認識されないときか、あるいは ICMP メッセージタイプが処理されないときに発生します。 .It Dv PKT_ALIAS_ERROR パケットエイリアシング内で発生した内部エラー。 .El .Ed .Sh ポートとアドレスのリダイレクション このセクションで解説している関数は、 ローカルネットワーク上のマシンにおいて、 外部ネットワークから新たな着信に対するアクセスをある程度可能にします。 個々のポートは、再対応付けや 固定的なネットワークアドレスの変換を定義することができます。 .Pp .Ft struct alias_link * .Fo PacketAliasRedirectPort .Fa "struct in_addr local_addr" .Fa "u_short local_port" .Fa "struct in_addr remote_addr" .Fa "u_short remote_port" .Fa "struct in_addr alias_addr" .Fa "u_short alias_port" .Fa "u_char proto" .Fc .Bd -ragged -offset indent この関数は、所定のリモートアドレスやポートから エイリアスアドレスやポートへのトラフィックを、 指定されたローカルアドレスやポートへのリダイレクトを定義します。 パラメータ .Fa proto は .Dv IPPROTO_TCP か .Dv IPPROTO_UDP のどちらかに該当し、 .Aq Pa netinet/in.h で定義されます。 .Pp .Fa local_addr あるいは .Fa alias_addr が 0 ならば、パケットエイリアシングアドレスは .Fn PacketAliasSetAddress で設定されたものを使用します。 .Fn PacketAliasRedirectPort が .Fn PacketAliasSetAddress 呼び出し語に アドレス変更のために呼び出されても、 0 リファレンスがこの変更を記録します。 .Pp 負荷共有用にリンクが更に設定されると、 .Fa local_addr と .Fa local_port は無視され、サーバプールから動的に選択されます。 これは .Fn PacketAliasAddServer で後述されています。 .Pp .Fa remote_addr が 0 の場合、 パケットをリモートアドレスからリダイレクトします。 同様に、 .Fa remote_port が 0 の場合、リモートのポート番号から発生した パケットをリダイレクトします。 通常、リモートポート定義は 0 ですが、 ファイアウォールに対しては 0 でない リモートアドレスが有効な場合があります。 .Fn PacketAliasRedirectPort 呼び出しにより、 アドレスとポート定義が重複した場合、 最新の呼び出しが優先されます。 .Pp この関数は次いで .Fn PacketAliasRedirectDelete で使用するポインタを返します。 .Dv NULL が返された場合、関数呼び出しは正常に終了していません。 .Pp あらゆるポートアドレスは、 ネットワークアドレスのバイトオーダ表記に従っています。 これらのパラメータは .Xr htons 3 を使用して、 内部的な数値形式からネットワークバイトオーダ表記に 変換する必要があります。 アドレスもまた同様にネットワークバイトオーダ形式であり、 .Fa struct in_addr データ型で暗黙に定義されます。 .Ed .Pp .Ft struct alias_link * .Fo PacketAliasRedirectAddr .Fa "struct in_addr local_addr" .Fa "struct in_addr alias_addr" .Fc .Bd -ragged -offset indent この関数は、 .Fa alias_addr への全着信トラフィックを .Fa local_addr にリダイレクトします。同様に、 .Fa local_addr からの全発信トラフィックは .Fa alias_addr にエイリアスされます。 .Pp .Pa local_addr または .Pa alias_addr が 0 の場合、 .Fn PacketAliasSetAddress により設定された パケットエイリアシングアドレスが使用されます。 .Fn PacketAliasSetAddress が .Fn PacketAliasRedirectAddr の呼び出し後に アドレス変更のために呼び出されても、 0 リファレンスがこの変更を記録します。 .Pp 負荷共有用にリンクが更に設定されると、 .Fa local_addr は無視され、サーバプールから動的に選択されます。 これは .Fn PacketAliasAddServer で後述されています。 .Pp .Fn PacketAliasRedirectAddr に対する一連の呼び出しが 同一のエイリアシングアドレスを使用している場合、 このエイリアシングアドレスへの新たな全着信トラフィックは、 最後の関数呼び出しで作られたローカルアドレスへリダイレクトされます。 いくつかの関数呼び出しで指定されたローカルマシンからの 新たな全トラフィックは、 同一のアドレスにリダイレクトされます。 .Bd -literal -offset indent PacketAliasRedirectAddr(inet_aton("192.168.0.2"), inet_aton("141.221.254.101")); PacketAliasRedirectAddr(inet_aton("192.168.0.3"), inet_aton("141.221.254.101")); PacketAliasRedirectAddr(inet_aton("192.168.0.4"), inet_aton("141.221.254.101")); .Ed .Pp 192.168.0.2, 192.168.0.3 および 192.168.0.4 から、 .Xr telnet 1 や .Xr ftp 1 などでの発信接続は 141.221.254.101 からでてきたかのようにみえます。 141.221.254.101 への着信接続は 192.168.0.4 にリダイレクトされます。 .Pp .Fn PacketAliasRedirectPort に対する呼び出しより .Fn PacketAliasRedirectAddr で指定されたアドレス対応が必ず優先されます。 .Pp この関数は、 .Fn PacketAliasRedirectDelete が使用するポインタを返します。 .Dv NULL が返される場合、関数呼び出しは正常に終了していません。 .Ed .Pp .Ft int .Fo PacketAliasAddServer .Fa "struct alias_link *link" .Fa "struct in_addr addr" .Fa "u_short port" .Fc .Bd -ragged -offset indent 本関数は、 .Fa link を、IP Network Address Translation (RFC 2391, LSNAT) を使用した 負荷共有用に設定します。 LSNAT は次のように動作します。 クライアントが、サーバ仮想アドレスを使用してサーバへアクセスを試みます。 LSNAT ルータが、サーバプール中の 1 個のホストに対し、 要求を透過的にリダイレクトします。 ホスト選択には、実時間負荷共有アルゴリズムを使用します。 複数のセッションが同一のクライアントから開始されるかもしれません。 各セッションは、その時々のサーバプールホスト間の負荷バランスによって、 異なるホストに向けられる可能性があります。 数個の固有のサービスに対して負荷共有が望まれる場合、 LSNAT の設定により、望まれるサービスにのみ負荷共有を限定可能です。 .Pp 現在のところ、最も単純な選択アルゴリズムのみが実装されています。 この方法は、ラウンドロビンによる選択のみであり、 ホストの負荷を考慮しないものです。 .Pp まず、 .Fa link が .Fn PacketAliasRedirectPort または .Fn PacketAliasRedirectAddr により作成されます。 次に .Fn PacketAliasAddServer が複数回呼ばれ、 .Fa link のサーバプールにエントリが追加されます。 .Pp .Fn PacketAliasRedirectAddr で作成されたリンクに対し、 .Fa port 引数は無視されいかなる値、例えば htons(~0) を持ちえます。 .Pp 本関数は、成功時には 0 を返し、失敗時には -1 を返します。 .Ed .Pp .Ft void .Fn PacketAliasRedirectDelete "struct alias_link *ptr" .Bd -ragged -offset indent この関数は、 .Fn PacketAliasRedirectPort あるいは .Fn PacketAliasRedirectAddr が設定した 特定の静的リダイレクトルールを削除します。 パラメータ .Fa ptr は、いずれかのリダイレクション関数から返されてくるポインタです。 正しくないポインタが .Fn PacketAliasRedirectDelete に渡されると、 プログラムはクラッシュするか、予期せぬ動作結果となります。 そのためにこの関数の使用に際しては注意が必要です。 .Ed .Pp .Ft int .Fn PacketAliasProxyRule "const char *cmd" .Bd -ragged -offset indent 渡された .Fa cmd 文字列は、1 個以上の、語の組からなります。 各組の最初の語はトークンであり、次の語はそのトークンに適用される値です。 トークンと引数の型は次の通りです: .Bl -tag -width indent .It Cm type encode_ip_hdr | encode_tcp_stream | no_encode 透過プロキシのサポートのために、 新規終点サーバに元のアドレスとポートの情報を なんらかの方法で渡す必要があります。 .Cm encode_ip_hdr が指定された場合、追加の IP オプションとして元のアドレスとポートが渡されます。 .Cm encode_tcp_stream が指定された場合、TCP ストリーム中の最初のデータ片の中に .Dq DEST Ar IP port という書式で、元のアドレスとポートが渡されます。 .It Cm port Ar portnum 終点ポートが .Ar portnum のパケットのみがプロキシの対象となります。 .It Cm server Ar host Ns Xo .Op : Ns Ar portnum .Xc データの転送先の .Ar host と .Ar portnum を指定します。 .Ar host は、DNS ホスト名ではなく IP アドレスであることが必要です。 .Ar portnum が指定されないと、終点ポート番号は変更されません。 .Pp .Ar server の指定は、 .Cm delete コマンドが使用されない限り、必須です。 .It Cm rule Ar index 通常、各 .Fn PacketAliasProxyRule 呼び出しは、ルールの線型リストの先頭に次のルールを挿入します。 .Ar index が指定された場合、低いインデックスの全ルールがチェックされた後に、 新規ルールがチェックされます。 ルールを指定しない .Fn PacketAliasProxyRule 呼び出しは、ルールにルール 0 を割り当てます。 .It Cm delete Ar index 本トークンと引数は、他のトークンと組み合わせて使用してはなりません。 本トークンを使用すると、指定した .Ar index の既存のルールが削除されます。 -.It Cm proto tcp|udp +.It Cm proto tcp | udp 指定すると、指定したプロトコルタイプのパケットのみがマッチします。 .It Cm src Ar IP Ns Xo .Op / Ns Ar bits .Xc 指定すると、指定した .Ar IP に始点アドレスがマッチするパケットのみがマッチします。 .Ar bits も指定すると、 .Ar IP アドレスの最初の .Ar bits ビットのみがネットワーク指定として使用され、 そのネットワークからの全 IP アドレスがマッチします。 .It Cm dst Ar IP Ns Xo .Op / Ns Ar bits .Xc 指定すると、指定した .Ar IP に終点アドレスがマッチするパケットのみがマッチします。 .Ar bits も指定すると、 .Ar IP アドレスの最初の .Ar bits ビットのみがネットワーク指定として使用され、 そのネットワークからの全 IP アドレスがマッチします。 .El .Pp 本関数は、通常、ある主のインターネットアクセスを禁止されている 内部マシンに対し、外向き接続をリダイレクトするか、 またはある種の外部マシンへのアクセスを制限します。 .Ed .Pp .Ft struct alias_link * .Fo PacketAliasRedirectProto .Fa "struct in_addr local_addr" .Fa "struct in_addr remote_addr" .Fa "struct in_addr alias_addr" .Fa "u_char proto" .Fc .Bd -ragged -offset indent 本関数は、指定したリモートアドレスからエイリアスアドレスへのプロトコル番号 .Fa proto の全パケットが、指定したローカルアドレスへリダイレクトすることを指定します。 .Pp .Fa local_addr または .Fa alias_addr が 0 の場合、 で確立したパケットエイリアスアドレスが使用されることを指定します。 .Fn PacketAliasSetAddress が .Fn PacketAliasRedirectProto の呼び出し後に アドレス変更のために呼び出されても、 0 リファレンスがこの変更を記録します。 .Pp .Fa remote_addr が 0 の場合、 全リモートホストからのパケットをリダイレクトすることを指定します。 非 0 のリモートアドレスは、ファイアウォール用途に有用な場合があります。 .Pp 2 個の .Fn PacketAliasRedirectProto 呼び出しが、アドレス指定において重なる場合、 最新の呼び出しが優先します。 .Pp 本関数は、後に .Fn PacketAliasRedirectDelete に使用可能なポインタを返します。 .Dv NULL が返される場合、関数呼び出しは正常に終了していません。 .Ed .Sh フラグメント操作 このセクションの関数は着信フラグメント操作で使用されます。 .Pp 発信フラグメントは、 .Fn PacketAliasRedirectAddr で設定した 適用可能な対応付によるアドレス変更により、 または .Fn PacketAliasSetAddress で設定した エイリアシングアドレスの省略時値により、 .Fn PacketAlaisOut 内で処理されます。 .Pp 着信フラグメントは 2 通りの方法で処理されます。 フラグメント化された IP パケットのヘッダが既に分かっている場合は、 一連のフラグメントはヘッダフラッグメントと 同じ方式で再対応付けされます。 フラグメントはヘッダが到着する前に保存され、 ヘッダフラグメントが消滅した段階で取り出されます。 .Pp .Ft int .Fn PacketAliasSaveFragment "char *ptr" .Bd -ragged -offset indent .Fn PacketAliasIn から .Dv PKT_ALIAS_UNRESOLVED_FRAGMENT 返されてくると、この関数が、 残っているフラグメントのポインタを保存するために使用できます。 .Pp 引数 .Fa ptr は .Xr malloc 3 で割り当てられたメモリブロックを 指すことが暗黙のうちに仮定されています。 フラグメントが解決されない場合、 パケットエイリアシングエンジンは タイムアウト時間経過後、自動的にメモリを解放します [実質的には、この関数は、 メモリ解放のコールバック関数が 引数として渡されるように修正しておく必要があります]。 .Pp この関数は、正常実行の場合 .Dv PKT_ALIAS_OK を返し、エラーの場合 .Dv PKT_ALIAS_ERROR を返します。 .Ed .Pp .Ft char * .Fn PacketAliasGetFragment "char *buffer" .Bd -ragged -offset indent この関数は、 .Fn PacketAliasSaveFragment で保管された フラグメントポインタの再取り出しができます。 .Fa buffer で示す IP ヘッダフラグメントは、 .Fn PacketAliasIn が .Fv PKT_ALIAS_FOUND_HEADER_FRAGMENT を返したときに指定される ヘッダフラグメントです。 フラグメントのポインタが再取り出しされると、 呼び出しプログラムによりフラグメントに 動的に割り当てられていたメモリが解放されます。 .Pp フラグメントがなくなるで .Fn PacketAliasGetFragment を続けて呼ぶことができます。 処理するフラグメントがなくなると .Dv NULL が返されてきます。 .Ed .Pp .Ft void .Fn PacketAliasFragmentIn "char *header" "char *fragment" .Bd -ragged -offset indent .Fn PacketAliasGetFragment によりフラグメントの再取得を行なうとき、 .Fn PacketAliasFragmentIn 呼び出しを実行して フラグメントのエイリアスを解除できます。 引数 .Fa header は、テンプレートとして使われているヘッダフラグメントのポインタです。 引数 .Fa fragment はエイリアス解除するパケットのポインタです。 .Ed .Sh その他の関数 .Ft void .Fn PacketAliasSetTarget "struct in_addr addr" .Bd -ragged -offset indent 既存のエイリアスリンクと関連のない 外からの着信パケットがホストマシンに到着すると、 それは .Fn PacketAliasSetTarget 呼び出しにより 指定されるアドレスへ送られます。 .Pp この関数が .Dv INADDR_NONE アドレスを引数として呼ばれた場合、 外からのあらゆる新規着信パケットは .Fn PacketAliasSetAddress で設定されるアドレスへ行きます。 .Pp この関数が .Dv INADDR_ANY アドレスを引数として呼ばれた場合、 外からのあらゆる新規着信パケットは パケット中で指定されるアドレスへ行きます。 外部のマシンが内部のマシンへ直接ルーティング可能な場合、 外部のマシンが直接内部のマシンと話すことを可能とします。 .Ed .Pp .Ft int .Fn PacketAliasCheckNewLink void .Bd -ragged -offset indent 新規のエイリアシングリンクが生成されると、 この関数は 0 以外の値を返します。 外からの着信トラフィックが順次異なるサーバへ送られるという状況下で、 この関数を .Fn PacketAliasSetTarget 呼び出しを デフォルトの目的アドレスを変更のため実行するときのトリガにできます。 .Ed .Pp .Ft u_short .Fn PacketAliasInternetChecksum "u_short *buffer" "int nbytes" .Bd -ragged -offset indent これはよそでは使うことがありませんが、 便利なユーティリティ関数です。 インターネットチェックサムを計算します。 チェックサムは、IP およびプロトコル (TCP, UDP, ICMP) 固有のヘッダのどちらでも使われています。 .Pp 引数 .Fa buffer はチェックサムを取るデータブロックを指しています。また .Fa nbytes はバイト数を与えます。 16 ビットのチェックサムフィールドは チェックサム計算の前に 0 クリアされます。 .Pp チェックサムはチェックサム自身を含めた データブロックの操作により検証することができます。 チェックサムが正しければ、 PacketAliasInternetChecksum() は 0 を返します。 .Ed .Pp .Ft int .Fn PacketUnaliasOut "char *buffer" "int maxpacketsize" .Bd -ragged -offset indent エイリアス処理済の外向きパケットは、 プライベートアドレス/ポートの情報を本関数によって復活されています。 .Fa buffer で指される IP パケットと .Fa maxpacketsize が、エラーチェックのために提供されています。 本関数は、エイリアス処理済パケットの元の IP ヘッダが 必要となる更なる処理 (例えばロギング) に使用可能です。 .Ed .Sh バグ PPTP エイリアスは、複数の内部クライアントが同一の外部サーバに 同時に接続すると動作しません。 なぜなら、PPTP は 2 つの IP アドレス間に 単一の TCP 制御接続を必要とするからです。 .Sh 作者 .An Charles Mott Aq cm@linktel.net , versions 1.0 - 1.8, 2.0 - 2.4。 .An Eivind Eklund Aq eivind@FreeBSD.org , versions 1.8b, 1.9 および 2.5。 アーキテクチャにおける数々の改善による貢献のほかに、 IRC DCC に関するサポートを行ないました。 ならびに FTP/IRC DCC のファイアウォールのバイパスです。 .An Erik Salander Aq erik@whistle.com が PPTP と RTSP のサポートを追加しました。 .An Junichi Satoh Aq junichi@junichi.org が RTSP/PNA のサポートを追加しました。 .Sh 謝辞 以下、概略時代順に示すのは、 有益なコメントやデバッグの手助けを提供してくれた人々の名前です。 .Pp .Bd -ragged -offset indent .An -split .An Gary Roberts .An Tom Torrance .An Reto Burkhalter .An Martin Renters .An Brian Somers .An Paul Traina .An Ari Suutari .An Dave Remien .An J. Fortes .An Andrzej Bialecki .An Gordon Burditt .Ed .Sh 概念的な背景 この付録は、ソースコードの修正を検討している人や、 パケットエイリアシング関数を使用して やや難解なアプリケーションを作成する人を対象としています。 .Pp ここにはパケットエイリアシングエンジンの 概念的なフレームワークが記述されています。 議論の中心は、ローカルマシンとエイリアスされた識別子 およびリモートマシン間の指定された パケットトランザクションの関係を定義している "エイリアシング リンク" に考え方についてです。 こうしたリンクがどのように発生して また消滅するかについて検討されています。 .Ss エイリアシングリンク .Em エイリアシング リンク は、 7 つの要素で記述できるという考え方があります: .Bd -literal -offset indent (ローカルアドレス、 ローカルポート番号、 エイリアスアドレス、エイリアスポート番号、 リモートアドレス、リモートポート、プロトコル) .Ed .Pp 外へ発信するパケットは、 ローカルアドレスとローカルポート番号が、 エイリアスアドレスとエイリアスポート番号で置き換えられます。 外から着信するパケットは、逆のプロセスで処理されます。 パケットエイリアシングエンジンは、 エイリアシングリンクの内部テーブルに対してパケットを対応させ、 指定 IP パケットの修飾方法を決定しようとします。 IP ヘッダおよびプロトコルに依存するヘッダのどちらも 必要に応じて修正されます。 エイリアシングリンクは、ネットワークのトラフィックにより、 必要に応じて生成、消滅が行なわれます。 .Pp プロトコルは、ある状況では TCP か UDP であり、 または ICMP であってかまいません (ICMP のある種のパケットタイプには、 個々のパケットの処理方式を決めるポート番号と同様な働きをする、 一連の id 番号にエイリアスすることができるものがあります)。 .Pp それぞれのエイリアスリンクは 次の 5 つの数値の組合せを持っていなければなりません。 すなわち、エイリアスアドレス / ポート、 リモートアドレス / ポート、およびプロトコルです。 このことによりローカルネットワーク上のいくつかのマシンは 同じエイリアス IP アドレスを共有することが可能となります。 競合が起こるケースでは、エイリアシングポートが、 一意性が保てるよう選択されます。 .Ss 静的および動的リンク エイリアシングリンクには静的および動的なものがあります。 静的リンクは無期限に存続し、IP パケットの変換に関しては 固定された規則を保持しています。 動的リンクは個別の TCP 接続や UDP トランザクションの エコーシーケンスに対して生成されます。 TCP の場合は、関連するエイリアシングリンクを 何時削除するべきかを知るために、接続を監視できます。 UDP トランザクション (および ICMP エコーとタイムスタンプ要求) は 単純なタイムアウト規則で動いています。 一定の時間、動的リンクを張るアクティビティが無いときは、 自動的に削除されます。 タイムアウト規則は適切なオープン / クローズを行なわない TCP 接続にも適用されます。 .Ss エイリアシングリンクの部分定義 エイリアシングリンクは部分的な定義が可能です。 これはリモートアドレスおよび (または) リモートポートが不明である場合に行ないます。 この場合、不完全な定義のパケットが見つかると、 完全仕様の動的リンクが生成されます。 元々の部分定義のリンクが動的なものである場合、 完全仕様のリンクが生成された後それは削除され、 そうでない場合無期限に残ることになります。 .Pp たとえば、部分定義リンクは次の通りです。 .Bd -literal -offset indent (192.168.0.4, 23, 204.228.203.215, 8066, 0, 0, tcp) .Ed .Pp 0 の値はリモートアドレスおよびポートの未定義部分を表しています。 リンクが静的なものであれば、 外から着信してくる全トラフィックを アドレス 204.228.203.215 のポート 8066 から、 ローカルネットワーク上の 192.168.0.4 のアドレスを持つマシンの ポート 23 (telnet) へリダイレクトすることになります。 .Ss A.4 動的リンクの生成 エイリアシングリンクに加え、 パケットエイリアシング機構を持つ 内部データテーブルに格納できるアドレス対応表があります。 .Bd -literal -offset indent (ローカルアドレス、エイリアスアドレス) .Ed .Pp アドレス対応表は動的リンク生成時に必要とされます。 .Pp ローカルネットワークから外へ発信するあらゆるパケットは、 既存の完全定義されたリンクと一致していなければ、 動的リンクを自動的に生成します。 これは発信するパケットに関し、 アドレス対応があれば使用されるエイリアスアドレスを決定します。 対応が無ければ、 デフォルトアドレスが通常エイリアシングホストのアドレスですが、 使用されます。 必要であれば、デフォルトアドレスは 個々のパケットが到着するたびに変更できます。 .Pp エイリアシングポート番号は、 新たな動的リンクが既存のリンクと競合しないよう決められます。 デフォルト操作モードでは、パケットエイリアシングエンジンは ローカルポート番号と同じ番号を エイリアシングポートとして設定しようとします。 その結果競合すれば、ポート番号は一意なエイリアシングリンクとなるまで 無作為に選択が行なわれます。 予備の操作モードでは、 エイリアシングポートの最初の選択は無作為に、 またローカルポート番号と無関係に行なわれます。 Index: head/ja_JP.eucJP/man/man3/property.3 =================================================================== --- head/ja_JP.eucJP/man/man3/property.3 (revision 22767) +++ head/ja_JP.eucJP/man/man3/property.3 (revision 22768) @@ -1,95 +1,97 @@ .\" .\" Copyright (c) 1998 Jordan Hubbard .\" .\" 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 DEVELOPERS ``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 DEVELOPERS 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/lib/libutil/property.3,v 1.8.2.7 2001/12/17 10:08:32 ru Exp % .\" $FreeBSD$ .\" " .Dd October 7, 1998 .Os .Dt PROPERTIES 3 .Sh 名称 .Nm properties_read , .Nm propery_find , .Nm properties_free .Nd 単純なプロパティリストを ASCII から作成する関数 +.Sh ライブラリ +.Lb libutil .Sh 書式 .In sys/types.h .In libutil.h .Ft properties .Fn properties_read "int fd" .Ft char * .Fn property_find "properties list" "const char *name" .Ft void .Fn properties_free "properties list" .Sh 解説 .Bd -literal typedef struct _properties { struct _properties *next; char *name; char *value; } *properties; .Ed .Pp 関数 .Fn properties_read は、 .Fa fd で渡されたファイル記述子から名前と値のペアを読み込み、 ファイルの内容が適切に分析されたものとして新しい プロパティリストのヘッドを戻します。エラーが発生した場合は NULL が返されます。 返される値は、最大長 .Dv PROPERTY_MAX_VALUE バイトまでです。 .Pp .Fn property_find は、 .Fa name という名前のプロパティの関連値ストリングを 戻します。このプロパティが見つからない場合は NULL を戻します。 .Pp .Fn properties_free は、 .Fn properties_read が戻した構造体が必要なくなった 場合にそれを解放します。 .Sh ファイル形式 ファイルの各プロパティは、 .Fa name = value というフォーマットになっていると 想定されます。 .Fa name は英数字文字列 (および `=' 以外の特殊文字) です。 .Fa value は、改行文字で終わる、テキストの任意のストリングです。改行する 場合は、値全体を { } で囲む必要があります。# か ; で始まる行は コメントとみなされて無視されます。 .Sh 関連項目 .Xr auth_getval 3 .Sh バグ 単純です。 .Sh 作者 .An Jordan Hubbard Index: head/ja_JP.eucJP/man/man3/rint.3 =================================================================== --- head/ja_JP.eucJP/man/man3/rint.3 (revision 22767) +++ head/ja_JP.eucJP/man/man3/rint.3 (revision 22768) @@ -1,68 +1,70 @@ .\" Copyright (c) 1985, 1991 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. .\" .\" from: @(#)rint.3 5.1 (Berkeley) 5/2/91 .\" %FreeBSD: src/lib/msun/man/rint.3,v 1.6.2.2 2001/12/17 10:08:36 ru Exp % .\" .\" $FreeBSD$ .Dd March 10, 1994 .Dt RINT 3 .Os .Sh 名称 .Nm rint , .Nm rintf .Nd 浮動小数点形式で整数値への丸め +.Sh ライブラリ +.Lb libm .Sh 書式 .In math.h .Ft double .Fn rint "double x" .Ft float .Fn rintf "float x" .Sh 解説 .Fn rint および .Fn rintf 関数は、広く行なわれている丸め方法に従って、 (倍精度数または単精度数として表現される) .Fa x に最も近い整数値を返します。 .Sh 関連項目 .Xr abs 3 , .Xr ceil 3 , .Xr fabs 3 , .Xr floor 3 , .Xr ieee 3 , .Xr math 3 .Sh 歴史 .Fn rint 関数は、 .At v6 で登場しました。 Index: head/ja_JP.eucJP/man/man3/tcgetpgrp.3 =================================================================== --- head/ja_JP.eucJP/man/man3/tcgetpgrp.3 (revision 22767) +++ head/ja_JP.eucJP/man/man3/tcgetpgrp.3 (revision 22768) @@ -1,83 +1,85 @@ .\" Copyright (c) 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. .\" .\" @(#)tcgetpgrp.3 8.1 (Berkeley) 6/4/93 .\" %FreeBSD: src/lib/libc/gen/tcgetpgrp.3,v 1.6.2.2 2001/12/14 18:33:51 ru Exp % .\" .\" $FreeBSD$ .Dd June 4, 1993 .Dt TCGETPGRP 3 .Os .Sh 名称 .Nm tcgetpgrp .Nd フォアグラウンドの処理グループIDを取得 +.Sh ライブラリ +.Lb libc .Sh 書式 .In sys/types.h .In unistd.h .Ft pid_t .Fn tcgetpgrp "int fd" .Sh 解説 .Fn tcgetpgrp 関数は、端末デバイスで行っているフォアグラウンドの処理 グループの処理グループ ID を返します。フォアグラウンドの処理グループがない場合、 .Fn tcgetpgrp は無効なプロセス ID を返します。 .Sh エラー エラーが起きた場合、 .Fn tcgetpgrp は -1 を返し、エラーを示すために 次のようにグローバル変数 .Va errno が設定されます: .Bl -tag -width Er .It Bq Er EBADF 引数 .Fa fd が有効なファイル記述子ではありません。 .It Bq Er ENOTTY 呼び出し側処理が制御端末を持っていないか、または .Fa fd で表わされている端末デバイスが制御端末ではありません。 .El .Sh 関連項目 .Xr setpgid 2 , .Xr setsid 2 , .Xr tcsetpgrp 3 .Sh 規格 .Fn tcgetpgrp 関数は、 .St -p1003.1-88 規格に適合しているものと考えられます。 Index: head/ja_JP.eucJP/man/man3/tzset.3 =================================================================== --- head/ja_JP.eucJP/man/man3/tzset.3 (revision 22767) +++ head/ja_JP.eucJP/man/man3/tzset.3 (revision 22768) @@ -1,320 +1,319 @@ .\" Copyright (c) 1989, 1991, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" This code is derived from software contributed to Berkeley by .\" Arthur Olson. .\" .\" 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. .\" .\" @(#)tzset.3 8.2 (Berkeley) 11/17/93 .\" %FreeBSD: src/lib/libc/gen/tzset.3,v 1.6.2.5 2001/12/14 18:33:51 ru Exp % .\" .\" $FreeBSD$ .Dd November 17, 1993 .Dt TZSET 3 .Os .Sh 名称 .Nm tzset , .Nm tzsetwall .Nd 時間変換情報の初期化 .Sh ライブラリ .Lb libc .Sh 書式 .In time.h .Ft void .Fn tzset void .Ft void .Fn tzsetwall void .Sh 解説 .Fn tzset 関数は、ライブラリルーチン .Xr localtime 3 により使用される 時間変換情報を初期化します。環境変数 .Ev TZ は、この変換をどのように行うかを指定します。 .Pp 環境に .Ev TZ が現れていない場合は、 .Xr tzfile 5 形式のファイル .Pa /etc/localtime により指定されたローカル壁時計時間に最も近い近似値が用いられます。 .Pp 環境に .Ev TZ が現れているがその値が null ストリングである場合には、 世界標準時刻 .Pq Tn UTC が用いられます ( うるう秒補正なしで )。 .Pp 環境に .Ev TZ が現れ、その値がコロン .Pq Ql \&: で始まる場合は、それ以降の値が .Xr tzfile 5 形式ファイルのパス名として用いられ、そこから時間変換情報が読み 込まれます。パス名の最初のキャラクタがスラッシュ .Pq Ql / である場合は、それは 絶対パス名として用いられます。それ以外の場合は、そのパス名はシステムの 時間変換情報ディレクトリに対する相対パス名として用いられます。 .Pp その値がコロンで始まらない場合は、それはまず ( 上に 説明したように ) 時間変換情報の読み取り用ファイルのパス名として 用いられます。そのファイルが読めない場合は、その値は時間変換情報の 直接的仕様 ( 形式は下に説明 ) であると解釈されます。 .Pp 環境変数 .Ev TZ が .Xr tzfile 5 形式ファイルを指定しておらず、直接的仕様と解釈できない場合は、 .Tn UTC が用いられます。 .Pp .Fn tzsetwall 関数は、ローカル壁時計時間に最も近い近似値を返すように調整を行います。 -.Pp -仕様形式 +.Sh 仕様形式 .Ev TZ を時間変換情報の仕様として直接使う場合は、次のようなシンタックスを 持つ必要があります ( 空白は読みやすくするために入れてあります ): .Bd -ragged -offset indent .Em std offset .Bo .Em dst .Bq Em offset .Bq , Em rule .Bc .Ed .Pp ここで: .Bl -tag -width std_and_dst -offset indent .It Em std と Em dst 標準時間帯 ( .Em std ) または夏時間帯 ( .Em dst ) の指示子である 3 以上のバイト。必要なのは .Em std のみです。 .Em dst がない場合は、この地域では 夏時間が適用されません。大文字と小文字の区別は明示的に許可されます。先頭の コロン .Pq Ql \&: , 小数点、コンマ .Pq Ql \&, , マイナス .Pq Ql \- , プラス .Pq Ql + , および .Tn ASCII .Dv NUL 以外のキャラクタであれば使えます。 .Pp .It Em offset 世界標準時を計算するためにローカル時間に加えるべき値を示します。 .Em offset は、次のような形式を持ちます: .Bd -ragged -offset indent .Sm off .Em hh Bo .Em : mm .Bq Em : ss .Bc .Sm on .Ed .Pp 分 .Pq Em mm および秒 .Pq Em ss を付けるのは任意です。時 .PQ Em hh は必要で、 1 桁の数字でも構いません。 .Em std に続く .Em offset は必要です。 .Em dst の後に .Em offset がない場合は、夏時間は標準時間よりも 1 時間進むものとみなします。 1 桁 以上の数字が使えます。値は常に十進数であると解釈されます。 時は 0 から 24 までの間、 また分 ( および秒 ) を指定する場合は 0 から 59 までの間でなければなりません。 先頭に .Pq Ql \- が付いている場合は、時間帯は本初子午線の東となります。それ以外の 場合は、西となります ( 任意で先頭に .Pq Ql + を付けて指定しても構いません ) 。 .Pp .It Em rule いつ夏時間に変更するか、またいつ夏時間から元に戻すかを示します。 .Em rule は次のような形式を持ちます: .Bd -ragged -offset indent .Em date/time,date/time .Ed .Pp ここで、最初の .Em date は標準時間から夏時間への変更がいつ起きるかを表し、 2 番目の .Em date はいつ元に戻すかを表します。それぞれの .Em time フィールドは、 現在のローカル時間からもう一方の時間への変更をいつ行うかを表します。 .Pp .Em date の形式は、次のいずれかです: .Bl -tag -width "M.m.n.d" .It Sy J Em n ユリウス日 .Em n (1 \*(Le .Em n \*(Le 365)。 うるう日は数えません。 すなわち、 うるう年を含めたすべての年で 2 月 28 日は 59 日目、 3 月 1 日は 60 日目になります。ときどきやってくる 2 月 29 日を明示的に 参照することはできません。 .It Em n 0 を基準にしたユリウス日 (0 \*(Le .Em n \*(Le 365 )。 うるう日は数えられ、 2 月 29 日を参照することは可能です。 .It Sy M Em m.n.d ある年の .Em m 番目の月の第 .Em n 週の .Em d (0 \*(Le .Em d \*(Le 6) 番目の曜日 (1 \*(Le .Em n \*(Le 5), (1 \*(Le .Em m \*(Le 12)。 ここで、第 5 週とは 第 4 週目または第 5 週目に起きる .Do 第 .Em m 月の最後の .Em d 番目の日 .Dc を意味します。第 1 週は、 .Em d 番目の日が起きる最初の週です。第 0 日は日曜日です。 .Pp .Em time は、先頭の符号 .Pq Ql \- または .Pq Ql + が許されないこと以外は、 .Em offset と同じ形式を持ちます。 .Em time を与えない場合は、 .Sy 02:00:00 がデフォルト値となります。 .El .Pp .Ev TZ 仕様に .Em rule がない場合は、システム時間変換情報ディレクトリの中の .Xr tzfile 5 形式ファイル .Em posixrules により指定された規則が用いられ、標準時間および夏時間の .Tn UTC からのオフセットは .Ev TZ の .Em offset 値で指定された値により置き換えられます。 .El .Pp System V Release 3.1 との互換性を持たせるため、 .Em rule を残りの仕様から区別するためにセミコロン .Pq Ql \&; を使うこともできます。 -.Sh ファイル +.Sh 関連ファイル .Bl -tag -width /usr/share/zoneinfo/posixrules -compact .It Pa /etc/localtime ローカル時間帯ファイル .It Pa /usr/share/zoneinfo 時間帯ディレクトリ .It Pa /usr/share/zoneinfo/posixrules .Tn POSIX スタイルの .Tn TZ に関する規則 .It Pa /usr/share/zoneinfo/GMT .Tn UTC うるう秒 .El .Pp .Pa /usr/share/zoneinfo/GMT ファイルが存在しない場合は、 .Tn UTC うるう秒は .Pa /usr/share/zoneinfo/posixrules からロードされます。 .Sh 関連項目 .Xr date 1 , .Xr gettimeofday 2 , .Xr ctime 3 , .Xr getenv 3 , .Xr time 3 , .Xr tzfile 5 .Sh 歴史 .Fn tzset および .Fn tzsetwall 関数は、最初に .Bx 4.4 に現れました。 Index: head/ja_JP.eucJP/man/man3/unvis.3 =================================================================== --- head/ja_JP.eucJP/man/man3/unvis.3 (revision 22767) +++ head/ja_JP.eucJP/man/man3/unvis.3 (revision 22768) @@ -1,162 +1,162 @@ .\" Copyright (c) 1989, 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. .\" .\" @(#)unvis.3 8.2 (Berkeley) 12/11/93 .\" %FreeBSD: src/lib/libc/gen/unvis.3,v 1.6.2.5 2001/12/14 18:33:51 ru Exp % .\" $FreeBSD$ .\" .Dd December 11, 1993 .Dt UNVIS 3 .Os .Sh 名称 .Nm unvis , .Nm strunvis .Nd キャラクタの画像表現のデコード -.Sh 書式 .Sh ライブラリ .Lb libc +.Sh 書式 .In vis.h .Ft int .Fn unvis "char *cp" "int c" "int *astate" "int flag" .Ft int .Fn strunvis "char *dst" "const char *src" .Sh 解説 .Fn unvis および .Fn strunvis 関数は、例えば .Xr vis 3 関数によって作り 出されたようなキャラクタの画像表現をデコードして元の形に戻します。 unvisは .Ar c にある連続するキャラクタとともに有効なシーケンスが認識されるまで呼び 出され、それが認識されるとデコードされたキャラクタが .Ar cp によって指されるキャラクタのところに置かれます。 strunvisは、 .Ar src により指されるキャラクタを .Ar dst により指されるバッファへデコードします。 .Pp .Fn strunvis 関数は、エスケープシーケンスをデコードしながら単に .Ar src を .Ar dst へコピーし、 .Ar dst に置かれたキャラクタの数を返すか、または無効な エスケープシーケンスが検出された場合には \-1 を返します。 .Ar dst のサイズは、 .Ar src のサイズに等しくなければなりません (すなわち、デコード中には拡張は 起こりません)。 .Pp .Fn unvis 関数は、任意のバイトストリームをデコードできるステートマシンを インプリメントしています。デコードされるそのバイトに付随するすべての ステートは、 .Fn unvis 関数の外に保存されますから (すなわち、ステートへの ポインタは渡されますから)、異なるストリームをデコードする呼び出しを自由に 混在することができます。バイトストリームのデコードを開始するには、まず 整数をゼロに初期化します。この整数へのポインタおよびデコード先キャラクタ へのポインタとともに連続するバイトのそれぞれに .Fn unvis を呼び出します。 .Fn unvis 関数は、適切に取扱わねばならないいくつかのリターンコードを 持っています。それらは次の通りです: .Bl -tag -width UNVIS_VALIDPUSH .It Li \&0 (ゼロ) キャラクタがもう一つ必要であり、まだ何も認識されていません。 .It Dv UNVIS_VALID 有効なキャラクタが認識され、cp によって指される場所に置かれています。 .It Dv UNVIS_VALIDPUSH 有効なキャラクタが認識され、cp によって指される場所に 置かれています。しかし、現在渡されているそのキャラクタをもう一度渡す 必要があります。 .It Dv UNVIS_NOCHAR 有効なシーケンスが検出されたが、キャラクタは 作成されていません。このリターンコードは、キャラクタの間の論理的区切りを 示すために必要です。 .It Dv UNVIS_SYNBAD 無効なエスケープシーケンスが検出されたか、または デコーダが不明のステートにあります。デコーダはスタート時のステートに 置かれます。 .El .Pp ストリームのすべてのバイトが処理されたとき、 .Ar flag を .Dv UNVIS_END に設定してもう一度 .Fn unvis を呼び出して残っているキャラクタを 抽出します (渡されたキャラクタは無視されます)。 .Pp 次のような部分的コードは、 .Fn unvis の適切な使用法を示しています。 .Bd -literal -offset indent int state = 0; char out; while ((ch = getchar()) != EOF) { again: switch(unvis(&out, ch, &state, 0)) { case 0: case UNVIS_NOCHAR: break; case UNVIS_VALID: (void) putchar(out); break; case UNVIS_VALIDPUSH: (void) putchar(out); goto again; case UNVIS_SYNBAD: (void)fprintf(stderr, "bad sequence!\en"); exit(1); } } if (unvis(&out, (char)0, &state, UNVIS_END) == UNVIS_VALID) (void) putchar(out); .Ed .Sh 関連項目 .Xr vis 1 .Sh 歴史 .Fn unvis 関数は、 .Bx 4.4 ではじめて登場しました。 Index: head/ja_JP.eucJP/man/man7/groff.7 =================================================================== --- head/ja_JP.eucJP/man/man7/groff.7 (revision 22767) +++ head/ja_JP.eucJP/man/man7/groff.7 (revision 22768) @@ -1,3578 +1,3577 @@ '\" t .ig groff.7 This file is part of groff, the GNU roff type-setting system. Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc. written by Bernd Warken maintained by Werner Lemberg Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the Invariant Sections being this .ig-section and AUTHOR, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the Free Documentation License is included as a file called FDL in the main directory of the groff source package. .. .\" Japanese Version Copyright (c) 2001 UCHIDA Norihiro all rights reserved. .\" Translated Thu Feb 15 2001 by UCHIDA Norihiro .\" .\" Copyright (c) 2001 FreeBSD jpman project .\" This is for Japanese translation done by FreeBSD jpman project. .\" $FreeBSD$ .\" .\"WORD: diversion ディバージョン[groff.7] .\"WORD: divert 転換する(出力データを別の場所に貯め込むこと)[groff.7] .\"WORD: line adjustment 行の位置揃え[groff.7] .\"WORD: roff formatting system roff 清書システム[groff.7] .\"WORD: control line 制御行[groff.7] .\"WORD: formatting element 整形要素[groff.7] .\"WORD: in-line 行埋め込み式の[groff.7] .\"WORD: scaling indicator 単位指定子[groff.7] .\"WORD: trap トラップ[groff.7] .\"WORD: no-break control character 非改行制御文字[groff.7] .\"WORD: center センタリングする(動詞)[groff.7] .\"WORD: special 特別フォント[groff.7] .\"WORD: leader リーダ(目次などで項目とページ番号の間に引く線)[groff.7] .\"WORD: intra-line skip 行間スキップ(行と行の間に入れる空き)[groff.7] .\"WORD: fill 行詰め(する)[groff.7] .\"WORD: built-in condition 組み込み条件式[groff.7] .\"WORD: baseline 基準線(文字位置の基準となる水平線)[groff.7] .\"WORD: line-tabs mode 行タブモード[groff.7] .\"WORD: first measure 最初のステップ[groff.7] . .\" -------------------------------------------------------------------- .\" Setup .\" -------------------------------------------------------------------- . .mso www.tmac . .if n \{\ . mso tty-char.tmac . ftr CR R . ftr CI I . ftr CB B .\} . .if '\*[.T]'dvi' \{\ . ftr CB CW .\} . . .\" -------------------------------------------------------------------- .\" start of macro definitions .eo . .de c .. . .de TPx . TP 10n .. .c --------------------------------------------------------------------- .c .Text anything ... .c .c All arguments are printed as text. .c .de Text . nop \)\$* .. .c --------------------------------------------------------------------- .c .ExecFF macro font1 font2 text1 text2 text1 text2 ... .c .c Concat text arguments using alternating fonts and feed into macro. .c For a trailing punctuation, terminate the call with \c. .c .de ExecFF . if (\n[.$] < 4) \ . return . ds @a\" . ds @m \$1\" . ds @f1 \$2\" . ds @f2 \$3\" . shift 3 . ds @s\" . while 1 \{\ . if (\n[.$] = 0) \ . break . ds @a \$1\" . as @s \f[\*[@f1]]\*[@a]\f[]\" . shift . if (\n[.$] = 0) \ . break . ds @a \$1\" . as @s \f[\*[@f2]]\*[@a]\f[]\" . shift . \} . \*[@m] "\*[@s]\f[R]" . ft P \" to make \c happy . rm @m . rm @s . rm @a . rm @f1 . rm @f2 .. . .c --------- command line option --------- . .de option . Text \f[CB]\$* . ft P .. . .c --------- characters --------- . .de character . ExecFF Text CB R \$* .. .de squoted_char . ds @1 \$1\" . shift . ExecFF Text R CB \[oq] \*[@1] "\[cq]\$*" . rm @1 .. .de dquoted_char . ds @1 \$1\" . shift . ExecFF Text R CB \[lq] \*[@1] "\[rq]\$*" . rm @1 .. .c --------- requests --------- . .c synopsis of a request .de REQ . if (\n[.$] = 0) \ . return . ds @1 \$1\" . shift 1 . ie (\n[.$] = 0) \{\ . TP 10n . Text \f[CB]\*[@1]\f[] . \} . el \{\ . TP 10n . Text \f[CB]\*[@1]\~\f[]\f[I]\$*\f[] . \} . rm @1 .. .c reference of a request .de request . BR \$* .. . .c --------- numerical elements --------- . .c number with a trailing unit .de scalednumber . Text \$1\^\f[CB]\$2\f[]\$3\f[R] . ft P .. . .c representation of units within the text .de scaleindicator . Text \f[CB]\$1\f[]\$2\f[R] . ft P .. . .c representation of mathematical operators within the text .de operator . squoted_char \$@ .. . . .c --------- escape sequences --------- . .c --------------------------------------------------------------------- .c .ESC name [arg] .c .c Synopsis of an escape sequence, optionally with argument .c Args : 1 or 2; `name' obligatory, `arg' optional .c name : suitable name for an escape sequence (c, (xy, [long]) .c arg : arbitrary word .c Result : prints \namearg, where `name' is in CB, `arg' in I .c .de ESC . if (\n[.$] < 1) . ab .ESC needs 1 or 2 arguments. . ExecFF IP CB I "\[rs]\$1" "\,\$2\/" .. .c --------------------------------------------------------------------- .c .ESC[] name arg .c .c Synopsis for escape sequence with a bracketed long argument .c Args : 2 obligatory .c name : suitable name for an escape sequence (c, (xy, [long]) .c arg : arbitrary text .c Result : prints \name[arg], where `name' is in CB, `arg' in I .c .de ESC[] . if !(\n[.$] = 2) \ . ab .ESC[] needs exactly 2 arguments. . ExecFF IP CB I "\[rs]\$1\[lB]" "\h'-0.2m'\$2\h'-0.15m'" \[rB] .. .c --------------------------------------------------------------------- .c .ESCq name arg .c .c Synopsis for escape sequence with a bracketed long argument .c Args : 2 obligatory .c name : suitable name for an escape sequence (c, (xy, [long]) .c arg : arbitrary text .c Result : prints \name'arg', where `name' is in CB, `arg' in I .c .de ESCq . if !(\n[.$] = 2) \ . ab .ESCq needs exactly 2 argument. . ExecFF IP CB I "\[rs]\$1\[cq]" "\h'-0.3m'\$2" \[cq] .. .c --------------------------------------------------------------------- .c .ESC? arg .c .c Synopsis for escape sequence with a bracketed long argument .c Args : 1 obligatory .c arg : arbitrary text .c Result : prints `\?arg?', where the `?' are in CB, `arg' in I .c .de ESC? . if !(\n[.$] = 1) \ . ab .ESC? needs exactly 1 arguments. . ExecFF IP CB I \[rs]? "\$1" ? .. .c --------------------------------------------------------------------- .c .esc name [punct] .c .c Reference of an escape sequence (no args), possibly punctuation .c Args : 1 obligatory .c name : suitable name for an escape sequence (c, (xy, [long]) .c punct : arbitrary .c Result : prints \name, where `name' is in B, `punct' in R .c .de esc . if (\n[.$] < 1) \ . ab .esc needs 1 or 2 arguments. . BR "\[rs]\$1" \$2 .. .c --------------------------------------------------------------------- .c .escarg name arg [punct] .c .c Reference of an escape sequence (no args) .c Args : 1 obligatory, 1 optional .c name : suitable name for an escape sequence (c, (xy, [long]) .c arg : arbitrary word .c Result : prints \namearg, where .c `name' is in B, `arg' in I .c .de escarg . if (\n[.$] < 2) \ . ab .esc needs 2 or 3 arguments. . Text \f[B]\[rs]\$1\f[]\f[I]\$2\f[]\$3 .. .c --------------------------------------------------------------------- .c .esc[] name arg [punct] .c .c Reference for escape sequence with a bracketed long argument .c Args : 2 obligatory .c name : suitable name for an escape sequence (c, (xy, [long]) .c arg : arbitrary text .c Result : prints \name[arg], where `name' is in CB, `arg' in CI .c .de esc[] . if (\n[.$] < 2) \ . ab .esc[] needs 2 or 3 arguments. . Text \f[B]\[rs]\$1\[lB]\f[]\f[I]\$2\f[]\f[B]\[rB]\f[]\$3 .. . .c --------------------------------------------------------------------- .c .escq name arg .c .c Reference for escape sequence with a bracketed long argument .c Args : 2 obligatory .c name : suitable name for an escape sequence (c, (xy, [long]) .c arg : arbitrary text .c Result : prints \name'arg', where `name' is in CB, `arg' in CI .c .de escq . if (\n[.$] < 2) \ . ab .escq needs 2 arguments. . Text \f[B]\[rs]\$1\[cq]\f[]\f[I]\$2\f[]\f[B]\[cq]\f[]\$3 .. . .c --------- strings --------- . .c synopsis for string, with \*[] .de STRING . ds @1 \$1\" . shift 1 . TP 10n . ExecFF Text R CB \[rs]*[ \*[@1]\f[]\f[R]] \$* . rm @1 .. .c synopsis for a long string .de string . if (\n[.$] = 0) \ . return . Text \f[CB]\[rs]*\[lB]\$1\[rB]\f[]\$2 .. . . .c --------- registers --------- . .c synopsis for registers, with \n[] .de REG . ds @1 \$1\" . shift 1 . TP 10n . ExecFF Text R CB \[rs]n[ \*[@1]\f[]\f[R]] \$* . rm @1 .. .c reference of a register, without decoration .de register . Text register . BR \$* .. . .ec .\" end of macro definitions . . .\" -------------------------------------------------------------------- .\" Title .\" -------------------------------------------------------------------- . .TH GROFF 7 "6 August 2001" "Groff Version 1.17.2" .SH 名称 groff \- GNU roff 言語の簡易リファレンス . . .\" -------------------------------------------------------------------- .SH 解説 .\" -------------------------------------------------------------------- .I groff という名前は、 .I GNU roff を表しており、roff 清書システムをフリーで実装したものです。 groff システムの概観ならびに背景については .BR roff (7) を参照してください。 . .P このドキュメントでは、groff 内で使用される、あらかじめ定義された roff 言語要素を簡潔に説明しているだけです。 古くからある機能と groff 拡張機能についての両方とも扱っています。 . .P 歴史的に、 .I roff 言語 は .IR troff と呼ばれています。 .I groff は、古くからあるシステムと互換性を持ちつつ、独自の拡張機能も 提供しています。 そのため GNU 版では、 .IR roff , .IR troff , .I groff 言語 という術語は同義として使うこともできるでしょう。 しかし、 .I troff は、どちらかと言えば古くからの機能に対して適用されるという 傾向があり、それに対して、 .I groff は GNU 拡張に重きを置いています。 そして、 .I roff は、この言語の一般的な術語になっています。 . .P このファイルは、 .I groff .BR info (1) ファイルにある完全なドキュメントの簡易版に過ぎません。 info ファイルの方がより詳細で実情に近く、正確な情報を含んでいます。 . .P groff ドキュメントを書くために使う一般的な文法は比較的 やさしいのですが、 roff 言語の拡張機能を書くのは少々骨が折れるかもしれません。 . .P roff 言語は、行指向の言語です。 行には、制御行とテキスト行の 2 種類しかありません。 制御行は制御文字で始まります。 制御文字は、デフォルトではピリオド .dquoted_char . あるいはシングルクォート .dquoted_char ' です。 そのほかの文字で始まる行はすべてテキスト行です。 . .P .B 制御行 は、コマンドを表し、オプションで引数を取ることもあります。 制御行は、次のような文法になります。 先頭の制御文字の後には、コマンド名を続けることができます。 引数は、もしあれば、コマンド名や他の引数と空白で分けられます。 例えば、次のようにします。 .RS . .P .Text .command_name arg1 arg2 .RE . .P インデント用に、先頭の制御文字とコマンド名との間にはスペースや タブ文字をいくつ入れても良いですが、制御文字は行の先頭になくては なりません。 . .P .B テキスト行 は、表示される部分のことです。 テキスト行はエスケープシーケンスで変更することができます。 エスケープシーケンスは先頭にバックスラッシュ .squoted_char \[rs] を置くことで認識されます。 これらは、行や単語の一部に含まれ、整形要素となったり 関数となったりします。 エスケープシーケンスには、シングルクォート .dquoted_char ' で区切られた引数を取るものもありますし、 開き括弧 .squoted_char ( に続いて符合化され長さの一定なものや、角括弧 .squoted_char [ と .squoted_char ] で括られているものもあります。 . .P roff 言語は、マクロなど、言語拡張機能を書くための柔軟な手段を 提供しています。 マクロ定義を解釈する際に、roff システムは .BR "コピーモード" と呼ばれる特別なモードに入ります。 . .P コピーモードの振る舞いはとても扱いにくいものでもありますが、 確実に安全に使えるようにするルールがいくつかあります。 .IP 1. 表示可能なバックスラッシュは .esc e と記述しなくてはなりません。 もっと正確に言えば、 .esc e は現在のエスケープ文字を表します。 バックスラッシュのグリフを得るには .esc (rs または .esc [rs] を使用してください。 .IP 2. バックスラッシュはすべて 2 重にしてください。 .IP 3. テキスト行はすべて、スペースをとらない特殊文字 .esc & で始めてください。 . .P このやり方は、一番効率の良いコードが生成できる というわけではありませんが、最初の一歩としては使えるはずです。 さらに良いやり方については groff info ファイルおよび .BR groff_tmac (5) を参照してください。 . .P roff ソースファイルを読むのはこれよりは簡単です。 すべてのマクロ定義部分で 2 重になっているバックスラッシュを 1 つに置き換えればよいだけです。 . .\" -------------------------------------------------------------------- .SH "groff 要素" .\"-------------------------------------------------------------------- roff 言語の要素は、テキストファイルに整形用情報を 付加するものです。 基本的な要素は、あらかじめ定義されたコマンド および変数であり、 この要素のおかげで roff は本格的なプログラミング言語に なっているのです。 . .P roff コマンドには 2 種類あります。 コマンドは引数を取ることもあります。 .B リクエスト は、ドット .squoted_char . あるいは .dquoted_char ' で始まる行に書かれるものです。 これに対して .B エスケープシーケンス は、 バックスラッシュ .squoted_char \[rs] で始まる、行埋め込み式の関数や単語中の整形要素です。 . .P ユーザは独自の整形コマンドを .request de リクエストを使って定義することができます。 これらのコマンドは .BR マクロ と呼ばれていますが、実際にはリクエストとまったく同様に使われます。 マクロパッケージは groff 言語で書かれた定義済みのマクロセットです。 ユーザが独自にエスケープシーケンスを作成できる場合というのは 非常に限られており、特殊文字のみマップすることができます。 . .P groff 言語は、異なるインタフェースを持ついくつかの種類の変数を 提供しています。 定義済みの変数もありますが、ユーザも同様に自分で変数を定義できます。 . .P .B 文字列 変数は文字列を格納します。 この変数は .request ds リクエストで設定され、値は .esc * エスケープシーケンスを使って取り出します。 . 文字列は、変数を持つことができます。 . .P .B レジスタ 変数は数値、スケールファクタつき数字、 場合によっては文字列に似たオブジェクトを格納できます。 .request nr リクエストで設定され、値は .esc n エスケープシーケンスを使って取り出します。 . .P .B 環境 を使うことによって、行の長さやフォントサイズなどのような グローバルな整形パラメータを、後で再利用できるように ユーザが一時的に格納することができます。 これは .request ev リクエストによって行われます。 . .P .B フォント は、名前もしくは内部番号のどちらかで判別されます。 現在のフォントは .request ft リクエストもしくは .esc f エスケープシーケンスで選択されます。 デバイスごとに特別フォントがありますが、次のフォントはすべての デバイスで利用可能です。 .B R は標準フォント、ローマン体です。 .B B はその .B ボールド体 です。 .I イタリック体 フォントは .B I と呼ばれておりどこででも利用可能ですが、テキストデバイスでは ローマン体フォントに下線がついたものとして表示されます。 グラフィカルの出力デバイスに対しては、次のフォントの固定幅の 修飾文字が存在します。 .BR CR , .BR CI , および .BR CB です。 テキストデバイスでは、いずれにしても文字はすべて固定幅です。 . .P さらに、roff の拡張要素がいくつかあります。 .B ディバージョン は、後で利用できるように情報をマクロに格納します。 .B トラップ は、ページの先頭から何行目とか、ディバージョンや入力において 何行目というような位置条件です。 アクションの中には、条件が揃ったときに自動的に起動するように 指示できるものがあります。 . .P これより詳細な情報と例については、groff info ファイルに示されています。 . .\" -------------------------------------------------------------------- .SH "制御文字" .\" -------------------------------------------------------------------- ある条件下で特別な制御タスクをもつ文字が いくつかあります。 .TP .character . ドットは、行の先頭あるいは .request if , .request ie , .request el , および .request while リクエスト中の条件の後にある場合のみ特別です。 その位置では、リクエスト (あるいはマクロ) を導入する制御文字になります。 .esc . エスケープを使うと、この特別な動作を遅らせることができます。 .request cc リクエストを使うことで、この制御文字を別の文字に設定して、 ドット .squoted_char . を特殊文字でなくすることができます。 .IP "" 他の位置にドットがあるときは、ただのドット文字以上の意味はありません。 テキスト段落の中では、文はそれぞれ新しい行で始めるほうが有利です。 .TP .character ' シングルクォートには 2 つの制御機能があります。 行の先頭および条件リクエスト内では、 シングルクォートは非ブレーク制御文字になります。 これは、ドットのようにリクエストを導入しますが、 リクエストが行を折り返さないような追加のプロパティをつけるものです。 .request c2 リクエストを用いると、非ブレーク制御文字を別の文字に設定する ことができます。 .IP "" 2 つめのタスクとして、シングルクォートは、 いくつかの関数エスケープシーケンスの中で 引数の区切り文字としてよく使用されます (引数に含まれない文字のペアならどれでも良いのですが)。 その他の場所にあれば、シングルクォート文字 あるいはアポストロフィ文字になります。 groff は、表示用の表記として エスケープシーケンス .esc (cq を提供しています。 .TP .character \[dq] ダブルクォートはリクエスト、マクロ、文字列の中で引数を括るときに 使用されます。 .request ds および .request as リクエスト内では、引数の先頭にくるダブルクォートは取り除かれ、 その後に続くダブルクォート以外の文字を定義文字列とします (先頭に空白が来るのを有効にします)。 エスケープされたダブルクォート .esc \[dq] はコメントの開始になります。 それ以外は、ダブルクォートには特別な機能はありません。 groff は、表示用の表記として エスケープシーケンス .esc (dq を提供しています。 .TP .character \[rs] バックスラッシュは、通常エスケープシーケンスの開始を意味しています (この文字は、 .request ec リクエストによって変更できます)。 表示用のエスケープ文字は、エスケープシーケンス .esc e で、バックスラッシュのグリフは .esc (rs で得られます。 .TP .character ( 開き括弧は、エスケープシーケンス内で、ちょうど 2 文字でできた エスケープ名あるいは引数を導入したときのみ特別な意味を持ちます。 groff では、この動作は \f[CB][]\f[] の組で置き換えることができます。 .TP .character [ 開き角括弧は、groff のエスケープシーケンス内でのみ特別な意味を持ちます。 これは、長いエスケープシーケンス名やエスケープシーケンスの引数を 導入するときに使用します。 それ以外の場合は、例えばマクロ呼び出しなどでも特別な意味はありません。 .TP .character ] 閉じ角括弧は、groff のエスケープシーケンス内でのみ特別な意味を持ちます。 これは、長いエスケープシーケンス名やエスケープシーケンスの引数を 終わらせます。 それ以外の場合は、特別な意味はありません。 .TP \f[CI]space\f[] 空白文字は、機能的な働きしか持たない文字です。 これは、 リクエスト、マクロ、文字列の引数の区切り文字、 およびテキスト行における単語の区切り文字です。 また、空白文字は groff の単語間の水平方向の空白計算に作用します。 定義された空白幅を得たい場合は、 .squoted_char "\[rs]\ " (エスケープ文字とそれに続いた空白文字)、 .esc | , .esc ^ , あるいは .esc h のようなエスケープシーケンスを使う必要があります。 .IP \f[CI]newline\f[] テキストの段落においては、改行は空白文字とほぼ同じような作用をします。 連結された行は、エスケープした改行で指定できます。 つまり、行の最後の文字に .squoted_char \[rs] を指定するのです。 .IP \f[CI]tab\f[] テキスト中にタブ文字があれば、インタプリタは次の定義済みのタブ位置へ 水平方向にインデントを作ります。 タブ位置の調整には洗練されたインタフェースが存在します。 . .\" -------------------------------------------------------------------- .SH "数式" .\" -------------------------------------------------------------------- .B 数値 は、符号つき整数、符号なし整数、浮動小数点実数のいずれか、 およびそれに単位指定子を付加したものです。 .B 単位指定子 は、計測単位を表す 1 文字の略語です。 単位指定子が後についた数字は、サイズに関する値を意味しています。 デフォルトでは、数値は単位指定を持ちません。 つまり、単なる数字にすぎません。 . .P .I roff 言語では、次の単位指定子を定義しています。 . .P .PD 0 .RS . .TPx .B c センチメートル . .TPx .B i インチ . .TPx .B P パイカ\ \[eq]\ 1/6\ インチ . .TPx .B p ポイント\ \[eq]\ 1/72\ インチ . .TPx .B m エム(em)\ \[eq]\ \f[R]ポイント値でのフォントサイズ (文字 `\f[CR]m\f[R]' の幅) . .TPx .B M \f[CR]エム(em)\f[R] の 100 倍 . .TPx .B n エヌ(en)\ \[eq]\ em/2 . .TPx .B u 実際の出力デバイスでの基本単位 . .TPx .B v 基本単位での行送り幅 .\"X kuma 今回の修正で単位 z が抜け、かつて単位 z の説明だった部分が .\"X kuma 単位 v の説明にくっついてしまっている。バグか? .\"X kuma とりあえず原文の修正に従い、単位 z がなくなったことにしておく。 .\"X kuma . .\"X kuma .TPx .\"X kuma .B z スケールされたポイント数\ \[eq]\ 1 ポイントの 1/\f[CI]sizescale\fR 倍 (フォントの \fIDESC\f[] ファイルで定義) . .TPx .B f 65536 倍 .RE .PD . .P .B 数式 は、先に定義された数値と、昔から troff で定義されていた 次に示す算術演算子の組合せです。 . .P .PD 0 .RS . .TPx .B + 加算 . .TPx .B \- 減算 . .TPx .B * 乗算 . .TPx .B / 除算 . .TPx .B % 剰余 . .TPx .B = 等号 . .TPx .B == 複数等号 . .TPx .B < より小さい . .TPx .B > より大きい . .TPx .B <= 以下 . .TPx .B >= 以上 . .TPx .B & 論理積 . .TPx .B : 論理和 . .TPx .B ! 論理否定 . .TPx .B ( 式のグループ化 . .TPx .B ) 現在の式グループを閉じる . .RE .PD . .P さらに、 .I groff は、数式に対して次の演算子を追加しました。 . .P .PD 0 .RS . .TPx .ExecFF Text I CB e1 >? e2 .I e1 と .I e2 の最大値 . .TPx .ExecFF Text I CB e1 「特別フォント」 . .REQ .ft 直前のフォントに戻します。 リクエスト .request \[rs]f[] または .request \[rs]fP と同じです。 . .REQ .ft font フォント名または番号 .I font に変更します。 エスケープシーケンス .esc[] f font と同じです。 . .REQ .ftr font1 font2 フォント .I font1 をフォント .I font2 に変換します。 . .REQ .hc 追加ハイフネーション指定文字を削除します。 . .REQ .hc c 追加ハイフネーション指定文字として\~\c .I c を設定します。 . .REQ .hcode c1 code1 c2 code2 .\|.\|.\& 文字 .I c1 のハイフネーションコードを .I code1 に、文字 .I c2 のコードを .I code2 のように設定します。 . .REQ .hla lang 現在のハイフネーション言語を .I lang に設定します。 . .REQ .hlm n ハイフンされた行の最大連続数を .I n に設定します。 . .REQ .hpf file ハイフネーションのパターンをファイル .I file から読み込みます。 . .REQ .hpfa file ハイフネーションのパターンを .I file から追加します。 . .REQ .hpfcode file .request .hpf のための入力マッピングを設定します。 . .REQ .hw words 例外的なハイフネーションをする単語のリストを .I words で指定します。 . .REQ .hy N ハイフネーションモードを .I N に変更します。 . .REQ .hym n ハイフネーションの余白を .I n に設定します (デフォルトの単位指定子は\~\c .scaleindicator m です)。 . .REQ .hys n ハイフネーションの空白を .I n に設定します。 . .REQ .ie cond anything 条件式 .I cond が真ならば .I anything を処理します。 偽の場合はリクエスト .request .el へ移動します。 . .REQ .if cond anything 条件式 .I cond が真ならば .I anything を処理します。偽の場合は何もしません。 . .REQ .ig リクエスト .B ..\& に遭遇するまでテキストを無視します。 . .REQ .ig end リクエスト .request .end までの間のテキストを無視します。 . .REQ .in インデント量を直前の値に戻します。 . .REQ .in \[+-]N 引数 .I \[+-]N に従ってインデント量を変更します (デフォルトの単位指定子は\~\c .scaleindicator m です)。 . .REQ .it N trap 次の行から .I N 行に対し、入力行のカウントトラップを設定します。 . .REQ .itc N trap .esc c により行のカウントが中断され 1 行扱いされることを 除けば、 .request .it と同じです。 . .REQ .kern ペアワイズカーニングを有効にします。 . .REQ .kern n .I n が 0 ならばペアワイズカーニングを無効にします。 0 でなければ有効にします。 . .REQ .lc リーダ繰り返し文字の定義を削除します。 . .REQ .lc c リーダ繰り返し文字を\~\c .I c に設定します。 . .REQ .length register anything 文字列 .I anything の文字列長をレジスタ .I register に書き込みます。 . .REQ .linetabs 行タブモードを有効にします (つまり、出力行に比例したタブ位置を計算します)。 . .REQ .linetabs n .I n が 0 の場合、行タブモードを無効にします。 それ以外の場合は、行タブモードを有効にします。 . .REQ .lf N 入力の行番号を .I N に設定します。 . .REQ .lf N file 入力する行数を .I N に、ファイル名を .I file に設定します。 . .REQ .lg N 引数 .I N が 0 より大きければリガチャ (合字) モードにします。 . .REQ .ll 行幅を直前の値に戻します。 . .REQ .ll \[+-]N 行幅を引数 .I \[+-]N に従って設定します (デフォルトの大きさは .scalednumber 6.5 i で、デフォルトの単位指定子は .scaleindicator m です)。 . .REQ .ls 追加の行間スキップ量を直前の値に戻します。 . .REQ .ls N 追加の行間スキップ量を .I N に設定します。 つまり、テキストの出力行それぞれの後に .I N -1 行の空白行を挿入します。 . .REQ .lt \[+-]N タイトルの長さです (デフォルトの単位指定子は\~\c .scaleindicator m です)。 . .REQ .mc 余白文字を無効にします。 . .REQ .mc c それぞれのテキスト行の後、 右側余白から現在設定されている距離に文字 .I c を出力します。 . .REQ .mc c N 余白文字を .I c に、右側余白からの距離を .I N に設定します (デフォルトの単位指定子は\~\c .scaleindicator m です)。 . .REQ .mk register 現在の垂直位置を .I register にマークします。 . .REQ .mso file リクエスト .so と同じですが、tmac ディレクトリにある .I file が検索される点が違います。 . .REQ .na 出力行の位置揃えを行いません。 . .REQ .ne 1 行分の行送りが必要であることを指定します。 . .REQ .ne N .I N 行分の行送りが必要であることを指定します (デフォルトの単位指定子は\~\c .scaleindicator v です)。 . .REQ .nf 出力行に行詰めや位置揃えを行いません。 . .REQ .nh ハイフネーションをしません。 . .REQ .nm 行番号モードを無効にします。 . .REQ .nm \[+-]N \fR[\fPM \fR[\fPS \fR[\fPI\fR]]]\fP 行番号モードの、行番号、行番号出力間隔、空白、インデントを設定します。 . .REQ .nn 次の行に行番号をつけません。 . .REQ .nn N 次の .I N 行に行番号をつけません。 . .REQ .nop anything .I anything を常に実行します。 . .REQ .nr register \[+-]N M レジスタの値を、インクリメント値 .I M で .I \[+-]N に設定・変更します。 . .REQ .nroff 組み込み条件式 .B n を真に、 .B t を偽にします。 . .REQ .ns 空白なしモードにします。 . .REQ .nx 現在のファイルの末尾に直ちにジャンプします。 . .REQ .nx filename 次のファイルへ処理を移します。 .\" 上記は、groff info の内容を参考にして補足しました。 .\" FreeBSD 4.4-RELEASE .\" By koich@cac.co.jp (Sept. 06, 2001) . .REQ .open stream filename ファイル .register filename を書き込みモードでオープンし、名前 .register stream を持つストリームに関連づけます。 . .REQ .opena stream filename リクエスト .request .open と同じですが、追加モードでファイルをオープンします。 . .REQ .os リクエスト .request sv で指定された行送り量を出力します。 . .REQ .output string .I string を直接中間出力に送出します。このとき、 .I string が、 .character \[dq] で始まる場合は、先頭に空白類文字 (whitespace) を置くことが できます ( .character \[dq] は削除されます)。 . .REQ .pc ページ番号文字を .squoted_char % に戻します。 . .REQ .pc c ページ番号文字を設定します。 . .REQ .pi program プログラム .I program に出力をパイプします (nroff のみ)。 . .REQ .pl ページ長をデフォルトの .scalednumber 11 i に設定します。 現在のページ長はレジスタ .register .p に格納されています。 . .REQ .pl \[+-]N ページ長を .I \[+-]N に変更します (デフォルトの単位指定子は\~\c .scaleindicator v です)。 . .REQ .pm マクロ名とサイズを出力します (サイズは 1 ブロック 128 バイトのブロック数です)。 . .REQ ".pm t" マクロ全体のサイズのみを出力します (サイズは 1 ブロック 128 バイトのブロック数です)。 . .REQ .pn \[+-]N 次のページ番号を .I N に設定します。 . .REQ .pnr 現在定義されている数値レジスタの名前と内容を標準エラー出力に 出力します。 . .REQ .po ページオフセットを直前の値に戻します。 現在のページオフセットはレジスタ .register .o に格納されています。 . .REQ .po \[+-]N ページオフセットを .I N に設定します。 . .REQ .ps ポイントサイズを直前の値に戻します。 . .REQ .ps \[+-]N ポイントサイズを指定します。 エスケープシーケンス .esc[] s \[+-]N と同じです。 . .REQ .psbb filename PostScript 画像 .I filename のための矩形領域を確保します。 . .REQ .pso command リクエスト .request so と同様ですが、 .I command の標準出力から入力します。 . .REQ .ptr すべてのトラップの名前と位置を標準エラー出力に出力します (入力行のトラップとディバージョンのトラップは含まれません)。 . .REQ .pvs 垂直方向の後付け行送り量 (post-vertical line spacing) を変更します。 . .REQ .pvs \[+-]N 垂直方向の後付け行送り量 (post-vertical line spacing) を .I \[+-]N に変更します (デフォルトの単位指定子は .scaleindicator p です)。 . .REQ .rchar c1 c2 .\|.\|.\& 文字定義 .IR c1 , .IR c2 , .I .\|.\|.\& を削除します。 . .REQ .rd prompt 標準入力からの入力を読み込みます。 .\" 上記は、groff info の内容を参考にして補足しました。 .\" FreeBSD 4.4-RELEASE .\" By koich@cac.co.jp (Sept. 06, 2001) . .REQ .return マクロから戻ります。 . .REQ .rfschar f c1 c2 .\|.\|.\& フォント .I f における文字 .IR c1 , .IR c2 , .I .\|.\|.\& の定義を削除します。 . .REQ .rj n 次の .I n 行の入力行を右寄せします。 . .REQ .rm name .I name で指定されたリクエスト、マクロ、文字列を削除します。 . .REQ .rn old new .I old で指定されたリクエスト、マクロ、文字列の名前を .I new に変更します。 . .REQ .rnn reg1 reg2 レジスタ名 .I reg1 を .I reg2 に変更します。 . .REQ .rr register レジスタ .I register を削除します。 . .REQ .rs 空白を復活させます。つまり空白なしモードを無効にします。 . .REQ .rt \[+-]N (上方向のみ、) マークしておいた垂直位置まで戻します (デフォルトの単位指定子は\~\c .scaleindicator v です)。 . .REQ .schar c anything グローバルフォールバック文字 .I c を文字列 .I anything に定義します。 . .REQ .shc ソフトハイフン文字を .esc (hy に戻します。 . .REQ .shc c ソフトハイフン文字を .I c に設定します。 . .REQ .shift n マクロにおいて、引数を位置 .I n にシフトします。 . .REQ .sizes s1 s2 .\|.\|.\& sn \fB[0]\fP ファイル .B DESC の .B sizes コマンドと同様に、利用可能なフォントサイズを設定します。 . .REQ .so filename ソースファイルをインクルードします。 . .REQ .sp 1 行スキップします。 . .REQ .sp N .I N の行送りを挿入します。 .I N の符号によって上下方向が決まります (デフォルトの単位指定子は .scaleindicator v です)。 . .REQ .special 特別フォントのグローバルリストを空にリセットします。 . .REQ .special s1 s2 .\|.\|.\& フォント .IR s1 , .IR s2 , などを特別フォントとします。 現在のフォントにない文字をこれらから検索します。 . .REQ .spreadwarn 値を変えずに、出力行幅警告のオンオフを切り替えます。 . .REQ .spreadwarn limit 出力行の空白が .I limit 以上に広がった場合に警告を出します (デフォルトの単位指定子は .scaleindicator m です)。 . .REQ .ss N 空白文字のサイズを .IR N /12 に設定します。 単位は現在のフォントの空白幅です。 . .REQ .ss N M 空白文字のサイズを .IR N /12 に、文の空白サイズを .IR M /12 に設定します。 単位は現在のフォントの空白幅 (\f[CR]\[eq]1/3 em\f[]) です。 . .REQ .sty n style 位置 .I n のフォントをスタイル .I style に関連づけます。 . .REQ .substring xx n1 n2 名前 .I xx の文字列を、インデックス .I n1 と .I n2 とで決まる部分文字列で置換します。 . .REQ .sv 行送り量を .scalednumber 1 v に設定します。 . .REQ .sv N リクエスト .request os で出力される空白行の送り量を .I N に設定します。 . .REQ .sy command-line プログラム .I command-line を実行します。 . .REQ ".ta T" N タブ位置を .I N の倍数に設定します (デフォルトの単位指定子は\~\c .scaleindicator m です)。 . .REQ .ta n1 n2 .\|.\|.\& nn \f[CB]T\f[] r1 r2 .\|.\|.\& rn 位置 .IR n1 , .IR n2 , .Text .\|.\|., .I nn にタブを設定し、さらに、 .IR nn + r1 , .IR nn + r2 , .Text .\|.\|., .IR nn + rn にタブを設定し、それ以降は、 .IR nn + rn + r1 , .IR nn + rn + r2 , .Text .\|.\|., .IR nn + rn + rn のように設定します。 . .\".REQ .tar .\"内部的に保存されたタブ位置を復元します。 .\". .\".REQ .tas .\"タブ位置を内部的に保存します。 . .REQ .tc タブ繰り返し文字を削除します。 . .REQ .tc c タブ繰り返し文字を\~\c .I c に設定します。 . .REQ .ti \[+-]N 次の行を一時的にインデントします (デフォルトの単位指定子は\~\c .scaleindicator m です)。 . .REQ .tkf font s1 n1 s2 n2 フォント .I font のトラックカーニングを有効にします。 . .REQ .tl \f[CB]'\f[]left\f[CB]'\f[]center\f[CB]'\f[]right\f[CB]'\f[] 3 つの部位をもつタイトルです。 . .REQ .tm anything .I anything を端末 (UNIX の標準的なメッセージ出力先) に出力します。 .\" 「ターミナル」 => 「端末」 . .REQ .tm1 anything .I anything を端末 (UNIX の標準的なメッセージ出力先) に出力します。 その際、 .I anything が .character \[dq] で始まっている場合は、先頭を空白で始めることができます ( .character \[dq] 自体は取り除かれます)。 . .REQ .tmc anything .request .tm1 と似ていますが、末尾の改行を出力しません。 . .REQ .tr abcd.\|.\|.\& 出力で .I a を .I b に、 .I c を .I d のように変換します。 . .REQ .trf filename ファイル .I filename の内容をそのまま出力します。 . .REQ .trin abcd.\|.\|.\& リクエスト .B asciify が、文字変換前にその文字コード (が存在する場合、それ) を 使用することを除けば、リクエスト .request tr と同じです。 . .REQ .trnt abcd.\|.\|.\& リクエスト .request tr と同じですが、 .esc ! によってディバージョンへと出力されるテキストは変換されません。 . .REQ .troff 組み込み条件式 .B t を真に、 .B n を偽に設定します。 . .REQ .uf font アンダラインフォントセットを .I font に設定します (リクエスト .request .ul で切り替わります)。 . .REQ .ul N 入力行を .I N 行、アンダライン付きにします (troff では イタリック体になります)。 . .REQ .unformat diversion .I diversion 内のフォント情報を保存しつつ、空白文字およびタブ文字を アンフォーマットします。 .REQ .vpt n .I n が 0 でなければ垂直位置のトラップを有効にします。 0 ならば無効にします。 . .REQ .vs 行送りの基準線間隔を直前の値に戻します。 . .REQ .vs \[+-]N 行送りの基準線間隔を .I \[+-]N に設定します (デフォルトの単位指定子は、 .scaleindicator p です)。 デフォルト値は .scalednumber 12 p です。 . .REQ .warn n 警告コードを .I n に設定します。 . .REQ .warnscale si 警告で使用する単位指定子を .I si に設定します。 . .REQ .wh N 位置 .I N の (最初の) トラップを削除します。 . .REQ .wh N trap 位置によるトラップを設定します。 負の値の場合はページ末尾からの指定を表します。 . .REQ .while cond anything 条件式 .I cond が真ならば .I anything を入力として受理します。 . .REQ .write stream anything ストリーム .I stream へ .I anything を書き込みます。 . .REQ .writec stream anything 末尾の改行文字を出力しないことを除けば、 .request .write と同じです。 . .REQ .writem stream xx マクロまたは文字列 .I xx の内容を、名前 .I stream のストリームに書き出します。 . .PD . .P これらの基本的な groff リクエストの他にも、 マクロの呼び出しがあります。 これらはマクロパッケージ (概要は .BR roff (7) を参照) やプリプロセッサに由来するものです。 . .P プリプロセッサマクロを認識するのは容易です。 これらは独特のマクロの対で括られています。 . .P .TS box, center, tab (@); c | c | c CfCB | CfCB | CfCB. . プリプロセッサ@開始マクロ@終了マクロ = eqn@.PS@.PE grap@.G1@.G2 grn@.GS@.GE pic@.PS@.PE refer@.R1@.R2 soelim@\f[I]なし@\f[I]なし tbl@.TS@.TE .TE .P . .\" -------------------------------------------------------------------- .SH "エスケープシーケンス" .\" -------------------------------------------------------------------- . エスケープシーケンスは、行中の要素であり、通常は バックスラッシュ .squoted_char \[rs] で開始され、エスケープ名がそれに続きます。 場合によっては、必要な引数をつけることもあります。 入力処理は、エスケープ文字あるいはその引数の直後から再開されます。 引数には区切り文字がはさまっているわけではありません。 そのため、エスケープ名や引数の終わりを決定する方法が必要です。 . .P これは、名前 (エスケープ名、および変数名からなる引数) を 角括弧 .BI \[lB] name \[rB] で囲い、定数引数 (数式および文字) を アポストロフィ (ASCII 0x27) で .BI \[cq] constant \[cq] \f[R] のように囲うことによって実現します。 . .P エスケープ名には短い名前の省略形があります。 2 文字のエスケープ名は開き括弧で .esc ( xy のように指定され、閉じ括弧は必要ありません。 そして、特殊文字である .squoted_char [ と .squoted_char ( 以外の 1 文字の名前はすべて .esc c のようにマーカなしで指定することができます。 . .P 長さ\~1 の定数の引数もアポストロフィのマーカを省略できますが、 2 文字の名前のときには省略できません。 . .P 1 文字のエスケープシーケンスは主に行中での 関数とシステムに関連したタスク用に使われるのに対して、 .esc ( の後に付けた 2 文字の名前は、roff システムで定義済みの特殊文字用に 使われます。 2 文字より長い名前を持つエスケープシーケンス .esc[] "" name は、ユーザ定義の名前付き文字を表しています ( リクエスト .request char を参照してください)。 . .\" -------------------------------------------------------------------- .SS "1 文字のエスケープシーケンス" .\" -------------------------------------------------------------------- . .PD 0 . .\" --------- comments --------- . .ESC \[dq] コメントの開始です。 行末までのものすべてが無視されます。 . .ESC # 次の改行文字までのものすべてが無視されます。 これは、コピーモードで解釈されます。 .esc \[dq] と似ていますが、終端の改行文字も無視する点が異なります。 . .\" --------- strings --------- . .ESC *\f[I]s\f[] 1 文字の名前 .I s を持った文字列変数に格納されている文字列です。 . .ESC *(\f[I]st\f[] 2 文字の名前 .I st を持った文字列変数に格納されている文字列です。 . .ESC[] * "stringvar arg1 arg2 .\|.\|." 任意の長さの名前 .I stringvar を持った文字列変数に格納されている文字列です。 引数 .IR arg1 , .IR arg2 , .I .\|.\|.\& を取ります。 . .\" --------- macro arguments --------- . .ESC $0 現在のマクロが呼び出されている名前。 リクエスト .request als は、1 つのマクロに複数の名前をつけることができます。 . .ESC $ x .I x 番目のマクロ / 文字列の引数。 ここで、 .I x は、1 から 9 までの数値です。 . .ESC $( xy 2 桁の番号 .I xy 番目のマクロ / 文字列の引数。 . .ESC[] $ nexp .I nexp 番目のマクロ / 文字列の引数。 ここで、 .I nexp は 1 以上の整数に評価される数値表現です。 . .ESC $* マクロ / 文字列において、引数すべてを空白文字区切りで 連結したもの。 . .ESC $@ マクロ / 文字列において、引数すべてをそれぞれダブルクォートで囲い、 空白文字で区切って連結したもの。 . .\" --------- escaped characters --------- . .ESC \[rs] バックスラッシュ 1 個に縮退します。 コピーモードでエスケープ文字として解釈されるのを 遅らせるときに便利です。 表示可能なバックスラッシュには、 .esc e もしくは、 .esc [rs] を使用してください。 現在のエスケープ文字と独立なのでこちらの方が良いです。 . .ESC \[cq] 揚音アクセント符号 \[aa]。 .esc (aa と同じです。 エスケープなし: アポストロフィ、右クォーテーション記号、シングルクォート (ASCII 0x27)。 . .ESC ` 抑音アクセント符号 \[ga]。 .esc (ga と同じです。 エスケープなし: 左クォート、バッククォート (ASCII 0x60)。 . .ESC \- 現在のフォントでの \- 符号。 . .ESC . 解釈されないドット (ピリオド)。 行頭にあってもそうなります。 . .ESC % デフォルトでのオプションのハイフン文字。 . .ESC ! 透過行指定子。 . .ESC? anything ディバージョンでは、そのまま .I anything を組み込みます。 コピーモードでは、 .I anything を読み込みます。 エスケープシーケンス .esc ! および .esc ? も参照してください。 . . .\" --------- spacing --------- . .ESC \& space パディングされない、空白の大きさを持った空白文字 (改行もされません)。 . .ESC 0 数字の幅の空白。 . .ESC | 1/6\ em の狭い空白文字。nroff では幅 0 です。 . .ESC ^ 1/12\ em のさらに狭い空白文字。nroff では幅 0 です。 . .ESC & 表示されない、幅 0 の文字。 . .ESC ) .esc & と同様ですが、文の終わりを認識する目的で、 cflags リクエストを 用いて透過になるように宣言された文字のように振る舞うという 点で異なります。 . .ESC / 次の文字がローマン体であるときには、それの前の文字の幅を増やして 次の文字との間の空白が修正されるようにします。 . .ESC , 前の文字がローマン体であるときには、次の文字の空白を変更して 前の文字との間の空白が修正されるようにします。 . .ESC ~ 改行されない空白。 行を調整するとき、通常の単語間の空白のように 引き延ばされます。 . .ESC : 幅 0 のブレークポイント ( .esc % と似ていますが、ソフトハイフン文字は使いません)。 .ESC "" newline 無視される改行。 行を連続させるときのためです。 . .\" --------- structuring --------- . .ESC { 条件入力の開始。 . .ESC } 条件入力の終了。 . .\" --------- longer escape names --------- . .ESC ( sc 2 文字の名前 .I sc を持つ特殊文字。 セクション .BR "特殊文字" を参照してください。 .ESC[] "" name 任意の長さの名前 .I name を持つ名前付き文字 (というか、グリフ)。 . .ESC[] "" "comp1 comp2 .\|.\|." 要素 .IR comp1 , .IR comp2 , .I .\|.\|. からなる複合グリフ。 . .\" --------- alphabetical escapes --------- . .ESC a 解釈されないリーダ文字。 . .ESCq A anything .I anything が文字列、マクロ、ディバージョン、レジスタ、環境、あるいは フォント名として受け付けられるものの場合、\~1 に展開します。 そうでない場合、\~0 になります。 . .ESCq b abc.\|.\|.\& 角括弧を作る関数。 . .ESCq B anything .I anything が正しい数値表現として受け付けられるものの場合、\~1 に展開します。 そうでない場合、\~0 になります。 . .ESC c テキスト処理を中断します。 . .ESCq C char .I char と呼ばれる文字。 .esc[] "" char と同じですが、他の roff バージョンと互換性があります。 . .ESC d 垂直単位で 1/2 em だけ前方 (下) に移動します (nroff では 1/2 行です)。 . .ESCq D charseq .I charseq 中の文字で定義されたグラフィカルな要素を描きます。 詳細は groff info ファイルを参照してください。 . .ESC e 現在のエスケープ文字を表示する時の表記。 . .ESC E エスケープ文字と等価ですが、コピーモードでは評価されません。 . .ESC f F 1 文字の名前もしくは 1 個の数字 .I F を持つフォントに変更します。 . .ESC fP 元のフォントに戻します。 . .ESC f( fo 2 文字の名前もしくは 2 桁の数字 .I fo を持つフォントに変更します。 . .ESC[] f font 任意の長さの名前もしくは数式 .I font で表されるフォントに変更します。 . .ESC[] f "" 元のフォントに戻します。 . .ESC F f 1 文字の名前 .I f を持つフォントファミリに変更します。 . .ESC F( fm 2 文字の名前 .I fm を持つフォントファミリに変更します。 . .ESC[] F fam 任意の長さの名前 .I fam を持つフォントファミリに変更します。 . .ESC[] F "" 元のフォントファミリに戻します。 . .ESC[] g reg リクエスト .request .af に適した、名前 .I reg を持ったレジスタのフォーマットを返します。 別の形式として .escarg g( xy および .escarg g x があります。 . .ESCq h N 局所的な水平移動。 右側へ .I N だけ移動します (負の値のときは左側へ移動します)。 . .ESCq H N 現在のフォントの高さを .I N に設定します。 . .ESC[] k reg 任意の長さの名前 .I reg を持つレジスタ中の水平入力位置をマークします。 別の形式では .escarg k( xy と .escarg k x です。 . .ESCq l Nc 水平線描画関数 (文字 .I c を用いることも可能です)。 . .ESCq L Nc 垂直線描画関数 (文字 .I c を用いることも可能です)。 . .ESC[] m color 色 .I color に変更します。他の形式として、 .escarg m( co か、 .escarg m c があります。 . .ESC[] m "" 元の色に戻します。 . .ESC[] M color 閉じた描画オブジェクトの塗りつぶし色を、色 .I color に変更します。他の形式として、 .escarg M( co か、 .escarg M c があります。 . .ESC M "" 元の塗りつぶし色に戻します。 . .ESC n r 1 文字の名前 .I r を持つレジスタ変数に格納されている数値。 . .ESC n( re 2 文字の名前 .I re を持つレジスタ変数に格納されている数値。 . .ESC[] n reg 任意の長さの名前 .I reg を持つレジスタ変数に格納されている数値。 . .ESCq N n 現在のフォントで、コード .I n で指定された文字を出力します。 特別フォントは検索されません。 リクエスト .request char を用いて文字にフォントを追加するときに便利です。 . .ESCq o abc.\|.\|.\& 文字 .IR a , .IR b , .IR c , などを 2 度打ちします。 . .ESC O 0 グリフ出力を無効にします。 内部使用が主な目的です。 . .ESC O 1 グリフ出力を有効にします。 内部使用が主な目的です。 . .ESC p 改行し、その出力行を引き延ばします。 . .ESC r 垂直方向に 1\ em 逆戻りします (nroff では 1 行逆戻りします)。 . .ESCq R "name\~\[+-]n" リクエスト .request .nr .I name .I \[+-]n と同じです。 . .ESC[] s \[+-]N ポイントサイズを .I N スケールポイントに設定します。 別の書式として .BI \[rs]s \[+-] [ N ]\c , .BI \[rs]s' \[+-]N '\c .Text , .BI \[rs]s \[+-] ' N '\c .Text , .escarg s( \[+-]xy\c .Text , .BI \[rs]s \[+-] ( xy\c .Text , .escarg s \[+-]x が使えることに注意してください。 これは、リクエスト .request ps と同じです。 . .ESCq S N 出力を .I N 度傾けます。 . .ESC t 解釈されない水平タブ。 . .ESC u 垂直方向に 1/2 em 逆戻りします (nroff では 1/2 行逆戻りします)。 . .ESCq v N 局所的な垂直移動。 .I N だけ下がります (負の値のときは上がります)。 . .ESC[] V env 環境変数 .I env の内容。 別の書式では、 .escarg V( xy と .escarg V x が使えます。 . .ESCq w string 文字列 .I string の幅。 . .ESCq x N さらに行送りする関数 (負の値なら前へ、正の値なら後ろへ行送りします)。 . .ESCq X string .I string をデバイス制御関数として出力します。 . .ESC[] Y name 文字列変数あるいはマクロ .I name をデバイス制御関数として解釈しないように出力します。 別の書式では、 .escarg Y( xy と .escarg Y x になります。 . .ESC z c 幅 0 (空白なし) で .I c を出力します。 . .ESCq Z anything .I anything を出力し、水平・垂直位置を元に戻します。 .I anything にはタブやリーダを含めてはなりません。 . .PD .P エスケープシーケンス .esc e , .esc . , .esc \[dq] , .esc $ , .esc * , .esc a , .esc n , .esc t , .esc g , および .escarg \& newline はコピーモードで解釈されます。 . .P .esc ( あるいは .esc [ で始まるエスケープシーケンスは 1 文字のエスケープシーケンスを 表すものではなく、2 つ以上の文字を持ったエスケープ名の 開始を示します。 . .P バックスラッシュの後に定義済みのエスケープシーケンスを 形成しない文字が続く場合は、バックスラッシュは黙って無視され、 文字そのものがマップされます。 . . .\" -------------------------------------------------------------------- .SS "特殊文字" .\"-------------------------------------------------------------------- . よく使われる特殊文字は、文字 .I x と .I y を用いた .BI \[rs]( xy の形式のエスケープシーケンスであらかじめ定義されています。 特殊文字の中には通常のフォントに含まれているものも一部ありますが、 ほとんどは特別フォントでしか利用できません。 最も重要なグリフを抜き出したものを次に示します。 完全なリストは、 .BR groff_char (7) にあります。 .RS .P .PD 0 . .ESC (bu 中黒 .ESC (co 著作権記号 .ESC (ct セント記号 (通貨) .ESC (dd 2 重ダガー .ESC (de 度記号 .ESC (dg ダガー .ESC (em 全角ダッシュ .ESC (hy ハイフン .ESC (rg 登録記号 .ESC (sc セクション記号 .ESC (ul アンダライン文字 .ESC (== 等号 .ESC (>= 以上 .ESC (<= 以下 .ESC (!= 不等号 .ESC (-> 右矢印 .ESC (<- 左矢印 .ESC (+- プラスマイナス記号 .PD .RE . . .\" -------------------------------------------------------------------- .SS "文字列" .\" -------------------------------------------------------------------- . 文字列は、リクエスト .request ds を用いて定義し、エスケープシーケンス .esc * を用いて値を取り出すことができます。 . .P 文字列はマクロと名前空間を共有します。 . ですから、文字列と引数無しのマクロはおおむね等価です。 文字列をマクロのように呼び出すことも、その逆も可能です。 しかし、このやり方はしばしば予想の付かない結果を招くことに なります。 . groff では、以下の文字列があらかじめ定義されています。 . .STRING .T コマンド行オプション .option -T により指定された、現在の出力デバイス名。 . . .\" -------------------------------------------------------------------- .SH レジスタ .\" -------------------------------------------------------------------- . レジスタは値を格納する変数です。 groff では、ほとんどのレジスタは数値を格納しますが (前述セクション .B 数式 を参照してください)、なかには文字列値を保持できるものもあります。 . .P 各レジスタには名前が与えられています。 任意のレジスタを定義でき、リクエスト .request nr .I register で定義・設定できます。 . .P レジスタに格納された値は、エスケープシーケンス .esc n を用いて取り出すことができます。 . .P 最も有用なのは、定義済みのレジスタです。 次からは、レジスタのことを話しているのだということを明確にするため、 .I name という表記を用いて .register name レジスタのことを示します。 .esc[] n "" 修飾はレジスタ名の一部ではないことを気にとめておいてください。 . . .\" -------------------------------------------------------------------- .SS "読み込み専用レジスタ" .\"-------------------------------------------------------------------- . 次のレジスタは、ユーザが書き換えられない定義済みの値を持った レジスタです (通常、ドットで始まるレジスタは読み込み専用です)。 ほとんどは、現在の設定についての情報を提供したり、リクエスト呼び出し からの結果を保存したりするものです。 . .P .PD 0 .REG .$ 現在のマクロの引数の個数。 . .REG .a 最後に .escq x N を用いて指定した行送り幅。 . .REG .A オプション .B \-A が使用されているときに .B troff 内で 1 が設定されます。 .B nroff 内では常に 1 です。 .REG .c 現在の入力行番号。 .REG .C 互換モードが有効になっている場合は 1 で、そうでない場合 0 です。 .REG .cdp 現在の環境に追加された最後の文字の深さ。 最後の文字が基準線から下に突き出ている場合に正になります。 .REG .ce リクエスト .request ce で設定された、センタリングされる行の残数。 .REG .cht 現在の環境に追加された最後の文字の高さ。 基準線よりも上に文字が突き出ている場合に正になります。 .REG .color 色機能が有効のとき 1 で、他の場合 0 です。 .REG .csk 現在の環境に追加された最後の文字の傾き。 文字の傾きとは、文字の上についたアクセント記号が文字の中央からどれだけ 右に離れて置かれるかということです。 .REG .d 現在のディバージョンでの垂直方向の位置です。 レジスタ .register nl と同じです。 .REG .ev 現在の環境の名前もしくは番号です (文字列の値です)。 .REG .f 現在のフォント番号です。 .REG .fam 現在のフォントファミリです (文字列の値です)。 .REG .fn 現在の (内部) 実フォント名 (文字列の値です)。 .REG .fp 次に空いているフォント位置番号。 .REG .g GNU troff では常に 1 です。 マクロ中で groff で動作しているかどうかをテストする場合、 このレジスタを使用すべきでしょう。 .REG .h 現在のページあるいはディバージョンでのテキスト基準線の 最高点です。 .REG .H 利用可能な水平方向の解像度 (基本単位です)。 . .REG .height 現在のフォントの高さ。これは .request \[rs]H により設定されたもの。 . .REG .hla リクエスト .B .hla で設定された現在のハイフネーション言語。 . .REG .hlc 直前で連続したハイフネーション行数。 . .REG .hlm 連続したハイフネーション行数の許される最大値。 これは、 リクエスト .request hlm で設定されます。 . .REG .hy 現在のハイフネーションフラグ ( リクエスト .request hy で設定されます)。 . .REG .hym 現在のハイフネーションの余白 ( リクエスト .request hym で設定されます)。 . .REG .hys 現在のハイフネーションの空白 ( リクエスト .request hys で設定されます)。 .REG .i 現在のインデント。 . .REG .in 現在の出力行に対して適用されるインデント。 . .REG .int 最後に出力した行に .esc c が含まれていれば正です。 .REG .kern ペアワイズカーニングが有効になっている場合 1 で、 無効になっていれば 0 です。 . .REG .l 現在行の長さです。 . .REG .lg 現在の合字モード ( リクエスト .request lg で設定されます)。 . .REG .linetabs 現在の行タブモード ( .request linetabs リクエストによって設定されます)。 .REG .ll 現在の出力行に対して適用される行の長さ。 . .REG .lt タイトルの長さ ( リクエスト .request lt で設定されます)。 . .REG .n 直前の出力行でのテキスト部分の長さ。 . .REG .ne トラップを生起させる原因となった最後のリクエスト .request ne が必要とした空白の量。 このレジスタは、 .register .trunc と一緒に使用すると便利です。 . .REG .ns 空白なしモードであれば 1 で、 そうでなければ 0 が設定されます。 . .REG .o 現在のページのオフセット。 . .REG .p 現在のページの長さ。 . .REG .pe ページ送出 (ejection) 中には 1 で、 そうでなければ 0 が設定されます。 . .REG .pn 次ページの番号。 これは、リクエスト .request pn で定義された値もしくは現在ページに 1 を足した番号の いずれかです。 . .REG .ps スケールポイントで表した現在のポイントサイズ。 . .REG .psr 最後に要求された、スケールポイントで表したポイントサイズ。 . .REG .rj リクエスト rj によって設定された右寄せされる行の数。 . .REG .s 10 進小数での現在のポイントサイズ。 . .REG .slant 現在のフォントのスラントの値。これは .request \[rs]S で設定されたものです。 . .REG .sr 10 進小数での最後に要求されたポイントサイズ (文字列値)。 . .REG .t 次のトラップまでの距離。 .REG .T オプション .B \-T が使われている場合 1 に設定されます。 .REG .tabs 現在のタブ設定の文字列表現。 リクエスト .request ta に対する引数として使用するのに適しています。 .REG .trunc 最近の垂直位置トラップによって切り詰められた垂直スペースの量。 リクエスト .request .ne によるトラップが引き起こされた場合は、そのリクエストによって生じた 垂直移動量をさらにマイナスした値になります。 別の言い方をすれば、トラップが発生した時点での、 トラップが起きなかった場合の垂直位置と現在の垂直位置との差を 表しています。 レジスタ .register .ne と一緒に使用すると便利です。 .REG .ss リクエスト .request ss の第 1 引数によって設定されたパラメータの値。 .REG .sss リクエスト .request ss の第 2 引数によって設定されたパラメータの値。 .REG .u 行連結モードのときは 1 で、そうでなければ 0 です。 . .REG .v 現在の垂直方向の行送り量。 . .REG .V 利用可能な垂直方向の解像度 (基本単位です)。 . .REG .vpt 垂直位置トラップが有効なら 1 で、無効なら 0 です。 . .REG .w 直前の文字の幅。 . .REG .warn 現在有効になっている警告の番号コードの和。 . .REG .x メジャーバージョン番号。 . .REG .y マイナバージョン番号。 . .REG .Y groff のリビジョン番号。 . .REG .z 現在のディバージョン名。 .PD . . .\" -------------------------------------------------------------------- .SS "書き込み可能なレジスタ" .\"-------------------------------------------------------------------- . 次のレジスタは、ユーザによって読み書き可能です。 定義済みのデフォルト値を持っていますが、ドキュメントを カスタマイズするために変更できます。 . .P .PD 0 .REG % 現在のページ番号。 . .REG c. 現在の入力行番号。 . .REG ct 文字の種類 (幅関数 .esc w で指定されます)。 . .REG dl 最後に行われたディバージョンの最大幅。 . .REG dn 最後に行われたディバージョンの高さ。 . .REG dw 現在の曜日 (1-7)。 . .REG dy 現在の日 (1-31)。 . .REG hours 深夜 0 時からの時刻。 起動時に初期化されます。 . .REG hp 現在の入力行における水平位置。 . .REG llx 与えられた PostScript 画像 ( .request .psbb で設定されます) の左下 x 座標 (PostScript の unit)。 . .REG lly 与えられた PostScript 画像 ( .request .psbb で設定されます) の左下 y 座標 (PostScript 単位)。 . .REG ln 出力行番号。 . .REG mo 現在の月 (1-12)。 . .REG nl 最後に表示されたテキストの基準線の垂直方向の位置。 . .REG rsb .register sb と同様ですが、文字の高さおよび深さを勘定に含めています。 .REG rst .register st と同様ですが、文字の高さおよび深さを勘定に含めています。 .REG sb 文字列の、基準線の下側の深さ (幅関数 .esc w で生成されます)。 . .REG seconds 現在の 1 分の中の秒数。 . .REG skw .esc w 引数の最後の文字の中央からの右スキップ幅。 .REG slimit 0 よりも大きければ、入力スタック上のオブジェクトの最大数。 0 以下であれば、制限はありません。 つまり、仮想メモリを使い果たすまで再帰呼び出しし続けることができます。 .REG ssc 添字の直前にある文字に追加すべき水平方向の空白量 (幅関数 .esc w で生成されます) (負の値になる可能性もあります)。 .REG st 文字列の、基準線の上の高さ (幅関数 .esc w で生成されます)。 .REG systat 最後の .request sy リクエストによって実行された .I system() 関数の戻り値。 .REG urx 与えられた PostScript 画像 ( .request .psbb で設定されます) の右上 x 座標 (PostScript 単位)。 . .REG ury 与えられた PostScript 画像 ( .request .psbb で設定されます) の右上 y 座標 (PostScript 単位)。 . .REG year 現在の年 (2000 年問題対応済みです)。 . .REG yr 現在の年から 1900 を引いたものです。 2000 年問題対応にするにはレジスタ .register year を代わりに使用してください。 . .PD . . .\" -------------------------------------------------------------------- .SH 互換性 .\" -------------------------------------------------------------------- . groff 言語を、 .I [CSTR\~#54] で定義された古典的な troff と比較した際の違いに ついては、 .BR groff_diff (7) に記載されています。 . .P groff システムは互換モードを提供しています。このモードをどのように して呼び出すかについては、 .BR groff (1) を参照して下さい。 . . .\" -------------------------------------------------------------------- .SH バグ .\" -------------------------------------------------------------------- . バグは .MTO bug-groff@gnu.org "groff bug mailing list" 宛に報告下さい。それ自体で完全な、十分な説明を含み、 バグが再現可能な例に、どのバージョンの groff を使っていたかも 含めて下さるようお願い致します。 . . .\" -------------------------------------------------------------------- .SH 作者 .\"-------------------------------------------------------------------- . Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc. . .P このドキュメントは、FDL (GNU Free Documentation License) バージョン 1.1 以降の条項のもとに配布されています。 システムに FDL のコピーがあるはずですし、 .URL http://\:www.gnu.org/\:copyleft/\:fdl.html "GNU copyleft site" からオンラインで入手可能です。 . .P 本ドキュメントは、 .IR groff , すなわち GNU roff ディストリビューションの一部です。 . .MTO bwarken@mayn.de "Bernd Warken" によって書かれ、 -it is maintained by -.MTO wl@gnu.org "Werner Lemberg" . +.MTO wl@gnu.org "Werner Lemberg" が保守しています。 . . .\" -------------------------------------------------------------------- .SH "関連項目" .\"-------------------------------------------------------------------- . .P groff 言語の主な情報源は .B groff .BR info (1) ファイルです。 . めちゃくちゃ詳しい説明に加え、例もたくさん含まれています。 . .TP .BR groff (1) groff プログラムの用法と文書へのポインタと groff システムを 入手する方法。 . .TP .BR groff_diff (7) 古典的 roff と比較した際の groff 言語の違い。 これは、groff 固有の予め定義された言語要素についての 権威ある文書です。 .TP .BR groff_char (7) 予め定義された groff 文字 (グリフ)。 . .TP .BR groff_font (5) フォントと DESC ファイルの仕様。 . .TP .BR roff (7) roff の歴史、roff システムすべてに共通の部分について、 更に詳しい文書へのポインタ。 . .TP .I [CSTR\~#54] .URL http://\:cm.bell-labs.com/\:cm/\:cs/\:54.ps \ "Nroff/\:Troff User's Manual by Osanna & Kernighan" \[em] 古典的 troff に関するバイブル。 . .\" .SH 履歴 .\" Yoshiteru Kageyama 2001/05/20 JM さんの .\" groff 1.16.1 ベースを参考に更新 .\" Norihiro Kumagai 2001/03/16 訳チェック .\" Kazuo Horikawa 2001/05/20 groff 1.17 に更新 .\" Kazuo Horikawa 2001/08/07 groff 1.17.2 に更新 .\" Norihiro Kumagai 2003/06/02 groff 1.19 に更新 . . .\" -------------------------------------------------------------------- .\" Emacs Setup .\" -------------------------------------------------------------------- . .\" Local Variables: .\" mode: nroff .\" End: Index: head/ja_JP.eucJP/man/man8/boot0cfg.8 =================================================================== --- head/ja_JP.eucJP/man/man8/boot0cfg.8 (revision 22767) +++ head/ja_JP.eucJP/man/man8/boot0cfg.8 (revision 22768) @@ -1,188 +1,188 @@ .\" Copyright (c) 1999 Robert Nordier .\" 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. .\" .\" %FreeBSD: src/usr.sbin/boot0cfg/boot0cfg.8,v 1.25 2004/07/07 19:57:16 ru Exp % .\" .\" $FreeBSD$ .\" .Dd February 21, 1999 .Dt BOOT0CFG 8 .Os .Sh 名称 .Nm boot0cfg .Nd ブートマネージャのインストールと設定ユーティリティ .Sh 書式 .Nm .Op Fl Bv .Op Fl b Ar boot0 .Op Fl d Ar drive .Op Fl f Ar file .Op Fl m Ar mask .Op Fl o Ar options .Op Fl s Ar slice .Op Fl t Ar ticks .Ar disk .Sh 解説 .Fx の .Sq boot0 ブートマネージャは、 i386 マシン (PC) がどのディスクのどのスライスから起動するかを、 操作者が選択できるようにします。 .Pp ここで、 .Dq スライス と言及しているものは、 .Bx 以外の PC 関連文書においては一般的に .Dq パーティション と呼ばれることに注意してください。 典型的には、リムーバブルディスク以外のみ、スライスを持ちます。 .Pp オプションとして、 .Nm ユーティリティは .Sq boot0 ブートマネージャを指定した .Ar disk へインストールします; そして、様々に操作可能なパラメータの設定を許します。 .Pp PC では、ブートマネージャは典型的にディスクのセクタ 0 にあり、 マスタブートレコード (Master Boot Record; MBR) として知られています。 MBR は、コード (PC BIOS から制御を渡されます) と データ (定義されたスライスに関する組み込みの表) の、両方を含みます。 .Pp オプションは次の通りです: .Bl -tag -width indent .It Fl B .Sq boot0 ブートマネージャをインストールします。 このオプションは、MBR コードを交換しますが、 組み込み済のスライス表には影響しません。 .It Fl b Ar boot0 どの .Sq boot0 イメージを使用するかを指定します。 デフォルトはビデオカードを出力に利用する .Pa /boot/boot0 ですが、あるいは、COM1 ポートに出力する .Pa /boot/boot0sio を使うこともできます (モデムシグナルの DSR と CTS が動作しないうちは、 COM1 ポートには何も出力されないことに注意して下さい)。 .It Fl d Ar drive 指定した .Ar disk を含むドライブを参照するために PC BIOS が使用する、ドライブ番号を指定します。 典型的には、最初のハードドライブは 0x80 であり、 2 番目のハードドライブは 0x81 などとなります; 0 から 0xff までの間の任意の整数を受け付け可能です。 .It Fl f Ar file 以前あった MBR のバックアップコピーを .Ar file に書き込むべきであることを指定します。 このファイルは、存在しない場合には作成され、 存在する場合には置換されます。 .It Fl m Ar mask スライスの有効/無効を指定します。 .Ar mask は 0 (全スライスが無効) から 0xf (4 つ全部のスライスが有効) の間の整数です。 .It Fl o Ar options コンマで区切られた文字列であり、次のオプションを指定可能です (必要に応じて .Dq no を前に付けることが可能です): .Bl -tag -width indent .It packet ディスク関連 BIOS サービスにアクセスするときに、 伝統的な (CHS) インタフェースではなく、 ディスクパケット (BIOS INT 0x13 拡張) インタフェースを必要に応じて使用します。 これにより、1023 シリンダ超からブート可能となりますが、 特定のBIOS サポートが必要です。 デフォルトは .Sq nopacket です。 .It setdrv ディスクを含むドライブの参照に、-d オプションにより 定義可能なドライブ番号を使用することを強制します。 デフォルトは .Sq nosetdrv です。 .It update ブートマネージャが MBR を更新することを許可します。(スライスを .Sq 活動 状態とするためや、スライスの選択情報を保存するために、MBR が更新されます。) これがデフォルトです; .Sq noupdate オプションを指定すると、MBR は読み込み専用で扱われます。 .El .It Fl s Ar slice デフォルトのブート選択を .Ar slice に設定します。 1 から 4 までの値は、スライスを示します。 値 5 は、2 番目のディスクからのブートを示します。 .It Fl t Ar ticks タイムアウト値を .Ar ticks に設定します (1 秒あたりの tick 数は約 18.2 個です)。 .It Fl v 冗長: 定義されたスライスに関する情報などを表示します。 .El .Sh 関連ファイル .Bl -tag -width /boot/boot0sio -compact .It Pa /boot/boot0 デフォルトの .Sq boot0 イメージ .It Pa /boot/boot0sio シリアルコンソール用のイメージ (COM1,9600,8,N,1,MODEM) .El .Sh 使用例 次回ブート時にスライス 2 からブートします: .Pp .Dl "boot0cfg -s 2 ad0" .Pp メニューで、スライス 1 と 2 だけを有効にします: .Pp .Dl "boot0cfg -m 0x3 ad0" +.Sh 診断 +.Ex -std .Sh 関連項目 .Xr boot 8 , .Xr fdisk 8 -.Sh 診断 -.Ex -std .Sh 作者 .An Robert Nordier Aq rnordier@FreeBSD.org .Sh バグ .Sq packet オプションを使用すると、 .Sq boot0 が失敗することがあります。 これは BIOS サポートの性質に依存しています。 .Pp 誤った -d オペランドとともに .Sq setdrv オプションを使用すると、MBR を誤ったディスクへ書き込むことになります。 注意してください ! Index: head/ja_JP.eucJP/man/man8/kldload.8 =================================================================== --- head/ja_JP.eucJP/man/man8/kldload.8 (revision 22767) +++ head/ja_JP.eucJP/man/man8/kldload.8 (revision 22768) @@ -1,84 +1,84 @@ .\" .\" Copyright (c) 1997 Doug Rabson .\" 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. .\" .\" %FreeBSD: src/sbin/kldload/kldload.8,v 1.21 2003/03/03 22:48:06 ru Exp % .\" .\" $FreeBSD$ .\" .Dd April 25, 1997 .Dt KLDLOAD 8 .Os .Sh 名称 .Nm kldload .Nd カーネルにファイルをロードする .Sh 書式 .Nm .Op Fl v .Ar .Sh 解説 .Nm ユーティリティは、カーネルリンカを用いて .Ar file Ns Pa .ko をカーネルにロードします。 複数モジュールが指定された場合、いくつかが失敗したとしても、 すべてをロードしようとします。 .Pp 以下のオプションが利用できます : .Bl -tag -width indent .It Fl v 出力を冗長にします。 .El -.Sh 診断 -.Ex -std -.Sh モジュールの自動ロード -モジュールによっては (ipfw, ipf など)、それらの動作が -.Xr rc.conf 5 -で有効に設定されていると、ブート時に自動的にロードされます。 -.Xr loader.conf 5 -に追加することでも、モジュールを自動的にロード可能です。 .Sh 関連ファイル .Bl -tag -width /boot/kernel -compact .It Pa /boot/kernel ローダブルモジュールを格納するディレクトリ。 モジュールの拡張子は .Pa .ko である必要があります。 .El +.Sh 診断 +.Ex -std +.Sh モジュールの自動ロード +モジュールによっては (ipfw, ipf など)、それらの動作が +.Xr rc.conf 5 +で有効に設定されていると、ブート時に自動的にロードされます。 +.Xr loader.conf 5 +に追加することでも、モジュールを自動的にロード可能です。 .Sh 関連項目 .Xr kldload 2 , .Xr loader.conf 5 , .Xr rc.conf 5 , .Xr kldconfig 8 , .Xr kldstat 8 , .Xr kldunload 8 .Sh 歴史 .Nm ユーティリティは .Fx 3.0 に初めて登場し、 .Xr lkm 4 インタフェースを置き換えました。 .Sh 作者 .An Doug Rabson Aq dfr@FreeBSD.org Index: head/ja_JP.eucJP/man/man8/restore.8 =================================================================== --- head/ja_JP.eucJP/man/man8/restore.8 (revision 22767) +++ head/ja_JP.eucJP/man/man8/restore.8 (revision 22768) @@ -1,474 +1,474 @@ .\" Copyright (c) 1985, 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. .\" 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. .\" .\" @(#)restore.8 8.4 (Berkeley) 5/1/95 .\" %FreeBSD: src/sbin/restore/restore.8,v 1.47 2004/07/02 21:45:05 ru Exp % .\" .\" $FreeBSD$ .Dd May 1, 1995 .Dt RESTORE 8 .Os BSD 4 .Sh 名称 .Nm restore , .Nm rrestore .Nd "dump コマンドで作ったバックアップからファイルやファイルシステムをリストアする" .Sh 書式 .Nm .Fl i .Op Fl cdhmNuvy .Op Fl b Ar blocksize .Op Fl f Ar file | Fl P Ar pipecommand .Op Fl s Ar fileno .Nm .Fl R .Op Fl cdNuvy .Op Fl b Ar blocksize .Op Fl f Ar file | Fl P Ar pipecommand .Op Fl s Ar fileno .Nm .Fl r .Op Fl cdNuvy .Op Fl b Ar blocksize .Op Fl f Ar file | Fl P Ar pipecommand .Op Fl s Ar fileno .Nm .Fl t .Op Fl cdhNuvy .Op Fl b Ar blocksize .Op Fl f Ar file | Fl P Ar pipecommand .Op Fl s Ar fileno .Op Ar .Nm .Fl x .Op Fl cdhmNuvy .Op Fl b Ar blocksize .Op Fl f Ar file | Fl P Ar pipecommand .Op Fl s Ar fileno .Op Ar .Pp .Nm rrestore は .\" .Nm を \fBrestore\fR で置き換えた。.Nm による改行を回避するため。 \fBrestore\fR の別名です。 .Pp .in \" XXX .Pf ( Bx 4.3 形式のオプションは後方互換性のために実装されていますが、 ここでは説明していません。) .Sh 解説 .Nm ユーティリティは .Xr dump 8 と逆の動作を行います。 ファイルシステムの完全なリストアを行うには、 まず、フルバックアップのリストアから始め、 続いてその上にインクリメンタルバックアップをリストアします。 フルまたは部分バックアップから、単一のファイルやディレクトリの部分ツリー のみをリストア することも可能です。 .Nm ユーティリティは、ネットワークを介した動作も可能です。 これを行うには、以下で説明されている .Fl f と .Fl P フラグを参照してください。 コマンドに与えるその他の引数は、リストアされるファイルを指定するための ファイルやディレクトリ名です。 .Fl h フラグを指定していない限り (下記参照)、ディレクトリ名を指定することで、 そのディレクトリ中のファイルや (再帰的に) サブディレクトリを指定することになります。 .Pp 以下のいずれか 1 つ (複数指定不可) のフラグが必要です: .Bl -tag -width Ds .It Fl i バックアップからの対話的なリストアを行います。バックアップからディレクトリ情報 を読み取ると、 .Nm はユーザに展開すべきファイルを選択させるために、 シェルに似たインタフェースでコマンドを受け付けます。 以下のコマンドが使用可能です。引数が必要なコマンドにおいて引数を省略すると、 デフォルトとしてカレントディレクトリが使われます。 .Bl -tag -width Fl .It Ic add Op Ar arg カレントディレクトリまたは指定した引数のファイルを、リストアするファイルの リストに付け加えます。ディレクトリ名を指定した場合には、そのディレクトリの下の すべてのファイルが展開リストに加えられます (コマンドラインに .Fl h フラグが指定されなかった場合)。 .Ic ls でファイルのリストを表示するときに、展開リストに含まれているファイルの頭 には ``*'' がつけられています。 .It Ic \&cd Ar arg カレントディレクトリを指定したディレクトリに移動します。 .It Ic delete Op Ar arg カレントディレクトリまたは引数で指定したファイル名のファイルを、展開する ファイルのリストから削除します。 ディレクトリ名を指定した場合には、そのディレクトリの下のすべてのファイルが 展開リストから削除されます (コマンドラインに .Fl h フラグが指定されなかった場合)。 ディレクトリ中のほとんどのファイルを展開する場合には、 ディレクトリ全体を展開リストに加えたあとで不要なファイルだけを 削除するのが一番便利なやりかたです。 .It Ic extract 展開ファイルリストにあるすべてのファイルをバックアップから展開します。 .Nm ユーティリティは、どのボリュームをマウントしたいかをユーザにたずねます。 数個のファイルのみを展開するのにもっとも早い方法は、最終ボリュームから開始して 最初のボリュームへと戻ることです。 .It Ic help 利用できるコマンドの簡単な説明を表示します。 .It Ic \&ls Op Ar arg カレントディレクトリまたは指定されたディレクトリのリストを表示します。 ディレクトリ名の後ろには ``/'' が付け加えられ、展開リストにあるファイルの前に は ``*'' が加えられます。冗長フラグがセットされていた場合には、 各ディレクトリエントリにあわせて inode 番号も表示されます。 .It Ic pwd カレントディレクトリのフルパス名を表示します。 .It Ic quit 即座に中断します。展開リストに何かファイルがあったとしても終了します。 .It Ic setmodes 展開リストにあるすべてのディレクトリの所有者、モード、時刻がセットされる のみで、バックアップからはなにも展開されません。 これは、リストアを途中で中断してしまった時の後始末に有用です。 .It Ic verbose 冗長フラグ .Fl v の意味を反転します。冗長フラグがセットされている場合には、 .Ic ls コマンドは、すべてのエントリに対してその inode 番号を表示します。 また、 .Nm コマンドは、ファイルを展開するたびにその情報を表示します。 .It Ic what ダンプヘッダ情報を表示します。 これには、日付、レベル、ラベル、 ダンプの元となったファイルシステムとホストが含まれます。 .El .It Fl R フルリストアを再開するために、マルチボリュームのテープのうち特定のものを リストアすることを要求します (下記 .Fl r フラグを参照)。 これはリストア動作を中断したときに使われます。 .It Fl r リストア (ファイルシステムの再構築) を行います。 レベル 0 バックアップのリストアの前には、リストア先となるファイルシステムは .Xr newfs 8 で初期化しておき、マウントして、そのディレクトリへ .Xr cd 1 で移動しておく必要があります。 レベル 0 バックアップのリストアに成功したら、 .Fl r フラグを指定することで、 それに加えて必要なインクリメンタルバックアップをリストアすることができます。 .Fl r フラグは対話的なファイルリストアを行わないため、注意して扱わないと 損害を与えることがあります (ディスクは言うに及ばず、精神的にも)。 次のように実行します: .Bd -literal -offset indent newfs /dev/da0s1a mount /dev/da0s1a /mnt cd /mnt restore rf /dev/sa0 .Ed .Pp .Nm は、インクリメンタルリストアのための情報を、ルートディレクトリの .Pa restoresymtable に記録します。このファイルは、すべての増分をリストアしたあとで削除すべきです。 .Pp .Nm ユーティリティを、 .Xr newfs 8 や .Xr dump 8 と組み合わせることで、ファイルシステムのサイズやブロックサイズといった パラメータを変更するのに使うことができます。 .It Fl t 指定したファイル名のファイルがバックアップ中にあれば、その名前を表示します。 ファイル名引数がない場合にはルートディレクトリを表示するため、 .Fl h フラグを指定していない限り、バックアップ中のすべてのファイルを表示することに なります。 .Fl t フラグは、古くからあった .Xr dumpdir 8 のかわりの機能を持つことに注意してください。 .It Fl x メディアから、指定したファイルが読み出されます。 指定ファイルがディレクトリで、そのディレクトリの内容がバックアップ中に存在し、 かつ .Fl h フラグが指定されていないときには、ディレクトリの内容が再帰的に展開されます。 (可能であれば) ファイルの所有者、修正日時、モードもリストアされます。 もし引数が与えられていなければルートディレクトリを展開するため、 .Fl h フラグを指定していない限り、結果的にバックアップ全体が展開されます。 .El .Pp 以下の追加オプションを指定可能です: .Bl -tag -width Ds .It Fl b Ar blocksize ダンプレコードあたりのキロバイト数です。 .Fl b が指定されないときは、 .Nm はメディアのブロックサイズを動的に求めようとします。 .It Fl c 通常 .Nm は、ダンプ対象のファイルシステムフォーマットが 新しいか古い (4.4 以前) かを動的に決定します。 .Fl c フラグはこのチェックを無効にし、 古いフォーマットのダンプからのみ読み込むことを許します。 .It Fl d 冗長なデバッグ出力を標準エラーへ送ります。 .It Fl f Ar file バックアップを .Ar file から読み込みます; .Ar file は、 .Pa /dev/sa0 (テープドライブ) や .Pa /dev/da1c (ディスクドライブ) といったスペシャルデバイスファイル、 通常のファイル、 .Sq Fl (標準入力) のいずれかです。 ファイル名が .Dq host:file や .Dq user@host:file という形式である場合は、 .Nm は .Xr rmt 8 を用いて指定したファイルを指定のホストから読み取ります。 .It Fl P Ar pipecommand .Ar pipecommand で定義された .Xr sh 1 スクリプト文字列をバックアップの各ボリュームに対する入力として実行するために .Xr popen 3 を使います。 この子のパイプラインの .Dv 標準出力 .Pq Pa /dev/fd/1 は .Nm の入力ストリームにリダイレクトされ、環境変数 .Ev RESTORE_VOLUME には現在読み込まれているボリューム番号が設定されます。 ボリュームを 1 つロードする毎に、それがテープドライブ 1 つであるかのように、 .Ar pipecommand スクリプトが開始されます。 .It Fl h ディレクトリ名を指定された場合に、その中のファイルではなく、 ディレクトリそのものを展開するようにします。 これによって、ダンプからディレクトリのサブツリーを階層的に 展開してしまうことを防ぎます。 .It Fl m 展開を、ファイル名ではなく inode 番号によって行います。 これは数個のファイルのみを展開したい場合で、ファイルの完全なパス名を 再生することを防ぎたい場合に有用です。 .It Fl N 通常通り展開しますが、実際には変更をディスクへ書き込みません。 ダンプメディアの完全性の確認や他のテスト目的に使用可能です。 .It Fl s Ar fileno マルチファイルテープの .Ar fileno から読みます。 ファイル番号は 1 から始まります。 .It Fl u 特定のタイプのファイルを作成する時に、 リストア先ディレクトリに既に同名のファイルが存在する場合には、 リストアは警告診断を生成し得ます。 この動作を抑制するために、 .Fl u (アンリンク) フラグを指定すると、リストアは古いエントリを削除してから 新しいエントリを作成しようとします。 .It Fl v 普通、 .Nm は何も表示せずにリストア動作を行います。 .Fl v (verbose, 冗長) フラグを指定すると、 扱うファイルのタイプとファイル名が表示されます。 .It Fl y エラーが発生したときに、リストア動作を中断するかどうかの問い合わせを 行いません。 これによって、不良ブロックをスキップして、可能なかぎり動作を継続します。 .El .Sh 診断 リードエラーが発生すると .Nm ユーティリティはメッセージを表示します。 もし、 .Fl y が指定されているか、あるいはユーザが .Ql y の応答をしたならば、 .Nm はリストアを続行しようとします。 .Pp バックアップが 1 巻より多くのテープボリュームに格納されていたならば、 .Nm は次のボリュームをマウントすべき時点でそれをユーザに知らせます。 もし、 .Fl x あるいは .Fl i フラグが指定されていたら、 .Nm は、ユーザがマウントしたいのはどのボリュームであるかを問い合わせます。 少数のファイルを最も早く展開する方法は、最終ボリュームから開始して、 最初のボリュームへ向けて作業を進めることです。 .Pp .Nm は数多くの一貫性検査を行っていて、それを表示します。 ほとんどの検査結果の表示は自明であるか、あるいは「決して起こらない」ものです。 良くあるエラーを以下に示します。 .Pp .Bl -tag -width Ds -compact .It Converting to new file system format. 古い形式のファイルシステムで作られたダンプテープがロードされました。 その場合、自動的に新しいファイルシステムの形式に変換されます。 .Pp .It : not found on tape 指定したファイル名はテープのディレクトリには記録されていましたが、 テープのなかに本体が見当たりませんでした。 このような事態が起きるのは、ファイルを探している間にテープのリードエラー が発生した場合や、稼働中のファイルシステムにおいて作成したダンプテープ を使った場合です。 .Pp .It expected next file , got ディレクトリに記録されていなかったファイルが示されます。 稼働中のファイルシステムにおいて作成したダンプを使った場合に発生することが あります。 .Pp .It Incremental dump too low インクリメンタルリストアを行う際に、ダンプが直前のインクリメンタルダンプ よりも以前に書かれたものであったり、増分レベルが低すぎるダンプがロード された場合に表示されます。 .Pp .It Incremental dump too high インクリメンタルリストアを行う際に、ダンプが直前のインクリメンタルダンプ の続きの範囲から開始していなかったり、あるいは増分レベルが高すぎる ダンプがロードされた場合に表示されます。 .Pp .It Tape read error while restoring .It Tape read error while skipping over inode .It Tape read error while trying to resynchronize テープ (あるいはその他の媒体) のリードエラーが発生しました。 ファイル名が表示されていたならば、その内容はおそらく部分的に不正なものに なっているでしょう。 もし inode がスキップされたり、テープの resynchronize (再同期) が試みら れていたならば、展開されたファイルには問題はありません。しかし、テープ 上からいくつかのファイルを見付けることができないかもしれません。 .Pp .It resync restore, skipped blocks ダンプのリードエラーが発生した後に、おそらく .Nm は自分自身で再同期をとらなければなりません。 このメッセージはスキップしたブロックの個数を表示します。 .El -.Sh 環境変数 -.Bl -tag -width ".Ev TMPDIR" -.It Ev TAPE -バックアップを読み取るデバイス。 -.It Ev TMPDIR -一時ファイルが作成されるディレクトリの名前。 -.El .Sh 関連ファイル .Bl -tag -width "./restoresymtable" -compact .It Pa /dev/sa0 デフォルトのテープドライブ .It Pa /tmp/rstdir* テープ中のディレクトリを保持するファイル .It Pa /tmp/rstmode* ディレクトリの所有者、モード、タイムスタンプ .It Pa \&./restoresymtable インクリメンタルリストア間で渡される情報 +.El +.Sh 環境変数 +.Bl -tag -width ".Ev TMPDIR" +.It Ev TAPE +バックアップを読み取るデバイス。 +.It Ev TMPDIR +一時ファイルが作成されるディレクトリの名前。 .El .Sh 関連項目 .Xr dump 8 , .Xr mount 8 , .Xr newfs 8 , .Xr rmt 8 .Sh バグ 使用中のファイルシステムから作成されたダンプから インクリメンタルリストアを行うと、 .Nm ユーティリティが誤動作を起こすことがあります。 .Pp フルリストアの終了後にはレベル 0 ダンプを行う必要があります。 .Nm はユーザコードで動作するので、inode の割り当てを制御することができません。 したがって、ファイルの内容が変更されていない場合でも、新しい inode 割り当てを 新しいディレクトリ集合に反映させるためには、 フルダンプを行わなければなりません。 .Pp ネットワークを介したリストアを行う場合、 root 権限で restore を実行する必要があります。 これは、以前の dump と restore のセキュリティ上の歴史によるものです。 (restore は root に setuid されて使われるように書かれていますが、 restore のコードから全てのバグが取れているとは思わないので、 setuid にて使用する場合は自己の責任において行って下さい。) .Pp 一時ファイル .Pa /tmp/rstdir* と .Pa /tmp/rstmode* は、ダンプの日付とプロセス ID に基づいて、ユニークに生成されます .Pf ( Xr mktemp 3 を参照してください)。ただし .Fl r または .Fl R が使用された場合は例外です。 これは、中断された .Fl r の動作を .Fl R によって再開可能とするためであり、 別々の処理において同一の一時ファイルを使用することが必要であるためです。 他の場合には、ファイルはユニークです。 これは、同時に 2 個の異なったダンプが開始する可能性があるためであり、 別々の処理が衝突しないようにすべきだからです。 .Sh 歴史 .Nm ユーティリティは .Bx 4.2 から登場しました。