diff --git a/ja/man/man1/addr2line.1 b/ja/man/man1/addr2line.1 index 8c9991ecc3..7aabbc8b21 100644 --- a/ja/man/man1/addr2line.1 +++ b/ja/man/man1/addr2line.1 @@ -1,128 +1,128 @@ .\" Copyright (c) 1997 Free Software Foundation .\" See COPYING for conditions for redistribution -.\" jpman %Id: addr2line.1,v 1.2 1998/10/04 17:45:39 hnokubi Stab % +.\" jpman %Id: addr2line.1,v 1.3 1998/10/12 22:51:00 vanitas Stab % .TH addr2line 1 "27 March 1997" "Cygnus Solutions" "GNU Development Tools" .de BP .sp .ti \-.2i \(** .. .SH 名称 addr2line \- アドレスをファイル名と行番号に変換する .SH 書式 .hy 0 .na .TP .B addr2line .RB "[\|" "\-b\ "\c .I bfdname\c .RB " | " "\-\-target="\c .I bfdname\c \&\|] .RB "[\|" \-C | \-\-demangle "\|]" .RB "[\|" "\-e\ "\c .I filename\c .RB " | " "\-\-exe="\c .I filename\c \&\|] .RB "[\|" \-f | \-\-functions "\|]" .RB "[\|" \-s | \-\-basenames "\|]" .RB "[\|" \-H | \-\-help "\|]" .RB "[\|" \-V | \-\-version "\|]" .RB "[\|" addr addr ... "\|]" .ad b .hy 1 .SH 解説 \c .B addr2line はプログラムのアドレスをファイル名と行番号に変換します。 アドレスと実行ファイルが与えられると、実行ファイル中のデバッグ情報を 使って与えられたアドレスをファイル名と行番号に対応づけます。 使用される実行ファイルは .B \-e オプションで指定します。デフォルトは .B a.out\c \& です。 .B addr2line -には二つの動作モードがあります。 +には 2 つの動作モードがあります。 -一つめでは、16進数のアドレスをコマンドラインで指定して、 +1 つめでは、16進数のアドレスをコマンドラインで指定して、 .B addr2line が各アドレスに対応するファイル名と行番号を表示します。 -二つめでは、 +2 つめでは、 .B addr2line は 16進数のアドレスを標準入力から読み込んで、各アドレスに 対応するファイル名と行番号を標準出力に表示します。 このモードでは .B addr2line をパイプ中で、動的に選び出されたアドレスを変換するために利用できます。 出力の形式は「ファイル名:行番号」です。ファイル名と行番号は 各アドレス毎に改行して出力されます。 .B \-f オプションが指定されると、「ファイル名:行番号」の行の前に アドレスを含む関数の名前を「関数名」の行として出力します。 ファイル名または関数名が特定できない場合は、 .B addr2line -はそれらが表示されるべき場所に二つのクエスチョンマークを表示します。 +はそれらが表示されるべき場所に 2 つのクエスチョンマークを表示します。 行番号が特定できない場合は .B addr2line は 0 を表示します。 .SH オプション .TP .BI "\-b " "bfdname"\c .TP .BI "\-\-target=" "bfdname" オブジェクトファイルのオブジェクト・コード形式を \c .I bfdname\c \& で指定します。 .TP .B \-C .TP .B \-\-demangle シンボル名の内部表現をユーザレベルの表現にデコード (\fIdemangle\fP) します。 加えてシステムが付加した先頭のアンダースコアも取り除くので、 これによって C++ の関数名がわかりやすくなります。 .TP .BI "\-e " "filename"\c .TP .BI "\-\-exe=" "filename" アドレスを変換する対象の実行ファイル名を指定します。 デフォルトのファイル名は .B a.out\c \& です。 .TP .B \-f .TP .B \-\-functions ファイルと行番号情報に加えて関数名を表示します。 .TP .B \-s .TP .B \-\-basenames 各ファイル名のベース (パス名を除いたファイル名部分) のみを表示します。 .SH "関連項目" .B info\c \& の .RB "`\|" binutils "\|'" の項; .I The GNU Binary Utilities\c -\&, Roland H. Pesch (October 1991). +\&, Roland H. Pesch (October 1991) .SH 日本語訳 野首 寛高(hnokubi@yyy.or.jp): FreeBSD 用に翻訳 diff --git a/ja/man/man1/cccp.1 b/ja/man/man1/cccp.1 index 88c9831dec..833962a530 100644 --- a/ja/man/man1/cccp.1 +++ b/ja/man/man1/cccp.1 @@ -1,650 +1,650 @@ .\" Copyright (c) 1991, 1992, 1993 Free Software Foundation -*- nroff -*- .\" See section COPYING for conditions for redistribution .\" .\" %Id: cpp.1,v 1.3 1994/11/02 09:07:33 deraadt Exp % .\" jpman %Id: cccp.1,v 1.2 1997/05/12 00:19:12 jsakai Stab % .\" .TH cpp 1 "April 30, 1993" "FreeBSD" "GNU Tools" .SH 名称 cpp \- GNU-C 互換のコンパイラプリプロセッサ .SH 書式 .hy 0 .na .TP .B cpp .RB "[\|" \-$ "\|]" .RB "[\|" \-A \c .I predicate\c .RB [ (\c .I value\c .BR ) ]\|] .RB "[\|" \-C "\|]" .RB "[\|" \-D \c .I name\c .RB [ =\c .I definition\c \&]\|] .RB "[\|" \-dD "\|]" .RB "[\|" \-dM "\|]" .RB "[\|" "\-I\ "\c .I directory\c \&\|] .RB "[\|" \-H "\|]" .RB "[\|" \-I\- "\|]" .RB "[\|" "\-imacros\ "\c .I file\c \&\|] .RB "[\|" "\-include\ "\c .I file\c \&\|] .RB "[\|" "\-idirafter\ "\c .I dir\c \&\|] .RB "[\|" "\-iprefix\ "\c .I prefix\c \&\|] .RB "[\|" "\-iwithprefix\ "\c .I dir\c \&\|] .RB "[\|" \-lang\-c "\|]" .RB "[\|" \-lang\-c++ "\|]" .RB "[\|" \-lang\-objc "\|]" .RB "[\|" \-lang\-objc++ "\|]" .RB "[\|" \-lint "\|]" .RB "[\|" \-M\ [ \-MG "\|]]" .RB "[\|" \-MM\ [ \-MG "\|]]" .RB "[\|" \-MD\ \c .I file\ \c \&\|] .RB "[\|" \-MMD\ \c .I file\ \c \&\|] .RB "[\|" \-nostdinc "\|]" .RB "[\|" \-nostdinc++ "\|]" .RB "[\|" \-P "\|]" .RB "[\|" \-pedantic "\|]" .RB "[\|" \-pedantic\-errors "\|]" .RB "[\|" \-traditional "\|]" .RB "[\|" \-trigraphs "\|]" .RB "[\|" \-U \c .I name\c \&\|] .RB "[\|" \-undef "\|]" .RB "[\|" \-Wtrigraphs "\|]" .RB "[\|" \-Wcomment "\|]" .RB "[\|" \-Wall "\|]" .RB "[\|" \-Wtraditional "\|]" .br .RB "[\|" \c .I infile\c .RB | \- "\|]" .RB "[\|" \c .I outfile\c .RB | \- "\|]" .ad b .hy 1 .SH 解説 C プリプロセッサは、 実際のコンパイルの前にプログラムを変換するために C コンパイラから自動的に利用される .I マクロプロセッサ\c です。 長い記述を簡略してマクロとして定義することができるため、 マクロプロセッサと呼ばれます。 C プリプロセッサは、以下の4つの機能を提供します。 .TP \(bu ヘッダファイルを読み込みます。 これは プログラムに組み込まれる (C 言語の)宣言の入ったファイルです。 .TP \(bu C 言語の任意の部分の省略形として \c .I マクロ\c \&を定義し、C プリプロセッサがプログラム内の全てのマクロを その定義で置き換えます。 .TP \(bu 条件文の処理をします。専用のプリプロセッサコマンドを用いて、 いろいろな条件にしたがってプログラムの一部を含めたり除外したりできます。 .TP \(bu 行番号の制御をします。 ソースファイルと コンパイルされた中間ファイルとを組み合わせたり再アレンジしたりするプログラムを 用いる場合、 コンパイラにオリジナルのソースの何行目であるかを知らせるための、 行番号制御のプリプロセッサコマンドを利用できます。 .PP C プリプロセッサは、そのインプリメントによって細かな部分に違いが いくつかあります。GNU C プリプロセッサの完全なドキュメントは、 .B info ファイルの `\|\c .B cpp.info\c \&\|', もしくは、マニュアルの .I The C Preprocessor\c \&を参照して下さい。 この双方は `\|\c .B cpp.texinfo\c \&\|'から生成されます。GNU C プリプロセッサは ANSI Standard C のスーパセットと なっています。 ANSI Standard C では、今日 C プログラムで一般的に用いられている多くの (無害な)構造が認められていません。 この非互換性はユーザにとっては不便であり、そのため GNU C preprocessor ではこの記述をデフォルトで受け付けるように作られています。 厳密にいえば、 ANSI Standard C にするためには オプションとして `\|\c .B \-trigraphs\c \&\|', `\|\c .B \-undef\c \&\|', `\|\c .B \-pedantic\c \&\|'をつけなければなりません。 しかし経験則から、厳密な ANSI Standard C にあわせてこうした設定を 行なうと支障のある場合が多いことがわかっています。 ほとんどの場合は、C プリプロセッサは明示的に実行する必要はありません。 C コンパイラが自動的に実行してくれるからです。しかしながら、 明示的にプリプロセッサを実行するのが有効なことが個々にはあります。 C プリプロセッサ は、引数として \c .I infile\c \& と \c .I outfile\c \&の 2 つのファイル名を期待します。 プリプロセッサは `\|\c .B #include\c \&\|'で指定したファイルと一緒に \c .I infile\c を読み込みます。 -入力ファイルの組合せで作られた出力は、 +入力ファイルの組み合わせで作られた出力は、 全て \c .I outfile\c \&に書かれます。 .I infile\c \& と \c .I outfile\c \& の指定に `\|\c .B \-\c \&\|'を使用することができます。\c .I infile\c \& が `\|\c .B \-\c \&\|' であれば\c \& 標準入力からデータを読み、\c .I outfile\c \& が `\|\c .B \-\c \&\|' であれば標準出力へ結果を書きます。もし \c .I outfile\c \& もしくは両方のファイル名が省略された場合、 省略されたファイルの代わりに標準入力と標準出力が使われます。 .SH オプション 以下が C プリプロセッサが受け付けるオプションの一覧です。 これらのオプションは、 プリプロセッサがコンパイラから起動されている場合にも 自動的に引き渡されるので、 C プログラムをコンパイルする際にも指定することができます。 .TP .B \-P `\|\c .B #\c \&\|'-行番号 という行番号情報をプリプロセッサの出力に含めません。 これは、C 以外の言語で行番号情報が含まれているとエラーを起こす言語を 処理する場合に有用でしょう。 .TP .B \-C コメントを削除せず、そのまま出力ファイルに含めます。 マクロ呼び出しの引数に現れるコメントはマクロ呼び出しの展開後にコピーされます。 .TP .B -traditional ANSI ではなく、旧形式の C の文法として解釈します。 .TP .B -trigraphs ANSI標準のトリグラフ(trigraph)構文を処理します。 これは ANSI C で 1 文字を表示すると定められた `\|\c .B ??\c \&\|' で始まる 3 文字の並びです。例えば、`\|\c .B ??/\c \&\|' は `\|\c .BR "\e" "\|'" を表しますので、`\|\c .B '??/n'\c \&\|' は改行文字の文字定数となります。 厳密に言えば、GNU C プリプロセッサの `\|\c .B \-trigraphs\c \&\|' オプションは ANSI C 標準を完全にはサポートしません。 が、普通のユーザならばその違いに気づく事は稀でしょう。 トリグラフについで、これ以上知りたいとは思わないでしょ? .TP .B \-pedantic `\|\c .B #else\c \&\|' や `\|\c .B #endif\c \&\|' の後にコメント以外のテキストがつくといった場合に、 ANSI C 標準で求められる警告を出力します。 .TP .B \-pedantic\-errors `\|\c .B \-pedantic\c \&\|' に似ていますが、警告ではなくエラーにします。 .TP .B \-Wtrigraphs トリグラフがあると警告を出力します(ただし、トリグラフの処理は行います)。 .TP .B \-Wcomment .TP .B \-Wcomments コメント開始シーケンスである `\|\c .B /*\c \&\|' がコメント中に存在したならば警告を発生します (両形式は同じ効果を持ちます)。 .TP .B \-Wall `\|\c .B \-Wtrigraphs\c \&\|' と `\|\c .B \-Wcomment\c \&\|' (ただし `\|\c .B \-Wtraditional\c \&\|' は除く) を指定したのと同じです。 .TP .B \-Wtraditional ANSI と伝統派の C とで異なる振る舞いをとる構文が出現した場合に 警告を発します。 .TP .BI "\-I " directory\c \& ディレクトリ \c .I directory\c \& をヘッダファイルを検索するディレクトリリストの末尾に追加します。 このオプションは、指定したディレクトリが システムのヘッダファイルが格納されているディレクトリよりも先に 検索されるので、ユーザ自身の作成したバージョンで システムが提供するヘッダファイルを上書きさせることもできます。 1 つ以上の `\|\c .B \-I\c \&\|' オプションを使用する場合、ディレクトリは左から右の順番で検索され、 標準のシステムヘッダファイルはその後になります。 .TP .B \-I\- `\|\c .B \-I\-\c \&\|' オプションよりも前に指定された `\|\c .B \-I\c \&\|' オプションで与えられたディレクトリは、`\|\c .B #include \c \&"\c .I file\c \&"\c \&\|' のインクルード文の場合にのみ検索されます。`\|\c .B #include <\c .I file\c \&>\c \&\|' では検索されません。 オプション `\|\c .B \-I\-\c \&\|' の後のオプション `\|\c .B \-I\c \&\|' に追加のディレクトリが指定された場合、それらのディレクトリは 全ての `\|\c .B #include\c \&\|' 文で検索されます。 付け加えて言うならば、`\|\c .B \-I\-\c \&\|' オプションを指定すると、カレントディレクトリは `\|\c .B #include \c .I \&"file\c \&"\c \&\|' 文に対する最初の検索ディレクトリではなくなります。 それゆえ、カレントディレクトリは明示的に `\|\c .B \-I.\c \&\|' として指定された場合にのみ検索されることになります。 `\|\c .B \-I\-\c \&\|' と `\|\c .B \-I.\c \&\|' を双方とも指定することで、どのディレクトリがカレントディレクトリ の前に、あるいは後に検索されるかを厳密に指定することができます。 .TP .B \-nostdinc ヘッダファイルの検索に標準システムディレクトリを用いません。`\|\c .B \-I\c \&\|' オプションで指定したディレクトリ(と、もし適切であるならば カレントディレクトリ)が検索されます。 .TP .B \-nostdinc++ ヘッダファイルの検索に C++ 仕様の標準ディレクトリを用いません。 が、その他の標準ディレクトリは検索します。 (このオプションは libg++ の構築時に用いられます。) .TP .BI "\-D " "name"\c \& \c .I name\c \& を既定義のマクロとして、`\|\c .B 1\c \&\|' に定義します。 .TP .BI "\-D " "name" = definition \& \c .I name\c \& をマクロとして\c .I definition\c \& に定義します。\c .I definition\c \& の内容に制限はありませが、プリプロセッサをシェルやシェルに類似した プログラムから起動している場合、シェルの文法上意味を持つスペース などの文字を保護するため、そのシェルのクォート文法を使用する必要が あります。もし、1 つの .I name\c \& に対して複数の `\|\c .B \-D\c \&\|' を指定したならば、もっとも右側の定義が有効となります。 .TP .BI "\-U " "name"\c \&\c .I name\c \& を定義しません。同一の \c .I name\c \& に対して `\|\c .B \-U\c \&\|' と `\|\c .B \-D\c \&\|' の双方が指定された場合、`\|\c .B \-U\c \&\|' が `\|\c .B \-D\c \&\|' に優先し、 \c .I name\c \& は定義されません。 .TP .B \-undef 非標準のマクロを一切定義しません。 .TP .BI "\-A " "name(" value ) (\c .B #assert\c \& コマンドと同じ方法で) 述語 \c .I name\c \& にトークンリスト \c .I value\c \& をアサートします。シェルのコマンドライン上では括弧を エスケープするなりクォートすることを忘れないで下さい。 既定義のアサーション全てを取り消すのに、`\|\c .B \-A-\c \&\|' を使えます。これはまた、既定義のマクロ全てを無効にします。 .TP .B \-dM プリプロセッサの結果を出力する代わりに、 プリプロセッサの実行中に定義された、既定義のものも含む全てのマクロの `\|\c .B #define\c \&\|' コマンドのリストを出力します。 これは、使用しているプリプロセッサのそのバージョンで、 どんなマクロが既定義であるかを知る方法を提供してくれます。 それには、空のファイル `\|\c .B foo.h\c \&\|' をこのオプションで処理してみればよいのです。 .sp .br touch\ foo.h;\ cpp\ \-dM\ foo.h .br .sp はすべての既定義マクロの値を見せてくれるでしょう。 .TP .B \-dD `\|\c .B \-dM\c \&\|' に似てますが、2 つの相違点があります。これは既定義マクロを 出力\c .I しません\c \&。また、`\|\c .B #define\c \&\|' コマンドとプリプロセス結果の\c .I 双方\c \& を出力します。これらの出力は両方とも標準出力に行われます。 .PP .TP .BR \-M\ [ \-MG ] プリプロセスの結果を出力する代わりに、main のソースファイルの依存性を 記述する\c .B make\c \& 規則を出力します。 プリプロセッサはソースファイルのオブジェクトファイル名、コロン、 そのすべてのインクルードファイル名から成る\c .B make\c \& 規則を出力します。複数のインクルードファイルがある場合、規則は`\|\c .B \\\\\c \&\|'-改行で複数行に区切られます。 `\|\c .B \-MG\c \&\|' は、見つけられなかったヘッダファイルは(コンパイルの途中で)生成され、 ソースファイルと同じディレクトリに存在するものとして扱います。`\|\c .B \-M\c \&\|' と共に指定しなければなりません。 この機能は自動的に Makefile を更新するのに使います。 .TP .BR \-MM\ [ \-MG ] これは `\|\c .B \-M\c \&\|' に似てますが、`\|\c .B #include "\c .I file\c \&"\c \&\|' でインクルードされるファイルのみを扱う点が異なります。`\|\c .B #include <\c .I file\c \&>\c \&\|' でインクルードされるシステムヘッダファイルは無視されます。 .TP .BI \-MD\ file これも `\|\c .B \-M\c \&\|' に似てますが、依存情報が`\|\c .I file\c \&\|' に書き出されます。\(em\&`\|\c .B \-MD\c \&\|' を指定したファイルの処理もこれに加えて行われ、`\|\c .B \-M\c \&\|' のように通常の処理を抑制することはありません。 gcc を実行する場合は `\|\c .I file\c \&\|' 引数を指定してはいけません。gcc は、入力ファイル名の末尾の `\|\c .B .c\c \&\|' を `\|\c .B .d\c \&\|' で置き換えたファイル名を出力に用いるからです。 Mach では、`\|\c .B make\c \&\|' コマンドで便利なように複数のファイルを 1 つの依存規則ファイルに まとめるユーティリティ \c .B md\c \& が利用できます。 .TP .BI \-MMD\ file `\|\c .B \-MD\c \&\|' に似てますが、ユーザのヘッダファイルのみを扱い、システムヘッダは 無視する点が異なります。 .TP .B \-H 通常の動作に加えて、 使用されたヘッダファイルのファイル名を出力します。 .TP .BI "\-imacros " "file"\c \& ファイル \c .I file\c \& を入力として処理しますが、 標準の入力ファイルを処理する前にその結果の出力を破棄します。 .I file\c \& によって生成される出力は捨てられるため、`\|\c .B \-imacros \c .I file\c \&\c \&\|' の処理結果の影響は、\c .I file\c \& 中に記述されたマクロがメインの入力ファイル中で使用可能になることだけです。 プリプロセッサは、`\|\c .B \-imacros\c .I file\c \&\|' を処理する前に、 コマンドラインから与えられた全ての `\|\c .B \-D\c \&\|' や `\|\c .B \-U\c \&\|' オプションを評価します。 .TP .BI "\-include " "file"\c \& ファイル \c .I file\c \& を、標準の入力ファイルの前に処理し、その結果出力をインクルードします。 .TP .BI "\-idirafter " "dir" ディレクトリ \c .I dir\c \& を第 2 インクルードパスに加えます。第 2 インクルードパス中の ディレクトリは、メインインクルードパス (オプション `\|\c .B \-I\c \&\|' によって追加されます) 中にヘッダファイルを探した結果 発見できなかった場合に検索されます。 .TP .BI "\-iprefix " "prefix" \c .I prefix\c \& を、その後に続く `\|\c .B \-iwithprefix\c \&\|' オプション用のプレフィックスとして使用します。 .TP .BI "\-iwithprefix " "dir" ディレクトリを第 2 インクルードパスに追加します。ディレクトリ名は \c .I prefix\c \& と \c .I dir\c \& を連結することによって得られます。ここで \c .I prefix は `\|\c .B \-iprefix\c \&\|' オプションによって指定されたものです。 .TP .B \-lang-c .TP .B \-lang-c++ .TP .B \-lang-objc .TP .B \-lang-objc++ ソースの言語を指定します。`\|\c .B \-lang-c++\c \&\|' は、プリプロセッサに C++ のコメント文と、C++ 用の追加の デフォルトインクルードディレクトリを処理させ、`\|\c .B \-lang-objc\c \&\|' は、Objective C の `\|\c .B #import\c \&\|' ディレクティブを使用可能にします。`\|\c .B \-lang-c\c \&\|' は明示的にこれらの機能の切り離しを指定し、`\|\c .B \-lang-objc++\c \&\|' は双方を利用可能にします。 これらのオプションはコンパイラドライバ \c .B gcc\c \& によって生成されますが、`\|\c .B gcc\c \&\|' のコマンドラインから引き渡すことはできません。 .TP .B \-lint コメント中に埋め込まれた、プログラムチェッカ \c .B lint\c \& のコマンドを見つけ出し、それらの前に `\|\c .B #pragma lint\c \&\|' を埋め込みます。例えば、コメント `\|\c .B /* NOTREACHED */\c \&\|' は `\|\c .B #pragma lint NOTREACHED\c \&\|' になります。 このオプションは直接 \c .B cpp\c \& を呼び出す場合にのみ使えます。\c .B gcc\c \& は、コマンドラインからこのオプションを引き渡しません。 .TP .B \-$ 識別子中での `\|\c .B $\c \&\|' の使用を禁止します。これは ANSI 規格からの要求です。 オプション `\|\c .B \-ansi\c \&\|' を指定した場合、\c .B gcc\c \& は自動的にこのオプションを設定します。が、\c .B gcc\c \& は `\|\c .B \-$\c \&\|' オプションそれ自身を認識しているわけではありません。 \(em\& `\|\c .B \-ansi\c \&\|' の他の効果を抜きにこれを使うには、 プリプロセッサを直接呼び出さねばなりません。 .SH 関連項目 .B info\c \&; .I The C Preprocessor\c , Richard M. Stallman. 中のエントリ .RB "`\|" cpp "\|'" .br .BR gcc "(" 1 ");" .B info\c \&; .I Using and Porting GNU CC (for version 2.0)\c , Richard M. Stallman. 中のエントリ .RB "`\|" gcc "\|'" .SH 著作権表示 Copyright (c) 1991, 1992, 1993 Free Software Foundation, Inc. .PP Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. .PP Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. .PP Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be included in translations approved by the Free Software Foundation instead of in the original English. diff --git a/ja/man/man1/chkey.1 b/ja/man/man1/chkey.1 index 727ba8b6bd..3fca43c160 100644 --- a/ja/man/man1/chkey.1 +++ b/ja/man/man1/chkey.1 @@ -1,22 +1,22 @@ .\" @(#)chkey.1 1.5 91/03/11 TIRPC 1.0; -.\" jpman %Id: chkey.1,v 1.2 1998/09/30 14:26:19 horikawa Stab % +.\" jpman %Id: chkey.1,v 1.3 1998/10/10 22:52:06 vanitas Stab % .\" Copyright (c) 1988 Sun Microsystems, Inc. - All Rights Reserved. .\" .Dd July 5, 1989 .Dt CHKEY 1 .Sh 名称 .Nm chkey .Nd あなたの暗号鍵を変更する .Sh 書式 .Nm chkey .Sh 解説 .Nm はユーザのログインパスワードの入力をうながし、 これを使用してユーザの新しい暗号鍵を暗号化して .Xr publickey 5 データベースに格納します。 .Sh 関連項目 .Xr keylogin 1 , .Xr publickey 5 , .Xr keyserv 8 , .Xr newkey 8 diff --git a/ja/man/man1/chmod.1 b/ja/man/man1/chmod.1 index 46d6dda687..830d0d9d78 100644 --- a/ja/man/man1/chmod.1 +++ b/ja/man/man1/chmod.1 @@ -1,320 +1,320 @@ .\" Copyright (c) 1989, 1990, 1993, 1994 .\" The Regents of the University of California. All rights reserved. .\" .\" This code is derived from software contributed to Berkeley by .\" the Institute of Electrical and Electronics Engineers, Inc. .\" .\" 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. .\" .\" @(#)chmod.1 8.4 (Berkeley) 3/31/94 .\" %Id: chmod.1,v 1.10 1998/05/19 06:24:50 jkoshy Exp % .\" jpman %Id: chmod.1,v 1.2 1997/04/01 01:37:14 mutoh Stab % .\" .Dd March 31, 1994 .Dt CHMOD 1 .Os .Sh 名称 .Nm chmod .Nd ファイルのモードを変更する .Sh 書式 .Nm chmod .Oo .Fl R .Op Fl H | Fl L | Fl P .Oc .Ar mode .Ar file ... .Sh 解説 .Nm は指定されたファイルのモードを .Ar mode で指定したものに変更します。 .Pp オプションとして以下のものがあります: .Bl -tag -width Ds .It Fl H .Fl R オプションが指定されていれば、引数がシンボリックリンクのとき、それを たどって変更します。 (ディレクトリツリー探索中に見つかったシンボリックリンクは それ以上追跡しません) .It Fl L .Fl R オプションが指定されていれば、すべてのシンボリックリンクをたどり、 リンク先のファイルを変更します。 .It Fl P .Fl R オプションが指定されていても、どのシンボリックリンクもたどりません。 .It Fl R 指定されたファイル自身だけではなく、それらをルートとする ディレクトリ階層を再帰的に検索してモードを変更します。 .El .Pp シンボリックリンクはモードを持たないので、 .Fl H または .Fl L オプションが指定されていなければ、シンボリックリンクに対する .Nm 実行結果は常に真となり、何も変えません。 .Fl H , .Fl L , .Fl P オプションは、 .Fl R オプションが指定されていなければ無視されます。また、これらが 複数指定されると最後に指定したものが有効になります。 .Pp ファイルのモードの変更はそのファイルの所有者とスーパユーザだけにしか 許されていません。 .Pp .Nm は正常終了時には 0 を、エラーが生じたときは 0 より大きい値を返します。 .Sh モード モードには、数値を用いた絶対値指定と、シンボルによる指定があります。 数値指定では、以下の値を .Ar ``or'' で組み合わせた 8 進数を用います: .Pp .Bl -tag -width 6n -compact -offset indent .It Li 4000 (set-user-ID-on-execution ビット) このビットがセットされている実行可能ファイルは、 ファイルを所有するユーザ ID に実効ユーザ ID を設定されて実行されます。 set-user-id ビットをセットされているディレクトリは、 その中で作成される全てのファイルおよびディレクトリの所有者を ディレクトリの所有者に設定することを強制し、 作成するプロセスのユーザ ID は無関係となります。 これは、ディレクトリが存在するファイルシステムが この機能をサポートしている場合に限られます: .Xr chmod 2 と .Xr mount 1 の .Ar suiddir オプションを参照してください。 .It Li 2000 (set-group-ID-on-execution ビット) このビットがセットされている実行可能ファイルは、 ファイルを所有するグループ ID に実効グループ ID を設定されて実行されます。 .It Li 1000 (スティッキービット) ディレクトリに設定した時には、 非特権ユーザは、所有するファイルのみ削除およびリネーム可能となり、 ディレクトリのパーミッションは無関係となります。 FreeBSD では、実行可能ファイルに設定されたスティッキービットは無視され、 ディレクトリにのみ設定可能です ( .Xr sticky 8 参照)。 .It Li 0400 所有者の読み込みを許可。 .It Li 0200 所有者の書き込みを許可。 .It Li 0100 ファイルの場合、所有者の実行を許可。 ディレクトリの場合、所有者の検索を許可。 .It Li 0040 グループのメンバの読み込みを許可。 .It Li 0020 グループのメンバの書き込みを許可。 .It Li 0010 ファイルの場合、グループのメンバの実行を許可。 ディレクトリの場合、グループのメンバの検索を許可。 .It Li 0004 他者の読み込みを許可。 .It Li 0002 他者の書き込みを許可。 .It Li 0001 ファイルの場合、他者の実行を許可。 ディレクトリの場合、他者の検索を許可。 .El .Pp 例えば、所有者に読み込み・書き込み・実行を許可し、 グループのメンバに読み込み・実行を許可し、 他者に読み込み・実行を許可し、 set-uid と set-gid を指定しない絶対値指定のモードは、 755 (400+200+100+040+010+004+001) となります。 .Pp シンボルによる指定は以下の文法に従います。 .Bd -literal -offset indent mode ::= clause [, clause ...] clause ::= [who ...] [action ...] last_action action ::= op [perm ...] last_action ::= op [perm ...] who ::= a | u | g | o op ::= + | \- | = perm ::= r | s | t | w | x | X | u | g | o .Ed .Pp .Ar who シンボルの ``u'', ``g'', ``o'' はそれぞれユーザ、グループ、それ以外に 相当します。``a'' シンボルは ``ugo'' を指定した場合と同じになります。 .Pp .ne 1i .Ar perm シンボルはモードの各ビットを以下のように表現します。 .Pp .Bl -tag -width Ds -compact -offset indent .It r 読み込み許可ビット .It s 実行時 setuid および実行時 setgid ビット .It t sticky ビット .It w 書き込み許可ビット .It x 実行/検索 許可ビット .It X 対象がディレクトリであるか、変更前のモードで誰かの実行/検索許可ビット が立っている場合に、実行/検索許可ビットがセットされます。 .Ar perm シンボルでの ``X'' の指定は、 .Ar op シンボルを ``+''で連結する時のみ意味があり、他の場合は無視されます。 .It u 元ファイルの所有者許可ビット .It g 元ファイルのグループ許可ビット .It o 元ファイルの所有者とグループ以外の許可ビット .El .Pp .Ar op シンボルの働きは以下のようになります .Bl -tag -width 4n .It + .Ar perm 値が指定されなければ、``+'' は何の作用もありません。 .Ar who シンボルが指定されていなければ、 .Ar perm 値はそれぞれのwhoシンボルの対応するビットに作用し、それを umask で マスクしたビットがセットされます。 .Ar who シンボルが指定されていれば、その .Ar perm 値が設定されます。 .It \&\- .Ar perm 値が指定されていなければ、``\-'' は何の作用もありません。 .Ar who シンボルが指定されていなければ、 .Ar perm 値はそれぞれのwhoシンボルの対応するビットに作用し、それを umaskで マスクしたビットがクリアされます。 .Ar who シンボルが指定されていれば、その .Ar perm 値がクリアされます。 .It = .Ar who シンボルで指定されたモードビットがクリアされます。whoシンボルが指定 されていなければ、所有者、グループ、その他の各モードビットがクリアされ ます。 .Ar who シンボルが指定されていなければ、 permで指定したビットが、所有者、グループ、その他のそれぞれを umaskで マスクしたものだけ設定されます。 .Ar who シンボルと .Ar perm が指定されていれば、その値がそのまま設定されます。 .El .Pp 各 .Ar clause では、モードビットを操作するためのオペレーションを 1 つ以上記述しなけ ればなりません。そして各オペレーションは記述した順番で適用されます。 .Pp -所有者とグループ以外の ``o'' のみに対して、 ''s'' や ``t'' の組合せの +所有者とグループ以外の ``o'' のみに対して、 ''s'' や ``t'' の組み合わせの .Ar perm 値が指定されても無視されます。 .Sh 使用例 .Bl -tag -width "u=rwx,go=u-w" -compact .It Li 644 ファイルを誰にでも読めるようにして、ファイルの所有者のみ書き込み可能に します。 .Pp .It Li go-w ファイルの所有者以外の書き込みを禁止します。 .Pp .It Li =rw,+X umask でマスクされていないビットの読み書きを許可しますが、実行許可は 現在設定されているものを保持します。 .Pp .It Li +X 誰かが実行/検索可能なファイルやディレクトリならば、すべてのユーザが 実行/検索できるファイルやディレクトリとします。 .Pp .It Li 755 .It Li u=rwx,go=rx .It Li u=rwx,go=u-w 誰にでも読み込みと実行ができて、所有者のみ書き込み可能になるようにしま す。 .Pp .It Li go= グループやその他のユーザにいかなる許可も与えません。 .Pp .It Li g=u-w グループビットをユーザビットと同じにしますが、グループの書き込みは禁止 します。 .El .Sh バグ naughty bitのための .Ar perm オプションが無い。 .Sh 関連項目 .Xr chflags 1 , .Xr install 1 , .Xr mount 1 , .Xr chmod 2 , .Xr stat 2 , .Xr umask 2 , .Xr fts 3 , .Xr setmode 3 , .Xr symlink 7 , .Xr chown 8 , .Xr sticky 8 .Sh 規格 .Nm ユーティリティは、規格にない .Ar perm シンボルの .Dq t と .Dq X を除いては .St -p1003.2 互換になるように作られています。 .Sh 歴史 .Nm コマンドは .At v1 から導入されました. diff --git a/ja/man/man1/ci.1 b/ja/man/man1/ci.1 index 1b8c1b0532..4428511ff9 100644 --- a/ja/man/man1/ci.1 +++ b/ja/man/man1/ci.1 @@ -1,887 +1,887 @@ .\" jpman %Id: ci.1,v 1.2 1997/06/01 11:29:01 horikawa Stab % .ds Rv \\$3 .ds Dt \\$4 .. .Id %Id: ci.1,v 1.5 1997/02/22 15:47:18 peter Exp % .ds i \&\s-1ISO\s0 .ds r \&\s-1RCS\s0 .ds u \&\s-1UTC\s0 .if n .ds - \%-- .if t .ds - \(em .TH CI 1 \*(Dt GNU .SH 名称 ci \- RCSファイルにリビジョンをチェックインする .SH 書式 .B ci .RI [ options ] " file " .\|.\|. .SH 解説 .B ci は \*r ファイルに新たなリビジョンを格納します。 引数のうち、\*r ファイルの拡張子形式に一致する ファイル名を \*r ファイルとみなします。 それ以外のファイル名は、新たなリビジョンを含んだワークファイルとみなします。 .B ci はワークファイルの内容を対応した \*r ファイルに格納します。 もしワークファイルのみが指定されたなら、 .B ci はサブディレクトリ \*r、次にワークファイルがあるディレクトリの順に 対応する \*r ファイルを検索します。 詳細は後述の .SM "ファイル名規則" の項を参照してください。 .PP .B ci が動作するには、 .B ci を起動したユーザが \*r ファイルのアクセスリスト に登録されているか、アクセスリストが空であるか、 ユーザが \*r ファイルの持ち主であるか、 あるいはスーパーユーザである必要があります。 すでに存在する枝(branch)に新しいリビジョンを追加するには、 枝の先端(tip)リビジョンが、 追加しようとするユーザによってロックされていなければなりません。 ロックされていない場合、新たな枝のみ作成可能です。 非厳格モード( .BR rcs (1) 参照)の場合、 ファイルの所有者に対してはこの制限はありません。 他人が行っているロックは、 .B rcs コマンドによって解除できます。 .PP .B \-f オプションが指定されていなければ、 .B ci は追加しようとするリビジョンと直前のリビジョンとの比較を行います。 違いがなかった場合、新たなリビジョンを作成するかわりに、 ワークファイルを元のリビジョンのものに復元します。 復元するときには、ci はいったんワークファイルを削除し、 ロックを解除します。 .B "ci\ \-l" はロックし、 .B "ci\ \-u" はロックを解除します。 これらのオプションが指定されていれば、あたかも直前のリビジョンに対して .B "co\ \-l" または .B "co\ \-u" を実行したかのようにして直前のリビジョンの内容を取り出します。 復元が行われる場合、 .B \-n と .B \-s オプションは復元されるリビジョンに対して作用します。 .PP リビジョンを格納するときに、 .B ci はログメッセージの入力を促すプロンプトを表示します。 ログメッセージは、そのリビジョンの変更点の要約です。 ファイル終端(EOF)あるいは、 ピリオド .B \&. のみからなる行によって入力を完了させます。 複数のファイルが登録される場合、 .B ci は前に入力したログメッセージを 再利用するかどうかを聞いてきます。 もし標準入力が端末でなければ、 .B ci は確認を行わず、 登録されるすべてのファイルに対して同じログメッセージを使用します。 .B \-m オプションの項も参照してください。 .PP もし \*r ファイルが存在しなければ、 .B ci は新規に \*r ファイルを作成し、 ワークファイルの内容を初期リビジョン(デフォルトでは .BR 1.1 ) として格納します。 その場合、アクセスリストは空に初期化されます。 初期リビジョンを格納するときは、 ログメッセージのかわりに ファイルの内容を記述したテキストを入力します(後述の .B \-t オプションの項を参照してください)。 .PP 登録するリビジョン番号( .I rev ) は、 .BR \-f , .BR \-i , .BR \-I , .BR \-j , .BR \-k , .BR \-l , .BR \-M , .BR \-q , .BR \-r , .B \-u のオプションのうちのいずれかで指定することができます。 .I rev -はシンボル、数値、あるいは両者の組合せたものです。 +はシンボル、数値、あるいは両者の組み合わせたものです。 .I rev で使用するシンボル名は定義済みでなければなりません; チェックイン時にシンボル名を割り当てる方法については .B \-n および .B \-N を参照して下さい。 もし .I rev が .B $ ならば、 .B ci はワークファイル中のキーワードからリビジョン番号を決定します。 .PP もし .I rev がピリオドから始まる場合、デフォルトの枝(通常は幹(trunk))に格納されます。 もし .I rev が枝番号に続いてピリオドである場合、当該枝の最新のリビジョンが使用されます。 .PP .I rev がリビジョン番号の場合、 それは登録する枝のなかで最も大きな値である必要があります。 さもなければ、新しい枝を作成する必要があります。 .PP .I rev がリビジョン番号ではなく枝番号の場合、 その枝に対する新しいリビジョンが作成されます。 新しいリビジョン番号は、その枝の先端リビジョン番号に1を加えたものとなります。 もし .I rev が存在しない枝番号ならば、新たな枝が作成され、初期リビジョンとして .IB rev .1 が作成されます。 .br .ne 8 .PP .I rev が省略された場合、 .B ci はユーザが行った最後のロックからリビジョン番号を決定します。 ユーザがある枝の先端リビジョンをロックしている場合は、 新たなリビジョンがその枝に追加されます。 新しいリビジョン番号は 先端リビジョン番号に 1 を加えたものになります。 ユーザが先端ではないリビジョンをロックしている場合は、 新たな枝が作成されます。 新たな枝番号は、ロック対象のリビジョンの 最も大きな枝番号に1を加えたものになります。 デフォルトでは、新たな枝やリビジョンの番号は .B 1 となります。 .PP .I rev が省略され、ユーザがロックを行わず、そのファイルの所有者であり、 かつロックが .I 非厳格モード であるなら、 デフォルトの枝(通常は幹(trunk); .BR rcs (1) の .B \-b オプションの項を参照)に新たなリビジョンが作成されます。 .PP 例外: 幹(trunk)においてリビジョンを追加することはできますが、 途中に挿入することはできません。 .SH オプション .TP .BI \-r rev リビジョン .I rev をチェックインします。 .TP .B \-r .B \-r オプションをリビジョン抜きで使用した場合、 .B ci にとって特別な意味が有ります。他の \*r コマンドでは .B \-r オプションを単体で使用するとデフォルト枝の最新のリビジョンを指定します。 しかし、 .B ci ではロック解除、ワークファイル削除を行い、 シェルのエイリアスやスクリプトによりデフォルトとされてしまった .B \-l や .B \-u オプションの効果を打ち消します。 .TP .BR \-l [\f2rev\fP] .B \-r と同様の動作を行ったあと、 .B "co\ \-l" と同様の動作も行います。 すなわち、登録されたリビジョンは即座にロックされ、チェックアウトされます。 これは、リビジョンをチェックインしてさらに編集を続けたい場合に便利です。 .TP .BR \-u [\f2rev\fP] .B \-l とほぼ同様の動作をしますが、登録されたリビジョンはロックされません。 これは、チェックインしたリビジョンの内容をすぐに参照したい場合に便利です。 .RS .PP .BR \-l 、リビジョン無し .BR \-r , .B \-u オプションは、最後に指定したもののみが効力を持ちます。 たとえば、 .B "ci\ \-u\ \-r" は .B "ci\ \-r" と等価です。 リビジョン無し .B \-r が .B \-u に優先するからです。 .RE .TP .BR \-f [\f2rev\fP] 強制的に登録します。 直前のリビジョンとの違いがない場合にも、 新しいリビジョンとして登録します。 .TP .BR \-k [\f2rev\fP] リビジョン番号などをローカルに算出せずに、 ワークファイルからキーワードを探し、 リビジョン番号、作成日時、状態、作者( .BR co (1) を参照)を検索し、登録されるリビジョンに割り当てます。 さらに、 .B ci を起動したユーザ名と実際にチェックインされた日付を含む デフォルトのログメッセージを作成します。 本オプションは、配布されたソフトウェアを登録するのに便利です。 複数のサイトに配布されたリビジョンは、 元のリビジョン番号、作成日付、状態、作者を保存するために、 .B \-k オプションを使って登録するべきです。 ワークファイルのキーワードから取り出した値とログメッセージは、 .BR \-d , .BR \-m , .BR \-s , .B \-w や、他のリビジョン番号を生成するようなオプションにより 変更することができます。 .TP .BR \-q [\f2rev\fP] 沈黙モードです。 診断メッセージを表示しません。 直前のリビジョンから変更がない場合、 .B \-f オプションを指定していなければ、登録を行いません。 .TP .BR \-i [\f2rev\fP] 最初のチェックイン; \*r ファイルが既に有る時にはエラー報告します。 特定のアプリケーションのレース状態を避けます。 .TP .BR \-j [\f2rev\fP] 初期化を行わず、チェックインします; \*r ファイルが無いとエラー報告します。 .TP .BR \-I [\f2rev\fP] 対話モードで動作します。 たとえ標準入力が端末でなくても、ユーザに対して問い合わせを行います。 .TP .BR \-d "[\f2date\fP]" チェックイン日付として指定された .I date を用います。 .I date は .BR co (1) で記述された自由形式で指定することができます。 これは、チェックイン日時をごまかしたい場合や、 日付キーワードがワークファイルにないにもかかわらず .B \-k オプションを使いたい場合に便利です。 .I date が指定されなかった場合、ワークファイルの最終更新日付が用いられます。 .TP .BR \-M [\f2rev\fP] 作成されるワークファイルの最終更新日付を、 取り出されたリビジョンの日付にします。 たとえば、 .BI "ci\ \-d\ \-M\ \-u" "\ f" は、 .I f の内容がキーワード置換により変更された場合も最終更新日時を変更しません。 本オプションを指定すると .BR make (1) に影響を与えるので、注意して使用する必要があります。 .TP .BI \-m "msg" チェックインするすべてのリビジョンのログメッセージとして .I msg を用います。 慣習的に .B # で始まるログメッセージはコメントであり、GNU Emacs の .B vc パッケージのようなプログラムはこれを無視します。 また、 .BI { clumpname } (の後に空白が続く)ログメッセージは可能であればまとめられることを意味します。 それはたとえ別々のファイルに関連づけられていてもです; .BI { clumpname } ラベルは、まとめる目的でのみ使用されます。 それ自身はログメッセージであるとは見なされません。 .TP .BI \-n "name" チェックインしたリビジョンにシンボリック名 .I name をつけます。 もし同じシンボリック名が別のリビジョンに割り当てられていた場合、 .B ci はエラーメッセージを出力します。 .TP .BI \-N "name" .B -n と同様の動作を行います。 ただし、同じシンボリック名が他のリビジョンに割り当てられていた場合は、 再割り当てを行います(こちらを優先します)。 .TP .BI \-s "state" チェックインされるリビジョンの状態を .I state とします。デフォルトは .B Exp (Experimental: 実験的)です。 .TP .BI \-t file \*r ファイル中の内容記述テキストをファイル .I file の内容で置き換えます。 すでに内容記述テキストがある場合はこれを削除します。ファイル名 .I file は .B \- で始まってはいけません。 .TP .BI \-t\- string \*r ファイル中の内容記述テキストを文字列 .I string で置き換えます。 すでに内容記述テキストがある場合は削除されます。 .RS .PP .B \-t オプションは、どちらの形式で使う場合も、 最初のチェックイン時にしか意味を持ちません。 それ以外の場合は単に無視されます。 .PP 最初のチェックイン時に .B \-t オプションが指定されなかった場合、 .B ci は標準 入力から内容記述テキストを読み込みます。 テキストは、ファイル終端(EOF)あるいはピリオド( .Br \&. )のみの行で終了します。 ユーザへの問い合わせが可能な場合には、 テキストの入力を促すプロンプトが表示されます( .B \-I オプション参照)。 .PP 旧バージョンとの互換性のため、引数のない .B \-t オプションは無視されます。 .RE .TP .B \-T 新しいリビジョンが存在し、 \*r ファイルの修正時刻が新しいリビジョンの時刻よりも古ければ、 \*r ファイルの修正時刻に対して新しいリビジョンの時刻を代入します; そうでない場合は \*r ファイルの修正時刻は保たれます。 リビジョンをロックした場合は、 .B ci は通常 \*r ファイルの修正時刻を現在の時刻に設定します。 なぜならロックが \*r ファイルに格納され、 ロックの削除は \*r ファイルの変更を要するからです。 \*r ファイルがワークファイルよりも新しくなる方法として 2 通り有ります: まず、 .B "ci\ \-M" は現在時刻以前の日付でワークファイルを作成します; 2 番目に、直前のバージョンを回復する時、 ワークファイルを変更しない場合にも \*r ファイルは変更され得ます。 \*r ファイルのワークファイルにおける .BR make (1) 依存により、上記 2 ケースは過剰の再コンパイルという結果になり得ます。 .B \-T オプションを使用することで、\*r ファイルの日付をごまかし、 再コンパイルを禁止します。 このオプションは注意して使って下さい; あるワークファイルのチェックインが、 同じ \*r ファイルに関連づけられている別のワークファイルに影響を及ぼすべき 時でも、再コンパイルを抑制し得ます。 例えば、\*r ファイルの時刻を 01:00、 (変更された) ワークファイルの時刻を 02:00、 別のワークファイルのコピーの時刻を 03:00、 現在の時刻を 04:00 とします。 ここで、 .B "ci\ \-d\ \-T" とすると、\*r ファイルの時刻は通常の 04:00 ではなく 02:00 になります; この結果、 .BR make (1) は別のコピーが \*r ファイルよりも新しいと(誤って)認識します。 .TP .BI \-w "login" 指定された .I login をリビジョンの作者として登録します。 作者名をごまかしたい場合や、 作者キーワードがワークファイルにないにもかかわらず .B -k オプションを使いたい場合に便利です。 .BI \-V \*r のリビジョン番号を表示します。 .TP .BI \-V n \*r システムのバージョン .I n のエミュレーションを行います。詳細は .BR co (1) を参照してください。 .TP .BI \-x "suffixes" \*r ファイルの拡張子を指定します。 拡張子が空ではない場合、 拡張子まで含めたすべてのパス名を \*r ファイル名であるとみなします。 拡張子が空の場合は、 .BI RCS/ path または .IB path1 /RCS/ path2 形式のものを \*r ファイル名であるとみなします。 本オプションの場合、 .B / で区切ることにより、複数の拡張子を指定できます。たとえば、 .B \-x,v/ は、 .B ,v と空の拡張子の 2 つの拡張子を持つ \*r ファイルを指定します。 複数の拡張子が指定された場合、指定された順に \*r ファイルを検索します。 最初に見つかったサフィックスが \*r ファイルに対して用いられます。 \*r ファイルを生成できるが、 \*r ファイルが見つからないときは、 これらのサフィックスを新しいファイル名に対して用います。 デフォルトの拡張子は、インストールされる環境により異なります。 UNIXのようなコンマをファイル名中に含めることの出来る計算機では、通常 .B \-x,v/ が、それ以外の計算機では空の拡張子が用いられます。 .TP .BI \-z zone キーワード置換での日付の出力書式の指定を行い、また、 .BI \-d date オプションでの .I date のデフォルトのタイムゾーンの指定を行います。 .I zone は、省略する事も、UTC からの数値差で指定する事も、特別な文字列 .B LT を使ってローカル時間で指定する事もできます。 デフォルトでは .I zone は空であり、 この場合は伝統的な \*r フォーマット、 すなわちタイムゾーン無しの \*u であり日付をスラッシュで区切ります; そうでない場合は時刻はタイムゾーン付の \*i 8601 フォーマットです。 例えば、ローカルタイムが 1990 年 1 月 11 日 太平洋標準時間 (\*u の 8 時間西)午後 8 時の場合、時間の出力は次のようになります: .RS .LP .RS .nf .ta \w'\f3\-z+05:30\fP 'u +\w'\f31990-01-11 09:30:00+05:30\fP 'u .ne 4 \f2オプション\fP\f2時刻の出力\fP \f3\-z\fP \f31990/01/12 04:00:00\fP \f2(デフォルト)\fP \f3\-zLT\fP \f31990-01-11 20:00:00\-08\fP \f3\-z+05:30\fP \f31990-01-12 09:30:00+05:30\fP .ta 4n +4n +4n +4n .fi .RE .LP .B \-z オプションは \*r ファイルに格納されている日付(常に \*u です)には影響しません。 .SH "ファイル名規則" -\*r ファイルとワークファイルの組合せは3通りの方法で指定することができます。 +\*r ファイルとワークファイルの組み合わせは3通りの方法で指定することができます。 (使用例の項目も参照してください。) .PP 1) \*r ファイルとワークファイルの両方を指定する。 \*r ファイルのパス名は .IB path1 / workfileX 形式、ワークファイルのパス名は .IB path2 / workfile 形式をとります。この場合の .IB path1 / と .IB path2 / はパス(異なるパスや、空でも可)を示し、 .I workfile はファイル名、 .I X は \*r ファイルの拡張子です。もし .I X が空なら、 .IB path1 / は .B RCS/ で始まるか、 .B /RCS/ を含まねばなりません。 .PP 2) \*r ファイルのみを指定する。 ワークファイルがカレントディレクトリに作成され、\*r ファイル名から .IB path1 / と拡張子 .I X を取り除いたファイル名になります。 .PP 3) ワークファイルのみを指定する。 .B ci はまず、各 \*r 拡張子 .I X に対して、 .IB path2 /RCS/ workfileX 形式の名前で検索を行います。 さらに、(もしこれが見つからず、 .I X が空でなければ、) .IB path2 / workfileX を検索します。 .PP 1) または 2) の方法で \*r ファイルが指定されていない場合、 .I ci はまずディレクトリ .B ./RCS を検索し、次にカレントディレクトリを検索します。 .PP 異常により \*r ファイルのオープンに失敗すると、 .I ci はエラー報告します。 他に \*r ファイルのパス名の候補があってもです。 たとえばディレクトリ .I d で \*r コマンドを利用できないようにするには、 .IB d /RCS なる名前の通常ファイルを作成しておきます。 すると、\*r コマンドは .IB d /RCS をディレクトリとしてオープンしようとしますが、 ディレクトリではないのでオープンすることができず失敗します。 .SH 使用例 \*r 拡張子が .B ,v 、カレントディレクトリには \*r ファイルを含む .B RCS というサブディレクトリがあり、 .B io.c,v があると仮定します。 ここで、以下に示したコマンドを実行すると、 どれもカレントディレクトリにある .B io.c を .B RCS/io.c,v にチェックインし、 .B io.c を削除します。 .LP .RS .nf .ft 3 ci io.c; ci RCS/io.c,v; ci io.c,v; ci io.c RCS/io.c,v; ci io.c io.c,v; ci RCS/io.c,v io.c; ci io.c,v io.c; .ft .fi .RE .PP \*r 拡張子が空、カレントディレクトリには \*r ファイルを含む .B RCS というサブディレクトリがあり、 .B io.c があると仮定します。ここで以下に示すコマンドは、どれも新しい リビジョンのチェックインを行います。 .LP .RS .nf .ft 3 ci io.c; ci RCS/io.c; ci io.c RCS/io.c; ci RCS/io.c io.c; .ft .fi .RE .SH "ファイルモード" .B ci が作成した \*r ファイルは、 ワークファイルの読み込みと実行の許可属性を受け継ぎます。 すでに \*r ファイルが存在すれば、 .B ci はその読み込みと実行の許可属性を保持します。 .B ci は、つねに \*r ファイルの書き込み許可属性を不許可にします。 .SH 関連ファイル いくつかの一時ファイルが、ワークファイルの存在するディレクトリまたは 一時ディレクトリ(環境変数の項の .B \s-1TMPDIR\s0 参照)に作成されます。 セマフォファイル等のファイルが \*r ファイルが存在するディレクトリに作成されます。 空ではない拡張子を用いている場合、 セマフォファイル名の先頭文字には、 拡張子の先頭文字と同じ文字が用いられます; よって、拡張子として、ワークファイルの拡張子の先頭文字と同じ文字を 指定しないように注意してください。 空の拡張子を指定している場合、 セマフォファイル名の最後の文字がアンダースコア( .B _ ) となります。 .PP .B ci は、 \*r ファイルやワークファイルを変更しません。通常 .B ci はそれらのファイルをアンリンクし、新しいファイルを作成します; ただし、\*r ファイルへのシンボリックリンクの鎖を壊す代わりに、 目的のファイルをアンリンクします。 よって、 .B ci は変更されるワークファイルへの ハードリンク、シンボリックリンクを全て壊します; さらに、\*r ファイルへのハードリンクは無効となり、 シンボリックリンクは保存されます。 .PP 実効ユーザは、\*r ファイルを含むディレクトリの 検索および書き込み権を持っていなければなりません。 通常実ユーザは、 \*r ファイルとワークファイルの読み込み許可と、 それらを含むディレクトリの検索および書き込み権を持っていなければなりません。 しかし、古い計算機のなかには実ユーザと実効ユーザの間を 容易に行き来することができないものもあります。 これらの計算機では、実効ユーザのみが利用されます。 .B ci や .B co のコピーに setuid が設定されていなければ、 実ユーザと実効ユーザは同一です。 次節で説明するように、 もし実効ユーザが全 \*r ファイルとそれを含むディレクトリを所有し、 実効ユーザのみが \*r ディレクトリに書き込めるように設定できるなら、 \*r ファイルのセキュリティを強化することが可能です。 .PP ユーザは \*r ファイルを含むディレクトリの許可属性を変更することで、 \*r ファイルに対するアクセスを制限できます; そのディレクトリに書き込み権のあるユーザだけが、 \*r ファイルを変更する \*r コマンドを使用することができます。 たとえば、ユーザが複数のグループに属することが出来る計算機では、 \*r ディレクトリをあるグループのみが書き込み権を持つように設定します。 これは、略式のプロジェクトでは十分ですが、 グループに所属するユーザが自由に \*r ファイルを変更することができ、 \*r ファイルすべてを削除することもできます。 そのため、正式なプロジェクトでは、 \*r ファイルを自由に操作きる \*r 管理者と、 新たなリビジョンをチェックインすること以外の操作はできない他のユーザとを、 区別することがあります。 .SH SETUID の使用 \*r 管理者以外のユーザがリビジョンを削除できないようにするには、 以下のように setuid 特権を使用することができます。 .nr n \w'\(bu'+2n-1/1n .ds n \nn .if \n(.g .if r an-tag-sep .ds n \w'\(bu'u+\n[an-tag-sep]u .IP \(bu \*n その計算機で \*r にて setuid が使用できるか確認します。 疑問があるときは、信頼できる専門家に意見を聞いてください。 最も良いのは、 .B seteuid() システムコールが Posix 1003.1a Draft 5 に 記述されているように動作することです。 なぜなら、実ユーザが .BR root であっても、\*r は実ユーザと実行ユーザを簡単に切替えることができるからです。 その次に良いのは、 .B setuid() システムコールが saved setuid (Posix 1003.1-1990の {\s-1_POSIX_SAVED_IDS\s0} の動作)を サポートしている場合です; この場合、実ユーザもしくは実効ユーザが .BR root である時のみ失敗します。 \*r は setuid に失敗すると、ただちに終了します。 .IP \(bu \nn ユーザグループの \*r 管理者として、ユーザ .I A を選びます。 .I A だけが、\*r ファイルに対して .B rcs コマンドを実行することができます。 .I A は .B root や、特権を持ったユーザであってはいけません。 相互に異なるユーザグループには、異なる管理者を使用するべきです。 .IP \(bu \nn ユーザが実行するファイルのディレクトリに、パス名 .I B を選びます。 .IP \(bu \nn 以下のように、通常のインストールディレクトリ .I D から、 .B ci と .B co を .I B にコピーし、 .I A へ setuid します: .LP .RS .nf .ne 3 \f3mkdir\fP \f2B\fP \f3cp\fP \f2D\fP\^\f3/c[io]\fP \f2B\fP \f3chmod go\-w,u+s\fP \f2B\fP\f3/c[io]\fP .fi .RE .IP \(bu \nn 以下のように、各ユーザのパスに .I B を加えます: .LP .RS .nf .ne 2 \f3PATH=\fP\f2B\fP\f3:$PATH; export PATH\fP # ordinary shell \f3set path=(\fP\f2B\fP \f3$path)\fP # C shell .fi .RE .IP \(bu \nn 以下のように、 .I A だけが書き込み許可を持つ \*r ディレクトリ .I R を作成します: .LP .RS .nf .ne 2 \f3mkdir\fP \f2R\fP \f3chmod go\-w\fP \f2R\fP .fi .RE .IP \(bu \nn 特定のユザーだけに \*r ファイルの読み込みを許可したい場合、 そのユーザをユーザグループ .IR G に入れて、さらに .I A が以下のように、\*r ディレクトリを保護します: .LP .RS .nf .ne 2 \f3chgrp\fP \f2G R\fP \f3chmod g\-w,o\-rwx\fP \f2R\fP .fi .RE .IP \(bu \nn (存在すれば)古い \*r ファイルを .IR R にコピーし、 .I A が所有であることを保証します。 .IP \(bu \nn \*r ファイルのアクセスリストは、 リビジョンをチェックインおよびロックできるユーザを制限します。 デフォルトのアクセスリストは空で、 \*r ファイルを読むことのできる全てのユーザに、登録の権限を与えます。 チェックインを制限したい場合は、 .I A がそのファイルに対して .B "rcs\ \-a" を実行します; .BR rcs (1) を参照してください。 特に .BI "rcs\ \-e\ \-a" A は、 .IR A だけにアクセスを制限します。 .IP \(bu \nn 初めてチェックインを行う前に、 .I A は .B "rcs\ \-i" によって新しい \*r ファイルを初期化します。 チェックインを制限したい場合、 .B \-a オプションを付け加えます。 .IP \(bu \nn setuid 特権は、 .BR ci , .BR co , .BR rcsclean のみに与えます; .B rcs や他のコマンドに、setuid 特権を与えてはなりません。 .IP \(bu \nn \*r コマンドに対して、他の setuid コマンドを実行しないでください。 setuid はあなたが考えるより扱いにくいものです。 .SH 環境変数 .TP .B \s-1RCSINIT\s0 本変数に空白で区切ったオプションを設定することで、 コマンドライン引数に先立って処理されます。 空白はバックスラッシュによってエスケープすることができます。 .B \s-1RCSINIT\s0 はほとんどの \*r コマンドで参照されます。特に .BR \-q , .BR \-V , .BR \-x , .B \-z オプションを指定しておくと便利です。 .TP .B \s-1TMPDIR\s0 一時ディレクトリ名を指定します。 設定されていない場合は、環境変数 .B \s-1TMP\s0 と .B \s-1TEMP\s0 とを調べ、始めに見つかった値を用います; どれも設定されていない場合は、 計算機依存のデフォルトのディレクトリ(たいていは .B /tmp )を使用します。 .SH 診断 各リビジョンに対して、 .I ci は \*r ファイル名、ワークファイル名、追加するリビジョン番号、直前の リビジョン番号を表示します。全ての処理が成功した場合のみ、 終了ステータスが 0 になります。 .SH 作者 Author: Walter F. Tichy. .br Manual Page Revision: \*(Rv; Release Date: \*(Dt. .br Copyright \(co 1982, 1988, 1989 Walter F. Tichy. .br Copyright \(co 1990, 1991, 1992, 1993, 1994, 1995 by Paul Eggert. .SH 関連項目 co(1), ident(1), make(1), rcs(1), rcsclean(1), rcsdiff(1), rcsintro(1), rcsmerge(1), rlog(1), setuid(2), rcsfile(5) .br Walter F. Tichy, \*r\*-A System for Version Control, .I "Software\*-Practice & Experience" .BR 15 , 7 (July 1985), 637-654. .br diff --git a/ja/man/man1/ckdist.1 b/ja/man/man1/ckdist.1 index e9660b3070..47e7c04dea 100644 --- a/ja/man/man1/ckdist.1 +++ b/ja/man/man1/ckdist.1 @@ -1,97 +1,104 @@ .\" Copyright (c) 1997 Robert Nordier .\" All rights reserved. .\" .\" %Id: ckdist.1,v 1.2 1997/09/15 06:33:51 charnier Exp % -.\" jpman %Id: ckdist.1,v 0.0 1998/09/12 16:02:07 horikawa Stab % .\" .\" 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(S) ``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(S) 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. .\" +.\" jpman %Id: ckdist.1,v 1.3 1998/10/14 21:15:47 horikawa Stab % .Dd January 20, 1997 .Dt CKDIST 1 -.Os -.Sh NAME +.Os +.Sh 名称 .Nm ckdist -.Nd check software distributions -.Sh SYNOPSIS +.Nd ソフトウェアディストリビューションの検査 +.Sh 書式 .Nm ckdist .Bq Fl airsx .Bq Fl d Ar dir .Bq Fl n Ar name .Bq Fl t Ar type .Ar -.Sh DESCRIPTION -The +.Sh 解説 .Nm -utility reads "checksum" files (which are assumed to specify components -of a software distribution) and verifies the integrity of the -distribution by validating the checksum of each component file. -Both MD5 (128-bit "message digest") and .inf (32-bit CRC) checksum -formats are supported. +ユーティリティは「チェックサム」ファイルを読みます +(このファイルはソフトウェアディストリビューションの構成要素を +正確に特定していると仮定しています)。次に、このコマンドは、それぞれ +の構成ファイルのチェックサムを検証することでディストリビューション +が完全なことを証明します。MD5 (128 ビットの「メッセージの要約」) および +(32 ビットCRC)チェックサムフォーマットである .inf の両方を利用することが +出来ます。 .Pp -The +演算項である .Ar file -operands may refer to regular files or to directories. Regular files -named "md5", or which have an ".md5" or an ".inf" extension, are -assumed to be of the implied type, otherwise format is determined from -content. If a directory is specified, it is searched for -appropriately-named files only. +は通常ファイルかディレクトリを参照することが許されます。 +ファイル名が "md5" か、拡張子が ".md5" や ".inf" である通常ファイルは、 +それぞれの名称が示すタイプのファイルであると想定されます。 +これら以外の場合には、フォーマットはその内容により決められます。 +ディレクトリが指定された場合には、そのディレクトリを検索して、適切な +名前のファイルだけを探します。 .Pp -Options are as follows: +オプションは次のようになります: .Bl -tag -width 8n -offset indent .It Fl a -Report on all distribution components, not just those in respect of -which errors are detected. +何のエラーが検出されたか、だけでなく、ディストリビューションの +すべての構成要素について報告を行います。 .It Fl i -Ignore missing distribution components. +ディストリビューションの構成要素で存在しないものは、無視します。 .It Fl r -Search specified directories recursively. +指定されたディレクトリを再帰的に探索します。 .It Fl s -Suppress complaints about inaccessible checksum files and directories. +アクセス出来ないチェックサムファイルやディレクトリに +ついてのメッセージを抑止します。 .It Fl x -Verify the existence of distribution components (and also check sizes, -in the case of .inf files), but omit the more time-consuming step of -actually computing and comparing checksums. +ディストリビューションの構成要素が存在していることを +検証します。(そして又、.infファイルの場合にはファイルの +大きさを検査します)。しかし、実際にチェックサムを計算 +して比較する、時間のかかる段階は、省略します。 .It Fl d Ar dir -Look for distribution components in the directory -.Ar dir . +ディストリビューションの構成要素をこの +.Ar dir +ディレクトリの中で +探します。 .It Fl n Ar name -Access distribution components using the filename -.Ar name . -When accessing .inf file components, append the appropriate -extension to the filename. +.Ar name +というファイル名を用いてディストリビューションの +構成要素を探します。.inf拡張子のファイル構成要素にアクセス +するときはファイル名に適切な拡張子を付け加えます。 .It Fl t Ar type -Assume that all specified checksum files are of the format -.Ar type , -and search directories only for files in this format (where -.Ar type -is either "md5" or "inf"). +すべての指定されたチェックサムファイルは、フォーマットが +.Ar type +であると仮定します。このフォーマットのファイルだけを探して、 +ディレクトリを検索します。(このフォーマットの +.Ar type +は "md5" か "inf" のいずれかです)。 .El -.Sh SEE ALSO +.Sh 関連項目 cksum(1), md5(1) -.Sh DIAGNOSTICS -Exit status is 0 if no errors were detected, 1 if errors were found in -a distribution, and 2 if usage errors, inaccessible input files, or -other system errors were encountered. -.Sh NOTES -Both BSD and DOS versions of +.Sh 診断 +エラーが 1 つも検出されなければ、終了ステータスは0になります。 +ディストリビューションにエラーが発見された場合には、終了ステータスは 1 に +なります。使用上の誤りや、アクセスできない入力ファイル、または、 +システムに関わる他のエラーに遭遇した時は、終了ステータスは 2 になります。 +.Sh 注釈 .Nm -are available. +のBSD 及びDOSバージョンが、利用できます。 diff --git a/ja/man/man1/cvs.1 b/ja/man/man1/cvs.1 index 6da2e4f547..586e5991ba 100644 --- a/ja/man/man1/cvs.1 +++ b/ja/man/man1/cvs.1 @@ -1,2118 +1,2118 @@ .de Id .\" jpman %Id: cvs.1,v 1.4 1997/09/23 13:05:40 jsakai Stab % .ds Rv \\$3 .ds Dt \\$4 .. .TH CVS 1 "\*(Dt" .\" Full space in nroff; half space in troff .de SP .if n .sp .if t .sp .5 .. .\" quoted command .de ` .RB ` "\|\\$1\|" '\\$2 .. .SH "名称" cvs \- コンカレント・バージョン・システム .SH "注記" このマニュアルページは .B cvs の機能のまとめですが、より詳細な文書に関しては (このマニュアルページの関連項目の節に記述してあるように) Cederqvist 著のマニュアルを参照して下さい。 .SH "書式" .TP \fBcvs\fP [ \fIcvs_options\fP ] .I cvs_command [ .I command_options ] [ .I command_args ] .SH "解説" .IX "revision control system" "\fLcvs\fR" .IX cvs "" "\fLcvs\fP \- concurrent versions system" .IX "concurrent versions system \- \fLcvs\fP" .IX "release control system" "cvs command" "" "\fLcvs\fP \- concurrent versions system" .IX "source control system" "cvs command" "" "\fLcvs\fP \- concurrent versions system" .IX revisions "cvs command" "" "\fLcvs\fP \- source control" .B cvs は .BR rcs ( 1 ) リビジョン管理システムのフロントエンドで、 リビジョン管理の概念を複数ファイルを集めた単一ディレクトリから リビジョン管理される複数ファイルを含む複数の階層構造を持つ ディレクトリへと拡張します。 それらのディレクトリとファイルをひとまとまりにしてソフトウェアリリースを 形成することが可能になります。 .B cvs は、それらのソフトウェアリリースの管理と複数のソフトウェア開発者が 並行してソースファイルを編集する場合の制御に必要な機能を提供するものです。 .SP .B cvs はマスターソースの単一のコピーを保持します。 このコピーはソースの``リポジトリ''と呼ばれます。 これは、以前の ソフトウェアリリースをいつでもシンボリックなリビジョンタグか、 または過去の日付のいずれかに基づいて取り出せるようにするための 全ての情報を含みます。 .SH "不可欠なコマンド" .B cvs はバラエティに富んだコマンドを提供します (書式説明における \fIcvs_command\fP)。 また分散環境での多様なソース管理要求を満たすために、 これらのコマンドの多くにはいくつものオプションが用意されています。 しかしながら、 .BR cvs で便利に仕事をするためにそれぞれの細部に渡ってマスタする 必要はありません。 実際、ソースリポジトリを使う (そしてそれに貢献する) には 5 つの コマンドで充分です。 .TP \fBcvs checkout\fP \fImodules\fP\|.\|.\|. 大部分の \fBcvs\fP での作業のために必要な準備: \fImodules\fP (名前をつけたソースの集合。 ここにはソースリポジトリへの相対パスを 使うこともできます) のソースの私的なコピーを作成します。 他人の作業に邪魔されることなく このコピーで作業することができます。 少なくとも 1 レベルのサブディレクトリが必ず作成されます。 .TP .B cvs update 他の開発者がリポジトリのソースに行った変更を あなたのコピーに 取り込みたいと思ったときに、あなたの私的なソースのディレクトリの \fI中で\fP このコマンドを実行して下さい。 .TP \fBcvs add\fP \fIfile\fP\|.\|.\|. あなたの作業ディレクトリの \fBcvs\fP のレコードに新しいファイルを 載せるには、このコマンドを使います。そのファイルは次にあなたが .` "cvs commit" を実行した時にリポジトリに追加されます。 注意: 新しいソースをソースリポジトリに登録するには .` "cvs import" コマンドを使って下さい。 .` "cvs add" はすでにチェックアウトされているモジュールに新しいファイルを 追加するときにのみ使います。 .TP \fBcvs remove\fP \fIfile\fP\|.\|.\|. (指定するファイルを消した後に) リポジトリからファイルを 消したいことを宣言する場合に、このコマンドを使います。 .` "cvs commit" を実行するまで削除は他へは影響しません。 .TP \fBcvs commit\fP \fIfile\fP\|.\|.\|. あなたの変更をソースリポジトリに取り込むことで、他の開発者へ 変更結果を ``公開'' したいときに、このコマンドを使います。 .SH "オプション" .B cvs のコマンドラインには .IR cvs_options を含めることができ、 これは .B cvs プログラム全体に適用されます。 ひとつの .IR cvs_command がソースリポジトリへの特定の動作を 指定します。 そして .I cvs_command の動作を完全に指定するために .I command_options と .I command_arguments とを含めることができます。 .SP .I 警告: .IR cvs_command とオプションの相対的な位置関係に正確さを 期さなければなりません。 なぜなら同じオプションが .I cvs_options の位置 ( .B cvs コマンドの左側) と .I command_options の位置 ( .B cvs コマンドの右側) のいずれに置かれるかで異なる意味を持つ可能性が あるためです。 .SP .IR cvs_command を省略できる状況が 2 つだけあります: .` "cvs \-H" または .` "cvs --help" は利用可能なコマンドの一覧を引き出します、そして .` "cvs \-v" または .` "cvs --version" は \fBcvs\fP それ自身のバージョン情報を表示します。 .SP .SH "CVS OPTIONS" リリース 1.6 現在、 .B cvs は、短いオプションと共に .SM GNU スタイルの長いオプションもサポートします。 現在はまだ 2、3の長いオプションしかサポートされておらず、 それらは同じ意味を持つ短いオプションの後ろにかぎ括弧で囲んで 示されています。 .SP 以下のオプションは .B cvs プログラムの全体的な制御に使います: .TP .B \-H [ --help ] 指定された .I cvs_command の用法を表示します (が、コマンドの実行は行いません)。コマンド名を 指定しないと .` "cvs \-H" は利用可能な全コマンドの要約を表示します。 .TP .B \-Q はコマンドを .I 真に 寡黙にします。 コマンドは深刻な問題についてのみ出力を行います。 .TP .B \-q はコマンドをいくぶん静かにします。 サブディレクトリを再帰的に 移動する際の報告のような通知的なメッセージが抑制されます。 .TP \fB\-b\fP \fIbindir\fP .SM RCS プログラムが置かれているディレクトリとして .I bindir を使います。 環境変数 .SM RCSBIN の設定より優先されます。 これは絶対パス名で指定しなければなりません。 .TP \fB\-d\fP \fICVS_root_directory\fP マスタとなる .SM RCS ソースリポジトリのルートディレクトリへのパス名として .I CVS_root_directory を使います。 環境変数 .SM CVSROOT の設定より優先されます。 これは絶対パスで指定しなければなりません。 .TP \fB\-e\fP \fIeditor\fP ログ情報の入力においてエディタとして .I editor を使います。 環境変数 .SM CVSEDITOR と .SM EDITOR の設定より優先されます。 .TP .B \-f .B cvs スタートアップファイル (\fI~/.cvsrc\fP) を読み込みません。 .TP .B \-l コマンドヒストリに .I cvs_command のログを取りません (しかし実行はします)。コマンドヒストリに関する 情報については .B history コマンドの説明を参照して下さい。 .TP .B \-n いかなるファイルも変更しません。 .IR cvs_command を実行しようとしますが、 経過報告のみを行います。 ファイルへの削除、更新やマージのいずれも 行いませんし、新しいファイルも作成しません。 .TP .B \-t プログラムの実行をトレースします。 .B cvs の動作のステップを示すメッセージを表示します。 不慣れなコマンドの影響の可能性を調べるのに .B \-n -との組合せで特に有用です。 +との組み合わせで特に有用です。 .TP .B \-r 新しい作業ファイルを読み出し専用にします。 環境変数 .SM CVSREAD がセットされている場合と同じ効果を持ちます。 .TP .B \-v [ --version ] .BR cvs のバージョンと著作権情報を表示します。 .TP .B \-w 新しい作業ファイルを読み書き可能にします (デフォルトです)。 環境変数 .SM CVSREAD がセットされていても無視します。 .TP .B \-x クライアントとサーバの間の通信を全て暗号化します。 現在では、Kerberos コネクション使用時のみ使用可能です。 .TP \fB\-z\fP \fIcompression\-level\fP ファイルをネットワーク経由でやりとりする際、 圧縮レベル \fIcompression\-level\fP で .B gzip を使い、やりとりするデータの圧縮と伸長を行います。リンクの両端で .SM GNU .B gzip プログラムがその時点でのサーチパス中に存在する必要があります。 .SH "使用法" .` "cvs \-H" で全般のヘルプを要求する場合を除き、 行いたい特定のリリース制御機能を選択するために、 .B cvs に対して一つの .I cvs_command を指定しなければなりません。 各 .B cvs コマンドはそれ自身のオプションと引数の集まりを受け付けます。 しかしながら、多くのオプションが複数のコマンドに渡って利用可能です。 .B \-H オプションをコマンドと共に指定することで、 各コマンドの使用法のまとめを表示することができます。 .SH "CVS のスタートアップファイル" 通常、CVS は起動時にユーザのホームディレクトリから .I .cvsrc というファイルを読み込みます。この起動時の手続きは .B \-f フラグで止めることができます。 .SP .I .cvsrc ファイルには CVS コマンドに引数リストを付けて、1 行に 1 つの コマンドを並べます。例えば \fI.cvsrc\fP に以下のように書くと: .SP diff \-c .SP .` "cvs diff" コマンドには常にコマンドラインで指定されたオプションに加えて \-c オプションが渡されるという意味になります (この場合 .` "cvs diff" を実行すると 全てにおいて context diff 形式が生成されるという 効果を持ちます)。 .SH "CVS COMMAND のまとめ" 以下は全 .B cvs コマンドの解説を要約したものです: .TP .B add 新しいファイルまたはディレクトリをリポジトリに追加します。 ファイルについては追加を同ファイルに対する .` "cvs commit" が行われるまで待ちます。 以前に .` "cvs checkout" を行うことで作成されたソースの中からのみ実行可能です。 新しいソース階層の全体を .B cvs の制御下に置くには .` "cvs import" を使って下さい。 (リポジトリを直接に変更するものではありません。 作業ディレクトリを変更します。) .TP .B admin ソースリポジトリに対して .SM RCS の制御コマンドを実行します。(リポジトリを直接に変更します。 作業ディレクトリを使用しますが変更は行いません。) .TP .B checkout 編集作業のためのソースファイルの作業ディレクトリを作成します。 (作業ディレクトリを生成または変更します。) .TP .B commit 作業ディレクトリでの変更、追加、削除部分をソースリポジトリに 反映します。(リポジトリを変更します。) .TP .B diff 作業ディレクトリのファイルとソースリポジトリ、または ソースリポジトリ中の 2 つのリビジョン間の差分を表示します。 (リポジトリ、作業ディレクトリのいずれも変更しません。) .TP .B export サイトからの出荷のための一揃いのソースファイルのコピーを用意します。 .` "cvs checkout" と違い .B cvs 管理のためのディレクトリが作られず (そしてそのため .` "cvs export" で作成されたディクトリから .` "cvs commit" を行うことはできません)、 シンボリックタグが指定されなければなりません (リポジトリを変更しません。 作業ディレクトリに似たディレクトリを 作成します)。 .TP .B history ソースリポジトリの特定のファイルまたはディレクトリにあなたや 他の人が実行した .B cvs コマンドを表示します。(リポジトリも作業ディレクトリも変更しません。) ヒストリログは .` "$CVSROOT/CVSROOT/history" ファイルが作成されることで有効になった場合にのみ記録されます。 .BR cvs ( 5 ) を参照して下さい。 .TP .B import 外部で行われた更新内容を ``ベンダ・ブランチ'' としてソースリポジトリに 取り込みます。(リポジトリを変更します。) .TP .B log .SM RCS のログ情報を表示します。 (リポジトリも作業ディレクトリも変更しません。) .TP .B rdiff リポジトリの中の 2つのリリースの間の差分の集合をパッチファイルとして 用意します。(リポジトリも作業ディレクトリも変更しません。) .TP .B release .` "cvs checkout" をキャンセルし、 全ての変更を捨て去ります。 (作業ディレクトリを削除できます。 リポジトリは変更しません。) .TP .B remove ソースリポジトリからファイルを削除します、そのファイルに .` "cvs commit" が実行されるまで保留されます。(直接リポジトリには影響しません。 作業ディレクトリを変更します.) .TP .B rtag ソースリポジトリの特定のリビジョンのファイルに明示的に シンボリックタグを指定します。 .` "cvs tag" も参照して下さい。 (リポジトリを直接変更します。 作業ディレクトリは必要なく また 変更もしません.) .TP .B status 現在のファイルの状態を表示します: 最新バージョン、作業ディレクトリの ファイルのバージョン、作業バージョンが編集されたかどうか、オプションで .SM RCS ファイル中のシンボリックタグ。(リポジトリ、作業ディレクトリとも 変更しません。) .TP .B tag リポジトリ中のファイルにシンボリックタグを指定します。 デフォルトでは、作業ディレクトリと最後に同期を取ったリビジョンに タグをつけます。 (直接リポジトリを変更します。 作業ディレクトリを使いますが 変更はしません。) .TP .B update リポジトリから変更を取り出して作業ディレクトリを最新状態にします。 可能であればマージが自動で行われます。 変更点が衝突しているために手動で解決しなければならない場合は、 警告が表示されます。(作業ディレクトリを変更します。 リポジトリは変更しません。) .SH "共通の COMMAND OPTIONS" この節では 複数の .B cvs コマンドで使用できる .I command_options について説明します。必ずしも全てのコマンドがこれら全てのオプションを サポートしているわけではありません。 コマンドの各オプションは、それが 意味を為すコマンドでのみサポートされます。しかしながら、 コマンドがそれらのオプションのひとつを持つとき、 他のコマンドでもそのオプションが同じ意味を持つと考えて差し支えありません。 (個々のコマンドと共に列挙してある別のオプションは ある .B cvs コマンドと別のコマンドで異なる意味を持つかもしれません。) .I "注意:" .B history コマンドは例外です。 このコマンドは、これら標準のオプションとも衝突するたくさんの オプションをサポートしています。 .TP \fB\-D\fP \fIdate_spec\fP \fIdate_spec\fP 以前のものの中で最も最近のリビジョンを使います (単独の 引数で、日時の表記は過去の日時を指定します)。 下請けの .SM RCS の機能により .BR co ( 1 ) に説明されているのと同様の多種多様な日時のフォーマットが サポートされますが、まったく同じというわけではありません。 特定のタイムゾーンが指定されていなければ、\fIdate_spec\fP は ローカルタイムゾーンで解釈されます。 ソースファイルの個人的なコピーを作るときに使うと、指定は ``sticky'' と なります。 つまり、\fB\-D\fP を使って作業ファイルを取り出すと、 \fBcvs\fP は指定された日時を記録します。 これは同じディレクトリでのその後の update で同じ日時を使うように するためです (これを明示的に無効にするよう指定していない場合に限ります。 \fBupdate\fP コマンドの説明を参照して下さい)。 .B \-D は .BR checkout ", " diff ", " history ", " export ", " .BR rdiff ", " rtag ", " .B update コマンドで有効です。 有効な日時指定には以下のようなものがあります: .in +1i .ft B .nf 1 month ago 2 hours ago 400000 seconds ago last year last Monday yesterday a fortnight ago 3/31/92 10:00:07 PST January 23, 1987 10:05pm 22:00 GMT .fi .ft P .in -1i .TP .B \-f \fBcvs\fP コマンドに特定の日時かタグを指定した場合、 通常は指定したタグを含まない (または指定した日時に存在しなかった) ファイルを無視します。一致するタグまたは日時が存在しなくても ファイルを取り出したいときは \fB\-f\fP オプションを使います。 (その場合、最も新しいバージョンが使われます。) .B \-f は以下のコマンドで使用できます: .BR checkout ", " export ", " .BR rdiff ", " rtag ", " update .TP .B \-H ヘルプ; そのコマンドで使用可能なオプションの説明を表示します。 これは .I 全ての .B cvs コマンドでサポートされる唯一のオプションです。 .TP \fB\-k\fP \fIkflag\fP デフォルトの .SM RCS のキーワード処理を変更します。 .BR co ( 1 ) に説明されている全ての .B \-k オプションが使用できます。\fB\-k\fP オプションは .BR add ", " checkout ", " diff ", " export ", " .BR rdiff ", " update コマンドで使用できます。 ソースファイルの個人的なコピーを作成するときに使うと \fIkflag\fP の指定は ``sticky'' になります。 つまり、このオプションを \fBcheckout\fP か \fBupdate\fP コマンドで指定すると、 \fBcvs\fP は指定した \fIkflag\fP をファイルに関連付け、 他のものを指定するまで、以降の \fBupdate\fP コマンドでそれを使い続けます。 .SP より有用な \fIkflag\fP としては \-ko と \-kb (バイナリファイル用、 .SM RCS バージョン 5.7 以降でのみ利用可)、と \-kv があります。\-kv は .B export の際、どこか別のサイトで後に .B import されてもキーワード情報が残るようにしたい場合に有用です。 .TP .B \-l ローカル; サブディレクトリを再帰的に処理するのではなく、 現ディレクトリでのみ実行します。 以下のコマンドで使用できます: .BR checkout ", " commit ", " diff ", " .BR export ", " remove ", " rdiff ", " rtag ", " .BR status ", " tag ", " update .I 注意: これは .B cvs コマンドの .I 左 に指定することのできる、全体に作用する .` "cvs \-l" オプションとは違います! .TP .B \-n .BR checkout / commit / tag / update のいずれのプログラムも .I 実行しません。 (プログラムはそれぞれの動作中にモジュールデータベースで 実行することを指定される可能性があり、このオプションはこれを バイパスします。) .BR checkout ", " commit ", " export ", " .B rtag コマンドで利用できます。 .I 警告: これは .B cvs コマンドの .I 左側 に指定できる、全体に作用する .` "cvs \-n" オプションと同じではありません。 .TP .B \-P .BR checkout " か " update によって更新されたことで空になった余分なディレクトリを 取り除きます (すなわち削除します)。 通常は、空のディレクトリ (リビジョン管理されたファイルを 含まないもの) は残されます。 .B \-P を指定すると、チェックアウトしたソースからそういったディレクトリを 黙って削除します。 これはリポジトリからはディレクトリを削除しません。あなたが チェックアウトしたコピーから削除するだけです。 このオプションは .B \-r か .B \-D オプションが .BR checkout " と " export で指定された場合に暗黙のうちに 指定されることに注意して下さい。 .TP .B \-p リポジトリから取り出されたファイルを、カレントディレクトリに 書き込むのではなく、標準出力へパイプします。 .BR checkout " と " update コマンドで使用できます。 .TP \fB\-r\fP \fItag\fP デフォルトの ``head'' リビジョンの代わりに引数 .I tag で指定されたリビジョンを使います。 \fBtag\fP と \fBrtag\fP コマンドで 付けられた任意のタグと共に、常に 2つの特別なタグが使用できます: .` "HEAD" はリポジトリ中で最も新しい有効なバージョンを指し、 そして .` "BASE" はカレントの作業ディレクトリに最後にチェックアウトした リビジョンを指します。 .SP このオプションを .` "cvs checkout" か .` "cvs update" でファイルのコピーを作成するときに使うと、 \fItag\fP の指定は ``sticky'' です: \fBcvs\fP は \fItag\fP を記憶して以降の \fBupdate\fP コマンドでも、他のものを 指定するまで、それを使い続けます。 .I tag としては .SM RCS スタイルのシンボリックまたは番号によるものが使用できます。 .SM RCS ファイルが指定されたタグを含んでいないときに警告メッセージを抑止するため 全体に作用する .B \-q オプションをコマンドオプション .B \-r と一緒に指定すると便利な場合が多くあります。 .B \-r は .BR checkout ", " commit ", " diff ", " .BR history ", " export ", " .BR rdiff ", " rtag ", " update コマンドで使用できます。 .I 警告: これは .B cvs コマンドの .I 左側 に指定し、全体に作用する .` "cvs \-r" オプションと同じではありません。 .SH "CVS COMMANDS" 以下が (最終的な) 全 .B cvs コマンドの詳細とそれぞれが受け付けるオプションです。 各コマンドの最初のサマリ行の説明は 3 種類の事柄をまとめています: .TP 1i \ \ \ \ コマンドのオプションと引数 特別なオプションが以下で説明されます。 共通のコマンドオプションは サマリ行にしか現れないかもしれません。 .TP 1i \ \ \ \ 作業ディレクトリかリポジトリか? いくつかの \fBcvs\fP コマンドは実行に作業ディレクトリが必要です。 いくつかはリポジトリが必要です。同様に、いくつかのコマンドは リポジトリを \fI変更し\fP 、いくつかは作業ディレクトリを変更し、 いくつかは何の変更も行いません。 .TP 1i \ \ \ \ 同義語 多くのコマンドには同義語があります。 同義語は正式な名前よりも覚えやすい (あるいはタイプしやすい) と 感じることでしょう。 .PP .TP \fBadd\fP [\fB\-k\fP \fIkflag\fP] [\fB\-m '\fP\fImessage\fP\fB'\fP] \fIfiles.\|.\|.\fP .I 以下が必要: リポジトリ、作業ディレクトリ。 .br .I 以下を変更: 作業ディレクトリ。 .br .I 同義語: .B new .br .B add コマンドを使って .SM RCS ソースリポジトリに新しいファイルまたはディレクトリを作成します。 .B add で指定されるファイルまたはディレクトリは、すでに カレントディレクトリ ( .B checkout コマンドで作成されたディレクトリでなければなりません) に 存在しなければなりません。 新しいディレクトリ階層の全体をソースリポジトリに追加する (例えば、サードパーティのベンダから受け取ったファイル群のような) には、 代わりに .` "cvs import" コマンドを使います。 .SP .` "cvs add" の引数が直下のサブディレクトリを指しているなら、そのディレクトリが .SM RCS ソースリポジトリの現位置に作成され、必要な .B cvs 管理ファイルが作業ディレクトリに作成されます。 ディレクトリがすでにソースリポジトリに存在した場合でも、 .` "cvs add" はあなたのバージョンのディレクトリに管理ファイルを作成します。 これによって、あなたがソースを .B checkout した後に誰か他の人がディレクトリを作っていても .` "cvs add" でそのディレクトリをあなたの私的なソースに作成することが 可能になります。以下のようにすることができます: .SP .in +1i .ft B .nf example% mkdir new_directory example% cvs add new_directory example% cvs update new_directory .fi .ft P .in -1i .SP .` "cvs update" を使った別のアプローチもあります: .SP .in +1i .ft B .nf example% cvs update -d new_directory .fi .ft P .in -1i .SP (新しく \fIできた\fP ディレクトリをあなたの作業ディレクトリに 追加するには、おそらく .` "cvs checkout" か .` "cvs update -d" を使用する方が簡単でしょう。) .SP .` "cvs commit" で変更が恒久的なものとされるまで、追加されたファイルは .SM RCS ソースリポジトリには置かれません。 .` "cvs remove" コマンドで削除されたファイルに対して .` "cvs add" を行うと、間で .` "cvs commit" コマンドが実行されていなければファイルが復活します。 .SP 新しいファイルを .` "cvs commit" で恒久的なものにするときに、いつものように、ログメッセージを指定する 機会があります。もしファイルの .I 作成 と対応するもう一つのログメッセージを指定したいならば (例えば、ファイルの目的を説明するなど)、 .B add コマンドの .` "\-m \fImessage\fP" オプションで指定することができます。 .SP .` "-k kflag" オプションで このファイルがチェックアウトされるときの デフォルトを指定できます。 引数 .` "kflag" は .SM RCS ファイルに記録されて .` "cvs admin" で変更することができます。 展開された .SM RCS ID 文字列を持たないであろうバイナリをチェックインする場合には .` "-ko" を指定すると便利です。 .TP \fBadmin\fP [\fIrcs-options\fP] \fIfiles.\|.\|.\fP .I 以下が必要: リポジトリ、作業ディレクトリ。 .br .I 以下を変更: リポジトリ。 .br .I 同義語: .B rcs .br これは .BR rcs ( 1 ) で文書化されている .SM RCS の管理機構と対応する .B cvs のインタフェースです。 .` "cvs admin" は その全てのオプションと引数を単純に .B rcs コマンドに渡します。 なんのフィルタや変換も行いません。 しかしながら、このコマンドは再帰的に働きます。よって使用には 特別な注意を払わなければいけません。 .TP \fBcheckout\fP [\fBoptions\fP] \fImodules\fP.\|.\|. .I 以下が必要: リポジトリ。 .br .I 以下を変更: 作業ディレクトリ。 .br .I 同義語: .BR co ", " get .br .IR modules で指定されたソースファイルのコピーを持つ 作業ディレクトリを作成します。他の大部分の .B cvs コマンドは作業ディレクトリに作用するものなので、これらを使う前に .` "cvs checkout" を実行しなくてはなりません。 .SP \fImodules\fP はいくつかのソースディレクトリとファイルを 集めたものに対するシンボル名 (それ自体は .` "modules" というモジュールとしてソースリポジトリに定義されています。 .BR cvs ( 5 ) 参照) か、あるいはリポジトリ中でのディレクトリまたはファイルへのパス名です。 .SP 指定した .I modules に応じて、 .B checkout は再帰的にディレクトリを作成して適切なソースファイルで満たします。 その後はいつでも、(他のソフトウェア開発者達がソースの彼らの分のコピーを 編集しているかどうかを気にすることなく) これらのソースファイルを編集したり、 他の人によってソースリポジトリに行われた新しい変更を取り込むために これらを更新 (update) したり、 .SM RCS あなたの作業を恒久的な変更としてリポジトリに 登録 (commit) することができます。 .SP .B checkout はディレクトリの作成に使われることに注意して下さい。 作成されるディレクトリのトップレベルは常に .B checkout が起動されたディレクトリに追加され、そして通常、指定された .IR module と同じ名前を持ちます。 .I module がエイリアスの場合は、作成されたサブディレクトリは違う名前を持つかも しれませんが、それがサブディレクトリであること、そして .B checkout はファイルが私的な作業領域に取り出される際に各ファイルへの 相対パスを表示すること (全体に作用する .B \-Q オプションを指定していなければ) は当てにできます。 .SP すでに以前の .B checkout で作成されているディレクトリで .` "cvs checkout" を実行することも許されています。これは 以下で説明する .B update コマンドに .B \-d オプションを指定するのと同じ効果を持ちます。 .SP .` "cvs checkout" で使える .I options は以下の標準のコマンドオプションです。 .BR \-P ", " \-f ", " .BI \-k " kflag" \&, .BR \-l ", " \-n ", " \-p ", " .BR \-r .IR tag ", " .BI \-D " date"\c .SP これらに加えて、以下の特別のコマンドオプションを .BR checkout で使うことができます: .SP .B \-A オプションで sticky なタグ、日付または .B \-k オプションをリセットできます。(作業ファイルを \fB\-r\fP, \fB\-D\fP, \fB\-k\fP オプションのいずれかを使って取り出すと、 \fBcvs\fP は対応するタグ、日付、\fIkflag\fP を記録して以降の 更新 (update) でそれを使い続けます。 \fB\-A\fP オプションを使って \fBcvs\fP に それらの指定を忘れさせ、ファイルの ``head'' バージョンを取り出します)。 .SP .BI \-j " branch" オプションはベースとなったリビジョンと、そこから変更された結果の リビジョンとの差分をマージします (例えば、もしタグがブランチを 指しているときは、 .B cvs は、そのブランチで行われた全ての変更を作業ファイルにマージします)。 .SP 2 つの \fB-j\fP オプションを指定すると、 .B cvs は 2 つの各々のリビジョン間での変更をマージします。 これは特定の差分を作業ファイルから ``削除'' するために使うことが できます。 .SP 加えて、各 \fB-j\fP オプションをブランチで使う場合に必要であれば 日時指定を加えることができ、選択するリビジョンを指定した日時以内に 制限できます。 日時を加える場合はタグにコロン (:) を付けて指定します。 例としては .` "cvs import" でローカルな変更と衝突する部分のあるソースを import するときに 実行するように指示されるコマンドがあります: .SP .in +1i .ft B .nf example% cvs checkout -jTAG:yesterday -jTAG module .fi .ft P .in -1i .SP .B \-N オプションと .` "\-d \fIdir\fP" を指定することで作業ディレクトリでモジュールのパスが短縮されるのを 防げます。(通常、明示的に対象ディレクトリを指定すると \fBcvs\fP は なるべくパスが短くなるようにします。) .SP .B \-c オプションで、作業ディレクトリのファイルやディレクトリに作成や変更を 行う代わりに、モジュールファイルをソートしたものを標準出力にコピー します。 .SP .BI \-d " dir" オプションで、モジュール名ではなく、 .I dir で指定した名前のディレクトリを作業ファイルのために作成します。 \fB\-N\fP を一緒に指定しない場合は、\fIdir\fP の下に作成されるパスは 可能な限り短くなります。 .SP .B \-s オプションを使って .B \-s オプションでモジュールファイルに格納されたモジュール単位の ステータス情報を表示します。 .TP \fBcommit\fP [\fB\-lnR\fP] [\fB\-m\fP '\fIlog_message\fP' | \fB\-f\fP \fIfile\fP] [\fB\-r\fP \fIrevision\fP] [\fIfiles.\|.\|.\fP] .I 以下が必要: 作業ディレクトリ、リポジトリ。 .br .I 以下を変更: リポジトリ。 .br .I 同義語: .B ci .br 作業ディレクトリでの変更を共有のソースリポジトリに組み込むにときには .` "cvs commit" を使います。 .SP コミットする対象となる \fIfiles\fP を指定しない場合、現在の 作業ディレクトリ中の全ファイルが調べられます。 .B commit はあなたが本当に変更したファイルだけを慎重にリポジトリで変更します。 デフォルトでは (または明示的に .B \-R オプションを指定した場合)、サブディレクトリのファイルも 調べられ、もし変更されていればコミットされます。 .B \-l オプションで現ディレクトリのみ .B コミット するように制限できます。 変更されていなくても強制的にファイルをコミットしたい場合があるかも しれません。 これは .B \-f フラグで可能で、これは同時に再帰も抑止します (もちろん .B \-R で再帰するようにできます)。 .SP .B commit は選択されたファイルがソースリポジトリの現リビジョンに対して 最新であることを確認します。 もし選択されたファイルのいずれかが まず .` "cvs update" で最新にされなければならないなら、そこで通知してコミットせずに終ります。 .B commit は .B update コマンドを呼び出しません。update すべきときであるかどうかの判断は ユーザにゆだねられます。 .SP 全てがうまくいくと、ログメッセージを入力するためにエディタが 呼び出されます。ログメッセージは一つかそれ以上のログを取る プログラムに書き込まれて .SM RCS ソースリポジトリのファイルに置かれます。 代わりにコマンドラインで .B \-m オプションと共にログメッセージを指定し、 エディタの呼び出しを抑制することができます。また .B \-F オプションで引数の \fIfile\fP にログメッセージが含まれていることを 指示することもできます。 .SP .B \-r オプションで特定のシンボリックまたは番号で指定される .SM RCS ファイル中のリビジョンとしてコミットできます。 例えば、全ファイルを .SM RCS リビジョンの ``3.0'' に上げる (変更されていないものも含めて) には、以下のようにします: .SP .in +1i .ft B .nf example% cvs commit -r3.0 .fi .ft P .in -1i .SP .B cvs はメインの幹上のリビジョン (ドットが 1 つのリビジョン) へのコミットのみ 許します。 しかしながら、 .B \-r オプションでブランチ上のリビジョン (偶数個のドットをもつリビジョン) へ コミットすることもできます。 ブランチとなるリビジョンを作成するには、通常 .BR rtag " または " tag コマンドの .B \-b オプションを使います。 その後、 .BR checkout " または " update のいずれかでソースのベースを新しく作成したブランチにすることができます。 それ以降、それらの作業ファイルで行われた全ての .B commit される変更点は自動的にブランチのリビジョンに追加され、 それによって主たる開発ラインが混乱させられることはありません。 例をあげると、製品のバージョン 1.2 へのパッチを作成しなければ ならなくなったとすると、バージョン 2.0 がすでに開発中だったとしても、 以下のようにできます: .SP .in +1i .ft B .nf example% cvs rtag -b -rFCS1_2 FCS1_2_Patch product_module example% cvs checkout -rFCS1_2_Patch product_module example% cd product_module [[ hack away ]] example% cvs commit .fi .ft P .in -1i .SP 極めて実験的なソフトウェアを開発しているとして、 前の週にチェックアウトしたなんらかのリビジョンをベースにしていると します。 あなたのグループの別の人がこのソフトウェアであなたと一緒に作業したいが、 主たる開発ラインの邪魔はしたくないと考えたなら、あなたはあなたの 変更点を新しいブランチにコミットすると良いでしょう。 すると別の人はあなたの実験的な変更をチェックアウトして .B cvs の衝突解決機能を最大限に利用することができます。 シナリオは以下のようになります: .SP .in +1i .ft B .nf example% cvs tag -b EXPR1 example% cvs update -rEXPR1 [[ hack away ]] example% cvs commit .fi .ft P .in -1i .SP 別の人は単純に .` "cvs checkout -rEXPR1 whatever_module" とすれば実験的な変更を採り入れてあなたと作業できるようになります。 .TP \fBdiff\fP [\fB\-kl\fP] [\fIrcsdiff_options\fP] [[\fB\-r\fP \fIrev1\fP | \fB\-D\fP \fIdate1\fP] [\fB\-r\fP \fIrev2\fP | \fB\-D\fP \fIdate2\fP]] [\fIfiles.\|.\|.\fP] .I 以下が必要: 作業ディレクトリ、リポジトリ。 .br .I 以下を変更: なにも変更しません。 .br 作業ディレクトリのファイルとソースリポジトリのリビジョンを .` "cvs diff" コマンドで比較できます。もし特定のリビジョンを指定しなければ、 ベースにしたリビジョンと比較されます。 標準の .B cvs コマンドのオプション .B \-r で比較の対象となるリビジョンを指定することもできます。 最後に、 .B \-r を 2 回 使うと、リポジトリの 2 つのリビジョン間の差分を取ることができます。 過去のリビジョンとの差分を取るために .B \-D オプションを指定することもできます。 .B \-r と .B \-D オプションは常に指定された中で 2 つまでを組み合わせられます。 .SP 他の使用可能なオプションについては .BR rcsdiff ( 1 ) を参照して下さい。 .SP ファイルを何も指定しないと、 .B diff は現ディレクトリ (そして、標準オプション .BR \-l を指定していなければ そのサブディレクトリ) の全てのファイルについて、 ソースリポジトリの対応するリビジョンと異なっているもの (つまり .I あなたが 変更したファイル) または指定されたリビジョンと 異なっているものについて、その差分を表示します .TP \fBexport\fP [\-\fBf\|lNnQq\fP] \fB\-r\fP \fIrev\fP\||\|\fB\-D\fP \fIdate\fP [\fB\-d\fP \fIdir\fP] [\fB\-k\fP \fIkflag\fP] \fImodule\fP.\|.\|. .I 以下が必要: リポジトリ。 .br .I 以下を変更: 現ディレクトリ。 .br このコマンドは .` "cvs checkout" の一種です。 \fBcvs\fP の管理ディレクトリを持たない \fImodule\fP のソースのコピーが必要なときに使います。 例えば、サイト外にソースを出す準備をするために .` "cvs export" を使うことができます。 このコマンドでは日付またはタグを指定することが \fI必要\fP です。 (\fB\-D\fP または \fB\-r\fP によって)。それによって出荷したソースを 確実に再構成できるようになります。 .SP 標準でないオプションは .` "\-d \fIdir\fP" (ソースをディレクトリ \fIdir\fP に書き込みます) と .` "\-N" (モジュールパスを短縮しません) のみです。 これらは .` "cvs checkout" の同名のオプションと同じ意味を持ちます。 .SP .B export が使われるときは .B \-kv オプションが有用です。 これによって .SM RCS キーワードが、どこか別のサイトで .B import が行われたときにリビジョン情報が失われないような形に展開されるように なります。 他の \fIkflag\fP を .` "cvs export" で使用することもできます。その説明は .BR co ( 1 ) にあります。 .TP \fBhistory\fP [\fB\-\fP\fIreport\fP] [\fB\-\fP\fIflags\fP] [\fB\-\fP\fIoptions args\fP] [\fIfiles\fP.\|.\|.] .I 以下が必要: .` "$CVSROOT/CVSROOT/history" ファイル。 .br .I 以下を変更: 何も変更しません。 .br \fBcvs\fP はヒストリファイルを管理しており、各 \fBcheckout\fP, \fBcommit\fP, \fBrtag\fP, \fBupdate\fP, \fBrelease\fP コマンドの使用を記録します。 .` "cvs history" を使って、この情報を色々なフォーマットで表示することができます。 .SP .I 警告: .` "cvs history" は .` "\-f", .` "\-l", .` "\-n", .` "\-p" を .SM 共通の COMMAND OPTIONS\c \&での説明とは異なる意味に使用します。 .SP いくつかのオプション (上で \fB\-\fP\fIreport\fP となっている部分) は どんな種類のレポートを生成するかを制御します: .TP 1i .B \ \ \ \ \ \ \-c 今までの各 \fBcommit\fP (つまりリポジトリの変更) についてレポートします。 .TP 1i \fB\ \ \ \ \ \ \-m\fP \fImodule\fP 特定の \fImodule\fP についてレポートします。(コマンドラインで複数の \fB\-m\fP を指定できます。) .TP 1i .B \ \ \ \ \ \ \-o チェックアウトされたモジュールについてレポートします。 .TP 1i .B \ \ \ \ \ \ \-T 全てのタグについてレポートします。 .TP 1i \fB\ \ \ \ \ \ \-x\fP \fItype\fP 特定のレコードタイプ \fIX\fP のセットを \fBcvs\fP ヒストリから 取り出します。タイプは 1文字で表され、組み合わせて指定できます。 以下のコマンドは単一のレコードタイプを持ちます: \fBcheckout\fP (タイプ `O')、 \fBrelease\fP (タイプ `F')、\fBrtag\fP (タイプ `T')。 \fBupdate\fP は 4つのレコードタイプのうちの 1つになります: `W' は 作業用のファイルのコピーが update で (それがリポジトリから無くなって いたために) 削除された場合です; `U' は作業ファイルがリポジトリから コピーされた場合です; `G' は必要なマージが無事に終った場合です; 'C' は マージが必要だが衝突が検出された場合 (手動でのマージが必要な場合) です。 また、\fBcommit\fP では 3つのレコードタイプのうちの 1つになります: `M' はファイルが変更された場合; `A' はファイルが最初に追加された場合; `R' はファイルが削除された場合です。 .TP 1i .B \ \ \ \ \ \ \-e 全て (全レコードタイプ); 以下を指定するのと等価です。 .` "\-xMACFROGWUT" .TP 1i \fB\ \ \ \ \ \ \-z\fP \fIzone\fP ヒストリレコードを出力する際に .I zone で指定されたタイムゾーンを使います。 .B LT というゾーン名はローカルタイムの意味になります。 数値によるオフセットは時分での UTC との時差を意味します。 例えば、 .B +0530 は 5 時間と 30 分だけ UTC より前 (つまり東側) の意味になります。 .PP .RS .5i \fB\-\fP\fIflags\fP と書かれた部分のオプションは、レポートする範囲を絞ります。 引数の指定はありません。 .RE .TP 1i .B \ \ \ \ \ \ \-a 全てのユーザのデータを表示します (デフォルトでは .` "cvs history" を実行しているユーザのみのデータを表示します)。 .TP 1i .B \ \ \ \ \ \ \-l 最後の変更のみ表示します。 .TP 1i .B \ \ \ \ \ \ \-w .` "cvs history" が実行されているのと同じ作業ディレクトリから行われた変更に関する レコードのみを表示します。 .PP .RS .5i \fB\-\fP\fIoptions args\fP と書かれた部分のオプションは引数に 基づいてレポート範囲を絞ります: .RE .TP 1i \fB\ \ \ \ \ \ \-b\fP \fIstr\fP 文字列 \fIstr\fP をモジュール名、ファイル名、リポジトリパスの いずれかに含むレコードに戻って表示します。 .TP 1i \fB\ \ \ \ \ \ \-D\fP \fIdate\fP \fIdate\fP 以降のデータを表示します。 .TP 1i \fB\ \ \ \ \ \ \-p\fP \fIrepository\fP 特定のソースリポジトリのデータを表示します (複数の \fB\-p\fP オプションを同じコマンド行で指定できます)。 .TP 1i \fB\ \ \ \ \ \ \-r\fP \fIrev\fP 個々の RCS ファイルに現れるリビジョンが \fIrev\fP で指定されたリビジョンまたはタグ以降であるレコードを表示します。 各 .SM RCS ファイルについてリビジョンまたはタグが検索されます。 .TP 1i \fB\ \ \ \ \ \ \-t\fP \fItag\fP \fItag\fP で指定されるタグがヒストリファイルに最後に 追加されてからのレコードを表示します。 このオプションは、 .SM RCS ファイルではなくヒストリファイルのみ参照する点で 上記の \fB-r\fP フラグと異なり、 より高速です。 .TP 1i \fB\ \ \ \ \ \ \-u\fP \fIname\fP \fIname\fP で指定されるユーザのレコードを表示します。 .PP .TP \fBimport\fP [\fB\-\fP\fIoptions\fP] \fIrepository vendortag releasetag\fP.\|.\|. .I 以下が必要: リポジトリ、ソース配布物のディレクトリ。 .br .I 以下を変更: リポジトリ。 .br .` "cvs import" を使うことで外部の供給元 (例えばソース・ベンダ) からのソース配布物 全体をあなたのソースリポジトリのディレクトリへ取り込めます。 最初のリポジトリの作成と、外部の供給元からのモジュールへの 大規模な更新の両方にこのコマンドを使うことができます。 .SP 引数 \fIrepository\fP で CVS ルートディレクトリ下のリポジトリ用 ディレクトリ名 (またはディレクトリへのパス) を与えます。 もしディレクトリが存在しないなら、\fBimport\fP が作成します。 .SP あなたのソースリポジトリで (前回の \fBimport\fP から) 変更された ソースへの更新に \fBimport\fP を使った場合、開発の 2 本のブランチで 衝突しているファイルについて警告します。 \fBimport\fP が指示するように、 .` "cvs checkout -j" を使って差分を調整できます。 .SP デフォルトでは、ある種のファイル名が .` "cvs import" で無視されます: .SM CVS 管理、または他の一般的なソース管理システムに関連する名前; パッチファイル、オブジェクトファイル、アーカイブファイル、 エディタのバックアップファイルのための一般的な名前; そして雑多なユーティリティの加工品であることを示すその他の名前。 無視されるファイルのリストの最新については、 (このマニュアルページの関連項目の節に記述してあるように) Cederqvist 著のマニュアルを参照して下さい。 .SP 外部からのソースは第一レベルの .SM RCS ブランチ、デフォルトでは .` "1.1.1" に保存されます。 以降の更新は このブランチのリーフになります。 例えば、最初に import したソース集合からのファイルはリビジョン .` "1.1.1.1" になり、 次の import による更新でファイルはリビジョン .` "1.1.1.2" になり、以下同様に続きます。 .SP 最低で 3 つの引数が必要です。ソースの集合を識別するために \fIrepository\fP が必要です。\fIvendortag\fP はブランチ全体を示す タグになります (例えば .` "1.1.1" と対応します)。 .` "cvs import" を実行する度にリーフとしてできるファイルを 識別するために少なくとも一つの \fIreleasetag\fP も指定しなければ なりません。 .SP .B cvs の標準のコマンドオプションのうちの 1 つ \fB\-m\fP が利用可能です: ログメッセージを \fB\-m\fP で指定しないと、(\fBcommit\fP でのように) メッセージを 入力できるようにエディタが起動されます。 .SP さらに 3 つの特別なオプションがあります。 .SP .` "\-d" を使って、各ファイルの最終更新日時がチェックインの日付と時刻として 使われるよう指示できます。 .SP .` "\-b \fIbranch\fP" を使って第一レベルのブランチを .` "1.1.1" 以外に指定できます。 .SP .` "\-I \fIname\fP" を使って \fBimport\fP 中に無視されるべきファイル名を指定できます。 このオプションは繰り返して指定できます。 いかなるファイルも無視されない (デフォルトで無視されるものでも) ようにするには、 .` "\-I !" と指定します。 .TP \fBlog\fP [\fB\-l\fP] \fIrlog-options [files\fP\|.\|.\|.] .I 以下が必要: リポジトリ、作業ディレクトリ。 .br .I 以下を変更: 何も変更しません。 .br .I 同義語: .B rlog .br \fIfiles\fP のログ情報を表示します。 .` "cvs log" は .SM RCS ユーティリティの \fBrlog\fP を呼び出します。 .BR rlog ( 1 ) で説明されている全てのオプションが使用できます。 \fBrlog\fP のオプションの中でも有用なものとしては、以下のものがあります: ヘッダ (タグの定義を含むが、ログの大部分は省略される) のみ表示する \fB\-h\fP ; 特定のリビジョンまたはリビジョンの範囲でログを選択する \fB\-r\fP; そして特定の日時または時刻の範囲を選択する \fB\-d\fP が あります。完全な説明は .BR rlog ( 1 ) を参照して下さい。 このコマンドは .B \-l オプションが指定されていなければ、デフォルトで再帰的に働きます。 .TP \fBrdiff\fP [\fB\-\fP\fIflags\fP] [\fB\-V\fP \fIvn\fP] [\fB\-r\fP \fIt\fP|\fB\-D\fP \fId\fP [\fB\-r\fP \fIt2\fP|\fB\-D\fP \fId2\fP]] \fImodules\|.\|.\|.\fP .I 以下が必要: リポジトリ。 .br .I 以下を変更: 何も変更しません。 .br .I 同義語: .B patch .br 2 つのリリース間の .BR patch ( 1 ) ファイルを Larry Wall 氏のフォーマットで作成します。それは直接 .B patch プログラムに入力できるもので、古いリリースを新しいリリースに更新する ために使えます。 (これは直接リポジトリを参照するため、これに先立って .BR checkout する必要のない、数少ない \fBcvs\fP コマンドのうちの 1 つです。) 差分出力は標準出力デバイスに送られます。 (標準の \fB\-r\fP と \fB\-D\fP オプションを -使って) 1 つまたは 2 つのリビジョンまたは日時の任意の組合せを指定できます。 +使って) 1 つまたは 2 つのリビジョンまたは日時の任意の組み合わせを指定できます。 もしリビジョンまたは日時が 1 つしか指定されないと、 そのリビジョンまたは日時とその時点での .SM RCS ファイルの ``head'' リビジョンの差分がパッチファイルに反映されます。 .SP もしソフトウェアリリースへの影響が複数ディレクトリにわたるなら、 古いソースにパッチを当てる際、 .B patch が他のディレクトリに置かれたファイルを見つけられるように、 .B \-p オプションを .B patch コマンドに指定する必要があるかもしれません。 .SP \fB\-V\fP \fIvn\fP オプションを使うと、 .SM RCS のキーワードが \fIvn\fP で指定された .SM RCS のバージョンに合わせて展開されます (展開フォーマットは .SM RCS のバージョン 5 で変更されました)。 .SP 標準オプションの \fIflags\fP \fB\-f\fP、\fB\-l\fP が このコマンドで利用可能です。他にもいくつかの 特別なオプションフラグがあります: .SP .B \-s オプションを指定すると、パッチ出力が作られません。 代わりに、2 つのリリース間で変更または追加されたファイルの要約が 標準出力デバイスに送られます。 これは、例えば、2 つの日付またはリビジョンの間で、どのファイルが 変更されたかを調べるのに便利です。 .SP .B \-t オプションを指定すると、新しい方から 2 つのリビジョンの差分が 標準出力デバイスに送られます。これはファイルへの最後の変更が 何であったかを知るのに最適です。 .SP .B \-u オプションを指定すると、パッチ出力として新しい ``unidiff'' フォーマットを使って文脈差分とします。 .SP 希望するなら、 .B \-c を使って明示的に .` "diff \-c" 形式の文脈差分を指定できます (こちらがデフォルトです)。 .TP \fBrelease\fP [\fB\-dQq\fP] \fImodules\fP\|.\|.\|. .I 以下が必要: 作業ディレクトリ。 .br .I 以下を変更: 作業ディレクトリ、ヒストリログ。 .br このコマンドは .` "cvs checkout' の効果を安全にキャンセルすることになっています。 .B cvs はファイルをロックしないので、厳密にはこのコマンドを使用する必要は ありません。 単に作業ディレクトリを削除しても構いません。 しかし忘れているかも知れない変更を失う危険があり、そして .B cvs ヒストリファイルには捨ててしまったチェックアウトの記録は残りません。 .SP .` "cvs release" を使うとこれらの問題を回避できます。 このコマンドは以下の点をチェックします: コミットされていない変更が存在しないこと、 \fBcvs\fP の作業ディレクトリの直上または内部から実行していること、 ファイルが記録されたリポジトリがモジュールデータベースに 定義されたリポジトリと同じであること。 .SP これらの条件が全て真なら .` "cvs release" は その実行記録 (意図的にチェックアウトを削除した証拠) を .B cvs のヒストリログに残します。 .SP \fB\-d\fP フラグを使ってソースの作業用コピーを \fBrelease\fP が 成功したら削除するように指示できます。 .TP \fBremove\fP [\fB\-lR\fP] [\fIfiles\|.\|.\|.\fP] .I 以下が必要: 作業ディレクトリ。 .br .I 以下を変更: 作業ディレクトリ。 .br .I 同義語: .BR rm ", " delete .br このコマンドを使って、\fIfiles\fP をソースリポジトリから削除する つもりであることを宣言できます。大部分の .B cvs コマンドがそうであるように、 .` "cvs remove" は作業ディレクトリのファイルに作用し、リポジトリには直接には 作用しません。安全機構として、まず指定するファイルを作業ディレクトリ から削除することも必要になっています。 .SP リポジトリに .BR commit で変更を反映するまで、ファイルは実際には削除されません。 commit した時点で、ソースリポジトリの対応する .SM RCS ファイルが .` "Attic" ディレクトリ (これもソースリポジトリの中です) に .I 移動 されます。 .SP このコマンドはデフォルトで再帰的になっており、 物理的に削除された全てのファイルが次の .BR commit での削除されるようにスケジュールします。 .B \-l オプションを使うか、または実際に削除したいファイルのみを 指定することで、この再帰を抑制できます。 .TP \fBrtag\fP [\fB\-f\|alnRQq\fP] [\fB\-b\fP] [\fB\-d\fP] [\fB\-r\fP \fItag\fP | \fB\-D\fP \fIdate\fP] \fIsymbolic_tag\fP \fImodules\|.\|.\|.\fP .I 以下が必要: リポジトリ。 .br .I 以下を変更: リポジトリ。 .br .I 同義語: .B rfreeze .br このコマンドを使って、リポジトリ中の特定の、明示的に 指定されたソースバージョンにシンボリックタグを割り当てられます。 .` "cvs rtag" はリポジトリの内容に直接に作用します (これに先立って .BR checkout する必要はありません)。 作業ディレクトリの内容に基づいて タグを付けるバージョンを選択するには、代わりに .` "cvs tag" を使います。 .SP 一般に、タグ (しばしばソフトウェア配布物のシンボリックな 名前でもある) は削除されるべきではありません。 しかし完全に廃れてしまったシンボリックな名前を削除する場合 (例えば、 アルファリリースの場合など) の手段として、 .B \-d オプションが用意されています。 .SP .` "cvs rtag" はすでに存在するタグを移動しません。 しかしながら、\fB\-F\fP オプションが指定されると .` "cvs rtag" はそのファイルに既に存在する \fIsymbolic_tag\fP のインスタンスを 新しいリポジトリのバージョンへ移動します。 \fB\-F\fP オプションが無い場合、 .` "cvs rtag" を使ってすでにそのファイルに存在するタグを付けようとすると、 エラーメッセージが出力されます。 .SP \fB-b\fP オプションはタグを ``ブランチ'' タグにし、並行の、 独立した開発を可能にします。 これは以前にリリースしたソフトウェア配布物へのパッチを作成するのに 最も有用です。 .SP 標準の \fB\-r\fP と \fB\-D\fP オプションを使って、すでに特定の タグを含んでいるファイルのみにタグを付けることができます。 この方法はタグの名前を変えるのに使えるでしょう: 古いタグで指定されるファイルにのみタグを付け、 それから古いタグを削除すれば、確実に同じファイルで古いタグを 新しいタグで置き換えることができます。 .SP .B rtag はデフォルトで再帰的に実行し、引数で指定した \fImodules\fP の全てのサブディレクトリにタグをつけます。 この動作を トップレベルのディレクトリに制限するには標準の \fB\-l\fP オプションを 指定します。 また明示的に再帰を指定するには \fB\-R\fP を指定します。 .SP モジュールデータベースではタグが指定されたときに必ず実行される プログラムを指定できます。 よくある使い方は、興味を持っている グループに電子メールを送るというものです。もしそのプログラムを バイパスしたい場合は、標準の \fB\-n\fP オプションを使います。 .SP .B \-a オプションを使うと .` "Attic" の中の指定されたタグを含む削除されたファイルを .B rtag の対象にできます。 タグはそれらのファイルから削除され、開発の進展につれての シンボリックタグの再利用に便利になります (そしてファイルは以降の 配布物から削除されます)。 .TP \fBstatus\fP [\fB\-lRqQ\fP] [\fB\-v\fP] [\fIfiles\fP\|.\|.\|.] .I 以下が必要: 作業ディレクトリ、リポジトリ。 .br .I 以下を変更: 何も変更しません。 .br \fIfiles\fP の現在の状態について、``sticky'' なタグ、 日付、\fB\-k\fP オプションを含む、ソースリポジトリに関する 簡潔なレポートを表示します。(``sticky'' オプションはリセットするまで .` "cvs update" がどう働くかを規定します。 .` "cvs update \-A\|.\|.\|." の説明を参照して下さい。) .SP このコマンドを用いて、作業用ソースディレクトリでの .` "cvs update" による潜在的な影響を予測することもできます。 もし \fIfiles\fP を明示的に指定しないと、\fBcvs\fP が 作業ディレクトリに置いた全てのファイルについてレポートが 表示されます。 この検索の範囲を (そのサブディレクトリではなく) カレントディレクトリ だけに制限するには、標準の \fB\-l\fP オプションフラグを使います。 \fB\-R\fP オプションによって、明示的に再帰的なステータスレポートを 指定することもできます。 .SP .B \-v オプションを指定すると .SM RCS ファイルのシンボリックタグも表示されるようになります。 .TP \fBtag\fP [\fB\-lQqR\fP] [\fB\-F\fP] [\fB\-b\fP] [\fB\-d\fP] [\fB\-r\fP \fItag\fP | \fB\-D\fP \fIdate\fP] [\fB\-f\fP] \fIsymbolic_tag\fP [\fIfiles\fP\|.\|.\|.\|] .I 以下が必要: 作業ディレクトリ、リポジトリ。 .br .I 以下を変更: リポジトリ。 .br .I 同義語: .B freeze .br このコマンドは、作業ディレクトリに最も近いリポジトリのバージョンに シンボリックタグをつけるために使います。\fBrtag\fP を 使ったときのように、タグはリポジトリに直接つけられます。 .SP タグの使い方の一つは、プロジェクトのソフトウェア凍結日が やってきたときに開発中のソースの ``snapshot'' を記録するというものです。 凍結した日の後でバグが修正されたら、それらの変更されたリリースの 一部となるソースのみに再度タグをつける必要があります。 .SP シンボリックタグはどのファイルのどのリビジョンがソフトウェア配布物を 作成する際に使われたかを恒久的に記録する意味があります。 .BR checkout , .B export , .B update コマンドは、タグをつけたリリースと全く同じものを、リリースのタグが つけられて以降にファイルが変更、追加、削除されたかどうかを気にする ことなく、将来のいつでも取り出すことを可能にします。 .SP 標準の \fB\-r\fP と \fB\-D\fP オプションを使って、すでに特定の タグを含んでいるファイルのみにタグを付けることができます。 この方法はタグの名前を変えるのに使えます。 すなわち、 古いタグで指定されるファイルにのみタグを付け、 それから古いタグを削除すれば、確実に同じファイルで古いタグを 新しいタグで置き換えることができます。 .SP \fB\-r\fP または \fB\-D\fP フラグに加えて \fB\-f\fP フラグを 指定すると、コマンドラインで指定したファイルで古いタグを 持っていないか指定された日時に存在しなかったものにもタグを 付けます。 .SP デフォルト (\fB\-r\fP または \fB\-D\fP フラグが無い場合) では、 バージョンは明示的に指定されるのではなく、暗黙のうちに作業ファイルの ヒストリの \fBcvs\fP レコードから取られます。 .SP .` "cvs tag \-d \fIsymbolic_tag\fP\|.\|.\|." とすると、指定したシンボリックタグが追加されるのではなく .I 削除 されます。\fI警告\fP: タグを削除する前にその根拠をしっかり確認して下さい。 これは効率的に一部の履歴情報を捨てますが、後になってその情報が重要だったと 判明するかも知れないからです。 .SP .` "cvs tag" はすでに存在するタグを移動しません。 しかしながら、\fB\-F\fP オプションが指定されると .` "cvs tag" はそのファイルに既に存在する \fIsymbolic_tag\fP のインスタンスを 新しいリポジトリのバージョンへ移動します。 \fB\-F\fP オプションが無い場合、 .` "cvs tag" を使って すでにそのファイルに存在するタグを付けようとすると エラーメッセージが出力されます。 .SP \fB-b\fP オプションはタグを ``ブランチ'' タグにし、並行して、 独立した開発を可能にします。 これは以前にリリースしたソフトウェア配布物へのパッチを作成するために 最も有効です。 .SP 通常、 .B tag はサブディレクトリに渡って再帰的に実行します。これは 標準の \fB\-l\fP オプションを使って抑制できます。 明示的に再帰を指定するには \fB\-R\fP を使います。 .TP \fBupdate\fP [\fB\-Adf\|lPpQqR\fP] [\fB\-d\fP] [\fB\-r\fP \fItag\fP|\fB\-D\fP \fIdate\fP] \fIfiles\|.\|.\|.\fP .I 以下が必要: リポジトリ、作業ディレクトリ。 .br .I 以下を変更: 作業ディレクトリ。 .br あなたが共有のリポジトリから私的なソースのコピーを作成するために .B checkout を実行した後も、別の開発者は共有のソースへの変更を続けるでしょう。 時々、開発過程で都合のいいときに、作業ディレクトリ内から .B update コマンドを使うことで、 最後に .B checkout または .BR update してからソースリポジトリに登録された変更を、あなたの変更と 融合させることができます。 .SP .B update は進行状況をファイルごとに 1 行表示することで知らせ続けます。 各行の先頭には以下の .` "U A R M C ?" のいずれか 1 文字があり、ファイルの状態を示しています: .TP 1i \fBU\fP \fIfile\fP file はリポジトリに関して \fI最新に\fP なりました。 これはリポジトリには存在するがあなたのソースには無いもの、 およびあなたは変更していないけれどもリポジトリの 最新リビジョンでは無いものに関して行われます。 .TP 1i \fBA\fP \fIfile\fP file はソースのあなたの私的なコピーに \fI追加\fP されたもので、 file に対して .` "cvs commit" を実行したときに .SM RCS ソースリポジトリに追加されます。 これは当該ファイルを commit する必要があるという助言です。 .TP 1i \fBR\fP \fIfile\fP これはソースのあなたの私的なコピーから file が \fI削除\fP されており、 file に対して .` "cvs commit" を実行すると .SM RCS ソースリポジトリから削除されることを示します。 これは当該ファイルを commit する必要があるという助言です。 .TP 1i \fBM\fP \fIfile\fP あなたの作業ディレクトリの file は \fI変更\fP されています。 .` "M" は作業中のファイルについて 2 つの状態のうちの 1 つを示します: リポジトリ中の対応するファイルは変更されておらず、あなたのファイルは 最後に見たときのままになっている。 または、あなたのコピー同様 リポジトリのものも変更されているが、それらの変更は 衝突することなく無事にあなたの作業ディレクトリに \fI融合 (merge)\fP されました。 .TP 1i \fBC\fP \fIfile\fP \fIfile\fP へのあなたの変更とソースリポジトリからの変更との 融合を試みる間に \fI衝突 (conflict)\fP が検出されました。 現在 \fIfile\fP (あなたの作業ディレクトリのコピー) は .BR rcsmerge ( 1 ) コマンドを 2 つのバージョンに適用した出力になっています。 変更されていない あなたのファイルのコピーも作業ディレクトリに、 `\fB.#\fP\fIfile\fP\fB.\fP\fIversion\fP' という名前で置かれます。 ここで .I version は あなたの変更したファイルの出発点となった .SM RCS リビジョンです。 (ある種のシステムでは、 \& .` ".#" で始まるファイルは何日かアクセスされないと自動的に削除されるので 注意して下さい。もし元のファイルのコピーを取っておくつもりなら、 名前を変えておくのが良いでしょう。) .TP 1i \fB?\fP \fIfile\fP \fIfile\fP が あなたの作業ディレクトリにありますが、 ソースリポジトリのどれとも対応しておらず、 \fBcvs\fP が無視するファイルのリストにもありません (\fB\-I\fP オプションの説明を参照して下さい)。 .PP .RS .5i .SP .B \-A オプションを用いて sticky なタグ、日付、 .B \-k オプションをリセットできます。(\fB\-r\fP, \fB\-D\fP, \fB\-k\fP オプションの いずれかを使って作業ファイルのコピーを得ると、 \fBcvs\fP は対応するタグ、日付、\fIkflag\fP を記憶し、 以降の update で それを使い続けます。 \fB\-A\fP オプションを使って \fBcvs\fP にそれらの指定を忘れさせることで、ファイルの ``head'' バージョンを取り出します)。 .SP \fB\-j\fP\fIbranch\fP オプションは、変更結果のリビジョンと ベースにしたリビジョンの間での変更をマージします (例えば、もしタグがブランチを指しているなら、 .B cvs は、そのブランチで行われた全ての変更をあなたの作業ファイルにマージします)。 .SP 2 つの \fB-j\fP オプションを指定すると、 .B cvs は 2 つの それぞれのリビジョン間での変更をマージします。 これは特定の変更を作業ファイルから ``削除'' するのに使えます。 例えば、ファイル foo.c がリビジョン 1.6 をベースにしていて、 1.3 と 1.5 の間で行われた変更を削除したいなら、次のようにします: .SP .in +1i .ft B .nf example% cvs update -j1.5 -j1.3 foo.c # 順番に注意... .fi .ft P .in -1i .SP 加えて、各 \fB-j\fP オプションにはオプションで、ブランチと使う場合に、 日付指定を含めることが可能で、選択するリビジョンを指定した 日付の範囲内に制限できます。 オプションの日付はコロン (:) をタグに付けることで指定します。 .SP .in +1i .ft B .nf -jSymbolic_Tag:Date_Specifier .fi .ft P .in -1i .SP .B \-d オプションを使うと、もし作業ディレクトリに無いディレクトリが リポジトリにあれば作成します。(通常、update は作業ディレクトリに すでに登録されているディレクトリとファイルのみに働きます。) これは最初の \fBcheckout\fP 以降に作成されたディレクトリを 更新するのに有用です。しかし不幸にも副作用があります。 もし作業ディレクトリを作る際に慎重にリポジトリ中の特定の ディレクトリを除いた (モジュール名を使ったか明示的に必要な ファイルとディレクトリをコマンドラインで指定したかのいずれかで) とすると、 .B \-d で更新するとそれらの不要かも知れないディレクトリができてしまいます。 .SP \fB\-I\fP \fIname\fP を使うと、update の際、名前が \fIname\fP に符合する (作業ディレクトリの) ファイルを無視します。 コマンドラインで \fB\-I\fP を 2 回以上指定することで、 複数の無視するファイルを指定できます。 デフォルトで、\fBupdate\fP はあるパターンに名前がマッチするファイルを 無視します; 無視されるファイル名の最新リストについては、 (このマニュアルページの関連項目の節に記述してあるように) Cederqvist 著のマニュアルを参照して下さい。 .SP いずれのファイルも無視しないようにするには .` "\-I !" を使います。 .SP 標準の \fBcvs\fP コマンドオプション \fB\-f\fP, \fB\-k\fP, \fB\-l\fP, \fB\-P\fP, \fB\-p\fP, \fB\-r\fP も \fBupdate\fP で使用可能です。 .RE .SH "関連ファイル" より詳細な .B cvs サポートファイルの情報については .BR cvs ( 5 ) を参照して下さい。 .LP .I ホームディレクトリのファイル: .TP \&.cvsrc .B cvs の初期化ファイル。このファイルの行は各 .B cvs コマンドのデフォルトのオプションの指定に使えます。例えば .` "diff \-c" と言う行は .` "cvs diff" に対して、コマンドラインで渡されたオプションに、常に .B \-c オプションが加えられて渡されることを指定します。 .TP \&.cvswrappers リポジトリのファイル CVSROOT/cvswrappers で指定されている ものに加えて使用されるラッパを指定します。 .LP .I 作業ディレクトリのファイル: .TP CVS \fBcvs\fP 管理ファイルのディレクトリ。 .I 削除してはいけません。 .TP CVS/Entries 作業ディレクトリのファイルのリストと状態。 .TP CVS/Entries.Backup .` "CVS/Entries" のバックアップ。 .TP CVS/Entries.Static フラグ: .` "cvs update" でそれ以上エントリを追加しません。 .TP CVS/Root チェックアウトしたときのリポジトリ ( .SM CVSROOT ) 位置へのパス名。 .SM CVSROOT 環境変数が設定されていない場合、このファイルが代わりに使用されます。 このファイルの内容と .SM CVSROOT 環境変数が異なっていると警告メッセージが出されます。 .SM CVS_IGNORE_REMOTE_ROOT 環境変数が設定されていると、このファイルは上書きされることがあります。 .TP CVS/Repository ソースリポジトリ中の対応するディレクトリへのパス名。 .TP CVS/Tag ディレクトリ毎の ``sticky'' なタグまたは日付情報を保持しています。 このファイルは .B \-r か .B \-D を .B checkout または .B update コマンドに指定して、ファイルが指定されなかったときに作成/更新されます。 .TP CVS/Checkin.prog .` "cvs commit" 時に実行するプログラム名。 .TP CVS/Update.prog .` "cvs update" 時に実行するプログラム名。 .LP .I ソースリポジトリ中のファイル: .TP $CVSROOT/CVSROOT リポジトリ全体の管理ファイルのディレクトリ。 .TP CVSROOT/commitinfo,v .` "cvs commit" のリクエストを選別するプログラムを登録します。 .TP CVSROOT/cvswrappers,v ファイルをリポジトリにチェックインそしてリポジトリから チェックアウトするときに使用される .B cvs ラッパコマンドを登録します。 ラッパはファイルまたはディレクトリが CVS で入出力される際に 処理を行うことを可能にします。使い道はいろいろありますが、 その一つとして、C のファイルをチェックインする前に再フォーマットして、 リポジトリ中のコードの見た目を揃えるというものがあります。 .TP CVSROOT/editinfo,v .` "cvs commit" のログエントリの編集/確認用プログラムを登録します。 .TP CVSROOT/history \fBcvs\fP 処理のログファイル。 .TP CVSROOT/loginfo,v .` "cvs commit" のログエントリをパイプで渡すプログラムを登録します。 .TP CVSROOT/modules,v このリポジトリ中のモジュールを定義します。 .TP CVSROOT/rcsinfo,v .` "cvs commit" 操作中に使用するテンプレートへのパス名を登録します。 .TP CVSROOT/taginfo,v .` "cvs tag" と .` "cvs rtag" での確認/ログ採集のためのプログラムを登録します。 .TP MODULE/Attic 削除されたソースファイルのためのディレクトリ。 .TP #cvs.lock .SM RCS ソースリポジトリに微妙な変更を行っているときに .B cvs が作成するロックディレクトリ。 .TP #cvs.tfl.\fIpid\fP リポジトリの一時的なロックファイル。 .TP #cvs.rfl.\fIpid\fP 読みだしロック。 .TP #cvs.wfl.\fIpid\fP 書き込みロック。 .SH "環境変数" .TP .SM CVSROOT .B cvs ソースリポジトリのルートへのフルパス名 ( .SM RCS ファイルが保存されている場所) を指定します。 この情報は大部分のコマンドの実行で \fBcvs\fP から参照できなければなりません。 もし .SM CVSROOT が設定されていないか、それを上書き指定したい場合は、 コマンドライン上で与えることができます: .` "cvs \-d \fIcvsroot cvs_command\fP\|.\|.\|." もし \fBcvs\fP バイナリのコンパイル時に正しいパスが指定されているなら .SM CVSROOT を設定しなくて構いません。 .` "cvs \-v" でコンパイル時に指定されて組み込まれている全てのパス名が表示されます。 .TP .SM CVSREAD これがセットされていると、 .B checkout と .B update は作業ディレクトリのファイルを読みだし専用にするべく努力します。 これがセットされていないときは、デフォルトでは作業ファイルの 変更が許可されます。 .TP .SM RCSBIN .BR co ( 1 ) や .BR ci ( 1 ) といった .SM RCS のプログラムが置かれている場所へのフルパス名を指定します。 セットされないと、コンパイル時に設定された値が使用されます。 .` "cvs \-v" で表示される内容を参照して下さい。 .TP .SM CVSEDITOR .BR commit 中にログメッセージの記録に使われるプログラムを指定します。 設定されていないと、 .SM EDITOR 環境変数が代わりに使われます。 もし .SM EDITOR も設定されていないなら、デフォルトは .BR /usr/ucb/vi です。 .TP .SM CVS_IGNORE_REMOTE_ROOT この変数がセットされていると .B cvs は CVS/Root ファイル中のリモートのリポジトリへの参照を全て 無視します。 .TP .SM CVS_RSH .B cvs サーバを開始するときに使用するリモートシェルコマンドの 名前を決定します。 この変数が設定されていない場合は .` "rsh" が使用されます。 .TP .SM CVS_SERVER .B cvs サーバコマンドの名前を指定します。 この変数が設定されていない場合は .` "cvs" が使用されます。 .TP .SM CVSWRAPPERS .` "cvswrappers" スクリプトは、 リポジトリの .SM CVSROOT/cvswrappers とユーザのホームディレクトリの ~/.cvswrappers に 含まれるデフォルトのラッパに加え、 変数 .SM CVSWRAPPERS を参照して、ラッパファイルの名前を決定します。 .SH "作者" .TP Dick Grune .B comp.sources.unix にポストされ、1986年 12月のリリース volume6 に収められたオリジナルの .B cvs シェルスクリプト版の作者。 .B cvs の衝突を解決するアルゴリズムの大部分を作成しました。 .TP Brian Berliner .B cvs プログラム自身のコーディングとデザインを 1989年 4月に、Dick によるオリジナルをベースにして行いました。 .TP Jeff Polk Brian を助けて .B cvs のモジュールとベンダ・ブランチのサポートをデザインしました。 そして .BR checkin ( 1 ) シェルスクリプト ( .` "cvs import" の祖先) の作者でもあります。 .SH "関連項目" CVS の最も包括的なマニュアルは Per Cederqvist らによる Version Management with CVS です。 システムによっては、 .B info cvs コマンドで閲覧できたり、 cvs.ps (postscript)、cvs.texinfo (texinfo のソース)、cvs.html が 利用可能かもしれません。 .SP CVS の更新、ドキュメントに関するさらなる情報、 CVS 関連のソフトウェア、CVS の開発等については、下記をご覧ください: .in +1i .B http://www.cyclic.com .B http://www.loria.fr/~molli/cvs-index.html .in -1i .SP .BR ci ( 1 ), .BR co ( 1 ), .BR cvs ( 5 ), .BR cvsbug ( 8 ), .BR diff ( 1 ), .BR grep ( 1 ), .BR patch ( 1 ), .BR rcs ( 1 ), .BR rcsdiff ( 1 ), .BR rcsmerge ( 1 ), .BR rlog ( 1 ). .SH 日本語訳 野首 寛高(h-nokubi@nmit.mt.nec.co.jp): FreeBSD 用に翻訳 .br 酒井 淳嗣(sakai@jp.freebsd.org): FreeBSD 版の校正 diff --git a/ja/man/man1/doscmd.1 b/ja/man/man1/doscmd.1 index 1af16ab70e..3c0c73bf9d 100644 --- a/ja/man/man1/doscmd.1 +++ b/ja/man/man1/doscmd.1 @@ -1,728 +1,730 @@ .\" .\" Copyright (c) 1992, 1993, 1996 .\" Berkeley Software Design, Inc. 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 Berkeley Software .\" Design, Inc. .\" .\" THIS SOFTWARE IS PROVIDED BY Berkeley Software Design, Inc. ``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 Berkeley Software Design, Inc. 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. .\" .\" BSDI doscmd.1,v 2.3 1996/04/08 19:32:29 bostic Exp .\" -.\" jpman %Id: doscmd.1,v 1.2 1998/09/22 14:18:15 horikawa Stab % +.\" jpman %Id: doscmd.1,v 1.3 1998/10/13 21:31:33 vanitas Stab % .\" WORD: raw file ロウファイル (mknod.8 によると character special file) -.\" WORD: cooked device 加工されがデバイス (mknod.8 によると block special) +.\" WORD: cooked device 加工されたデバイス (mknod.8 によると block special) .Dd January 30, 1995 .Dt DOSCMD 1 .Os .Sh 名称 .Nm doscmd .Nd リアルモード DOS プログラムのサブセットを実行する .Sh 書式 .Nm doscmd .Fl 23AbDEfHIMOPRrtVvXxYz .Fl c Ar file .Fl d Ar file .Fl i Ar port Ns Xo .Op : Ns Ar cnt .Xc .Fl o Ar port Ns Xo .Op : Ns Ar cnt .Xc .Fl S Ar int .Fl U Ar int .Op Ar cmd [args ...] .Sh 解説 .Nm は、DOS のサブセットをエミュレートして単一コマンド .Ar cmd .Ar args を実行することができますし、 PC をエミュレートして DOS をブートすることもできます。 +DOS をブートする場合には、より多様な DOS アプリケーションを +実行することができます。 MS-DOS 6.2 以降は .Nm doscmd ではうまく扱えないようです。 DOS をブートするには、 .Fl b フラグを指定するか、 .Ar cmd 引数を省略してください。 .Fl b を指定すると、 .Ar cmd と .Ar args は無視されます。 .Pp .Nm は DOS のサブセットを提供するだけですが、 多くのプログラムを実行するには十分です。 コンパイラ、アセンブラ、リンカローダといったプログラムも実行できますが、 これらに限定するものではありません。 .Pp 次に示す多様なフラグを .Nm に指定可能です: .Bl -tag -width indent .It Fl 2 DOS プログラムからの .Nm doscmd エミュレータへのすべてのトラップのデバッグトレースを有効にします。 カーネルによって扱われるためにトレースされないトラップがあることに 注意してください。 .It Fl 3 割り込みベクタの変更や論理ドライブへのパスの初期化といった、 いくつかの下位レベル機能のデバッグを有効にします。 .\" .\" .\" .It Fl A エミュレータを通過するすべての割り込みのトレースを有効にします。 .Fl S オプションを、255 個すべての割り込みの値とともに指定する場合と同じです。 .\" .\" .\" .It Fl b DOS をエミュレートする代りに DOS をブートします。 .\" .\" .\" .It Fl c Ar file 画面へのすべての出力を捕まえて、 .Ar file へ出力します。 画面の直接の書き込みは捕まえられないことに注意してください。 .\" .\" .\" .It Fl C MS-DOS の呼び出しエミュレーションと戻り値をリストします。 .\" .\" .\" .It Fl D ディスクとファイルの操作に関するデバッグを有効にします。 .\" .\" .\" .It Fl d Ar file デバッグ出力を、標準エラー出力の代りに .Ar file へ送ります。 .\" .\" .\" .It Fl E exec ルーチンのデバッグを有効にします。 .\" .\" .\" .It Fl H 中途半端に実装された呼び出しのトレースを有効にします。 .\" .\" .\" .It Fl I すべての割り込みのトレースを有効にします。 .Fl A とほとんど同じですが、有効になるトレースは少しだけ少ないです。 .\" .\" .\" .It Fl i Ar port Ns Xo .Op : Ns Ar cnt .Xc 入出力ポート .Ar port からのすべての入力要求のトレースを有効にします。 もし .Ar cnt が与えられると、 .Ar port から .Ar port+cnt Ns No -1 までをトレースします。 .\" .\" .\" .It Fl M メモリ操作のデバッグを有効にします。 .\" .\" .\" .It Fl O デバッグ出力を、標準エラー出力の代りに、標準出力へ出力します。 .\" .\" .\" .It Fl o Ar port Ns Xo .Op : Ns Ar cnt .Xc 入出力ポート .Ar port からのすべての出力要求のトレースを有効にします。 もし .Ar cnt が与えられると、 .Ar port から .Ar port+cnt Ns No -1 までをトレースします。 .\" .\" .\" .It Fl P 入出力ポート呼び出し (例えば .Li inb , .Li outb など) のトレースを有効にします。 .\" .\" .\" .It Fl R ファイルリダイレクトコードのデバッグを有効にします。 .\" .\" .\" .It Fl r 生のキーボード入力と表示を使用します。 を押すと、 doscmd は終了します。VGA グラフィックスが使えるようになります。 .\" .\" .\" .It Fl S Ar int 割り込み .Ar int のトレースを有効にします。 .\" .\" .\" .It Fl t 命令レベルのトレースを試みます。 トレースを混乱させる命令があります。 .Li を押すとトレースモードの有効と無効とを切り替えます。 .\" .\" .\" .It Fl U Ar int 割り込み .Ar int のトレースを無効にします。 .Fl A や .Fl I の後で使用すると便利です。 .\" .\" .\" .It Fl V 未知の割り込みを報告する際、レジスタダンプも含めます。 .\" .\" .\" .It Fl v .Fl AH と同じです。 .\" .\" .\" .It Fl X XMS 操作のデバッグを有効にします。 .\" .\" .\" .It Fl x X11 のウィンドウを表示出力のためにオープンします。 他の方法では利用できない様々な割り込みを有効にします。 .Fl b を指定しても、指定しなくても、使用可能です。 .\" .\" .\" .It Fl Y EMS 操作のデバッグを有効にします。 .\" .\" .\" .It Fl z DOS プログラムにジャンプする直前に .Nm を停止させます。 .Nm を開発する以外の用途はほとんどありません。 .El .Pp 起動時に、 .Nm はコンフィギュレーションファイルを読もうとします。 まず、カレントディレクトリのファイル .Cm .doscmdrc を試します。もし見付からない場合、 .Cm $HOME を検索します。それでもなお見付からない場合、ファイル .Cm /etc/doscmdrc を使用します。 .Pp コンフィギュレーションファイルでは、コメントは \fB#\fP 文字から開始します。 また、空行は無視されます。 非空行は、環境変数またはデバイスを設定するコマンドです。 空白の前に \fB=\fP がある行は、環境変数への代入であると扱われ、 DOS の環境に追加されます。 その他の行は次のいずれかです。 .Bl -tag -width XXXXX .\" .\" .\" .It Cm boot Op Cm A: | C: ブートするデバイスを設定します。 デフォルトでは、 .Cm A: が定義されていれば最初に試され、もしそれが失敗すると、 .Cm C: が試されます。 .\" .\" .\" .It Cm assign Xo .Op Cm A-Z : .Op Fl ro .Ar path .Xc .Nm BSD/OS のディレクトリ .Ar path を、指定したドライブに割り当てます。 .Fl ro フラグを指定すると、読み取り専用ファイルシステムになります。 DOS ブート時には、 .Pa /usr/libdata/doscmd/redir.com バイナリが実行されるまでは、これらの割り当ては実行されません。 .\" .\" .\" .It Cm assign Xo .Cm lpt Ns Op Cm 0-4 : .Op Cm direct .Ar path .Op Ar timeout .Xc 指定したプリンタを .Ar path に割り当てようとします。 .Ar timeout が指定された場合、 その期間 (秒数) 活動がない場合に、プリンタをフラッシュすべきことを示します。 デフォルトは 30 秒です。 .Ar path が本物のプリンタを参照している場合には、 .Cm direct オプションを指定してください。 .\" .\" .\" .It Cm assign Xo .Op Cm A: | B: .Op Fl ro .Ar path .Ar density .Xc .It Cm assign Xo .Cm flop Ns Op Cm 01 .Op Fl ro .Ar path .Ar density .Xc ファイル .Ar path を、次に利用可能なフロッピまたは指定したフロッピに割り当てます。 .Fl ro が指定されると、フロッピは読み取り専用になります。 .Ar density は次のいずれかです: .sp .Bl -tag -compact -width 1440x .It 180 9 ヘッド 40 トラック片面フロッピ .It 360 9 ヘッド 40 トラック両面フロッピ .It 720 9 ヘッド 80 トラック両面フロッピ .It 1200 15 ヘッド 80 トラック両面フロッピ .It 1440 18 ヘッド 80 トラック両面フロッピ .It 2880 36 ヘッド 80 トラック両面フロッピ .El .\" .\" .\" .It Cm assign Xo .Op Cm C-Z : .Op Fl ro .Ar path .Op Ar type | cyl head sec .Op Ar fdisk_tab .Xc .It Cm assign Xo .Cm hard Ns Op Cm 01 .Op Fl ro .Ar path .Op Ar type | cyl head sec .Op Ar fdisk_tab .Xc ファイル .Ar path を、次に利用可能なハードディスクまたは指定したハードディスクに割り当てます。 ディスクのジオメトリは、シリンダ数 .Ar cyl とヘッド数 .Ar head とトラックあたりのセクタ数 .Ar sec で直接指定することもできますし、標準タイプから 1 つを .Ar type (後述) で指定することもできます。 オプションの .Ar fdisk_tab 引数は、このディスクの最初のセクタとして使用するファイルを指定します。 .Ar path がディスクの一部のみを参照する場合に、 偽の fdisk テーブルを挿入するために使用できます。 .\" .\" .\" .It Cm assign Xo .Cm com Ns Op Cm 1-4 : .Ar path .Ar port .Ar irq .Xc .Ar path で指定した tty または pty を、 指定した com ポートとして使用するように割り当てます。 ベースアドレスは .Ar port でエミュレートされ、割り込みは .Ar irq で指定されます。 このコードは軽くテストしただけなので、向かない用途があるかもしれません。 .\" .\" .\" .It Cm "setver command version" doscmd が DOS をエミュレートする場合、 .Cm command という名前のプログラムから呼ばれた時に、DOS バージョンとして .Cm version を報告するようにします。 .Cm version のフォーマットは、後述の .Cm MS_VERSION 変数と同じです。 .El .Pp .Cm C: は、まだ割り当てられていない場合には、ルートディレクトリ (/) に割り当てられ、 .Cm C: のカレントディレクトリは、現在のカレントディレクトリに設定されます。 これはすなわち、 .sp doscmd ../foo .sp のように起動しても、動作しないことを意味することに注意してください。 なぜなら .Cm C: ディレクトリはカレントパスで開始するからです。 また、次の環境変数も、未設定の場合には設定されます: .nf .Cm "COMSPEC=C:\eCOMMAND.COM .Cm "PATH=C:\e .Cm "PROMPT=DOS> .fi .Cm PATH 変数は .Ar cmd を検索する際にも使用されます。 DOS のように、まず .Ar cmd.com が検索され、それから .Ar cmd.exe が検索されます。 .Sh コンフィギュレーション変数 .Pp -doscmd の内部変数であり、実際には DOS の環境へは挿入されない変数が、 +doscmd の内部変数であり、実際の DOS の環境では設定されない変数が、 .Cm .doscmdrc ファイル中にいくつかあります。 それらを以下に示します: .Bl -tag -width MS_VERSION .It Cm MS_VERSION この変数の値は、 .Nm が報告を行なう DOS のバージョンを決定するために使用されます。 .Nm は、動作を変えずに、報告方法だけを変えることに注意してください。 デフォルトでは、この値は .Cm 410 であり、 .Nm "MS-DOS バージョン .Nm 4.1 に対応します。 バージョン 3.2 (以前の .Nm のデフォルトでした) に変更するには、値 .Cm 320 を使用してください。 .El .Sh ファイル変換 .Nm は .Nm BSD/OS のファイル名を .Nm DOS のファイル名に変換する際、すべて大文字に変換し、無効な文字を除去します。 ASCII ファイルを、DOS の世界で好まれる .Cm 形式へ変換するということはありません。 ASCII ファイルを変換するには、プログラム .Xr bsd2dos 1 を使用してください。 .bp .Sh ディスクタイプ .TS H expand, box; r | r | r | r | r. タイプ シリンダ ヘッド セクタ サイズ = 01 306 4 17 10MB 02 615 4 17 20MB 03 615 6 17 30MB 04 940 8 17 62MB 05 940 6 17 46MB _ 06 615 4 17 20MB 07 462 8 17 30MB 08 733 5 17 30MB 09 900 15 17 112MB 10 820 3 17 20MB _ 11 855 5 17 35MB 12 855 7 17 49MB 13 306 8 17 20MB 14 733 7 17 42MB 15 976 15 17 121MB _ 16 612 4 17 20MB 17 977 5 17 40MB 18 977 7 17 56MB 19 1024 7 17 59MB 20 733 5 17 30MB _ 21 733 7 17 42MB 22 733 5 17 30MB 23 306 4 17 10MB 24 925 7 17 53MB 25 925 9 17 69MB _ 26 754 7 17 43MB 27 754 11 17 68MB 28 699 7 17 40MB 29 823 10 17 68MB 30 918 7 17 53MB _ 31 1024 11 17 93MB 32 1024 15 17 127MB 33 1024 5 17 42MB 34 612 2 17 10MB 35 1024 9 17 76MB _ 36 1024 8 17 68MB 37 615 8 17 40MB 38 987 3 17 24MB 39 987 7 17 57MB 40 820 6 17 40MB _ 41 977 5 17 40MB 42 981 5 17 40MB 43 830 7 17 48MB 44 830 10 17 68MB 45 917 15 17 114MB _ 46 1224 15 17 152MB .TE .bp .Sh 擬似ディスクへの DOS のインストール .Pp doscmd の擬似ハードディスクに DOS をインストールするには、 次のようにします: .Bl -tag -width XXXX .It 1 少なくとも次の記述を含む .Pa .doscmdrc を作成します: .Bd -literal -offset indent assign A: /dev/rfd0_1440_3.5 1440 assign A: /dev/rfd0_720_3.5 720 assign hard boot_drive 80 2 2 .Ed .Pp A: ドライブに対応するロウファイル (訳注: キャラクタスペシャルファイル) を、 システムに応じて修正する必要があるかもしれません。 この例では、HD ドライブを最初に試し、DD ドライブを次に試します (訳注: HD = High Density; 高密度、DD = Double Density; 倍密度)。 .\" HD = Hard Disk と思ってしまうと混乱するので、訳注を追加したい。 .\" HD = High Density, DD = Double Density .\" 1998/09/20 by horikawa@jp.FreeBSD.org .Pp ここでは、 ロウデバイスやロウファイルのみを使用する必要があることに注意してください。 加工された (cooked) デバイス (訳注: ブロックスペシャルファイル) を使用しないこと! (おそらくハードディスクは大丈夫でしょうが、フロッピは確実に駄目です) .Pp .Li boot_drive は、ブート可能なイメージを格納するファイルの名前です。 .Li 80 2 2 という 3 つの数字は、 ドライブが 80 個のシリンダと 2 個のヘッドとトラックあたり 2 個のセクタを 持つことを示します。 これは、MS-DOS 5.0 を .Pa config.sys と .Pa autoexec.bat のファイルと共にインストールすることが可能な、最小のドライブです。 .Pp もっと大きなブートドライブを作成したいかもしれません。 .Pp ファイル .Pa boot_drive は存在する必要がありますので、touch コマンドで作成してください。 .It 2 MS-DOS をブート可能で fdisk, format, sys コマンドを含むフロッピディスクを、 A: ドライブに挿入してください。 ファイル redir.com もフロッピにコピーしてください。 この際、msdos ファイルシステム型でフロッピをマウントするか、mtools を使用してください (例えば .Li mwrite redir.com a: とします)。 .It 3 doscmd を実行してください。 .It 4 > プロンプトにて、 .Li fdisk とタイプします。 .It 5 .Li Create DOS partition or Logical Drive を選択します。 .It 6 .Li Create Primary DOS Partition を選択します。 .It 7 大きさを指定します (典型的にはドライブ全体です。それでも非常に小さいものです。) .It 8 .Li を何度か押して、FDISK を終了します。 .It 9 doscmd が実行中断するでしょうから、 そうなった場合、doscmd を再度実行します。 .It 10 > プロンプトにて、 .Li format c: とタイプし、指示に従います。 .It 11 > プロンプトにて、 .Li sys c: とタイプします。 .It 12 doscmd を終了します。 .It 13 ドライブからフロッピを取り除くか、 .Bd -literal -offset indent boot C: .Ed という行をあなたの .Pa .doscmdrc に加えてください。 .It 14 新しいディスクから DOS を動かします。 config.sys と autoexec.bat の両ファイルが欲しいでしょうから、 まず最初は次のようにします: .Bd -literal -offset indent > copy con: config.sys LASTDRIVE=Z ^Z > copy con: autoexec.bat @echo off redir.com ^Z .Ed .It 15 doscmd を終了します。 .It 16 FreeBSD ディスクを組み込む魔法のプログラム .Li redir を自動的に呼び出す、ブート可能な擬似ディスクが完成しました。 FreeBSD ディスクを使用するためには、次の行をあなたの .doscmdrc に追加します: .Bd -literal -offset indent assign D: /usr/dos assign P: -ro /usr/prb .Ed 名前の問題により、 アクセスできないファイルがあるかもしれないことに注意してください。 .El .Sh 診断 .Pp 実装されていない割り込みに出会うと、 .Nm は次のようなメッセージを表示し終了します: .sp Unknown interrupt 21 function 99 .sp .Pp .Nm .Fl x スイッチ指定時に、 .Ic X11 support not compiled in というメッセージが表示された場合、環境変数 .Ev X11BASE を X Window System をインストールした場所 (通常 -.Ev X11BASE +.Pa /usr/X11R6 ) に設定し、ソースディレクトリ (通常 .Pa /usr/src/usr.bin/doscmd ) で .Ic make install とタイプすることで、本機能を有効にすることができます。 このように動作するためには、 X プログラマキットがインストールしてある必要があります。 .Sh 作者 .An Pace Willisson , .An Paul Borman .Sh 歴史 .Nm doscmd -は BSD/386 に登場しました。 +は BSD/386 に初めて登場しました。 diff --git a/ja/man/man1/ed.1 b/ja/man/man1/ed.1 index 8dd6502f12..980a6f5104 100644 --- a/ja/man/man1/ed.1 +++ b/ja/man/man1/ed.1 @@ -1,883 +1,883 @@ .\" %Id: ed.1,v 1.14 1998/07/21 04:53:18 jkoshy Exp % .\" jpman %Id: ed.1,v 1.2 1997/06/09 15:03:56 jsakai Stab % .Dd May 21, 1993 .Dt ED 1 .Os .Sh 名称 .\" ed, red \- text editor .Nm ed .Nd 行指向のテキストエディタ .Sh 書式 .Nm ed .Op Fl .Op Fl sx .Op Fl p Ar string .Op Ar file .\" .LP .\" red [-] [-sx] [-p \fIstring\fR] [\fIfile\fR] .Sh 解説 .Nm ed は、行指向のテキストエディタです。 本コマンドを用いることで、テキストファイルの生成、表示、変更その他の操作を 行なうことができます。 .\" .B red .\" is a restricted .\" .BR ed : .\" it can only edit files in the current .\" directory and cannot execute shell commands. .Ar file 引数を指定して本コマンドを起動すると、ファイル .Ar file のコピーをエディタのバッファに読み込みます。 以後の変更はそのコピーに対して行なわれ、 .Ar file で指定したファイル自身が直接変更されることはありません。 .Nm コマンドを終了する際、 .Em w コマンドで明示的にセーブしなかった変更点はすべて失われます。 編集は、 .Em コマンド モードと .Em 入力 モードの 2 つの異なるモードを使い分けて行ないます。 .Nm を起動したら、まずコマンドモードに入ります。 本モードでは、標準入力からコマンドを読み込み、それを実行することで エディタバッファの内容操作を行ないます。 典型的なコマンドは、以下のようなものです。 .Pp .Sm off .Cm ,s No / Em old Xo .No / Em new .No / Cm g .Xc .Sm on .Pp これは、編集しているテキストファイル中に .Em old という文字列があったら、これらをすべて文字列 .Em new に置き換えるコマンドです。 .Pp .Em a (append)、 .Em i (insert)、あるいは .Em c (change) といった入力コマンドが入力された場合、 .Nm は入力モードに移行します。これが、ファイルにテキストを追加する 主たる方法です。 このモードでは、コマンドを実行することはできません。 そのかわり、標準入力から入力されたデータは、 直接エディタバッファへと書き込まれます。行は、改行キャラクタまで のテキストデータおよび、最後の .Em 改行 キャラクタを含むデータから構成されます。 ピリオド 1 つだけ .Pf ( Em . Ns ) の行を入力すると、入力モードを終了します。 .Pp すべての .Nm コマンドは、全ての行もしくは指定した範囲の行の操作が可能です。例えば、 .Em d コマンドは指定した行を削除し、 .Em m コマンドは指定した行を移動します。 上に示した例のように、置換によってある行の一部分のみを変更することは 可能ですが、 .Em s コマンドは、一度に全部の行にわたって変更を行なうことも可能です。 .Pp 一般的には、 .Nm コマンドは、0 個以上の行番号および、それに連なる 1 文字コマンドから 成り立ちます。場合によっては追加のパラメータをもつこともあります。 いうなれば、コマンドは以下の構造を持ちます。 .Pp .Sm off .Xo Op "address\ " Op ,address .No command Op parameters .Xc .Sm on .Pp 行番号はコマンドの操作対象行あるいは対象行範囲を示します。 行番号の指定個数が、コマンドが受け付け可能な個数よりも少ない場合には、 デフォルトの行番号が採用されます。 .Sh オプション 以下のオプションが使用できます。 .Bl -tag -width indent .It Fl s 診断メッセージを抑制します。本オプションは、 .Nm の入力がスクリプトによって行なわれる場合に有効です。 .It Fl x 続く読み書きの際に行なわれる暗号化に用いる鍵の入力を促します ( .Em x コマンドを参照して下さい)。 .It Fl p Ar string コマンドプロンプトとして表示する文字列を指定します。 コマンドプロンプトは、コマンドモードで .Em p コマンドを実行することで、表示する/しないを切り替えることが可能です。 .It Ar file 編集対象のファイルを指定します。 .Ar file 名の先頭に感嘆符 (!) が付加されていた場合、そのファイル名はシェルコマンドと して解釈されます。この場合、編集対象として読み込まれるテキストは、 .Xr sh 1 が .Ar file で指定したコマンドを実行した結果、標準出力に出力されるデータです。 先頭が感嘆符で始まるファイルを編集する場合には、ファイル名の先頭に バックスラッシュ (\\) を付加して下さい。 感嘆符以外の文字で始まるファイル名については、編集対象のファイル名は .Ar file となります。 .El .Sh 行指定 行は、バッファ内の行番号で表現されます。 .Nm は .Em 現在行 を管理しており、 コマンドに行番号が指定されない場合は、 現在行がデフォルト行として用いられます。 ファイルが最初に読み出された直後は、現在行はファイルの最後の行となります。 一般的に、現在行はコマンドが操作した最後の行となります。 .Pp 行番号は、以下の一覧のうち 1 つおよび、補助的に付加される 相対行番号 (オフセット) から構成されます。 -相対行番号は、任意の数字の組合せと演算子、そして空白文字を含みます +相対行番号は、任意の数字の組み合わせと演算子、そして空白文字を含みます ( 例えば .Em + , .Em - や .Em ^ が演算子に含まれます ) 。 行番号は、左から右に解釈され、それらの演算子を含む値は、現在行からの相対行番 号と解釈されます。 .Pp 行番号の表現に関して上記の規則が適用される中で、行番号 .Em 0 ( ゼロ ) に関しては、例外的な扱いがされます。 これは「最初の行より前」を意味し、 それが正しい意味を持つ場合は常に利用可能です。 .Pp -行範囲は、カンマもしくはセミコロンで区切られた 2 つのアドレスで示されます。 +行範囲は、コンマもしくはセミコロンで区切られた 2 つのアドレスで示されます。 最初に指定される行番号は、2番目に指定される行番号を超える値を指定して はいけません。行範囲指定で行番号が 1 つしか指定されなかった場合には、2番目に 指定されるアドレスとして最初に指定されたアドレスが設定され ます。ここで 3個以上の行番号が指定されると、最後の 2 つの行番号で 決定される範囲がコマンド実行対象になります。行番号の指定を 1 つだけしか 想定していないコマンドの場合、最後の 1 つの行番号の行がコマンド実行対象 となります。 .Pp コンマで区切られた各行番号は、現在行からの相対行を指し示します。 セミコロンで区切られている場合は、範囲の始めの行は現在行が設定され、 範囲の終りは始めの行からの相対行で表わされます。 .Pp 行番号の指定には、以下のシンボルが使用可能です。 .Bl -tag -width indent .It . バッファ中の現在行を表します。 .It $ バッファ中の最終行を表します。 .It n バッファ内の .Em n 番目の行を表します。 .Em n は、 .Em [0,$] の間です。 .It - or ^ 1 行前の行です。 相対行指定 .Em -1 と同等であり、複数指定することで効果を累積することが可能です。 .\" --- という指定をすることで、2 行前を示すことができます。 .\" ↑原文中に無いのでコメントアウト sakai@jp.freebsd.org (Jun 9,1997) .It -n or ^n .Em n 行前の行を表します。 .Em n は、負でない整数です。 .It + 次の行を表します。 これは、 .Em +1 と同様であり、 .Em - と同様の累積的指定が可能です。 .It +n or whitespace .Em n 行後ろの行を表します。 .Em n は、負でない整数です。 .Em n の前に .Em whitespace ( 空白文字 ) を付加して指定した場合も .Em +n と解釈されます。 .\" ↓原文中に無いのでコメントアウト sakai@jp.freebsd.org (Jun 9,1997) .\" ただし、空白文字による指定を行なった場合は、単独では現在行からの相対行数を .\" 指定することはできず、相対行指定の基準となる行をその前に指定しなければなり .\" ません。 .It , or % バッファの最初から最後までを表します。これは、 .Em 1,$ と指定した場合と同等です。 .It ; バッファ中の現在行から最後の行までを表します。これは、 .Em .,$ と指定した場合と同等です。 .It /re/ 指定された正規表現 .Em re を含む、(現在行よりも後ろの) 次の行を表します。 必要であれば、文字列検索はテキスト先頭に折り返し、 現在行に達するまで検索を行ないます。 // は、最後に行なった検索を繰り返します。 .It ?re? 指定した正規表現 .Em re を含む、現在行より前の行を表します。 必要であれば、文字列検索はテキストの最後に折り返し、 現在行に達するまで検索を行ないます。 ?? は、最後に行なった検索を繰り返します。 .It 'lc .Em k (mark) コマンドでマークをつけた行を表します。ここで .Em lc は、英小文字1文字です。 .El .Sh 正規表現 正規表現はテキストを選択する際に用いるパターンです。 例えば次の .Em ed コマンド .Pp .Sm off .Cm g No / Em string Xo .No / .Xc .Sm on .Pp は .Em string を含む全ての行を表示します。 正規表現は .Em s コマンドで古いテキストを新しいテキストで置き換える際にも用いられます。 .Pp 文字リテラルを指定するのに加え、 正規表現は文字列のクラスを表現することができます。 このようにして表現された文字列は、それに対応する正規表現に「マッチする」と 言います。 ある正規表現が一つの行の中の複数の文字列にマッチする場合、 マッチする部分のうち最も左にあって最も長いものが選択されます。 .Pp 正規表現を組み立てる際には以下のシンボルが用いられます: .Bl -tag -width indent .It c 以下に挙げるものを除く任意の文字 .Em c は、その文字自身にマッチします。 このような文字には `{', '}', `(', `)', `<', `>' が含まれます。 .It Pf \e c バックスラッシュでエスケープした文字 .Em c は、その文字自身にマッチします。 ただし `{', '}', `(', `)', `<', `>' を除きます。 .It . 任意の一文字にマッチします。 .It Op char-class 文字クラス .Em char-class に含まれる任意の一文字にマッチします。 文字クラス .Em char-class に `]' を含めるには、文字 `]' を最初の文字に指定します。 文字の範囲を指定するには、範囲の両端の文字の間を `-' でつなぎます。 例えば `a-z' は小文字全体を表します。 以下のようなリテラル表記も、文字集合を指定するために文字クラス .Em char-class で使用することができます: .Pp \ \ [:alnum:]\ \ [:cntrl:]\ \ [:lower:]\ \ [:space:] .PD 0 \ \ [:alpha:]\ \ [:digit:]\ \ [:print:]\ \ [:upper:] .PD 0 \ \ [:blank:]\ \ [:graph:]\ \ [:punct:]\ \ [:xdigit:] .Pp 文字クラス .Em char-class の最初あるいは最後の文字として `-' が用いられると、 それはその文字自身にマッチします。 文字クラス .Em char-class 中のこれ以外の文字は全て、それら自身にマッチします。 .Pp 以下の形式の文字クラス中のパターン: .Pp \ \ [.\fIcol-elm\fR.] or, .PD 0 \ \ [=\fIcol-elm\fR=] .Pp は .Xr locale 5 に沿って解釈されます (現在のところサポートされません)。ここで .Em col-elm は .Em collating element です。詳しい説明は .Xr regex 3 を参照して下さい。 .It Op ^char-class 文字クラス .Em char-class に含まれない、改行以外の任意の一文字にマッチします。 文字クラス .Em char-class は上で定義しています。 .It ^ .Em ^ が正規表現の最初の文字である場合、 その正規表現は行頭でのみマッチします。 それ以外の場合、 .Em ^ はそれ自身にマッチします。 .It $ .Em $ が正規表現の最後の文字である場合、 その正規表現は行末でのみマッチします。 それ以外の場合、 .Em $ はそれ自身にマッチします。 .It Pf \e < これに続く単一文字の正規表現あるいはその部分式が、 単語の先頭でのみマッチするようにします (この機能は利用できない 場合があります)。 .It Pf \e > これに続く単一文字の正規表現あるいはその部分式が、 単語の末尾でのみマッチするようにします (この機能は利用できない 場合があります)。 .It Pf \e (re\e) 部分式 (subexpression) .Em re を定義します。部分式はネストできます。 これ以降、 .Em Pf ^e n ( .Em n は [1,9] の範囲の数) の形式の後方参照は、 .Em n 番目の部分式にマッチしたテキストに展開されます。 例えば、正規表現 `\e(.*\e)\e1' は、 同じ文字列が隣接しているような任意の文字列にマッチします。 部分式は左側のデリミタから順に番号が振られます。 .It * 直前にある単一文字の正規表現あるいはその部分式のゼロ回以上の繰り返しに マッチします。 .Em * が正規表現あるいはその部分式の最初の文字として用いられた場合、 .Em * はその文字自身にマッチします。 .Em * 演算子は時に予期しない結果をもたらすことがあります。 例えば、正規表現 `b*' は文字列 `abbb' の先頭に マッチします (部分文字列 `bbb' ではありません)。 これはヌルへのマッチが最も左にあるマッチだからです。 .It \e{n,m\e} or \e{n,\e} or \e{n\e} 直前にある単一文字の正規表現あるいはその部分式の、 .Em n 回以上 .Em m 回以下の繰り返しにマッチします。 .Em m が省略された場合、 .Em n 回以上の繰り返しにマッチします。 更にコンマも省略された場合、ちょうど .Em n 回の繰り返しにのみマッチします。 .El .Pp 各 .Xr regex 3 の実装によっては、 更に正規表現演算子がいくつか定義されていることがあります。 .Sh コマンド 全ての .Nm コマンドは、1 文字からなりますが、追加パラメータが必要なコマンドもあります。 コマンドのパラメータが複数の行にわたる場合には、そのパラメータを含めたコマンド の終りを含む行を除き、行末にバックスラッシュ (\\) を付加して下さい。 一般的には、1 行ごとに 1 コマンドを入れることが許されています。 しかしながら、ほとんどのコマンドは、コマンド実行を行なった後のデータ更新 その他を確認するために、 .Em p (print)、 や .Em l (list)、 .Em n (enumerate), のような表示系のコマンドを同時に指定できます。 インタラプト (一般的には ^C) を入力することで、現在実行しているコマンドを 強制終了し、コマンドモードに戻すことができます。 .Nm は、以下のコマンドを使用できます。コマンド実行時に何の指定もない場合の デフォルトの行番号もしくは行範囲が括弧内に示されています。 .Bl -tag -width indent .It (.)a 指定した行の後にテキストを追加します。 テキストは入力モードで入力されていきます。 現在行番号は、入力された最後の行に設定されます。 .It (.,.)c バッファ内の指定した行を変更します。指定した行のデータは、バッファから消去 され、そこに対してテキストデータを入力するようになります。 テキストは入力モードで入力されていきます。 現在行番号は、入力した最後の行に設定されます。 .It (.,.)d 指定した範囲をバッファから削除します。 削除した範囲の後に行が続いている場合、現在行番号は、その行に設定されます。 そうでない場合には、現在行番号は、削除された範囲の前の行に設定されます。 .It e Ar file .Ar file を編集し、デフォルトのファイル名を設定します。 もし .Ar file が指定されなかった場合には、デフォルトのファイル名が使用されます。 本コマンド実行時に、それまで別のファイルを編集していた場合には、 その内容はすべて消去され、新しいファイルが読み込まれます。 現在行番号は、入力された最後の行に設定されます。 .It e Ar !command .Ar !command で指定されたコマンドを実行し、その結果として標準出力へ 出力されたデータを編集します (後述する .Ar ! command を参照して下さい)。 デフォルトのファイル名は変更されません。 .Ar command の出力が読み込まれる前に、バッファ内に存在した行はすべて消去されます。 現在行番号は、入力された最後の行に設定されます。 .It E Ar file 無条件で .Ar file で指定したファイルを読み込み、編集します。 .Em e コマンドと動作は似ていますが、すでにバッファ上のデータに変更が加えられ ている場合でも、未書き込みの変更を警告を出さずに捨ててしまう点が異なります。 現在行番号は、入力された最後の行に設定されます。 .It f Ar file デフォルトファイル名を .Ar file に設定します。 .Ar file 名が指定されない場合には、デフォルトファイル名が表示されます。 .It (1,$)g/re/command-list .Ar command-list で指定されたコマンドを、指定した正規表現 .Ar re に一致する各行に対して実行します。 現在行番号は、 .Ar command-list で指定されたコマンドが実行される前に、指定した正規表現に一致した行 に設定されます。 .Em g コマンドが終了した場合、現在行番号は最後に .Ar command-list 実行の影響を受けた行に設定されます。 .Pp .Ar command-list で指定されるコマンドは、1 行ごとに 1 つずつ書かれる必要があります。各コマンド 行の終りには、一番最後のコマンド行を除いてはバックスラッシュ (\\) を記述する 必要があります。 コマンド .Em g , .Em G , .Em v , .Em V を除くすべてのコマンドを指定可能です。 .Ar command-list 中の空行は、 .Em p コマンドと同等に扱われます。 .It (1,$)G/re/ 指定した正規表現 .Ar re に一致した行に対して、対話編集を行ないます。 指定した正規表現に一致する文字列を含む行があると、その行を表示し、現在行番号を 設定します。 そして、ユーザに .Ar command-list の入力を促します。 .Em G コマンドが終了した場合、現在行番号は、 .Ar command-list 実行の影響を受けた最後の行に設定されます。 .Pp .Ar command-list の記述形式は、 .Em g コマンドで指定するものと同じです。改行のみの場合は、コマンド実行をしない ( ヌルコマンドリストを指定した ) ものとみなされます。 `&' 文字のみを入力した場合には、 直前に実行した ( ヌルコマンドリストではない ) コマンドを再実行します。 .It H エラーメッセージの出力の有無を切り替えます。 デフォルトでは、エラーメッセージは出力されません。 ed スクリプトを作成する場合、スクリプトのデバッグのために、本コマンドを 最初に実行することをおすすめします。 .It h 最後に表示されたエラーメッセージを表示します。 .It (.)i 編集バッファ中の現在行の前に、テキストを挿入します。 テキストは入力モードで入力されていきます。 現在行番号は、入力された最後の行に設定されます。 .It (.,.+1)j 指定した範囲の行を 1 行に連結します。指定した行はバッファから削除され、 その行の内容を含む 1 行に置き換えられます。 現在行番号は、置き換えられた行に設定されます。 .It (.)klc 行に、英小文字 .Em lc で指定したマークをつけます。 その後、マークをつけられた行は、コマンド中で .Em 'lc (つまり、シングルクォートと小文字 .Em lc ) として指定できるようになります。 マークは、その行が削除されるかもしくは変更されるかしない限り、消えることは ありません。 .It (.,.)l 指定した範囲の行の内容を見やすく表示します。 もし 1 つの行が 1 画面以上を占める場合 ( 例えばバイナリファイルを見ている 場合など ) `--More--' プロンプトが最下行に表示されます。 次の画面を表示する前に .Nm はリターンキーが入力されるまで待ちます。 現在行番号は、表示された最後の行に設定されます。 .It (.,.)m(.) 指定した範囲の行をバッファ内で移動します。指定した行は、 コマンドの右辺で指定した行の後ろに 移動されます。移動先の行としては、 .Em 0 (ゼロ) が指定可能です。 現在行番号は、移動された最後の行に設定されます。 .It (.,.)n 指定した行の内容を、行番号つきで表示します。 現在行番号は、表示された最後の行に設定されます。 .It (.,.)p 指定した範囲の行の内容を表示します。 現在行番号は、表示された最後の行に設定されます。 .It P コマンドプロンプト表示の有無を切り替えます。 コマンド起動時のオプション .Fl p Ar string でプロンプトが指定されていなければ、 コマンドプロンプトの表示はデフォルトでオフになっています。 .It q .Nm を終了します。 .It Q 無条件に .Nm を終了します。 このコマンドは .Em q コマンドと似ていますが、まだファイルに書き出されていない 変更があっても警告せずに終了する点が異なります。 .It ($)r Ar file .Ar file で指定されたファイルを、指定した行の後ろに読み込みます。 .Ar file が指定されない場合、デフォルトのファイル名が読み込みに使用されます。 このコマンドに先だってデフォルトのファイル名が設定されていない場合、 デフォルトのファイル名には、 .Ar file で指定されたものが設定されます。 それ以外の場合、デフォルトのファイル名は変更されません。 現在行番号は、読み込まれたファイルの最後の行に設定されます。 .It ($)r Ar !command .Ar command で指定されたコマンドを実行し、その結果として標準出力へ出力された データを指定した行の後ろに読み込みます (後述する .Ar ! command を参照して下さい)。 デフォルトのファイル名は変更されません。現在行番号は、読み込まれた最後の行の 行番号に設定されます。 .It (.,.)s/re/replacement/ .It (.,.)s/re/replacement/g .It (.,.)s/re/replacement/n 指定した行のテキスト中の、正規表現 .Ar re に一致する文字列を、文字列 .Ar replacement に置き換えます。 デフォルトでは、それぞれの行で最初に一致した文字列のみを置き換えます。 .Em g (global) サフィックスが指定された場合、一致した文字列はすべて置き換えられます。 .Em n サフィックス ( .Em n は正の整数) が指定された場合、 .Em n 回目に一致した文字列だけを置き換えます。 指定した範囲で一度も文字列の置換が起こらなかった場合、エラーとみなされます。 現在行番号は、最後に置換が発生した行に設定されます。 .Pp .Ar re および .Ar replacement は、スペースおよび改行を除くすべてのキャラクタを用いて区切ることが 可能です (後述する .Em s コマンドを見て下さい)。 最後のデリミタのうち 1 つか 2 つが省略された場合、 最後に文字列置換が発生した行は、 .Em p コマンドが指定された場合と同様に表示されます。 .Pp .Ar replacement 中のエスケープされていない `&' は、一致した文字列と置き換えられます。 キャラクタシーケンス .Em \em ( .Em m は [1,9] の範囲の整数です ) は、一致した文字列の .Em m 番目の後方参照で置き換えられます。 .Ar replacement の中に入る文字が `%' のみだった場合、 最後に行なった置換の .Ar replacement が使用されます。 改行を .Ar replacement に指定したい場合は、バックスラッシュを用いてエスケープすれば可能です。 .It (.,.)s 最後の置換を繰り返します。 この形式の .Em s コマンドは、回数を示すサフィックス .Em n もしくは、他の .Em r 、 .Em g 、 .Em p -のどのキャラクタとの組合せも可能です。 +のどのキャラクタとの組み合わせも可能です。 .Em n が指定されると、 .Em n 回目に一致した文字列だけが置換されます。 .Em r サフィックスが指定されると、最後の置換が発生した文字列の変わりに、 最後に指定した正規表現が使用されます。 .Em g サフィックスは、最後の置換で用いたグローバルサフィックスの使用の 有効/無効を切り替えます。 .Em p サフィックスは、最後の置換に指定されたプリントサフィックスを反転します。 現在行番号は、最後に置換が発生した行に設定されます。 .It (.,.)t(.) 指定した範囲の行を、コマンド文字の右辺に指定した行番号の後に コピー (つまり転送) します。コピー先の行番号としては、 .Em 0 (ゼロ) の指定が許されています。 現在行番号は、コピーした一番最後の行の行番号に設定されます。 .It u 最後に実行したコマンドの実行結果を取り消し、現在行番号を、取り消したい コマンドが実行される前のものに戻します。 グローバルコマンドである .Em g 、 .Em G 、 .Em v 、 .Em V については、その改変は 1 コマンドで行なわれたとして扱います。 .Em u は自分自身の動作を取り消すこともできます。 .It (1,$)v/re/command-list 指定した範囲の行のうち、指定した正規表現 .Ar re と一致する文字列が含まれていない行について、 .Ar command-list で指定したコマンドを実行します。 これは .Em g コマンドに動作が似ています。 .It (1,$)V/re/ 指定した範囲の行のうち、指定した正規表現 .Ar re に一致する文字列が含まれていない行について、対話編集を行ないます。 これは .Em G コマンドに動作が似ています。 .It (1,$)w Ar file 指定した範囲の行を、 .Ar file で指定したファイルに書き出します。 それまで .Ar file に格納されていた内容は、警告なしに消去されます。 デフォルトファイル名が設定されていない場合、デフォルトファイル名は .Ar file に設定されます。それ以外の場合では、デフォルトファイル名は変更されません。 ファイル名が指定されなかった場合には、デフォルトファイル名が使用されます。 現在行番号は変更されません。 .It (1,$)wq Ar file 指定した範囲の行を .Ar file で指定したファイルに書き出し、 .Em q コマンドを実行します。 .It (1,$)w Ar !command 指定した範囲の行の内容を .Ar !command の標準入力に書き出します ( .Em !command については、以下の説明を参照して下さい)。 デフォルトファイル名および現在行番号は変更されません。 .It (1,$)W Ar file 指定した範囲の行の内容を、 .Ar file で指定したファイルの後ろに追加書き込みします。 .Em w コマンドと似ていますが、指定したファイルにそれまで格納されていた内容 がなくなることはありません。 現在行番号は変更されません。 .It x 以降の読み書きで用いられる暗号化鍵の入力を促します。 改行のみが入力されると、暗号化は解除されます。 それ以外の場合、キー読み込み中のエコーは抑制されます。 暗号化および復号化は .Xr bdes 1 アルゴリズムを用いて行われます。 .It Pf (.+1)z n 指定した行から一度に .Ar n 行だけスクロールします。 .Ar n が指定されない場合には、現在のウィンドウサイズだけスクロールします。 現在行番号は、最後に表示した行の行番号に設定されます。 .It !command .Ar command で指定したコマンドを、 .Xr sh 1 を用いて実行します。 .Ar command の最初の文字が `!'の場合には、その文字は直前に .Ar !command で実行したコマンド文字列が格納されます。 .Ar command 文字列をバックスラッシュ(\\)でエスケープした場合には、 .Nm は処理を行ないません。 しかし、エスケープされない .Em % 文字があった場合には、その文字列はデフォルトファイル名に置き換えられます。 シェルがコマンド実行から戻ってきた場合には、`!' が標準出力に出力されます。 現在行番号は変更されません。 .It ($)= 指定された行の行番号を表示します。 .It (.+1)newline 指定した行を表示します。そして、現在行番号を表示した行のものに 設定します。 .El .Sh 関連ファイル .Bl -tag -width /tmp/ed.* -compact .It /tmp/ed.* バッファファイル .It ed.hup 端末が回線切断した場合に、 .Nm がバッファ内容を書き出すファイル .El .Sh 関連項目 .Xr bdes 1 , .Xr sed 1 , .Xr sh 1 , .Xr vi 1 , .Xr regex 3 USD:12-13 .Rs .%A B. W. Kernighan and P. J. Plauger .%B Software Tools in Pascal .%O Addison-Wesley .%D 1981 .Re .Sh 制限 .Nm は .Ar file 引数に対してバックスラッシュエスケープ処理を施します。 つまり、ファイル名中でバックスラッシュ (\\) を前につけた文字は、 リテラルとして解釈されます。 (バイナリではない) テキストファイルの最後が改行文字で終っていない場合、 .Nm はそれを読み書きする際に改行文字を追加します。 バイナリファイルの場合は、 .Nm はこのような改行文字追加は行いません。 1 行あたりのオーバヘッドは整数 4 つ分です。 .Sh 診断 エラーが発生すると、 .Nm は `?' を表示し、コマンドモードに戻るか、スクリプトによる実行のエラーの場合には プログラムを終了します。 最後のエラーメッセージについての説明は、 .Em h (help) コマンドを用いることで表示可能です。 .Em g (global) コマンドは、検索や置換が失敗したというエラーを隠蔽します。 そのため、スクリプトの中で条件つきコマンド実行を行なわせるのによく使われます。 例えば .Pp .Sm off .Cm g No / Em old Xo .No / Cm s .No // Em new .No / .Xc .Sm on .Pp は、出現した文字列 .Em old をすべて文字列 .Em new に置き換えます。 .Em u (undo) コマンドがグローバルコマンドリスト内で実行された場合、コマンドリストは 1 度だけの実行になります。 診断が無効にされていないと、 .Nm を終了しようとする場合やバッファ内のデータを書き出さずに他のファイルを 編集しようとする場合にエラーになります。 その場合でも、同一のコマンドを 2 回入力すると、コマンドは成功します。 しかし、それまでの未保存の編集結果は、すべて失われます。 .Sh 歴史 .Nm コマンドは Version 1 AT&T UNIX で登場しました。 diff --git a/ja/man/man1/gcc.1 b/ja/man/man1/gcc.1 index 27e57d60e1..a8ea408dbc 100644 --- a/ja/man/man1/gcc.1 +++ b/ja/man/man1/gcc.1 @@ -1,4019 +1,4019 @@ .\" Copyright (c) 1991, 1992, 1993, 1994 Free Software Foundation -*-Text-*- .\" See section COPYING for conditions for redistribution .\" .\" jpman %Id: gcc.1,v 1.4 1997/10/11 07:52:34 horikawa Stab % .\" Set up \*(lq, \*(rq if -man hasn't already set it up. .if @@\*(lq@ \{\ . ds lq " . if t .ds lq `` . if !@@\(lq@ .ds lq "\(lq .\} .if @@\*(rq@ \{\ . ds rq " . if t .ds rq '' . if !@@\(rq@ .ds rq "\(rq .\} .de Id .ds Rv \\$3 .ds Dt \\$4 .. .de Sp .if n .sp .if t .sp 0.4 .. .Id %Id: gcc.1,v 1.4 1993/10/13 23:19:12 pesch Exp % .TH GCC 1 "\*(Dt" "GNU Tools" "GNU Tools" .SH 名称 gcc, g++ \- GNU プロジェクト C コンパイラ および C++ コンパイラ (v2.7) .SH 書式 .B gcc .RI "[ " option " | " filename " ].\|.\|." .br .SH 注意 このマニュアルに書かれた情報は GNU C コンパイラの完全な ドキュメンテーションからの抜粋であり、オプションの意味の記述にとどめます。 .PP このマニュアルはボランティアのメンテナンスが行なわれた時にのみ更新され るもので、常に最新の情報を示しているわけではありません。 もしこのマニュアルと実際のソフトウェアの間に矛盾点があれば、 正式なドキュメントである Info ファイルのほうを参照して下さい。 .PP このマニュアル中の古い記述が重大な混乱や不具合をきたすことになれば、 このマニュアルページの配布は中止します。 GNU CCのメンテナンス作業の都合上、 Info ファイルを更新した時にマニュアルページも併せて更新することは できません。マニュアルページは時代遅れであり、 これに時間をかけるべきではないと GNU プロジェクトでは考えています。 .PP 完全な最新のドキュメンテーションが必要な場合は、Info ファイルの`\|\c .B gcc\c \&\|' またはマニュアルの .I Using and Porting GNU CC (for version 2.0)\c \& を参照して下さい。この双方は Texinfo のソースファイル .B gcc.texinfo から生成されます。 .SH 解説 C と C++ のコンパイラは統合されています。どちらの場合も、入力ファイル は、プリプロセス、コンパイル、アセンブル、リンクの 4 つの処理ステージの うちの 1 つ以上のステージを踏んで処理されます。 ソースファイル名の拡張子によってソースの言語を識別しますが、 デフォルトの動作は、どちらの名前でコンパイラを使うかに依存しています: .TP .B gcc プリプロセス済みの (\c .B .i\c \&) ファイルを C のファイルと仮定し、C スタイルのリンクを行います。 .TP .B g++ プリプロセス済みの(\c .B .i\c \&) ファイルを C++ のファイルと仮定し、C++ スタイルのリンクを行います。 .PP ソースファイル名の拡張子は、その言語が何であるかと、どのような処理が行われる べきかを示します: .Sp .nf .ta \w'\fB.cxx\fP 'u \&\fB.c\fP C言語ソースです。プリプロセッサ、コンパイラ、アセンブラにかけられます。 \&\fB.C\fP C++言語ソースです。プリプロセッサ、コンパイラ、アセンブラにかけられます。 \&\fB.cc\fP C++言語ソースです。プリプロセッサ、コンパイラ、アセンブラにかけられます。 \&\fB.cxx\fP C++言語ソースです。プリプロセッサ、コンパイラ、アセンブラにかけられます。 \&\fB.m\fP Objective-C 言語ソースです。プリプロセッサ、コンパイラ、アセンブラにかけられます。 \&\fB.i\fP プリプロセッサにかけられたC言語ソースです。コンパイラ、アセンブラにかけられます。 \&\fB.ii\fP プリプロセッサにかけられたC++言語ソースです。コンパイラ、アセンブラにかけられます。 \&\fB.s\fP アセンブリ言語ソースです。アセンブラにかけられます。 \&\fB.S\fP アセンブリ言語ソースです。プリプロセッサ、アセンブラにかけられます。 \&\fB.h\fP プリプロセッサファイルです。通常はコマンドラインには現れません。 .Sp .fi その他の拡張子を持つファイルはリンカに渡されます。以下のものがあります。 .Sp .nf \&\fB.o\fP オブジェクトファイルです。 \&\fB.a\fP アーカイブファイルです。 .br .fi .Sp リンクは、オプション .BR \-c , .BR \-S , .B \-E を指定して抑制しないかぎり(もしくはコンパイルエラーによってすべての処理が中断 しないかぎり)、常に最終ステージで実行されます。 リンクのステージにおいては、ソースファイルに対応した全ての .B .o ファイルと、 .B \-l で指定したライブラリと、認識されなかったファイル名 (名前に .B .o のついたオブジェクトファイルや .B .a のついたアーカイブを含む) は、 コマンドラインに並べられた順番でリンカに渡されます。 .SH オプション オプションは分割されていなければなりません。すなわち `\|\c .B \-dr\c \&\|' は `\|\c .B \-d \-r \&\|'とは異なった扱いを受けます。 .PP ほとんどの `\|\c .B \-f\c \&\|' と `\|\c .B \-W\c \&\|' 形式のオプションには、 .BI \-f name と .BI \-fno\- name\c \& (または .BI \-W name と .BI \-Wno\- name\c \&) の形式の、対照的な表現があります。ここではデフォルトでない形式の みを示します。 .PP すべてのオプションを種類別に分けてまとめました。詳しい解説は 以下の節で行ないます。 .hy 0 .SH FreeBSD 固有のオプション .TP .BI "\-pthread" スレッド化ユーザプロセスに libc の代りに libc_r をリンクします。 スレッド化ユーザプロセスにリンクされるオブジェクトは -D_THREADSAFE 付きで コンパイルする必要があります。 .TP .BI "\-kthread" スレッド化カーネルプロセスに libc に加えて libpthread をリンクします。 スレッド化カーネルプロセスにリンクされるオブジェクトは -D_THREADSAFE 付きで コンパイルする必要があります。 .na .TP .B 全体的なオプション .br \-c \-S \-E .RI "\-o " file \-pipe \-v .RI "\-x " language .TP .B 言語オプション \-ansi \-fall\-virtual \-fcond\-mismatch \-fdollars\-in\-identifiers \-fenum\-int\-equiv \-fexternal\-templates \-fno\-asm \-fno\-builtin \-fno\-strict\-prototype \-fsigned\-bitfields \-fsigned\-char \-fthis\-is\-variable \-funsigned\-bitfields \-funsigned\-char \-fwritable\-strings \-traditional \-traditional\-cpp \-trigraphs .TP .B 警告オプション \-fsyntax\-only \-pedantic \-pedantic\-errors \-w \-W \-Wall \-Waggregate\-return \-Wcast\-align \-Wcast\-qual \-Wchar\-subscript \-Wcomment \-Wconversion \-Wenum\-clash \-Werror \-Wformat .RI \-Wid\-clash\- len \-Wimplicit \-Winline \-Wmissing\-prototypes \-Wmissing\-declarations \-Wnested\-externs \-Wno\-import \-Wparentheses \-Wpointer\-arith \-Wredundant\-decls \-Wreturn\-type \-Wshadow \-Wstrict\-prototypes \-Wswitch \-Wtemplate\-debugging \-Wtraditional \-Wtrigraphs \-Wuninitialized \-Wunused \-Wwrite\-strings .TP .B デバッグオプション \-a .RI \-d letters \-fpretend\-float \-g .RI \-g level \-gcoff \-gxcoff \-gxcoff+ \-gdwarf \-gdwarf+ \-gstabs \-gstabs+ \-ggdb \-p \-pg \-save\-temps .RI \-print\-file\-name= library \-print\-libgcc\-file\-name .TP .B 最適化オプション \-fcaller\-saves \-fcse\-follow\-jumps \-fcse\-skip\-blocks \-fdelayed\-branch \-felide\-constructors \-fexpensive\-optimizations \-ffast\-math \-ffloat\-store \-fforce\-addr \-fforce\-mem \-finline\-functions \-fkeep\-inline\-functions \-fmemoize\-lookups \-fno\-default\-inline \-fno\-defer\-pop \-fno\-function\-cse \-fno\-inline \-fno\-peephole \-fomit\-frame\-pointer \-frerun\-cse\-after\-loop \-fschedule\-insns \-fschedule\-insns2 \-fstrength\-reduce \-fthread\-jumps \-funroll\-all\-loops \-funroll\-loops \-O \-O2 .TP .B プリプロセッサオプション .RI \-A assertion \-C \-dD \-dM \-dN .RI \-D macro [\|= defn \|] \-E \-H .RI "\-idirafter " dir .RI "\-include " file .RI "\-imacros " file .RI "\-iprefix " file .RI "\-iwithprefix " dir \-M \-MD \-MM \-MMD \-nostdinc \-P .RI \-U macro \-undef .TP .B アセンブラオプション .RI \-Wa, option .TP .B リンカオプション .RI \-l library \-nostartfiles \-nostdlib \-static \-shared \-symbolic .RI "\-Xlinker\ " option .RI \-Wl, option .RI "\-u " symbol .TP .B ディレクトリオプション .RI \-B prefix .RI \-I dir \-I\- .RI \-L dir .TP .B ターゲットオプション .RI "\-b " machine .RI "\-V " version .TP .B コンフィギュレーション依存オプション .I M680x0\ オプション .br \-m68000 \-m68020 \-m68020\-40 \-m68030 \-m68040 \-m68881 \-mbitfield \-mc68000 \-mc68020 \-mfpa \-mnobitfield \-mrtd \-mshort \-msoft\-float .Sp .I VAX オプション .br \-mg \-mgnu \-munix .Sp .I SPARC オプション .br \-mepilogue \-mfpu \-mhard\-float \-mno\-fpu \-mno\-epilogue \-msoft\-float \-msparclite \-mv8 \-msupersparc \-mcypress .Sp .I Convex オプション .br \-margcount \-mc1 \-mc2 \-mnoargcount .Sp .I AMD29K オプション .br \-m29000 \-m29050 \-mbw \-mdw \-mkernel\-registers \-mlarge \-mnbw \-mnodw \-msmall \-mstack\-check \-muser\-registers .Sp .I M88K オプション .br \-m88000 \-m88100 \-m88110 \-mbig\-pic \-mcheck\-zero\-division \-mhandle\-large\-shift \-midentify\-revision \-mno\-check\-zero\-division \-mno\-ocs\-debug\-info \-mno\-ocs\-frame\-position \-mno\-optimize\-arg\-area \-mno\-serialize\-volatile \-mno\-underscores \-mocs\-debug\-info \-mocs\-frame\-position \-moptimize\-arg\-area \-mserialize\-volatile .RI \-mshort\-data\- num \-msvr3 \-msvr4 \-mtrap\-large\-shift \-muse\-div\-instruction \-mversion\-03.00 \-mwarn\-passed\-structs .Sp .I RS6000 オプション .br \-mfp\-in\-toc \-mno\-fop\-in\-toc .Sp .I RT オプション .br \-mcall\-lib\-mul \-mfp\-arg\-in\-fpregs \-mfp\-arg\-in\-gregs \-mfull\-fp\-blocks \-mhc\-struct\-return \-min\-line\-mul \-mminimum\-fp\-blocks \-mnohc\-struct\-return .Sp .I MIPS オプション .br \-mcpu=\fIcpu type\fP \-mips2 \-mips3 \-mint64 \-mlong64 \-mlonglong128 \-mmips\-as \-mgas \-mrnames \-mno\-rnames \-mgpopt \-mno\-gpopt \-mstats \-mno\-stats \-mmemcpy \-mno\-memcpy \-mno\-mips\-tfile \-mmips\-tfile \-msoft\-float \-mhard\-float \-mabicalls \-mno\-abicalls \-mhalf\-pic \-mno\-half\-pic \-G \fInum\fP \-nocpp .Sp .I i386 オプション .br \-m486 \-mno\-486 \-msoft\-float \-mrtd \-mregparm \-msvr3\-shlib \-mno\-ieee\-fp \-mno\-fp\-ret\-in\-387 \-mfancy\-math\-387 \-mno\-wide\-multiply \-mdebug\-addr \-mno\-move \-mprofiler\-epilogue \-reg\-alloc=LIST .Sp .I HPPA オプション .br \-mpa\-risc\-1\-0 \-mpa\-risc\-1\-1 \-mkernel \-mshared\-libs \-mno\-shared\-libs \-mlong\-calls \-mdisable\-fpregs \-mdisable\-indexing \-mtrailing\-colon .Sp .I i960 オプション .br \-m\fIcpu-type\fP \-mnumerics \-msoft\-float \-mleaf\-procedures \-mno\-leaf\-procedures \-mtail\-call \-mno\-tail\-call \-mcomplex\-addr \-mno\-complex\-addr \-mcode\-align \-mno\-code\-align \-mic\-compat \-mic2.0\-compat \-mic3.0\-compat \-masm\-compat \-mintel\-asm \-mstrict\-align \-mno\-strict\-align \-mold\-align \-mno\-old\-align .Sp .I DEC Alpha オプション .br \-mfp\-regs \-mno\-fp\-regs \-mno\-soft\-float \-msoft\-float .Sp .I System V オプション .br \-G \-Qy \-Qn .RI \-YP, paths .RI \-Ym, dir .TP .B コード生成オプション .RI \-fcall\-saved\- reg .RI \-fcall\-used\- reg .RI \-ffixed\- reg \-finhibit\-size\-directive \-fnonnull\-objects \-fno\-common \-fno\-ident \-fno\-gnu\-linker \-fpcc\-struct\-return \-fpic \-fPIC \-freg\-struct\-return \-fshared\-data \-fshort\-enums \-fshort\-double \-fvolatile \-fvolatile\-global \-fverbose\-asm .ad b .hy 1 .SH 全体的なオプション .TP .BI "\-x " "language" このオプションに続く入力ファイルの言語を .I language\c \& であると明示的に指定します (拡張子に基づくデフォルトの選択よりも優先されます)。このオプションは、 次の `\|\c .B \-x\c \&\|' オプションが出てくるまで、後続する全ての入力ファイルに対して 適用されます。\c .I language\c \& としては、 `\|\c .B c\c \&\|', `\|\c .B objective\-c\c \&\|', `\|\c .B c\-header\c \&\|', `\|\c .B c++\c \&\|', `\|\c .B cpp\-output\c \&\|', `\|\c .B assembler\c \&\|', `\|\c .B assembler\-with\-cpp\c \&\|' を指定することが可能です。 .TP .B \-x none 言語の指定を解除します。このオプションのあとに続くファイルは、それらの拡張子に 基づいて (あたかも何の `\|\c .B \-x\c \&\|' オプションも使用されたことがないように) 処理されます。 .PP もし、4 つのステージ (プリプロセス、コンパイル、アセンブル、リンク) の うちの一部のみが必要な場合は、 `\|\c .B \-x\c \&\|' オプション (またはファイル名の拡張子) を使用して \c .B gcc\c \& に対してどのステージから開始するかを伝え、さらに `\|\c .B \-c\c \&\|', `\|\c .B \-S\c \&\|', `\|\c .B \-E\c \&\|' のオプションのうちのどれかを使用して .B gcc\c \& に対してどこで処理を停止させるかを指定します。ここで、 -いくつかの組合せ (例えば +いくつかの組み合わせ (例えば `\|\c .B \-x cpp\-output \-E\c \&\|') は \c .B gcc\c \& に対して何の動作も行なわないように指定することになることに注意してください。 .TP .B \-c ソースファイルを、コンパイルまたはアセンブルまではしますが、リンクはしません。 コンパイラの出力は、それぞれのソースファイルに対応したオブジェクトファイル となります。 .Sp デフォルトでは、GCC はオブジェクトファイルのファイル名として、 ソースファイルの拡張子 `\|\c .B .c\c \&\|', `\|\c .B .i\c \&\|', `\|\c .B .s\c \&\|' 等を `\|\c .B .o\c \&\|' で置き換えたものを使用します。 .B \-o\c \& オプションを使用することによって、他の名前を指定することも可能です。 .Sp GCC は .B \-c オプションを使用した場合は、理解できない入力ファイル (コンパイルやアセンブル を必要としないファイル) を無視します。 .TP .B \-S コンパイルが終った所で処理を停止し、アセンブルは行いません。 アセンブラコードではない入力ファイルが指 定された場合は、出力はアセンブラコードのファイルになります。 .Sp デフォルトでは、GCC はアセンブラファイルのファイル名として、 ソースファイルの拡張子 `\|\c .B .c\c \&\|', `\|\c .B .i\c \&\|' 等を `\|\c .B .s\c \&\|' で置き換えたものを使用します。 .B \-o\c \& オプションを使用することによって、他の名前を指定することも可能です。 .Sp GCC はコンパイルを必要としない入力ファイルを全て無視します。 .TP .B \-E プリプロセス処理が終了したところで停止します。コンパイルはしません。 出力はプリプロセス済みのソースコードであり、標準出力へと送られます。 .Sp GCC はプリプロセスを必要としない入力ファイルを全て無視します。 .TP .BI "\-o " file 出力先を \c .I file\c \& に指定します。このオプションは GCC が実行可能ファイル、 オブジェクトファイル、アセンブラファイル、プリプロセス済み C コードなどの、 いかなる種類の出力を行なう場合にも適用可能です。 .Sp 出力ファイルは 1 つしか指定できないため、 `\|\c .B \-o\c \&\|' を複数の入力ファイルをコンパイルする際に使用することは、実行ファ イルを出力する時以外は無意味です。 .Sp `\|\c .B \-o\c \&\|'オプションを指定しなかった場合のデフォルトは、実行ファイルを作る場 合は `\|\c .B a.out\c \&\|' という名前であり、`\|\c .I source\c .B \&.\c .I suffix\c \&\c \&\|' の形式のファイル名を持ったソースファイルのオブジェクトファイルは `\|\c .I source\c .B \&.o\c \&\|' であり、アセンブラのファイルは `\|\c .I source\c .B \&.s\c \&\|' です。 プリプロセス済みの C 言語は、全て標準出力に送られます。 .TP .B \-v (標準エラー出力に対して) コンパイルの各ステージで実行されるコマンドを 表示します。コンパイラドライバ、プリプロセッサおよび本来のコンパイラの 各バージョン番号も表示します。 .TP .B -pipe コンパイル時のステージの間のデータの受け渡しに、テンポラリファイルではなく パイプを使用します。いくつかのシステムではアセンブラがパイプからの入力を受け 付けることができないために、このオプションを指定すると失敗します。 GNU アセンブラでは問題なく使用できます。 .PP .SH 言語オプション .TP 以下のオプションは、コンパイラが受け付ける C の方言に関する制御を行ないます: .TP .B \-ansi 全ての ANSI 標準の C プログラムをサポートします。 .Sp このオプションは、GNU C が持つ ANSI C との非互換な機能を全て排除します。 例えば、\c .B asm\c \&, \c .B inline\c \&, \c .B typeof などのキーワードや、\c .B unix\c \& や \c .B vax などの現在使用しているシステムを規定する定義済みマクロなどが抑制されます。 さらに、好ましくなくかつほとんど使用されない ANSI のトライグラフの機能を使 用可能とし、さらに `\|\c .B $\c \&\|' を識別子の一部として使用できないようにします。 .Sp 代替キーワードである\c .B _\|_asm_\|_\c \&, \c .B _\|_extension_\|_\c \&, .B _\|_inline_\|_\c \&, \c .B _\|_typeof_\|_\c \& は、 `\|\c .B \-ansi\c \&\|' が指定された場合でも使用することが可能です。もちろん、 これらを ANSI C プログラムで使用することが望ましくないのは当然ですが、`\|\c .B \-ansi\c \&\|' をつけてコンパイルされる場合でも、インクルードされるヘッダファイル中に これらが記述できるということは有用です。 \c .B _\|_unix_\|_\c \& や \c .B _\|_vax_\|_\c \& などの代替定義済みマクロは、 `\|\c .B \-ansi\c \&\|' を指定する場合でも指定しない場合でも、利用可能となっています。 .Sp `\|\c .B \-ansi\c \&\|' オプションは、ANSI 準拠でないプログラムを不必要に拒否することは ありません。もしこのような動作を行なわせたい場合には`\|\c .B \-ansi\c \&\|'に加えて\c .B \-pedantic\c \&\|' オプションを指定する必要があります。 .Sp プリプロセッサ定義済みマクロ \c .B _\|_STRICT_ANSI_\|_\c \& が `\|\c .B \-ansi\c \&\|' オプションを使用した際には定義されます。いくつかのヘッダファイルは、この マクロを識別して、ANSI 標準が望まない関数やマクロの定義を抑制します。 これは、 それらの関数やマクロと同じ名前を別の目的で使用するプログラム を混乱させないようにするためです。 .TP .B \-fno\-asm \c .B asm\c \&, \c .B inline\c \&, \c .B typeof\c \& をキーワードとして解釈しません。 これらの単語は識別子として解釈されるようになります。これらの代用として \c .B _\|_asm_\|_\c \&, \c .B _\|_inline_\|_\c \&, \c .B _\|_typeof_\|_\c \& が使用できます。 `\|\c .B \-ansi\c \&\|' を指定すると、暗黙のうちに `\|\c .B \-fno\-asm\c \&\|' を指定したものとみなされます。 .TP .B \-fno\-builtin ビルトイン関数のうち、2 つのアンダースコアで始まるもの以外を認識しなくなり ます。現在、この指定は\c .B _exit\c \&, .B abort\c \&, \c .B abs\c \&, \c .B alloca\c \&, \c .B cos\c \&, \c .B exit\c \&, .B fabs\c \&, \c .B labs\c \&, \c .B memcmp\c \&, \c .B memcpy\c \&, \c .B sin\c \&, .B sqrt\c \&, \c .B strcmp\c \&, \c .B strcpy\c \&, \c .B strlen\c \& の関数に影響を及ぼします。 .Sp `\|\c .B \-ansi\c \&\|' オプションを指定すると、\c .B alloca\c \& と \c .B _exit\c \& はビルトイン関数として扱われなくなります。 .TP .B \-fno\-strict\-prototype `\|\c .B int foo ();\c \&\|' のような、引数を指定しない関数宣言を、C 言語のように引数の数や 型について何の仮定もしないという扱いにします (C++ のみ)。通常はこのよう な宣言は、C++ では \c .B foo\c \& という関数が 1 つも引数をとらないことを意味します。 .TP .B \-trigraphs ANSI C のトライグラフを使用可能とします。`\|\c .B \-ansi\c \&\|' オプションを指定すると、暗黙のうちに `\|\c .B \-trigraphs\c \&\|' を指定したものとみなされます。 .TP .B \-traditional 伝統的な C コンパイラのいくつかの特徴をサポートします。詳しくは GNU C の マニュアルを参照してください。以前はここにそのリストの複製を載せていましたが、 それらが完全に時代遅れになった時に我々に文句が来ないように削除してしまいま した。 .Sp しかし、C++ のプログラムだけについて (C ではありません) 特記しておくこと が 1 つあります。 `\|\c .B \-traditional\c \&\|' オプションは C++ に対して 1 つだけ特別な効果を持ちます。それは、 .B this への代入を許可するというものです。これは `\|\c .B \-fthis\-is\-variable\c \&\|'オプションの指定が及ぼす効果と同一のものです。 .TP .B \-traditional\-cpp 伝統的な C プリプロセッサのいくつかの特徴をサポートします。これは上に挙 げた中で特にプリプロセッサに関係したものを含みますが、 `\|\c .B \-traditional\c \&\|' の指定によって引き起こされる以外の効果を及ぼすことはありません。 .TP .B \-fdollars\-in\-identifiers 識別子中の `\|\c .B $\c \&\|' の使用を許可します (C++ のみ)。 `\|\c .B \-fno\-dollars\-in\-identifiers\c \&\|' を使用することによって、明示的に `\|\c .B $\c \&\|'の使用を禁止することも可能です。(GNU C++ では、デフォルトで `\|\c .B $\c \&\|' を許可しているシステムと禁止しているシステムがあります)。 .TP .B \-fenum\-int\-equiv \c .B int\c \& から列挙型への暗黙の変換を許可します (C++ のみ)。通常は GNU C++ は \c .B enum\c \& から \c .B int\c \& への変換は許可していますが、 逆は許していません。 .TP .B \-fexternal\-templates テンプレート関数について、その関数が定義された場所にのみ単一のコピー を生成することによって、テンプレート宣言に対してより小さなコードを生成 します (C++ のみ)。このオプションを使用して正しいコードを得るためには、 テンプレートを使用する全てのファイルにおいて、`\|\c .B #pragma implementation\c \&\|' (定義) または `\|\c .B #pragma interface\c \&\|' (宣言) を記述しておく必要があります。 `\|\c .B \-fexternal\-templates\c \&\|' を指定してコンパイルを行なう場合には、全てのテンプレートの 実体は external となります。全ての使用される実体はインプリメンテーション ファイル中にまとめて記述しておかなければなりません。これはその必要とされ る実体に対応した \c .B typedef\c \& 宣言を行なうことによって実現できます。 逆に、デフォルトのオプション `\|\c .B \-fno\-external\-templates\c \&\|' でコンパイルした場合には全てのテンプレートの実体は internal と なります。 .TP .B \-fall\-virtual 可能な限り全てのメンバ関数を暗黙のうちに仮想関数として扱います。 全てのメンバ関数 (コンストラクタと .B new , .B delete メンバ演算子を除きます) は、出現した時点でそのクラスの仮想関数とし て扱われます。 .Sp これは、これらのメンバ関数への全ての呼び出しが仮想関数のための内部 テーブルを参照して間接的に決定されるということを意味しません。特定の状況 においては、コンパイラは与えられた仮想関数への呼び出しを直接決定できます。 このような場合にはその関数呼び出しは常に直接呼び出しとなります。 .TP .B \-fcond\-mismatch 条件演算子の第 2, 第 3 引数の型が異なる記述を許します。このような式の型は void となります。 .TP .B \-fthis\-is\-variable \c .B this\c \& への代入を許可します (C++ のみ)。ユーザ定義による記憶管理が可 能となった現在では、 `\|\c .B this\c \&\|' への代入は時代遅れのものとなりました。従ってデフォルトでは、クラスの メンバ関数からの \c .B this\c \& への代入は不当なものとして扱われています。しかし、後方互換性のために、 `\|\c .B \-fthis-is-variable\c \&\|' を指定することによってこの効果を得ることができます。 .TP .B \-funsigned\-char \c .B char\c \& 型を \c .B unsigned char\c \& のように符号無しとして扱います。 .Sp それぞれのマシンには \c .B char\c \& がどちらであるべきかというデフォルトがあります。 デフォルトで \c .B unsigned char\c \& であることもあれば、デフォルトで .B signed char\c \& であることもあります。 .Sp 理想的には、可搬性のあるプログラムは、オブジェクトの符号の有無に依 存する記述を行なう場合には常に \c .B signed char\c \&、もしくは .B unsigned char\c \& を使用すべきです。 しかし実際には多くのプログラムが単なる \c .B char\c \& を用いて記述されており、さらにそのプログラムを記述した 環境に依存して、符号付きである、あるいは符号無しであるという暗黙の仮定が 行なわれています。このオプション、あるいはこの逆のオプションは、デフォル トと逆の動作を行なわせることにより、これらのプログラムを正しく動作させ ることを可能にします。 .Sp \c .B char\c \& 型は常に .B signed char\c \& あるいは \c .B unsigned char\c \& とは区別された型として扱われます。常にそれらの振舞いがそのどち らかと全く同じであるということに関わらず、このような扱いを行います。 .TP .B \-fsigned\-char \c .B char\c \& 型を \c .B signed char\c \& 型のように符号付きとして扱います。 .Sp ただし、このオプションは `\|\c .B \-fno\-unsigned\-char\c \&\|' と等価です。これは `\|\c .B \-funsigned\-char\c \&\|'の否定形です。同様に `\|\c .B \-fno\-signed\-char\c \&\|' は `\|\c .B \-funsigned\-char\c \&\|' と等価です。 .TP .B \-fsigned\-bitfields .TP .B \-funsigned\-bitfields .TP .B \-fno\-signed\-bitfields .TP .B \-fno\-unsigned\-bitfields これらのオプションは、明示的に `\|\c .B signed\c \&\|' または `\|\c .B unsigned\c \&\|' の指定が行なわれていないビットフィールドに対して、符号つきであるかある いは符号なしであるかを制御します。デフォルトではこのようなビットフィール ドは符号つきとなっています。なぜなら、 .B int\c \& のような基本的な型は符号つきであるという点で、整合性がとれるからです。 .Sp ただし、`\|\c .B \-traditional\c \&\|' を指定した場合は、ビットフィールドは常に全て符号無しであるとされます。 .TP .B \-fwritable\-strings 文字列定数を書き込み可能なデータセグメントに配置し、同内容の文字列を 1 つの共有オブジェクトにする処理を行いません。これは、文字定数に書き込む ことができることを仮定した昔のプログラムとの互換性をとるために提供され ています。`\|\c .B \-traditional\c \&\|' オプションも同様の効果を含みます。 .Sp 文字定数に書き込むという考えは非常によくない考えです。\*(lq定数\*(rq はまさに定数であり、変化すべきではありません。 .PP .SH プリプロセッサオプション これらのオプションは C プリプロセッサを制御します。 各 C ソースファイルは、実際にコンパイルする前に、C プリプロセッサに かけられます。 .PP `\|\c .B \-E\c \&\|' オプションを使用すると、GCC はプリプロセス以外の処理を行いません。 以下に示すオプションのうちのいくつかは、`\|\c .B \-E\c \&\|' と同時に使用された時のみ意味をもちます。なぜならば、これらのオプション によって、実際のコンパイルには不適当なプリプロセッサ出力が生成されるためです。 .TP .BI "\-include " "file" \c .I file\c \& を、通常の入力ファイルが処理される前に処理します。結果的に \c .I file\c \& に含まれる内容は、一番最初にコンパイルされることになります。コマンドラ インに指定されたすべての `\|\c .B \-D\c \&\|' や `\|\c .B \-U\c \&\|' オプションは、その記述された順番に関わらず常に `\|\c .B \-include \c .I file\c \&\c \&\|' が処理される前に処理されます。全ての `\|\c .B \-include\c \&\|' や `\|\c .B \-imacros\c \&\|' オプションは、それらが記述された順番通りに処理されます。 .TP .BI "\-imacros " file 通常の入力ファイルを処理する前に\c .I file\c \& を入力として処理しますが、その結果の出力を捨てます。 .I file\c \& によって生成された出力は捨てられるため、`\|\c .B \-imacros \c .I file\c \&\c \&\|' の処理結果の影響は、\c .I file\c \& 中に記述されたマクロがメインの入力ファイル中で使用可能になることだけです。 プリプロセッサは、`\|\c .B \-imacros \c .I file\c \&\|' が記述された順番に関わらず、これを処理する前に、 コマンドラインから与えられた全ての `\|\c .B \-D\c \&\|' や `\|\c .B \-U\c \&\|' オプションを評価します。全ての `\|\c .B \-include\c \&\|' および `\|\c .B \-imacros\c \&\|' オプションは、それらが記述された順番通りに処理されます。 .TP .BI "\-idirafter " "dir" ディレクトリ \c .I dir\c \& を第 2 インクルードパスに加えます。第 2 インクルードパス中のディレクトリは、 メインインクルードパス (オプション `\|\c .B \-I\c \&\|' によって追加されます) 中にヘッダファイルを探した結果発見できな かった場合に検索されます。 .TP .BI "\-iprefix " "prefix" \c .I prefix\c \& を、その後に続く `\|\c .B \-iwithprefix\c \&\|' オプション用のプレフィックスとして使用します。 .TP .BI "\-iwithprefix " "dir" ディレクトリを第 2 インクルードパスに追加します。ディレクトリ名は \c .I prefix\c \& と \c .I dir\c \& を連結することによって得られます。ここで \c .I prefix は、`\|\c .B \-iprefix\c \&\|' オプションによって指定されたものです。 .TP .B \-nostdinc ヘッダファイルのための標準のシステムディレクトリを検索しません。`\|\c .B \-I\c \&\|' オプションによって指定したディレクトリ (またはカレントディレクト リ) のみを検索します。 .Sp `\|\c .B \-nostdinc\c \&\|' と `\|\c .B \-I\-\c \&\|'を使用することにより、インクルードファイルの検索パスを明示的に指 定したディレクトリのみに限定することが可能となります。 .TP .B \-nostdinc++ ヘッダファイルの検索に、C++\-固有の標準ディレクトリを用いません。ただ しそれ以外の標準ディレクトリは検索されます。 (このオプションは `\|\c .B libg++\c \&\|' の構築に使用されます。) .TP .B \-undef 標準でない定義済みマクロ(アーキテクチャフラグも含めて)を定義しません。 .TP .B \-E C プリプロセッサの処理のみを行います。指定された全ての C のソースファイル に対してプリプロセスを行ない、標準出力、または指定された出力ファイルに 対して出力を行います。 .TP .B \-C プリプロセッサに対してコメントの削除を行なわないように指示します。 `\|\c .B \-E\c \&\|' オプションとともに使用されます。 .TP .B \-P プリプロセッサに対して `\|\c .B #line\c \&\|' コマンドを生成しないように指示します。 `\|\c .B \-E\c \&\|' オプションとともに使用されます。 .TP .B \-M\ [ \-MG ] プリプロセッサに対して\c .B make で使用可能な、オブジェクト間の依存関係を記述した出力を生成するように指示 します。それぞれのソースファイルに対して、プリプロセッサは\c .B make\c \& のための規則を 1 つ出力します。この出力は、ターゲットとして そのソースファイルから生成されるオブジェクトファイルのファイル名をとり、 依存するファイルのリストとしては `\|\c .B #include\c \&\|' によってソースファイルに 読み込まれる全てのファイルの名前が並びます。この 規則は 1 行、あるいは長い場合には`\|\c .B \e\c \&\|' と改行を入れて複数行で出力されます。この規則のリストは、プリプロセス済 みの C プログラムのかわりに、標準出力へと出力されます。 .Sp `\|\c .B \-M\c \&\|' は暗黙のうちに `\|\c .B \-E\c \&\|' を含みます。 .Sp `\|\c .B \-MG\c \&\|' を指定すると、見つからないヘッダファイルは生成されたファイルであり、 それらはソースファイルと同じディレクトリに存在するとみなします。 これは `\|\c .B \-M\c \&\|' と同時に指定しなければなりません。 .TP .B \-MM\ [ \-MG ] `\|\c .B \-M\c \&\|' と似ていますが、`\|\c .B #include "\c .I file\c .B \&"\c \&\|'によってインクルードされるユーザ定義のヘッダファイルのみを対象に した出力ファイルを生成します。`\|\c .B #include <\c .I file\c .B \&>\c \&\|' によってインクルードされるシステムヘッダファイルは省略されます。 .TP .B \-MD `\|\c .B \-M\c \&\|' と似ていますが、依存情報は出力ファイル名の最後の `\|\c .B .o\c \&\|' を `\|\c .B .d\c \&\|' に置き換えたファイル名のファイルに対して出力されます。 \&`\|\c .B \-MD\c \&\|' を指定したファイルのコンパイルもこれに加えて行なわれ、 `\|\c .B \-M\c \&\|' のように通常のコンパイルを抑制することはありません。 .Sp Mach のユーティリティである`\|\c .B md\c \&\|' は、これらの複数の `\|\c .B .d\c \&\|' ファイルを `\|\c .B make\c \&\|' コマンドによって使用できる単一の依存記述ファイルへとマージするのに使用 することができます。 .TP .B \-MMD `\|\c .B \-MD\c \&\|' と似ていますが、ユーザヘッダファイルのみを対象とし、システムヘッダ ファイルを無視します。 .TP .B \-H 通常の動作に加えて、使用されたヘッダファイルの名前を表示します。 .TP .BI "\-A" "question" ( answer ) .I question\c に対するアサーション .I answer \& を定義します。これは `\|\c .BI "#if #" question ( answer )\c \&\|' のようなプリプロセッサ条件節によってテストされます。`\|\c .B \-A\-\c \&\|' は標準のアサーション(通常はターゲットマシンに関 する情報を表している)を禁止します。 .TP .BI \-D macro マクロ \c .I macro\c \& に対して文字列 `\|\c .B 1\c \&\|' を定義として与えます。 .TP .BI \-D macro = defn マクロ \c .I macro\c \& を \c .I defn\c \& として定義します。コマンドライン上の全ての `\|\c .B \-D\c \&\|' オプションは `\|\c .B \-U\c \&\|' オプションの処理を行なう前に処理されます。 .TP .BI \-U macro マクロ \c .I macro\c \& の定義を無効にします。`\|\c .B \-U\c \&\|' オプションは全ての `\|\c .B \-D\c \&\|' オプションの処理が終了した後、`\|\c .B \-include\c \&\|' と `\|\c .B \-imacros\c \&\|' オプションの処理の前に処理されます。 .TP .B \-dM プリプロセッサに対して、プリプロセス終了時に有効であったマクロの定義の みを出力するように指示します。`\|\c .B \-E\c \&\|' オプションとともに使用します。 .TP .B \-dD プリプロセッサに対して、全てのマクロ定義を適切な順番で出力中にそのまま 出力するように指示します。 .TP .B \-dN `\|\c .B \-dD\c \&\|' と似ていますが、マクロの引数と内容を削除します。 出力には`\|\c .B #define \c .I name\c \&\c \&\|' のみが含まれます。 .PP .SH アセンブラオプション .TP .BI "\-Wa," "option" \c .I option\c \& をアセンブラに対するオプションとして渡します。\c .I option がコンマを含む場合は、そのコンマで区切られた複数のオプションとして与え られます。 .PP .SH リンカオプション これらのオプションは、コンパイラがオブジェクトファイル群をリンクして 1 つ の実行可能ファイルを出力する際に使用されるものです。これらはコンパイラが リンクステップを行なわない場合には意味を持ちません。 .TP .I object-file-name 特別に認識される拡張子で終っていないファイル名は、オブジェクトファイル、 またはライブラリであると認識されます。(オブジェクトファイルとライブラリ はリンカがその内容を参照することで区別されます。) GCC がリンクステップを 行なう場合は、これらのファイルはリンカへの入力として使用されます。 .TP .BI \-l library 名前が .I library\c \& であるライブラリをリンク時に使用します。 .Sp リンカは、標準のライブラリ用ディレクトリのリスト中から、 実際のファイル名が `\|\c .B lib\c .I library\c \&.a\c \&\|' であるファイルを検索します。リンカはこのファイルを、ファイル 名で直接指定した場合と同様に使用します。 .Sp 検索するディレクトリには、いくつかの標準システムディレクトリと、`\|\c .B \-L\c \&\|' によって指定したディレクトリが含まれます。 .Sp 通常、この方法で発見されるファイルはライブラリファイル、つまりいくつかの オブジェクトファイルをメンバとして含むアーカイブファイルです。 リンカは、アーカイブファイルの中を検索して、 参照されているが定義されていないシンボルを定義しているメンバを 探し出します。 しかし、もしリンカがライブラリでなく通常のオブジェクトファイルを発見した 場合は、そのオブジェクトファイルを通常の方法でリンクします。`\|\c .B \-l\c \&\|' オプションを使用する場合とファイル名を直接指定する場合の違いは、`\|\c .B \-l\c \&\|' の場合が .I library を `\|\c .B lib\c \&\|' と `\|\c .B .a\c \&\|' で囲み、いくつものディレクトリを検索することだけです。 .TP .B \-lobjc Objective C のプログラムをリンクする場合は、この特別な .B \-l オプションを指定する必要があります。 .TP .B \-nostartfiles リンク時に、標準のシステムスタートアップファイルを使用しません。 標準ライブラリは通常通りに使用されます。 .TP .B \-nostdlib リンク時に、標準のシステムライブラリとスタートアップファイルを使用しません。 指定したファイルのみがリンカに渡されます。 .TP .B \-static ダイナミックリンクをサポートするシステムにおいて、このオプションは共有 ライブラリとのリンクを抑制します。それ以外のシステムではこのオプションは 意味を持ちません。 .TP .B \-shared 他のオブジェクトとリンクして実行可能プログラムを形成し得る共有オブジェクトを 生成します。ごく少数のシステムでのみ、このオプションはサポートされ ています。 .TP .B \-symbolic 共有オブジェクトを構築する際に、グローバルなシンボルへの参照をバインド します。全ての解決できなかった参照に対して警告を与えます (ただしリンクエディタオプション `\|\c .B \-Xlinker \-z \-Xlinker defs\c \&\|' によってこれを無効化した場合を除きます)。ごく少数のシステムでのみ、 このオプションはサポートされています。 .TP .BI "\-Xlinker " "option" オプション \c .I option をリンカに対して渡します。リンカに渡すシステム固有のオプションが、 GNU CC が理解できないものである場合に利用できます。 .Sp 引数を持ったオプションを渡したい場合は、 `\|\c .B \-Xlinker\c \&\|' を 2 度使用すれば可能です。1 度目でオプションを渡し、2 度目で引数を 渡します。例えば `\|\c .B \-assert definitions\c \&\|' を渡すには、 `\|\c .B \-Xlinker \-assert \-Xlinker definitions\c \&\|' のように記述すれば可能です。 `\|\c .B \-Xlinker "\-assert definitions"\c \&\|' のように指定した場合は正常に動作しません。なぜならこれは、文字列全 体を 1 つの引数として渡してしまい、リンカの期待する形式と異なってしま うからです。 .TP .BI "\-Wl," "option" オプション \c .I option\c \& をリンカに渡します。\c .I option\c \& がコンマを含む場合は、それらのコンマで複数のオプションとして分割されます。 .TP .BI "\-u " "symbol" シンボル .I symbol が未定義であるかのように振舞います。これは強制的にこのシンボルを定義してい るライブラリモジュールをリンクするために使用します。`\|\c .B \-u\c \&\|' は異なったシンボルに対して複数回使用することができます。これによっ て、さらに多くのライブラリモジュールを読み込ませることができます。 .SH ディレクトリオプション これらのオプションは、ヘッダファイル、ライブラリ、コンパイラの一部を検 索するディレクトリを指定するために使用されます。 .TP .BI "\-I" "dir" ディレクトリ \c .I dir\c \& を、インクルードファイルの検索するディレクトリのリスト中に追加します。 .TP .B \-I\- `\|\c .B \-I\-\c \&\|' オプション指定前に `\|\c .B \-I\c \&\|' オプションによって指定された全てのディレクトリは、`\|\c .B #include "\c .I file\c .B \&"\c \&\|' の形式によってのみ検索されます。 これらのディレクトリは `\|\c .B #include <\c .I file\c .B \&>\c \&\|' によっては検索されません。 .Sp \&\|` .B \-I\-\c \&\|' オプション指定後に `\|\c .B \-I\c \&\|' で指定したディレクトリは、全ての `\|\c .B #include\c \&\|' 命令によって検索されます。(通常は \c .I 全ての\c \& `\|\c .B \-I\c \&\|' で指定されたディレクトリは この方法で検索されます。) .Sp これに加えて `\|\c .B \-I\-\c \&\|' オプションは、カレントディレクトリ (現在の入力ファイルが存在する ディレクトリ) が `\|\c .B #include "\c .I file\c .B \&"\c \&\|' に対する最初の検索対象となることを抑制します。`\|\c .B \-I\-\c \&\|' によるこの効果を上書きする方法はありません。`\|\c .B \-I.\c \&\|' を指定することによって、コンパイラが起動されたディレクトリが検索 されることを指定することは可能です。これはプリプロセッサが行なう デフォルトの動作とは異なりますが、たいていはこれで十分です。 .Sp `\|\c .B \-I\-\c \&\|' は、ヘッダファイルの検索に標準のシステムディレクトリを使うことを抑制 するわけではありません。 従って、`\|\c .B \-I\-\c \&\|' と `\|\c .B \-nostdinc\c \&\|' は 独立です。 .TP .BI "\-L" "dir" ディレクトリ\c .I dir\c \& を `\|\c .B \-l\c \&\|' による検索が行なわれるディレクトリのリストに加えます。 .TP .BI "\-B" "prefix" このオプションはコンパイラ自身の実行形式、ライブラリ、データファイルの 検索場所を指定します。 .Sp コンパイラドライバはサブプログラム `\|\c .B cpp\c \&\|', `\|\c .B cc1\c \&\|' (または C++ においては `\|\c .B cc1plus\c \&\|'), `\|\c .B as\c \&\|', そして `\|\c .B ld\c \&\|' を 1 つ、あるいはそれ以上起動します。コンパイラドライバは、 起動するプログラムのプレフィックスとして .I prefix\c \& に `\|\c .I machine\c .B /\c .I version\c .B /\c \&\|' をつけたものとつけないものの双方を 使用します。 .Sp コンパイラドライバは各サブプログラムの起動時に、 `\|\c .B \-B\c \&\|' プレフィックスの指定がある場合は、それを最初に利用します。もしその 名前が見つからなければ、または `\|\c .B \-B\c \&\|' が指定されていなければ、ドライバは 2 つの標準プレフィックス `\|\c .B /usr/lib/gcc/\c \&\|' と `\|\c .B /usr/local/lib/gcc-lib/\c \&\|' を試します。このどちらにも見つからなければ、コンパイラドライバは、 環境変数 `\|\c .B PATH\c \&\|' のディレクトリリストを利用して、そのプログラム名を検索します。 .Sp ランタイムサポートファイル `\|\c .B libgcc.a\c \&\|' も、必要ならば `\|\c .B \-B\c \&\|' プレフィックスを用いて検索されます。もしそこに見つからなければ、 前記 2 つの標準プレフィックスが試みられますが、それで終りです。この場合は リンクの対象から外されます。ほとんどの場合、またほとんどのマシンでは、`\|\c .B libgcc.a\c \&\|' は実際には必要ではありません。 .Sp これと同じ効果を、環境変数 .B GCC_EXEC_PREFIX\c \& によっても得ることができます。もしこの環境変数が定義されていれば、こ の値がプレフィックスとして同様に使用されます。もし `\|\c .B \-B\c \&\|' オプションと .B GCC_EXEC_PREFIX\c \& 環境変数の双方が存在した場合は、`\|\c .B \-B\c \&\|' オプションが最初に使用され、環境変数は次に使用されます。 .SH 警告オプション 警告は、本質的に間違いであるわけではありませんが、危険な構造を報告したり、 エラーがあるかもしれないような部分を示唆する診断メッセージです。 .Sp 以下のオプションは、GNU CC が生成する警告の量と種類を制御します。 .TP .B \-fsyntax\-only コードの文法エラーをチェックしますが、一切出力は行いません。 .TP .B \-w 全ての警告メッセージを抑制します。 .TP .B \-Wno\-import .BR #import の利用による警告メッセージを抑制します。 .TP .B \-pedantic 厳密な ANSI 標準 C 言語で規定している全ての警告を表示し、許されていない拡張を 使用したプログラムを全て拒否します。 .Sp 正当な ANSI 標準 C プログラムは、このオプションの有無に関わらず コンパイルできるべきです (もっとも、ほんのわずかではありますが `\|\c .B \-ansi\c \&\|' を必要とするものはあります)。しかし、このオプションを使用しない場合、 GNU 拡張や伝統的な C の特徴も、これに加えてサポートされます。このオプション を使用すれば、それらは拒絶されます。このオプションを\c .I 使う\c \&理由はありませんが、こだわりのある人々を満足させるためにのみ 存在しています。 .Sp `\|\c .B \-pedantic\c \&\|' は、始まりと終りとが `\|\c .B _\|_\c \&\|' である代替キーワードの使用については、警告しません。 同様に .B _\|_extension_\|_\c \& に続く表現についても警告しません。しかし、システムヘッダファイルのみ がこの抜け道を使用すべきであり、アプリケーションプログラムはこれを避け るべきです。 .TP .B \-pedantic\-errors `\|\c .B \-pedantic\c \&\|' と似ていますが、警告のかわりにエラーを出します。 .TP .B \-W 以下のイベントに対して、特別な警告メッセージを表示します。 .TP \ \ \ \(bu volatile でない自動変数が .B longjmp\c \& の呼び出しによって変更され得る場合です。これらの警告は、最適化コンパイル の時のみ問題になり得ます。 .Sp コンパイラは .B setjmp\c \& の呼び出しのみを見ています。コンパイラは、どこで \c .B longjmp\c \& が呼び出されるかを知ることはできません。実際には、シグナルハンドラは コード中の任意の場所で .B longjmp\c \& を呼び出すことができます。従って、実際には \c .B longjmp\c \& への呼び出しが危険な部分からはおこなわれていないために問題のないプ ログラムであっても、警告が発せられることになります。 .TP \ \ \ \(bu 関数が、値を伴ってリターンする場合と、値を伴わずにリターンする場合の両方 が起こりうる場合です。 (関数の最後を抜けていくことは、値を伴わずに関数をリターンするとみなされます。) 例えば、次の関数がこの種類の警告を引き起こします。 .Sp .nf foo (a) { if (a > 0) return a; } .Sp .fi ある関数 (\c .B abort\c \& や\c .B longjmp\c \& を含む) が決してリターンしないということを GNU CC が理解できないために、にせの警告 が発生するかもしれません。 .TP \ \ \ \(bu 式文 (expression-statement) またはコンマ式の左部分が 一切の副作用を含まない場合です。 警告を抑制するには、使用しない式を void にキャストして下さい。 例えば `\|\c .B x[i,j]\c \&\|' といった式は警告されますが、`\|\c .B x[(void)i,j]\c \&\|' は警告されません。 .TP \ \ \ \(bu 符号無しの値が 0 と `\|\c .B >\c \&\|' または `\|\c .B <=\c \&\|' で比較される場合です。 .PP .TP .B \-Wimplicit 関数やパラメータに対する暗黙の宣言に対して常に警告します。 .TP .B \-Wreturn\-type 関数の戻り値の型が、デフォルトである \c .B int\c \& に定義された時に常に警告します。また、戻り値の型が \c .B void\c でない関数内に、戻り値のない \c .B return\c \& 文がある場合にも常に警告します。 .TP .B \-Wunused ローカル変数が宣言されたにも関わらず使用されていない場合、静的に宣言さ れた関数の実体が定義されていない場合、計算結果が明らかに 利用されていない場合に常に警告します。 .TP .B \-Wswitch .B switch\c \& 文がインデックスとして列挙型をとっている時、その列挙型中のいくつ かの値に対する \c .B case\c \& が欠けている場合に常に警告します。(\c .B default\c \& ラベルが存在する場合、この警告は出ません。) このオプションを使用した場合 には、列挙型の範囲を越えた \c .B case\c \& ラベルも、常に警告されます。 .TP .B \-Wcomment コメントの開始文字列 `\|\c .B /\(**\c \&\|' がコメント中に現れた時に常に警告します。 .TP .B \-Wtrigraphs トライグラフの出現を常に警告します (トライグラフが使用可能であると仮定します)。 .TP .B \-Wformat .B printf\c \&, \c .B scanf\c \& などへの呼び出しに対して、与えられた引数が、フォーマット文字列の指 定を満足する型を持っているかを検査します。 .TP .B \-Wchar\-subscripts 配列の添字の型が .BR char であった場合に警告します。これはよくある間違いのもとです。 いくつかのマシンにおいてはこの型が符号付きであることを、 プログラマはしばしば忘れてしまいます。 .TP .B \-Wuninitialized 初期化されていない自動変数が使用されています。 .Sp これらの警告は、最適化コンパイルを行なう時のみ発生します。なぜなら、 コンパイラは最適化を行なう時にのみデータフロー情報を必要とするからです。 もし `\|\c .B \-O\c \&\|' を指定しなかった場合は、この警告を得ることはできません。 .Sp これらの警告は、レジスタ割り当ての対象となった変数についてのみ発生します。 従って、\c .B volatile\c \& であると宣言された変数や、アドレス上に割り当てられた変数、サイズが 1, 2, 4, 8 バイト以外の変数に関してはこれらの警告は発生しません。 さらに、構造体、共用体、配列については、たとえそれらがレジスタに 割り当てられたとしても、これらの警告は発生しません。 .Sp ある変数によって計算された値が結局使用されないような変数については、一切の 警告が生じないことに注意して下さい。このような計算は、警告が表示される前に データフロー解析によって削除されます。 .Sp これらの警告をオプションにした理由の一つは、GNU CC がまだあまり賢くなくて、 あるコードが一見間違いを含むかのように見えても それは実は正しいものかもしれない、 ということを GNU CC が理解できない、というものです。 ここにその 1 つの例を挙げます。 .Sp .nf { int x; switch (y) { case 1: x = 1; break; case 2: x = 4; break; case 3: x = 5; } foo (x); } .Sp .fi もし \c .B y\c \& の値が常に 1, 2 あるいは 3 である限りは \c .B x\c \& は常に 初期化されます。しかし GNU CC はこれを知ることはできません。もう 1 つの一般 的な例を挙げます。 .Sp .nf { int save_y; if (change_y) save_y = y, y = new_y; .\|.\|. if (change_y) y = save_y; } .Sp .fi これはバグを含みません。なぜなら \c .B save_y\c \& は、その値が設定された時のみ使用されるからです。 .Sp いくつかのにせの警告は、使用している決してリターンしない関数全てに対して .B volatile\c \& と宣言することによって防ぐことが可能です。 .TP .B \-Wparentheses ある特定の文脈中で括弧が省略されていた場合に警告します。 .TP .B \-Wtemplate\-debugging C++ プログラムにおいてテンプレートを使用している際に、デバッグが完全に 可能でない場合を警告します (C++ のみ)。 .TP .B \-Wall 全ての上に挙げた `\|\c .B \-W\c \&\|' オプションを結合したものです。これらのオプションは全て、 -たとえマクロとの組合せ +たとえマクロとの組み合わせ であっても、避けたほうがいいと我々が推奨する用法や、 簡単に避けることができると我々が信じている用法に関するものです。 .PP 残りの `\|\c .B \-W.\|.\|.\c \&\|' オプションは `\|\c .B \-Wall\c \&\|' によっては暗黙のうちに指定されません。なぜならこれらは、クリーンなプ ログラムにおいても、ある状況においては使用することが妥当であると我々が 考える構造についての警告を行なうオプションだからです。 .TP .B \-Wtraditional 伝統的な C と ANSI C において異なった振舞いをする特定の構造について警 告します。 .TP \ \ \ \(bu マクロ引数がマクロ本体内の文字列定数に現れるものです。これは、伝統的な C に おいてはその引数で置換しましたが、ANSI C においては定数の一部として扱わ れます。 .TP \ \ \ \(bu ブロック内で外部宣言であると宣言され、かつそのブロックの終端の後で 使用されている関数です。 .TP \ \ \ \(bu オペランドとして \c .B long\c \& 型をとる \c .B switch\c \& 文です。 .PP .TP .B \-Wshadow ローカル変数が他のローカル変数を隠している時に常に警告します。 .TP .BI "\-Wid\-clash\-" "len" 2 つの全く別の識別子の最初の \c .I len 文字が一致した時に警告します。これはある種の旧式な おばかさんコンパイラでコンパイルされ得るプログラムを作る場合に役に立ちます。 .TP .B \-Wpointer\-arith 関数型や \c .B void\c \& の \*(lqサイズ\*(rq に依存するものを全て警告します。GNU C はこれらに対して、 サイズ 1 を割り当てています。これは \c .B void \(**\c \& ポインタと関数へのポインタにおける計算を簡便にするためです。 .TP .B \-Wcast\-qual ポインタが、型修飾子が削除されるようにキャストされる全ての場合に警告します。 例えば \c .B const char \(**\c \& を 普通の \c .B char \(**\c \& にキャストした場合に警告がなされます。 .TP .B \-Wcast\-align ポインタのキャストにおいて、そのターゲットに要求される境界条件が 大きくなるようなキャストを全て警告します。例えば \c .B char \(**\c \& が \c .B int \(**\c \& へとキャストされると、整数が 2、あるいは 4 バイト境界でしかアクセスで きないマシンにおいては警告が発せられます。 .TP .B \-Wwrite\-strings 文字定数に対して、型 \c .B const char[\c .I length\c .B ]\c \& を与え、非-\c .B const\c \& の \c .B char \(** ポインタへのアドレスのコピーに対して警告するようにします。この警告は、 宣言とプロトタイプにおいて \c .B const\c \& の使用を非常に注意深くおこなっていさえすれば、 文字列定数に書き込みをしそうなコードをコンパイル時に発見することを助けますが、 そうでない場合は有害無益な指定です。これが、我々がこの警告を `\|\c .B \-Wall\c \&\|' のリクエストに含めなかった理由です。 .TP .B \-Wconversion 同じ引数が与えられた時に、プロトタイプが存在する場合とプロトタイプが 存在しない場合とで、異なった型変換を引き起こす場合について警告します。 これは固定小数点から浮動小数点への変換やその逆、デフォルトの動作と異なる固定 小数点引数の幅や符号の有無の変換が含まれます。 .TP .B \-Waggregate\-return 構造体や共用体を返す関数を定義した場合や、 それらを呼び出す全ての場合に警告します。 (配列を返すことができる言語においても、これは警告を引き起こします。) .TP .B \-Wstrict\-prototypes 引数の型を指定せずに関数を宣言、あるいは定義した場合に警告します。 (以前に引数の型を指定した宣言が存在する場合には、旧式の関数宣言に対しては 警告をしません。) .TP .B \-Wmissing\-declarations グローバルな関数を、その前にプロトタイプ宣言をせずに定義した場合に 警告します。 この警告は、たとえその定義自身がプロトタイプを含んでいたとしても発生します。 この警告の目的は、ヘッダファイル中にグローバル関数の定義を忘れるこ とを防ぐことにあります。 .TP .B \-Wredundant-decls 同一スコープ中で複数回、同一対象を宣言した場合に、たとえそれが正当で何も 変化させない場合であっても警告します。 .TP .B \-Wnested-externs 関数内で \c .B extern\c \& 宣言を行なった場合に警告します。 .TP .B \-Wenum\-clash 異なる列挙型の間で変換を行なった際に警告します (C++ のみ)。 .TP .B \-Woverloaded\-virtual (C++ のみ。) 導出クラスにおいて、仮想関数の定義は基底クラスで定義された仮想関数の型 の記述と一致していなければなりません。このオプションを使用することによっ て、基底クラスにおける仮想関数と同一の名前を持ち、基底クラスのいかなる 仮想関数とも異なった型の記述を持つ関数に対して警告が行われます。これに よって、導出クラスが仮想関数を定義しようとして失敗する場合を警告するこ とができます。 .TP .B \-Winline 関数がインライン宣言されている、あるいは .B \-finline\-functions オプションが与えられている場合に、関数をインライン展開できなかった場合 に警告します。 .TP .B \-Werror 警告をエラーとして扱います。警告の後にコンパイルを中断します。 .SH デバッグオプション GNU CC は、ユーザのプログラムや GCC の双方をデバッグするために、 多くのオプションを備えています。 .TP .B \-g オペレーティングシステムのネイティブのフォーマット (stabs, COFF, XCOFF, DWARF) でデバッグ情報を生成します。GDB はこのデバッグ情報に基づい て動作することができます。 .Sp stabs フォーマットを使用するほとんどのシステムにおいては、`\|\c .B \-g\c \&\|' を指定すると、GDB だけが使用できる余分なデバッグ情報が使用可能に なります。 この特別の情報は GDB に対してはよりよいデバッグを行なうことを可能 としますが、おそらく他のデバッガに対してはクラッシュ、あるいはそのプログラムを 読めなくしてしまいます。この特別な情報の生成を制御するためには `\|\c .B \-gstabs+\c \&\|', `\|\c .B \-gstabs\c \&\|', `\|\c .B \-gxcoff+\c \&\|', `\|\c .B \-gxcoff\c \&\|', `\|\c .B \-gdwarf+\c \&\|', `\|\c .B \-gdwarf\c \&\|' を使用してください (下記参照)。 .Sp 他の多くの C コンパイラと異なり、GNU CC は `\|\c .B \-g\c \&\|' を `\|\c .B \-O\c \&\|' とともに使用することを許しています。最適化されたコードが通る近道は、 時には驚くべき結果を生み出すかもしれません。 定義したはずの変数が存在しなかったり、 制御の流れが予想もしなかった場所に移動したり、結果が定数とわかる計算や、 結果がすでに手元にある文は実行されなくなり、ある文がループの外に追い出されて 別の場所で実行されたりします。 .Sp それにも関わらず、このオプションは最適化された出力のデバッグを可能とし ています。これによって、バグを含むかもしれないプログラムに対して オプティマイザを使用することができるようになります。 .PP 以下のオプションは、GNU CC を 1 つ以上のデバッグフォーマットを扱 えるように作成してある場合に有益です。 .TP .B \-ggdb (もしサポートされていれば)ネイティブのフォーマットでデバッグ情報を生成 します。これは可能な限りの全ての GDB 拡張を含みます。 .TP .B \-gstabs (もしサポートされていれば) stabs フォーマットでデバッグ情報を生成します。 ただし GDB 拡張は含みません。このフォーマットはほとんどの BSD システム上 の DBX で利用できるフォーマットです。 .TP .B \-gstabs+ (もしサポートされていれば) stabs フォーマットでデバッグ情報を生成します。 ただし GNU デバッガ (GDB) でしか理解できない GNU 拡張を使用します。 この拡張を使用すると、他のデバッガでは、クラッシュや プログラムが読めなくなるなどの影響がおそらく出ます。 .TP .B \-gcoff (サポートされていれば) COFF フォーマットでデバッグ情報を生成します。 これは、System V Release 4 より前の ほとんどの System V 上の SDB で利用できるフォーマットです。 .TP .B \-gxcoff (サポートされていれば) XCOFF フォーマットでデバッグ情報を生成します。こ れは IBM RS/6000 システムにおいて DBX デバッガによって使用される フォーマットです。 .TP .B \-gxcoff+ (もしサポートされていれば) XCOFF フォーマットでデバッグ情報の生成を行 います。ただし、GNU デバッガ (GDB) によってのみ理解され得る GNU 拡張を使 用します。これらの拡張を使用すると、他のデバッガに対してはクラッシュやプ ログラムを読みとり不能にするなどの影響を及ぼし得ます。 .TP .B \-gdwarf (もしサポートされていれば) DWARF フォーマットでデバッグ情報の生成を行 います。これはほとんどの System V Release 4 システムにおいて SDB によっ て使用される形式です。 .TP .B \-gdwarf+ (もしサポートされていれば) DAWRF フォーマットでデバッグ情報の生成を行 います。ただし、GNU デバッガ (GDB) によってのみ理解され得る GNU 拡張を使 用します。これらの拡張を使用すると、他のデバッガに対してはクラッシュや プログラムを読みとり不能にするなどの影響を及ぼし得ます。 .PP .BI "\-g" "level" .br .BI "\-ggdb" "level" .br .BI "\-gstabs" "level" .br .BI "\-gcoff" "level" .BI "\-gxcoff" "level" .TP .BI "\-gdwarf" "level" デバッグ情報を要求しますが、同時に \c .I level\c \& によってどの程度の情報が必要かを指定します。デフォルトのレベルは 2 です。 .Sp レベル 1 は、デバッグを予定しないプログラムの部分に対してバックトレース を生成するに十分な最低限の情報を生成します。これは関数と外部変数の記述 を含みますが、ローカル変数や行番号に関する情報は含みません。 .Sp レベル 3 はプログラムに含まれる全てのマクロ定義などの特別な情報を含みます。 いくつかのデバッガは `\|\c .B \-g3\c \&\|' の使用によってマクロの展開をサポートします。 .TP .B \-p プログラム \c .B prof\c \& によって使用されるプロファイル情報を書き込む特別なコードを生成します。 .TP .B \-pg プログラム \c .B gprof\c \& によって使用されるプロファイル情報を書き込む特別なコードを生成します。 .TP .B \-a 基本ブロックのプロファイル情報を書き込む特別なコードを生成します。これは それぞれのブロックが何回実行されたかを記録します。このデータは \c .B tcov\c \& のようなプログラムによって解析されます。ただし、このデータフォーマットは \c .B tcov\c \& が期待するものとは異なっています。最終的には、GNU \c .B gprof\c \& が処理できるように拡張されるべきです。 .TP .BI "\-d" "letters" コンパイル中の .I letters\c \& で指定されるタイミングに、デバッグ用のダンプを生成するように指示します。 これはコンパイラをデバッグするために使用されます。ほとんどのダンプのファイル 名はソースファイル名に 1 単語をつなげたものになります。(例えば、`\|\c .B foo.c.rtl\c \&\|' や `\|\c .B foo.c.jump\c \&\|' などです)。 .TP .B \-dM 全てのマクロ定義をダンプし、プリプロセス終了時に出力に書き出します。 その他には何も書き出しません。 .TP .B \-dN 全てのマクロ名をダンプし、プリプロセス終了時に出力に書き出します。 .TP .B \-dD 全てのマクロ定義をプリプロセス終了時に通常の出力に加えてダンプします。 .TP .B \-dy パース中にデバッグ情報を標準エラー出力にダンプします。 .TP .B \-dr RTL 生成後に `\|\c .I file\c .B \&.rtl\c \&\|' に対してダンプします。 .TP .B \-dx 関数をコンパイルするかわりに、RTL を生成するのみの処理を行います。通常は `\|\c .B r\c \&\|' とともに使用されます。 .TP .B \-dj 最初のジャンプ最適化の後に、`\|\c .I file\c .B \&.jump\c \&\|' に対してダンプします。 .TP .B \-ds 共通部分式削除 (しばしば共通部分式削除に続くジャンプ最適化も含みます) の終了 時に `\|\c .I file\c .B \&.cse\c \&\|' に対してダンプします。 .TP .B \-dL ループ最適化終了時に `\|\c .I file\c .B \&.loop\c \&\|' に対してダンプします。 .TP .B \-dt 第 2 共通部分式削除段階 (しばしば共通部分式削除に続くジャンプ最適化も 含みます) の終了時に、`\|\c .I file\c .B \&.cse2\c \&\|' に対してダンプします。 .TP .B \-df フロー解析終了後に、`\|\c .I file\c .B \&.flow\c \&\|' に対してダンプします。 .TP .B \-dc 命令コンビネーション終了時に `\|\c .I file\c .B \&.combine\c \&\|' に対してダンプします。 .TP .B \-dS 第 1 命令スケジューリング段階終了時に `\|\c .I file\c .B \&.sched\c \&\|' に対してダンプします。 .TP .B \-dl ローカルレジスタ割り当て終了時に `\|\c .I file\c .B \&.lreg\c \&\|' に対してダンプします。 .TP .B \-dg グローバルレジスタ割り当て終了時に `\|\c .I file\c .B \&.greg\c \&\|' に対してダンプします。 .TP .B \-dR 第 2 命令スケジューリング段階終了時に `\|\c .I file\c .B \&.sched2\c \&\|' に対してダンプします。 .TP .B \-dJ 最終ジャンプ最適化終了時に `\|\c .I file\c .B \&.jump2\c \&\|' に対してダンプします。 .TP .B \-dd 遅延分岐スケジューリング終了時に `\|\c .I file\c .B \&.dbr\c \&\|' に対してダンプします。 .TP .B \-dk レジスタからスタックへの転換終了時に `\|\c .I file\c .B \&.stack\c \&\|' に対してダンプします。 .TP .B \-da 以上の全てのダンプを生成します。 .TP .B \-dm 処理の終了時に、メモリ使用に関する統計情報を標準エラー出力に出力します。 .TP .B \-dp どのようなパターンや選択肢が使用されたかを示すコメントをアセンブラ出力 中のコメントで解説します。 .TP .B \-fpretend\-float クロスコンパイラで処理を行なう際に、ホストマシンと同じ浮動小数点フォーマット をターゲットマシンが持つかのように振舞わせます。これは浮動小数点定 数の誤った出力を引き起こしますが、実際の命令列はおそらく GNU CC を ターゲットマシンで起動した場合と同じものとなるでしょう。 .TP .B \-save\-temps 通常の \*(lq一時\*(rq 中間ファイルを消去せずに保存します。これらは カレントディレクトリに置かれ、ソースファイルに基づいた名前が付けられます。 従って、`\|\c .B foo.c\c \&\|' を `\|\c .B \-c \-save\-temps\c \&\|' を使用してコンパイルした場合は、 `\|\c .B foo.cpp\c \&\|', `\|\c .B foo.s\c \&\|' が、`\|\c .B foo.o\c \&\|' と同様に生成されます。 .TP .BI "\-print\-libgcc\-file\-name=" "library" ライブラリファイル `\|\c .nh .I library .hy \&\|' の完全な絶対名を表示します。このファイルはリンクの際のみに使用され、 それ以外の働きはありません。このオプションが指定された場合は、GNU CC は コンパイルやリンクを何も行なわず、ただファイル名を表示するのみです。 .TP .B \-print\-libgcc\-file\-name `\|\c .B \-print\-file\-name=libgcc.a\c \&\|' と同じです。 .TP .BI "\-print\-prog\-name=" "program" `\|\c .B \-print\-file\-name\c \&\|' と似ていますが、`\|\c cpp\c \&\|' のような program を検索します。 .SH 最適化オプション これらのオプションは様々な種類の最適化処理を制御します。 .TP .B \-O .TP .B \-O1 最適化を行います。最適化コンパイルは幾分長めの処理時間と、大きな関数に対 する非常に多くのメモリを必要とします。 .Sp `\|\c .B \-O\c \&\|' が指定されなかった場合は、コンパイラの目標はコンパイルのコストを 低減することや、目的の結果を得るためのデバッグを可能とすることに置かれ ます。それぞれの文は独立しています。つまり、ブレークポイントでプログラムを 停止させることによって、任意の変数に新し い値を代入したり、プログラムカウンタを他の文へと変更することを可能とし、 そのソースコードにプログラマが望む正しい結果を得ることを可能にします。 .Sp `\|\c .B \-O\c \&\|' を指定しなかった場合は、\c .B register\c \& と宣言した変数のみがレジスタへと割り当てられます。コンパイルの結果と して得られるコードは、PCC を `\|\c .B \-O\c \&\|' なしで使用した場合と比較して若干良くないものとなります。 .Sp `\|\c .B \-O\c \&\|' が指定されると、コンパイラはコードのサイズと実行時間を減少させる ことを試みます。 .Sp `\|\c .B \-O\c \&\|' を指定することによって、 `\|\c .B \-fthread\-jumps\c \&\|' と `\|\c .B \-fdefer\-pop\c \&\|' のフラグが指定されます。遅延スロットをもつマシンでは `\|\c .B \-fdelayed\-branch\c \&\|' が指定されます。フレームポインタを使わないデバッグをサポートしている マシンでは、`\|\c .B \-fomit\-frame\-pointer\c \&\|' も指定されます。マシンによってはさらにその他のフラグが 指定されることもあります。 .TP .B \-O2 さらに最適化を行います。サポートされている最適化手段のうち、 空間と速度のトレードオフを含まないものはほとんどの全て使用されます。 例えばループのアンローリングや関数のインライン化は行われません。 .B \-O\c \& と比較して、このオプションはコンパイル時間と生成コードの性能の双方を増加 させます。 .TP .B \-O3 さらなる最適化を行います。これは .B \-O2 が行う全ての最適化手段に加えて .B \-finline\-functions も有効にします。 .TP .B \-O0 最適化を行いません。 .Sp 複数の .B \-O オプションを指定した場合は、レベル番号の有無に関わらず、最後に指定した ものが有効になります。 .PP `\|\c .B \-f\c .I flag\c \&\c \&\|' の形式を持ったオプションは、マシン独立のフラグです。ほとんどの フラグは有効形式と無効形式の双方を持っています。`\|\c .B \-ffoo\c \&\|' の無効形式は `\|\c .B \-fno\-foo\c \&\|' です。以下のリストでは、デフォルトではない方の形式のみを示します。 これに対して `\|\c .B no\-\c \&\|' を削除する、あるいは追加することによって双方の形式を生成すること が可能です。 .TP .B \-ffloat\-store 浮動小数点変数をレジスタに格納しません。このオプションは 68000 のように (68881 の) 浮動小数点レジスタが \c .B double\c \& よりも高い精度を持っていると思われるマシンにおいて、望まない超過精度を 抑制することを可能にします。 .Sp ほとんどのプログラムにおいては、超過精度は単に良い結果を生むだけですが、 いくつかのプログラムは正確な IEEE の浮動小数点フォーマット定義に依 存しています。 このようなプログラムに対して `\|\c .B \-ffloat\-store\c \&\|' を使用します。 .TP .B \-fmemoize\-lookups .TP .B \-fsave\-memoized コンパイルを高速に行なうために、ヒューリスティックスを使用します (C++ のみ)。これらのヒューリスティックスはデフォルトでは有効になってい ません。なぜなら、これはある種の入力ファイルにしか効果がなく、その他の ファイルではかえってコンパイルが低速になるからです。 .Sp 最初に、コンパイラはメンバ関数への呼び出し (あるいはデータメンバへの参 照) を構築します。これは (1) どのクラスでその名前のメンバ関数が実装さ れているかを決定し、(2) どのメンバ関数への呼び出しであるかという問題 (これはどの種類の型変換が必要となるかという決定も含みます) を解決し、(3) 呼び出し側に対するその関数の可視性を検査するという作業を行なう必要があります。 これらは全て、コンパイルをより低速にしてしまいます。通常は、そのメンバ 関数への 2 度目の呼び出しが起こった場合も、この長い処理がまた行なわれ ることになります。これは次のようなコード .Sp \& cout << "This " << p << " has " << n << " legs.\en"; .Sp は、これらの 3 つの手順を 6 回繰り返すということを意味します。これに対し て、ソフトウェアキャッシュを使用すると、そのキャッシュへの\*(lqヒット \*(rqは、コストを劇的に低減することが期待できます。不幸なことに、キャッシュ の導入によって異なったレイヤの機構を実装することが必要となり、それ 自身のオーバヘッドが生じてしまいます。`\|\c .B \-fmemoize\-lookups\c \&\|' はこのソフトウェアキャッシュを有効にします。 .Sp メンバとメンバ関数へのアクセス特権 (可視性) はある関数におけるコンテキスト と別の関数におけるものとでは異なるので、 .B g++ はキャッシュをフラッシュしなければなりません。`\|\c .B \-fmemoize\-lookups\c \&\|' フラグを使用すると、全ての関数をコンパイルするたびに毎回キャッシュを フラッシュします。`\|\c .B \-fsave\-memoized\c \&\|' フラグは同一のソフトウェアキャッシュについて、コンパイラが前回 コンパイルした関数のコンテキストが、次にコンパイルするコンテキストと同 一のアクセス特権を有しているとみなせる時には、キャッシュを保持します。 これは同一クラス中に多くのメンバ関数を定義している時に特に有効です。 他のクラスのフレンドになっているメンバ関数を除き、同一のクラスに属して いる全てのメンバ関数のアクセス特権は、全て同一です。このような場合は キャッシュをフラッシュする必要はありません。 .TP .B \-fno\-default\-inline クラススコープ中に定義されたメンバ関数をデフォルトでインライン関数とす る処理を行ないません (C++ のみ)。 .TP .B \-fno\-defer\-pop それぞれの関数呼び出しに対して、関数のリターン直後に常に引数をポップします。 関数呼出後に引数をポップしなければならないマシンにおいては、 コンパイラは通常、いくつかの関数の引数をスタックに積んで、 それらを同時にポップします。 .TP .B \-fforce\-mem メモリオペランドに対して、それらに対する演算が行なわれる前に、 レジスタにコピーします。これは全てのメモリ参照を、潜在的な共通部分式であると 定めることによって、より良いコードを生成します。もしそれが共通部分式でな かった場合は、命令コンビネーションによってレジスタへの読み込みは削 除されます。私はこれがどのような違いを生み出すかということに興味があります。 .TP .B \-fforce\-addr メモリアドレス定数について、それらに対する演算が行なわれる前にレジスタ にコピーします。これは `\|\c .B \-fforce\-mem\c \&\|' と同じ手法でより良いコードを生成します。私はこれがどのような違いを 生み出すかということに興味があります。 .TP .B \-fomit\-frame\-pointer フレームポインタをレジスタに格納する必要のない関数において、この処理を 行いません。これはフレームポインタの保存、設定、復帰にかかる命令を省略 し、さらに、多くの関数でレジスタ変数として使用できる余分なレジスタを 得ることを可能にします。\c .I ただし、このオプションはほとんどのマシンにおいてデバッグを不可能にします。 .Sp Vax などのいくつかのマシンでは、このフラグは効果を持ちません。なぜならこ れらのマシンでは標準の呼び出し手順が自動的にフレームポインタの設定を 行なってしまい、これが存在しないとしたところで何も節約ができないからです。 マシン記述マクロ \c .B FRAME_POINTER_REQUIRED\c \& が、ターゲットマシンがこのフラグをサポートするかどうかを制御しています。 .TP .B \-finline\-functions 全ての単純な関数を呼び出し側に組み込んでしまいます。コンパイラは ヒューリスティックスを用いて、 どの関数がこの方法で組み込むに足りるほど単純かを決定します。 .Sp もし、ある関数に対する全ての呼び出しを組み込むことができ、かつその関数が \c .B static\c \& と宣言されていた場合は、GCC はその関数を独立したアセンブラコードと しては出力をしません。 .TP .B \-fcaller\-saves 関数呼び出しにおいて破壊されるであろう値を、レジスタに保持することを可 能とします。これはこのような呼び出しの周囲にレジスタに対する保存、復帰の 特別なコードを出力することによって実現されます。このような割り当ては、そ れが通常よりも良いコードを出力するとみなされる場合にのみ行われます。 .Sp このオプションは特定のマシンではデフォルトで有効となっています。これらは 通常、このオプションの処理の代わりに使うことができる呼び出し時保存 レジスタが存在しないマシンです。 .TP .B \-fkeep\-inline\-functions ある関数への呼び出しが全て呼び出し側に組み込むことができて、かつその関数が \c .B static\c \& と宣言されていたとしても、実行時に呼び出し可能な関数も生成します。 .TP .B \-fno\-function\-cse 関数のアドレスをレジスタに置きません。つまり、定まった関数を呼び出すコードは、 それぞれ明示的な関数のアドレスを含むコードとなります。 .Sp このオプションは効率の低いコードを生成しますが、アセンブラ出力を書き換え るようなハックを行なう場合には、このオプションを使用しなければ 混乱させられることでしょう。 .TP .B \-fno\-peephole マシン固有のピープホール最適化を禁止します。 .TP .B \-ffast-math このオプションは生成コードのスピードのために、GCC に対して、いくつかの ANSI または IEEE の規則/規格を侵させます。例えば、このオプションは \c .B sqrt\c \& 関数の引数は非負の数であることを仮定します。 .Sp このオプションはどの `\|\c .B \-O\c \&\|' オプションによっても有効とされません。なぜなら、このオプションは数 学関数に関する IEEE または ANSI の規則/規格の厳密な実装に依存して書かれた プログラムに対して誤った出力を与えるからです。 .PP 以下のオプションは特殊な最適化に関する制御を行います。`\|\c .B \-O2\c \&\|' オプションは`\|\c .B \-funroll\-loops\c \&\|' と `\|\c .B \-funroll\-all\-loops\c \&\|' を除くこれらの全てのオプションを有効にします。 .PP `\|\c .B \-O\c \&\|' オプションは通常 `\|\c .B \-fthread\-jumps\c \&\|' と `\|\c .B \-fdelayed\-branch\c \&\|' を有効とします。ただし、特殊なマシンではデフォルトの最適化に対して 変更が加えられているかもしれません。 .PP 最適化に関する \*(lqきめ細かいチューニング\*(rq が必要な場合に、以下の フラグを使用することが可能です。 .TP .B \-fstrength\-reduce ループのストレングスリダクションと繰り返し変数の除去を行います。 .TP .B \-fthread\-jumps 分岐ジャンプによってある場所にジャンプした時に、最初の分岐に包括される 比較が存在した時に、最初の分岐のジャンプ先を後者の分岐先に変更します。 この変更先は、2 番目の分岐条件の真偽によって、2 番目の分岐のジャンプ先か、 あるいは2 番目の分岐の直後に定められます。 .TP .B \-funroll\-loops ループ展開の最適化を行います。これはループの繰り返し数がコンパイル時、 あるいはランタイムに決定できる時においてのみ、実行されます。 .TP .B \-funroll\-all\-loops ループ展開の最適化を行います。これは全てのループに対して行われます。この オプションは大抵、より遅く動作するプログラムを生成します。 .TP .B \-fcse\-follow\-jumps 共通部分式削除の処理において、ジャンプ命令の行先が 他の経路から到達できない場合は、そのジャンプ命令を越えてスキャンを行 ないます。例えば、共通部分式削除処理中に \c .B else \c \& 節を伴った .B if \c \& 文に出会った場合、条件が偽ならば分岐先に対しても共通部分式削除を続けます。 .TP .B \-fcse\-skip\-blocks これは `\|\c .B \-fcse\-follow\-jumps\c \&\|' に似ていますが、ブロックを跨ぐジャンプに対しても共通部分式削除を継 続します。共通部分式削除処理中に、else 節を持たない単純な \c .B if\c \& 文にであった時、 `\|\c .B \-fcse\-skip\-blocks\c \&\|' は \c .B if\c \& のボディを跨いだジャンプに対する共通部分式削除処理を継続します。 .TP .B \-frerun\-cse\-after\-loop ループ最適化が行なわれた後に、再度共通部分式削除の処理を行います。 .TP .B \-felide\-constructors コンストラクタへの呼び出しが省略できるように思われる場合に、その呼び出 しを省略します (C++ のみ)。このフラグを指 定した場合は、GNU C++ は以下のコードに対して、一時オブジェクトを経由せずに \c .B y\c \& を \c .B foo への呼び出しの結果から直接初期化します。 .Sp A foo (); A y = foo (); .Sp このオプションを使用しない場合は、GNU C++ は最初に \c .B y\c \& を\c .B A\c \& 型の適切なコンストラクタを呼び出すことによって初期化します。そして、 .B foo\c \& の結果を一時オブジェクトに格納し、最終的には `\|\c .B y\c \&\|' の値を一時オブジェクトの値に入れ換えます。 .Sp デフォルトの振舞い (`\|\c .B \-fno\-elide\-constructors\c \&\|') が、ANSI C++ 標準のドラフトには規定されています。コンストラクタ が副作用を含むプログラムに対して、`\|\c .B \-felide-constructors\c \&\|' を指定すると、そのプログラムは異なった動作をする可能性があります。な ぜなら、いくつかのコンストラクタの呼び出しが省略されるからです。 .TP .B \-fexpensive\-optimizations 比較的コストの高いいくつかの些細な最適化を行います。 .TP .B \-fdelayed\-branch ターゲットマシンにおいてこのフラグがサポートされている場合は、遅延分岐 命令後の命令スロットを命令の順番変更によって利用するように設定します。 .TP .B \-fschedule\-insns ターゲットマシンにおいてこのフラグがサポートされている場合は、必要な データを利用可能になるまで待つことによる実行の遅滞を防ぐために、命令 の順番の変更を行います。これは遅い浮動小数点命令やメモリ読み込み命令の実 行において、それらの結果を必要とする命令の前に他の命令を詰め込みます。 .TP .B \-fschedule\-insns2 `\|\c .B \-fschedule\-insns\c \&\|' と似ていますが、レジスタ割当て処理の後にもう一度命令スケジューリングの 段階を置きます。これは、比較的レジスタ数が少なく、メモリロード命令 が 1 サイクルよりも多くを要するマシンにおいて、特に効果的です。 .SH ターゲットオプション デフォルトでは、GNU CC コンパイラは、現在使用しているマシンと同じタイプの コードをコンパイルします。しかし、GNU CC はクロスコンパイラ としてもインストールすることが可能です。実際には、異なったターゲット マシンのための様々なコンフィギュレーションの GNU CC は、同時にいくつ もインストールすることが可能です。そこで、どの GNU CC を使用するかを 指定するために、`\|\c .B \-b\c \&\|' オプションを使用することができます。 .PP これに加えて、古い、あるいはより新しいバージョンの GNU CC も同時にいく つもインストールしていくことができます。これらのうち 1 つ (おそらくもっ とも新しいもの) がデフォルトとなります。しかし、ひょっとしたら別のものを使 いたくなるかもしれません。 .TP .BI "\-b " "machine" 引数 \c .I machine\c \& は、コンパイルのターゲットマシンを規定します。これは GNU CC をクロス コンパイラとしてインストールした時に有用です。 .Sp .I machine\c \& に指定する値は、GNU CC をクロスコンパイラとしてコンフィギュレーション した時に与えたマシンタイプと同じです。例えば、80386 上の System V で実行されるプログラムのために `\|\c .B configure i386v\c \&\|' というコンフィギュレーションを行なったクロスコンパイラを起動した い場合は、`\|\c .B \-b i386v\c \&\|' と指定します。 .Sp `\|\c .B \-b\c \&\|' の設定を省略した場合は、通常は使用しているマシンと同タイプのマシン のためのコンパイルが行われます。 .TP .BI "\-V " "version" 引数 \c .I version\c \& は、起動される GNU CC のバージョンを規定します。これは複数のバージョンが インストールされている場合に有用です。例えば、 .I version\c \& が `\|\c .B 2.0\c \&\|' ならば、GNU CC バージョン 2.0 を起動することを意味します。 .Sp `\|\c .B \-V\c \&\|' を指定しなかった場合のデフォルトのバージョンは、GNU CC をインストール する時に調整可能です。通常は、もっとも一般的な使用に勧めることができる バージョンがここに指定されます。 .SH マシン依存オプション それぞれのターゲットマシンタイプは、それぞれの特別なオプションを持つ ことが可能です。`\|\c .B \-m\c \&\|' で始まるオプション群は、様々なハードウェアモデルや コンフィギュレーション\(em\&例えば 68010 と 68020、 浮動小数点コプロセッサの有無\(em\& などを選択できます。このオプションを指定することによって、コンパイラは どれか 1 つのモデル、 あるいはコンフィギュレーションに対するコンパイルが可能です。 .PP いくつかのコンフィギュレーションは、通常はそのプラットホーム上の 他のコンパイラとのコマンドラインに関するの互換性をとるため の特別なオプションを用意しています。 .PP 以下は 68000 シリーズのために定義された `\|\c .B \-m\c \&\|' オプションです。 .TP .B \-m68000 .TP .B \-mc68000 68000 のためのコードを生成します。これは 68000 ベースのシステムに対して コンフィギュレーションを行なったコンパイラのデフォルトです。 .TP .B \-m68020 .TP .B \-mc68020 (68000 ではなく) 68020 のためのコードを生成します。これは 68020 ベースの システムに対してコンフィギュレーションを行なったコンパイラのデフォルト です。 .TP .B \-m68881 浮動小数点演算のために 68881 命令を含んだ出力を行います。これはほとんどの 68020 ベースのシステムにおいて、コンパイラのコンフィギュレーション時に .B \-nfp を指定されなかった場合のデフォルトです。 .TP .B \-m68030 68030 のためのコードを生成します。これは 68030 ベースのシステムに対して コンフィギュレーションを行なったコンパイラのデフォルトです。 .TP .B \-m68040 68040 のためのコードを生成します。これは 68040 ベースのシステムに対して コンフィギュレーションを行なったコンパイラのデフォルトです。 .TP .B \-m68020\-40 68040 のためのコードを生成しますが、新しい命令を使用しません。この結果とし て得られるコードは、68020/68881, 68030, 68040 のいずれのシステムにおいても、 比較的高い性能を持ちます。 .TP .B \-mfpa 浮動小数点演算のために Sun FPA 命令を含んだ出力を行います。 .TP .B \-msoft\-float 浮動小数点演算のためにライブラリを呼び出す出力を行います。 .I 警告: この必須のライブラリは GNU CC の一部としては含まれません。通常はそのマシン の一般的な C コンパイラの提供するものを使用しますが、これは通常の方法 ではクロスコンパイルで直接使用することはできません。クロスコンパイルを行 ないたい場合は、自分自身で必要なライブラリ関数を用意する必要があります。 .TP .B \-mshort .B int\c \& 型を \c .B short int\c \& 型のように 16 ビット幅とみなします。 .TP .B \-mnobitfield ビットフィールド命令を使用しません。`\|\c .B \-m68000\c \&\|' は暗黙のうちに `\|\c .B \-mnobitfield\c \&\|' を含みます。 .TP .B \-mbitfield ビットフィールド命令を使用します。`\|\c .B \-m68020\c \&\|' は暗黙のうちに `\|\c .B \-mbitfield\c \&\|' を含みます。これは変更されていないソースの場合のデフォルトです。 .TP .B \-mrtd 固定個数の引数をとる関数に対して、異なった関数呼び出し規約を使用します。 これは、リターン時に引数をポップする \c .B rtd 命令を利用するものです。これは呼び出し側で引数をポップさせる必要がな いために、1 命令を省略することが可能となります。 .Sp この呼び出し規約は通常の Unix で使用されている方式とは互換性がありません。そ のため、Unix コンパイラでコンパイルされたライブラリを呼び出す必要があ る限りは、使用することはできません。 .Sp さらに、全ての可変引数をとり得る関数 ( .B printf\c を含みます) に対して、関数プロトタイプを用意する必要があります。さもないと、 これらの関数に対して誤ったコードが生成されます。 .Sp さらに、関数に対して多過ぎる引数をつけて呼び出すコードを書いた場合、こ れは深刻な誤ったコードを生成します。(通常は多過ぎる変数は害を及ぼすこと なく無視されます。) .Sp .B rtd\c \& 命令は 68010 と 68020 によってサポートされますが、 68000 では使用でき ません。 .PP 以下は Vax のために定義された `\|\c .B \-m\c \&\|' オプションです。 .TP .B \-munix 特定のいくつかのジャンプ命令 (\c .B aobleq\c \& 等) を出力しません。これらの命令で長いレンジを使用した場合、 Vax 用の Unix アセンブラはこれを処理できません。 .TP .B \-mgnu これらのジャンプ命令を出力します。アセンブルには GNU アセンブラの使用 を仮定します。 .TP .B \-mg 浮動小数点数について、d-フォーマットではなく、g-フォーマットのための コードを出力します。 .PP 以下は SPARC でサポートされている `\|\c .B \-m\c \&\|' スイッチです。 .PP .B \-mfpu .TP .B \-mhard\-float 浮動小数点命令を含む出力を行います。これはデフォルトです。 .PP .B \-mno\-fpu .TP .B \-msoft\-float 浮動小数点の処理のためにライブラリを呼び出す出力を行います。 .I 警告: SPARC 用の GNU 浮動小数点ライブラリは存在しません。 通常はそのマシンの一般的な C コンパイラの提供するものを使用しますが、 これは通常の方法ではクロスコンパイルで直接使用することはできません。 クロスコンパイルを行ないたい場合は、 自分自身で必要なライブラリ関数を用意する必要があります。 .Sp .B \-msoft\-float は呼び出し規約を変更します。したがって、 .I 全て のプログラムをこのオプションでコンパイルしない限り、 このオプションは意味をなしません。 .PP .B \-mno\-epilogue .TP .B \-mepilogue .B \-mepilogue を指定することによって (デフォルト)、コンパイラは関数を抜けるため のコードを常に関数の最後に出力します。関数の途中で関数を抜けるコードは全て、 関数の最後の終了コードへのジャンプとして生成されます。 .Sp .BR \-mno\-epilogue を設定することによって、コンパイラは関数から抜けるコードをインライン化 することを試みます。 .PP .B \-mno\-v8 .TP .B \-mv8 .TP .B \-msparclite これらの 3 つのオプションは SPARC アーキテクチャのバリエーションを選択 するために使用されます。 .Sp デフォルトでは、(Fujitsu SPARClite 用にコンフィギュレーションしない限 りは) GCC は SPARC アーキテクチャ v7 用のコードを生成します。 .Sp .B \-mv8 は、SPARC v8 用コードを生成します。v7 コードとの違いは、整数の乗算と整数 の除算が v7 では存在しないが v8 には存在するという点のみです。 .Sp .B \-msparclite は、SPARClite 用のコードを生成します。これは v7 には存在せず SPARClite に存在する、整数乗算、整数除算とスキャン (ffs) 命令を追加します。 .PP .B \-mcypress .TP .B \-msupersparc これら 2 つのオプションはコード最適化対象のプロセッサを選択するための ものです。 .Sp .B \-mcypress を用いると(これがデフォルト)、 コンパイラは Cypress CY7C602 チップ用にコードを最適化します。 このチップは SparcStation/SparcServer 3xx シリーズに用いられています。 このオプションは古い SparcStation 1, 2, IPX などにも適用できます。 .Sp .B \-msupersparc を用いると、コンパイラは SuperSparc CPU 用にコードを最適化します。 このチップは SparcStation 10, 1000, 2000 シリーズに用いられています。 このオプションを用いると、SPARC v8 の全命令セットを用いるようになります。 .PP 以下は Convex のために定義された `\|\c .B \-m\c \&\|' オプションです。 .TP .B \-mc1 C1 用の出力を行います。これはコンパイラが C1 用にコンフィギュレーション を行なわれた時のデフォルトです。 .TP .B \-mc2 C2 用の出力を行います。これはコンパイラが C2 用にコンフィギュレーション を行なわれた時のデフォルトです。 .TP .B \-margcount 引数列の前に、引数の数をワードに置くコードを生成します。いくつかの可搬性 のない Convex や Vax のプログラムはこのワードを必要とします。(デバッガは 不定長引数リストを持つ関数を除いて、このワードを必要としません。これらの 情報はシンボルテーブルに書かれます。) .TP .B \-mnoargcount 引数の数を示すワードを省略します。これは変更されていないソースを使用した 場合のデフォルトです。 .PP 以下は、AMD Am29000 のために定義された `\|\c .B \-m\c \&\|' オプションです。 .TP .B \-mdw DW ビットが立っていることを仮定したコードを出力します。これは、ハードウェア によってバイト操作やハーフワード操作がサポートされているということを 意味します。これはデフォルトです。 .TP .B \-mnodw DW ビットが立っていないことを仮定したコードを出力します。 .TP .B \-mbw システムがバイト操作やハーフワード書き込み操作をサポートしていることを仮定した コードを生成します。これはデフォルトです。 .TP .B \-mnbw システムがバイト操作やハーフワード書き込み操作をサポートしていないことを仮定し たコードを生成します。これは暗黙のうちに `\|\c .B \-mnodw\c \&\|' を含みます。 .TP .B \-msmall スモールメモリモデルを使用します。これは全ての関数のアドレスが単一の 256KB のセグメント内に入ることと、関数の絶対アドレスが 256K 以下にある ことを仮定します。このオプションは \c .B call\c \& 命令を \c .B const\c \&, \c .B consth\c \&, \c .B calli\c \& シーケンスの代わりに使用することを可能にします。 .TP .B \-mlarge .B call\c \& 命令が使用できることを仮定しません。これはデフォルトです。 .TP .B \-m29050 Am29050 用のコードを生成します。 .TP .B \-m29000 Am29000 用のコードを生成します。これはデフォルトです。 .TP .B \-mkernel\-registers .B gr96-gr127\c \& レジスタへの参照の代わりに .B gr64-gr95\c \& を参照するコードを生成します。このオプションは、ユーザのコードか ら使用できるグローバルレジスタから区別されたグローバルレジスタの集合 を利用するカーネルのコードをコンパイルする時に使用できます。 .Sp ただし、このオプションが使用されている時にも `\|\c .B \-f\c \&\|' フラグ中のレジスタ名は通常のユーザモードでの名前を使用します。 .TP .B \-muser\-registers 通常のグローバルレジスタの集合 \c .B gr96-gr127\c \& を使用します。これはデフォルトです。 .TP .B \-mstack\-check .B _\|_msp_check\c \& への呼び出しをそれぞれのスタック調整の後に挿入します。これはしばしば カーネルのコードにおいて用いられます。 .PP 以下は、Motorola 88K アーキテクチャのために定義された `\|\c .B \-m\c \&\|' オプションです。 .TP .B \-m88000 m88100 と m88110 の双方で比較的高性能で動作するコードを生成します。 .TP .B \-m88100 m88100 に最適なコードを生成します。ただし m88110 においても動作します。 .TP .B \-m88110 m88110 に最適なコードを生成します。 ただし m88100 においては動作しないかも知れません .TP .B \-midentify\-revision アセンブラ出力中に、ソースファイル名、コンパイラ名とバージョン、 タイムスタンプ、使用されたコンパイルフラグを記した \c .B ident\c \& ディレクティブを挿入します。 .TP .B \-mno\-underscores シンボル名の最初にアンダースコアキャラクタをつけないアセンブラ出力を生 成します。デフォルトでは個々の名前に対して、アンダースコアをプレフィック スとして使用します。 .TP .B \-mno\-check\-zero\-division .TP .B \-mcheck\-zero\-division 初期の 88K のモデルはゼロによる除算の処理に問題を持っていました。特に、そ れらの多くにおいてトラップが生じなかったことは問題でした。これ らのオプションを使用することによって、ゼロ除算を発見し、例外を知らせる コードを埋め込むことを禁止 (あるいは明示的に許可) することができます。全 ての 88K 用の GCC のコンフィギュレーションは `\|\c .B \-mcheck\-zero\-division\c \&\|' をデフォルトとして使用しています。 .TP .B \-mocs\-debug\-info .TP .B \-mno\-ocs\-debug\-info 88Open Object Compatibility Standard \*(lqOCS\*(rq で定義された (それぞれのスタックフレーム中で使用されるレジスタに関する) 付加的なデバッグ 情報を取り込みます (または省略します)。これらの付加的な情報は GDB によっ ては必要とされません。DG/UX, SVr4, Delta 88 SVr3.2 ではデフォルトでこの情 報を含めます。その他の 88K コンフィギュレーションではデフォルトで省略します。 .TP .B \-mocs\-frame\-position .TP .B \-mno\-ocs\-frame\-position OCS で規定されているように、レジスタの値に対して、スタックフレーム中の 特定の場所に保存されるという動作を強制します (あるいは要求しません)。 DG/UX, Delta88 SVr3.2, BCS のコンフィギュレーションでは `\|\c .B \-mocs\-frame\-position\c \&\|' をデフォルトとして、それ以外の 88k コンフィギュレーションでは `\|\c .B \-mno\-ocs\-frame\-position\c \&\|' をデフォルトとして使用しています。 .TP .B \-moptimize\-arg\-area .TP .B \-mno\-optimize\-arg\-area 関数の引数がどのような方法でスタックフレームに格納されるかを指定します。 `\|\c .B \-moptimize\-arg\-area\c \&\|' はスペースを節約しますが、いくつかのデバッガ (GDB は含まれない) を クラッシュさせます。`\|\c .B \-mno\-optimize\-arg\-area\c \&\|' はより標準に従っています。デフォルトでは GCC は引数エリアの最適化 を行いません。 .TP .BI "\-mshort\-data\-" "num" データ参照時に、それらの処理を \c .B r0\c \& からの相対参照で行なうことによって小さなコードにすることを可能とします。 これは値のロードを (その他の場合は 2 命令かかるところを) 1 命令で行な うことを可能にします。\c .I num\c \& をこのオプションとともに指定することによって、どのデータ参照が影響 を受けるかを指定することができます。例えば `\|\c .B \-mshort\-data\-512\c \&\|' を指定すると、512 バイト以内のディスプレースメントのデータ参照が 影響を受けることになります。 `\|\c .B \-mshort\-data\-\c .I num\c \&\c \&\|' は \c .I num\c \& が 64K よりも大きな時は効果を持ちません。 .PP .B \-mserialize-volatile .TP .B \-mno-serialize-volatile volatile なメモリへの参照について、シーケンシャルな整合性を持った コードを生成する、あるいは生成しません。 .Sp GNU CC はデフォルトではどのプロセッササブモデルを選んだ場合においても、 整合性を常に保証します。これがどのように実現されているかは、サブモデルに 依存しています。 .Sp m88100 プロセッサはメモリ参照の順番を入れ換えないので、常にシーケンシャルな 整合性は保たれます。もし `\|\c .B \-m88100\c \&\|' を使用した場合は、GNU CC はシーケンシャルな整合性を保つための特 別な命令を生成しません。 .Sp m88110 プロセッサにおけるメモリ参照の順番は、必ずしもそれらの要求を行 なった命令の順番とは一致しません。特に、読み込み命令は、先行する書き込み 命令よりも先に実行され得ます。このような順番の入れ換えは、マルチプロセッサ時に volatile なメモリの参照におけるシーケンシャルな整合性を崩してしまいます。 `\|\c .B \-m88000\c \&\|' または `\|\c .B \-m88110\c \&\|' を指定した場合には、GNU CC は、必要な場合は特別な命令を生成し、 命令の実行が正しい順番で行なわれることを強制します。 .Sp ここで生成される整合性を保証するための特別な命令はアプリケーションの性 能に対して影響を及ぼします。もしこの保証無しで問題がないということがわかっ ている場合は、`\|\c .B \-mno-serialize-volatile\c \&\|' を使用することができます。 .Sp `\|\c .B \-m88100\c \&\|' オプションを使用しているが、m88110 における実行時にシーケンシャルな 整合性が必要とされる場合は、`\|\c .B \-mserialize-volatile\c \&\|' を使用するべきです。 .PP .B \-msvr4 .TP .B \-msvr3 System V release 4 (SVr4) に関連したコンパイラの拡張を有効 (`\|\c .B \-msvr4\c \&\|') あるいは無効 (`\|\c .B \-msvr3\c \&\|') にします。これは以下の内容を制御します。 .TP \ \ \ \(bu 生成するアセンブラの文法の種類 (これは `\|\c .B \-mversion\-03.00\c \&\|' を使用することによって独立に制御できます)。 .TP \ \ \ \(bu `\|\c .B \-msvr4\c \&\|' は C プリプロセッサに対して `\|\c .B #pragma weak\c \&\|' を理解させます。 .TP \ \ \ \(bu `\|\c .B \-msvr4\c \&\|' は、GCC に SVr4 によって使用されている付加的な宣言ディレクティブ を生成させます。 .PP `\|\c .B \-msvr3\c \&\|' は、SVr4 を除く全ての m88K コンフィギュレーションにおけるデフォ ルトです。 .TP .B \-mtrap\-large\-shift .TP .B \-mhandle\-large\-shift 31 ビットより大きいビットシフトを検出するコードを埋め込みます。これらの オプションを指定することによって、それぞれトラップ、あるいは適切に処理す るコードが埋め込まれます。デフォルトでは GCC は大きなビットシフトには 特別な対策を行いません。 .TP .B \-muse\-div\-instruction 非常に初期の 88K アーキテクチャのモデルは除算命令を持っていません。従っ て、GCC はデフォルトでは除算命令を生成しません。このオプションは除算命令 が安全に使用できるということを指定します。 .TP .B \-mversion\-03.00 DG/UX コンフィギュレーションには、2 つの SVr4 の種類があります。このオプション は .B \-msvr4 オプションによって hybrid-COFF と real-ELF のどちらが使用されるかを選択します。 他のコンフィギュレーションはこのオプションを無視します。 .TP .B \-mwarn\-passed\-structs 関数に対して構造体を渡した場合と、関数が構造体を返した場合に警告します。 構造体を渡す規約は C 言語の発展の中で変化しており、移植性の問題をしば しば生じることになります。デフォルトでは GCC はこの警告を行いません。 .PP 以下のオプションは IBM RS6000 のために定義されたものです。 .PP .B \-mfp\-in\-toc .TP .B \-mno\-fp\-in\-toc 浮動小数点定数を Table of Contents (TOC) に入れるかどうかを指定します。 このテーブルは全てのグローバル変数と関数のアドレスを格納します。デフォルト では GCC は浮動小数点定数をここに格納します。もし TOC が算術あふれをおこす 場合は、`\|\c .B \-mno\-fp\-in\-toc\c \&\|' を使用することによって TOC のサイズを小さくすることが可能であり、 算術あふれを防ぐことができるでしょう。 .PP 以下は IBM RT PC 用に定義された `\|\c .B \-m\c \&\|' オプションです。 .TP .B \-min\-line\-mul 整数の乗算に対してインラインのコード列を生成します。これはデフォルトです。 .TP .B \-mcall\-lib\-mul 整数の乗算に対して \c .B lmul$$\c \& を呼び出します。 .TP .B \-mfull\-fp\-blocks フルサイズの浮動小数点データブロックを生成します。これは IBM によって推 奨されている最低限のスクラッチスペースの量を包含します。これはデフォルトです。 .TP .B \-mminimum\-fp\-blocks 浮動小数点データブロック内に特別なスクラッチスペースを含めません。これに よって、より小さなコードが生成されますが、実行は遅くなります。 なぜならスクラッチスペースが動的に確保されるからです。 .TP .B \-mfp\-arg\-in\-fpregs IBM の関数呼び出し規約とは互換性のない呼び出し手順を使用します。 この規約では浮動小数点引数を浮動小数点レジスタに入れて渡します。 このオプションを指定すると、\c .B varargs.h\c \& や \c .B stdarg.h\c \& で浮動小数点オペランドが使用できなくなることに注意して下さい。 .TP .B \-mfp\-arg\-in\-gregs 浮動小数点に対して通常の関数呼び出し規約を使用します。これはデフォルトです。 .TP .B \-mhc\-struct\-return 1 ワードより大きな構造体を返す時に、レジスタではなくメモリを使用して返します。 これは MetaWare HighC (hc) コンパイラとの互換性を提供します。`\|\c .B \-fpcc\-struct\-return\c \&\|' を使用することによって Portable C Compiler (pcc) との互換性を得 ることができます。 .TP .B \-mnohc\-struct\-return 1 ワードより大きな構造体を返す時に、レジスタによって返される場合があります。 これはその方が便利であると考えられる時に使用されます。これはデフォルトです。 IBM が提供するコンパイラとの互換性を得るためには、`\|\c .B \-fpcc\-struct\-return\c \&\|' と `\|\c .B \-mhc\-struct\-return\c \&\|' の双方を使用します。 .PP 以下は MIPS ファミリのために定義された `\|\c .B \-m\c \&\|' オプションです。 .TP .BI "\-mcpu=" "cpu-type" 命令スケジューリング時に、デフォルトのマシンタイプを .I cpu-type に仮定します。デフォルトの .I cpu-type は .BR default です。この選択はすべてのマシンに対する最長のサイクル数を元にコードを 生成します。これは、生成されるコードがどの MIPS cpu においても適当な速度 で処理されるようにするためです。これ以外の .I cpu-type の選択としては、 .BR r2000 , .BR r3000 , .BR r4000 , .BR r6000 があります。特定の .I cpu-type を選択した場合は、その特定のチップに適したスケジュールが行われます。 コンパイラは、 .B \-mips2 または .B \-mips3 スイッチが使用されていない場合は、MIPS ISA (instruction set architecture) のレベル 1 に合致しないコードを生成することはありません。 .TP .B \-mips2 MIPS ISA のレベル 2 (branch likely 命令, 平方根命令) による命令群 を出力します。 .B \-mcpu=r4000 と .B \-mcpu=r6000 スイッチは、 .BR \-mips2 と共に使用される必要があります。 .TP .B \-mips3 MIPS ISA のレベル 3 (64 ビット命令) を含む命令群を出力します。 .B \-mcpu=r4000 スイッチは、 .BR \-mips2 と同時に使用する必要があります。 .TP .B \-mint64 .TP .B \-mlong64 .TP .B \-mlonglong128 これらのオプションは現在動作しません。 .TP .B \-mmips\-as MIPS アセンブラのためのコードを生成し、 .B mips\-tfile を起動して通常のデバッグ情報を追加します。 これは OSF/1 リファレンスプラットフォーム 以外の全てのプラットフォームにおけるデフォルトです。 OSF/1 リファレンスプラットフォームは OSF/rose オブジェクトフォーマットを 使用します。スイッチ .BR \-ggdb , .BR \-gstabs , .B \-gstabs+ のうちのどれかが使用されている場合は、 .B mips\-tfile プログラムは、stabs を MIPS ECOFF 中にカプセル化します。 .TP .B \-mgas GNU アセンブラ用のコードを生成します。これは OSF/1 リファレンスプラットフォーム におけるデフォルトです。OSF/1 リファレンスプラットフォームは OSF/rose オブジェクトフォーマットを使用します。 .TP .B \-mrnames .TP .B \-mno\-rnames .B \-mrnames スイッチは出力コードにおいて、レジスタの名前として、ハードウェア名の代 わりに MIPS ソフトウェア名を使用することを指定します。(つまり、 .B a0 を .BR $4 の代わりに使用します)。 GNU アセンブラは .B \-mrnames スイッチをサポートしません。MIPS アセンブラはソースファイルに対して MIPS C プリプロセッサを起動するでしょう。 .B \-mno\-rnames スイッチがデフォルトです。 .TP .B \-mgpopt .TP .B \-mno\-gpopt .B \-mgpopt スイッチは、全てのデータ宣言をテキストセクション中の全命令の前に書き出 すことを指定します。これによって、全ての MIPS アセンブラは、 ショートグローバル、あるいは静的なデータアイテムに対して、2 ワードではなく、1 ワードのメモリ参照命令を生成します。 これは最適化が指定された場合のデフォルトです。 .TP .B \-mstats .TP .B \-mno\-stats .B \-mstats が指定された場合は、コンパイラによってインラインでない関数が処理される ごとに、標準エラー出力ファイルに対して、そのプログラムに対する統計情報 を示す 1 行のメッセージを出力します。このメッセージは、保存したレジスタ の数、スタックのサイズなどを示します。 .TP .B \-mmemcpy .TP .B \-mno\-memcpy .B \-mmemcpy スイッチは、全てのブロック転送に対して、インラインコードを生成する代わ りに、適切なストリング関数 .RB ( memcpy または .BR bcopy ) を呼び出すコードを生成します。 .TP .B \-mmips\-tfile .TP .B \-mno\-mips\-tfile .B \-mno\-mips\-tfile スイッチを指定すると、 MIPS アセンブラがデバッグサポートのために生成したオブジェクトファイルに対し、 .B mips\-tfile を使用した後処理を行いません。 .B mips\-tfile が実行されないと、デバッガからはローカル変数を扱うことができません。 さらに、 .B stage2 と .B stage3 のオブジェクトはアセンブラに渡される一時的なファイル名をオブジェクトファイル 中に埋め込まれて持っており、このためそれらを比較した場合に同一のも のとはみなされません。 .TP .B \-msoft\-float 浮動小数点演算のためにライブラリを呼び出す出力を行います。 .I 警告: この必須のライブラリは GNU CC の一部としては含まれません。通常はそのマシンの 一般的な C コンパイラの提供するものを使用しますが、これは通常の方法 ではクロスコンパイルで直接使用することはできません。クロスコンパイルを行 ないたい場合は、自分自身で必要なライブラリ関数を用意する必要があります。 .TP .B \-mhard\-float 浮動小数点命令を含んだ出力を生成します。これは変更されないソースを使用し た場合のデフォルトです。 .TP .B \-mfp64 ステータスワード中の .B FR ビットが立っていることを仮定します。これは 32 個の 32 ビット浮動小数点 レジスタの代わりに、32 個の 64 ビットの浮動小数点レジスタが存在するとい うことを示します。この場合は、同時に .B \-mcpu=r4000 と .B \-mips3 スイッチを指定する必要があります。 .TP .B \-mfp32 32 個の 32 ビット浮動小数点レジスタが存在するということを仮定します。こ れはデフォルトです。 .PP .B \-mabicalls .TP .B \-mno\-abicalls いくつかの System V.4 の移植が位置独立コードのために使用する疑似命令 .BR \&.abicalls , .BR \&.cpload , .B \&.cprestore を出力する、あるいは出力しません。 .TP .B \-mhalf\-pic .TP .B \-mno\-half\-pic .B \-mhalf\-pic スイッチは、テキストセクション中に参照を配置する代わりに、外部参照を行 なうポインタをデータセクションに配置し、それをロードする動作を指定します。 このオプションは現在まだ動作しません。 .B .BI \-G num は .I num バイト以下のグローバル、あるいは静的なアイテムを、通常のデータや bss セクションではなく、小さなデータ、または bss セクションに配置することを 指定します。 これによりアセンブラは、通常では 2 ワードの参照を行うところを、 グローバルポインタ .RB ( gp または .BR $28 ) を基準とした 1 ワードのメモリ参照命令を生成可能となります。 デフォルトでは MIPS アセンブラが使用される場合、 .I num は 8 です。また、GNU アセンブラが使用される場合のデフォルトは 0 です。 .BI \-G num スイッチはアセンブラ、リンカにも同様に渡されます。全てのモジュールは同一の .BI \-G num の値でコンパイルされなければなりません。 .TP .B \-nocpp MIPS アセンブラに、ユーザアセンブラファイル (`\|\c .B .s\c \&\|' 拡張子を持ちます) に対するアセンブル時のプリプロセッサの起動を抑制さ せます。 .PP 以下は、Intel 80386 ファミリ用に定義された `\|\c .B \-m\c \&\|' オプションです。 .TP .B \-m486 .TP .B \-mno\-486 386 ではなく 486 に最適化されたコードを出力する、あるいはその逆を行な う指定を行います。486 用に生成されたコードは 386 で実行可能であり、逆も また可能です。 .TP .B \-msoft\-float 浮動小数点演算のためにライブラリを呼び出す出力を行います。 .I 警告: この必須のライブラリは GNU CC の一部としては含まれません。通常はそのマシンの 一般的な C コンパイラの提供するものを使用しますが、これは通常の方法 ではクロスコンパイルで直接使用することはできません。クロスコンパイルを行 ないたい場合は、自分自身で必要なライブラリ関数を用意する必要があります。 .Sp 関数が浮動小数点数を返す時に 80387 レジスタスタックを使用するマシンに おいては、`\|\c .B \-msoft-float\c \&\|' を使用した場合でも、いくつかの浮動小数点命令が生成されます。 .TP .B \-mno-fp-ret-in-387 関数からの返り値に FPU のレジスタを使用しません。 .Sp 通常の関数呼び出し規約は、たとえ FPU が存在しなくても .B float\c \& と \c .B double\c \& の結果を FPU レジスタに入れて返します。したがってこの場合、 オペレーティングシステムは FPU をエミュレートしなければなりません。 .Sp `\|\c .B \-mno-fp-ret-in-387\c \&\|' オプションを指定すると、浮動小数点数も通常の CPU レジスタに入れ て返されます。 .TP .B \-mprofiler-epilogue .TP .B \-mno-profiler-epilogue 関数から抜けるコードにてプロファイル情報を書き出す追加コードを生成します。 .PP 以下は HPPA ファミリ用に定義された `\|\c .B \-m\c \&\|' オプションです。 .TP .B \-mpa-risc-1-0 PA 1.0 プロセッサ用のコードを出力します。 .TP .B \-mpa-risc-1-1 PA 1.1 プロセッサ用のコードを出力します。 .TP .B \-mkernel カーネルに適したコードを生成します。特に、引数の 1 つとして DP レジスタを とる .B add\c \& 命令の使用を抑制し、その代わりに、\c .B addil\c \& 命令を生成します。これは HP-UX リンカの深刻なバグを避けるための措置です。 .TP .B \-mshared-libs HP-UX 共有ライブラリとリンクさせるコードを生成します。このオプションはま だ完全に動作しているわけではなく、どの PA ターゲットにおいてもデフォルト になっていません。このオプションを指定すると、コンパイラは誤ったコード を出力し得ます。 .TP .B \-mno-shared-libs 共有ライブラリとリンクしないコードを生成します。これは全ての PA ターゲット においてデフォルトのオプションです。 .TP .B \-mlong-calls 関数の呼び出し先と呼び出し元が同一ファイルに含まれた場合、呼び出し時の 距離が 256K を越える場合でも動作するようなコードを出力します。 このオプションは、リンカから \*(lqbranch out of range errors\*(rq で リンクを拒否された時以外には使用しないようにしてください。 .TP .B \-mdisable-fpregs いかなる形においても、浮動小数点レジスタの使用を禁止します。 これは浮動小数点レジスタに配慮しないコンテキストスイッチを行なう カーネルに対して有効です。 このオプションを使用して、浮動小数点処理を行なおうとすると、 コンパイラはアボートします。 .TP .B \-mdisable-indexing コンパイラに対して、indexing addressing mode を使用しないように指定します。 これによって MACH において MIG によって生成されたコードをコンパイルす る際の、あまり重要でないいくつかの問題を防ぐことができます。 .TP .B \-mtrailing-colon ラベル定義の後にコロンを加えます (ELF アセンブラ用)。 .PP 以下は、Intel 80960 ファミリ用に定義された `\|\c .B \-m\c \&\|' オプションです。 .TP .BI "\-m" "cpu-type" デフォルトのマシンタイプを .I cpu-type に仮定します。これは生成する命令とアドレッシングモード、そして境界条件に 関係します。 デフォルトの .I cpu-type は .BR kb です。その他の選択としては .BR ka , .BR mc , .BR ca , .BR cf , .BR sa , .BR sb があります。 .TP .B \-mnumerics .TP .B \-msoft\-float .B \-mnumerics オプションはプロセッサが浮動小数点命令をサポートすることを示します。 .B \-msoft\-float オプションは浮動小数点サポートを仮定しないことを示します。 .TP .B \-mleaf\-procedures .TP .B \-mno\-leaf\-procedures 葉に位置する手続きについて、 .IR call 命令と同様に .I bal 命令でも呼び出すことを可能とします (あるいは、しません)。これは .I bal 命令がアセンブラ、またはリンカによって置き換えられ得る場合には、直接呼 び出しに対して効率の良いコードを得ることができます。ただし、それ以外の場 合は効率の良くないコードを生成します。例えば、関数へのポインタ経由の呼び 出しや、この最適化をサポートしないリンカを使用した場合などがこれ に該当します。 .TP .B \-mtail\-call .TP .B \-mno\-tail\-call (マシン非依存の部分を越えて) 末尾再帰を分岐に変換する処理に関するさ らなる最適化を行います(または行いません)。 この手法の適用が正当でないということに関する判断 が完全ではないので、まだこのオプションを使用することは適当でないかも しれません。デフォルトは .BR \-mno\-tail\-call です。 .TP .B \-mcomplex\-addr .TP .B \-mno\-complex\-addr この i960 の実装では複雑なアドレッシングモードの使用が優位であると仮定 します (あるいは仮定しません)。複雑なアドレッシングモードは K-シリーズでは 使用する価値は無いかも知れませんが、 C-シリーズでは確かに使用する価値があります。 現在は .B \-mcomplex\-addr が、CB と CC を除く全てのプロセッサにおけるデフォルトです。 .TP .B \-mcode\-align .TP .B \-mno\-code\-align より高速なフェッチのためにコードを 8 バイトにアラインします (または何も しません)。現在では C シリーズの実装においてのみデフォルトで有効にしています。 .TP .B \-mic\-compat .TP .B \-mic2.0\-compat .TP .B \-mic3.0\-compat iC960 v2.0 または v3.0 との互換性を持たせます。 .TP .B \-masm\-compat .TP .B \-mintel\-asm iC960 アセンブラとの互換性を持たせます。 .TP .B \-mstrict\-align .TP .B \-mno\-strict\-align アラインされないアクセスを許可しません (あるいは許可します)。 .TP .B \-mold\-align Intel による gcc リリースバージョン 1.3 (gcc 1.37 ベース) との構造体の 境界条件に関する互換性を持たせます。現在は、 .B #pragma align 1 が同時に仮定されてしまい、無効化できないというバグを持っています。 .PP 以下は、DEC Alpha 用に定義された `\|\c .B \-m\c \&\|' オプションです。 .TP .B \-mno-soft-float .TP .B \-msoft-float 浮動小数点操作に対して、ハードウェアによる浮動小数点命令を使用します (し ません)。もし、\c .B \-msoft-float\c \& が指定された場合は、`\|\c .B libgcc1.c\c \&\|' 内の関数が浮動小数点演算に使用されます。ただし、これらのルーチンが 浮動小数点演算をエミュレートするルーチンによって置き換えられているか、 そのようなエミュレーションルーチンを呼び出すようにコンパイルされている のでない限り、これらのルーチンは浮動小数点演算を行なってしまいます。浮動小 数点演算のない Alpha のためのコンパイルを行なうためには、ライブラリも これらを呼び出さないようにコンパイルされていなければなりません。 .Sp 浮動小数点演算のない Alpha の実装は、浮動小数点レジスタを必要とすると いうことに注意して下さい。 .TP .B \-mfp-reg .TP .B \-mno-fp-regs 浮動小数点レジスタセットを使用する (使用しない)コードを生成します。 .B \-mno-fp-regs\c \& は暗黙のうちに \c .B \-msoft-float\c \& を含みます。浮動小数点レジスタセットが使用されない場合は、浮動小数点 オペランドは整数レジスタに入れられて渡され、浮動小数点数の結果は $f0 では なく $0 に入れて返されます。これは非標準の関数呼び出し手順であり、 浮動小数点数の引数や返り値を持つ関数で、\c .B \-mno-fp-regs\c \& をつけてコンパイルされたコードから呼び出される関数はすべてこのオプションを つけてコンパイルされている必要があります。 .Sp このオプションの典型的な用法は、浮動小数点レジスタを使用せず、したがっ て浮動小数点レジスタへのセーブもリストアも必要のないカーネルを構築する 時などがあるでしょう。 .PP ここに追加するオプションは System V Release 4 において、これらのシステム上の 他のコンパイラとの互換性のために提供されるものです。 .TP .B \-G SVr4 システムにおいて、\c .B gcc\c \& は `\|\c .B \-G\c \&\|' オプションを受け付けます (そして これをシステムリンカに渡します)。これは他のコンパイラとの互換性のためです。 しかし、リンカオプションを \c .B gcc のコマンドラインから渡すよりも、我々は `\|\c .B \-symbolic\c \&\|' または `\|\c .B \-shared\c \&\|' の使用が適当であると考えています。 .TP .B \-Qy コンパイラが使用したそれぞれのツールのバージョンを .B .ident\c \& アセンブラディレクティブを使用して、出力で明示します。 .TP .B \-Qn .B .ident\c \& ディレクティブを出力に加えることを抑制します (これは デフォルトです)。 .TP .BI "\-YP," "dirs" `\|\c .B \-l\c \&\|' で指定されたライブラリに対して、 .I dirs\c で規定されたディレクトリのみを検索し、他は検索しません。 .I dirs\c \& 中は、1 つのコロンで区切ることにより、 複数のディレクトリエントリを記述します。 .TP .BI "\-Ym," "dir" M4 プリプロセッサを \c .I dir\c \& に検索します。アセンブラがこのオプションを使用します。 .SH コード生成オプション これらのマシン独立オプションは、 コード生成にて使用されるインタフェース規約を制御します。 .PP これらのほとんどは `\|\c \-f\c \&\|' で始まります。これらのオプションは有効形式と無効形式の 2 つの形式を持っ ています。`\|\c .B \-ffoo\c \&\|' の無効形式は `\|\c .B \-fno\-foo\c \&\|' です。以下に挙げる表においては、このうち、デフォルトではない片 方のみが挙げられています。`\|\c .B no\-\c \&\|' を追加するか、削除するかによって双方の形式を得ることができます。 .TP .B \-fnonnull\-objects 参照型によって参照されるオブジェクトはヌルでないと仮定します (C++ のみ)。 .Sp 通常は GNU C++ は参照型によって参照されるオブジェクトに関しては保守的 な仮定を行います。例えば、コンパイラは \c .B a が以下のコードにおいてヌルでないことをチェックする必要があります。 .Sp obj &a = g (); a.f (2); .Sp この種の参照がヌルでないことのチェックは、特別なコードを必要とします。 しかし、これは多くのプログラムにとって無用なものです。 このヌルに対するチェックを必要のない場合 `\|\c .B \-fnonnull-objects\c \&\|' を使用することにより、省略することができます。 .TP .B \-fpcc\-struct\-return .B struct\c \& と \c .B union の値を返す場合に、普通の C コンパイラが行なうのと同じ規約を使用します。 この規約は小規模な構造体に対して非効率なものとなり、また多くのマシンでその 関数を再入不可能としてしまいます。しかしこれは、GCC でコンパイルされたコード と PCC でコンパイルされたコードを相互に呼び出すことを可能とするとい う利点を持ちます。 .TP .B \-freg\-struct\-return .B struct と .B union の値を返す場合に、可能な場合はレジスタを使用する規約を使用します。これは .BR \-fpcc\-struct\-return を使用した場合と比較して、小さな構造体を返す場合に高い性能を発揮します。 .Sp .B \-fpcc\-struct\-return と .BR \-freg\-struct\-return のどちらも使用しなかった場合には、GNU CC は各ターゲットに対して標準で あると考えられる規約をデフォルトとして使用します。 もし標準規約がなかった場合は、 .BR \-fpcc\-struct\-return をデフォルトとして使用します。 .TP .B \-fshort\-enums .B enum\c \& 型に対して、ちょうど取り得る値の範囲に応じたバイト数の型を与えます。 具体的には、\c .B enum\c \& 型は、その値域を格納するに十分な最小の整数型と等価になります。 .TP .B \-fshort\-double .B double を .B float \& と同サイズにします。 .TP .B \-fshared\-data データと非 \c .B const\c \& 変数を、プライベートなデータではなく、共有データとしてコンパイルします。 このオプションは、走行中の同じプログラム間は共有データが共有され、 プライベートデータがそれぞれのプロセスに 1 つずつ与えられるような一部 のオペレーティングシステムで意味を持ちます。 .TP .B \-fno\-common bss セクション中の初期化されていないグローバル変数に対してでも、共通ブロック に生成するのではなく、領域を割り当てます。このオプションは、(\c .B extern\c \& をつけずに) 同一の変数を宣言した 2 つのコンパイルに対して、リンク時 にエラーを発生するという効果があります。このオプションは、常にこのような動 作を行なうシステムにおいても、プログラムが正常に動作するかどうかを検査 する場合にのみ有用です。 .TP .B \-fno\-ident `\|\c .B #ident\c \&\|' ディレクティブを無視します。 .TP .B \-fno\-gnu\-linker (C++ のコンストラクタとデストラクタのような) グローバルな初期化のコードを (GNU リンカがこれらを扱う標準のシステムであるようなシステムにおいて) GNU リンカで使用される形式で出力しません。これは GNU リンカではない リンカを使用する場合に指定します。この場合、 .B collect2\c \& を使用して、確実にシステムリンカにコンストラクタとデストラクタを含 んだコードを出力させる必要があります。(\c .B collect2\c \& は GNU CC のディストリビューションに含まれます。) \c .B collect2 \c を\c .I 必ず使用しなければならない\c \& システムにおいては、 コンパイラドライバ \c .B gcc\c \& は自動的にそのようにコンフィギュレーションされます。 .TP .B \-finhibit-size-directive .B .size\c アセンブラディレクティブなど、関数が途中で分割され、メモリ上の異なった 位置にそれぞれの部分が配置されるような場合に不都合が生じるような要素を 出力しません。このオプションは `\|\c .B crtstuff.c\c \&\|' をコンパイルする時に使用されます。それ以外の場所ではこれを使用する 必要はありません。 .TP .B \-fverbose-asm 出力のアセンブラ中に特別なコメント情報を追加し、可読性を高めます。この オプションは一般的には、出力のアセンブラコードを本当に読みたい場合 (例え ばコンパイラ自身をデバッグしているような場合) にのみ効果があります。 .TP .B \-fvolatile ポインタによるメモリの参照を全て volatile として扱います。 .TP .B \-fvolatile\-global 外部変数やグローバルデータアイテムへのメモリ参照を全て volatile として 扱います。 .TP .B \-fpic このオプションがターゲットマシンでサポートされていれば、位置独立なコードを 出力します。このオプションは共有ライブラリでの使用に適します。 .TP .B \-fPIC このオプションがターゲットマシンでサポートされていれば、位置独立なコードを 出力します。このオプションはダイナミックリンクに適しており、分岐にお いて大きなディスプレースメントを要求する場合にも適応します。 .TP .BI "\-ffixed\-" "reg" 名前が \c .I reg\c \& のレジスタを固定レジスタとして扱います。生成されたコードはこのレジスタ を参照しません (ただし、スタックポインタ、フレームポインタ、その他固定用 途の場合を除きます)。 .Sp .I reg\c \& はレジスタ名でなければなりません。受け付けられるレジスタ名はマシン固 有であり、マシン記述マクロファイル内の \c .B REGISTER_NAMES マクロに記述されたものです。 .Sp このフラグは無効形式を持ちません。なぜなら、これは 3 通りの指定が可能で あるからです。 .TP .BI "\-fcall\-used\-" "reg" 名前が \c .I reg\c \& のレジスタを、関数呼び出しによって破壊される割り当て可能のレジスタ として取り扱います。これは、関数呼び出しを跨いで存在しない一時領域や変数 として割り当ることができます。この指定でコンパイルされた関数は、レジスタ \c .I reg\c \& の保存や復帰を行いません。 .Sp このフラグをマシンの実行モデルにおいて、ある固定的で特殊な役割を持って いるレジスタ、例えばスタックポインタやフレームポインタに対して適用する ことは、破滅的な結果を生みます。 .Sp このフラグは無効形式を持ちません。なぜなら、これは 3 通りの指定が可能で あるからです。 .TP .BI "\-fcall\-saved\-" "reg" 名前が \c .I reg\c \& のレジスタを、関数によって保存される割り当て可能なレジスタとして取 り扱います。これは、関数呼び出しを跨いで存在する一時領域や変数としても割り 当てることができます。この指定でコンパイルされた関数は、レジスタ \c .I reg\c \& を使用する場合、その保存と復帰を行います。 .Sp このフラグをマシンの実行モデルにおいて、ある固定的で特殊な役割を持って いるレジスタ、例えばスタックポインタやフレームポインタに対して適用する ことは、破滅的な結果を生みます。 .Sp また、このフラグを関数の返り値が格納されるレジスタに使用すると、これも 破滅的な結果を生みます。 .Sp このフラグは無効形式を持ちません。なぜなら、これは 3 通りの指定が可能で あるからです。 .SH プラグマ 2 つの `\|\c .B #pragma\c \&\|' ディレクティブ(指令)が GNU C++ によってサポートされています。これは、1 つのヘッダファイルを 2 つの目的、つまりあるオブジェクトクラスのための インタフェースの定義としての目的と、オブジェクトクラスに含まれる内容 の完全な定義としての目的の、両方の目的で使用するためのものです。 .TP .B #pragma interface (C++ のみ) このディレクティブを、オブジェクトクラスを定義しているヘッダファイル中 に使用することによって、それらのクラスを使用するほとんどのオブジェクト ファイルの大きさを減少させることができます。通常は、 特定の情報 (インラインメンバ関数のバックアップコピー、デバッグ情報、 仮想関数実現のための内部テーブル) の複製がそのクラス定義をインクルードした それぞれのオブジェクトファイル中に置かれます。 このプラグマを使用することによって、このような複製を防ぐことが 可能となります。`\|\c .B #pragma interface\c \&\|' を含んだヘッダファイルをインクルードした場合は、これらの追加情報 は生成されません (ただし、メインの入力ソースファイル自身が `\|\c .B #pragma implementation\c \&\|' を含んでいる場合を除きます)。そのかわり、オブジェクトファイルは リンク時に解決される参照を含むことになります。 .TP .B #pragma implementation .TP \fB#pragma implementation "\fP\fIobjects\fP\fB.h"\fP (C++ のみ) インクルードされたヘッダファイルによる完全な出力を生成させたい (またそ れをグローバルに可視化したい) 場合には、メインの入力ファイル中でこの プラグマを使用します。この場合、インクルードされるヘッダファイルは、`\|\c .B #pragma interface\c \&\|' を使用していなければなりません。インライン関数のバックアップ情報、 デバッグ情報、仮想関数実現用の内部テーブルは、全てインプリメンテーション ファイル中に生成されます。 .Sp `\|\c .B #pragma implementation\c \&\|' を、引数をつけずに使用した場合は、これはそのソースファイルと同じ ベースネーム(basename)を持つファイルに対して適用されます。例えば、`\|\c .B allclass.cc\c \&\|' 中の `\|\c .B #pragma implementation\c \&\|' は、`\|\c .B #pragma implementation \*(lqallclass.h\*(rq \c \&\|' と等価です。もし複数のヘッダファイルに対して、 1 つのインプリメンテーションファイルを対応させたい場合は、 文字列の引数を使用する必要があります。 .Sp 1 つのヘッダファイルに対して、複数のインプリメンテーションファイルを対 応させる方法はありません。 .SH 関連ファイル .nf .ta \w'LIBDIR/g++\-include 'u file.c C 言語ソースファイル file.h C 言語ヘッダ (プリプロセッサ) ファイル file.i プリプロセス済みの C 言語ソースファイル file.C C++ ソースファイル file.cc C++ ソースファイル file.cxx C++ ソースファイル file.m Objective-C ソースファイル file.s アセンブリ言語ファイル file.o オブジェクトファイル a.out リンクエディット済みの出力 \fITMPDIR\fR/cc\(** 一時ファイル群 \fILIBDIR\fR/cpp プリプロセッサ \fILIBDIR\fR/cc1 C 言語コンパイラ \fILIBDIR\fR/cc1plus C++ コンパイラ \fILIBDIR\fR/collect いくつかのマシンで必要となるリンカのフロントエンド \fILIBDIR\fR/libgcc.a GCC サブルーチンライブラリ /lib/crt[01n].o スタートアップルーチン \fILIBDIR\fR/ccrt0 C++ 用の付加的なスタートアップルーチン /lib/libc.a 標準ライブラリ、\c .IR intro (3) \c を参照 /usr/include \fB#include\fP ファイルのための標準ディレクトリ \fILIBDIR\fR/include \fB#include\fP ファイルのための GCC 標準ディレクトリ \fILIBDIR\fR/g++\-include \fB#include\fP ファイルのための付加的な g++ ディレクトリ .Sp .fi .I LIBDIR は通常 .B /usr/local/lib/\c .IR machine / version の形式を持ちます .br .I TMPDIR は環境変数 .B TMPDIR (もし使用可能ならば .B /usr/tmp を、そうでなければ .B /tmp\c \& を使用します) からとられます。 .SH "関連項目" cpp(1), as(1), ld(1), gdb(1). .br .B info \c 中の .RB "`\|" gcc "\|', `\|" cpp \|', .RB "`\|" as "\|', `\|" ld \|', .RB `\| gdb \|' \& エントリ .br .I Using and Porting GNU CC (for version 2.0)\c , Richard M. Stallman; .I The C Preprocessor\c , Richard M. Stallman; .I Debugging with GDB: the GNU Source-Level Debugger\c , Richard M. Stallman and Roland H. Pesch; .I Using as: the GNU Assembler\c , Dean Elsner, Jay Fenlason & friends; .I ld: the GNU linker\c , Steve Chamberlain and Roland Pesch. .SH バグ バグを報告する方法については、GCC マニュアルを参照してください。 .SH COPYING Copyright .if t \(co 1991, 1992, 1993 Free Software Foundation, Inc. .PP Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. .PP Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. .PP Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be included in translations approved by the Free Software Foundation instead of in the original English. .SH 作者 GNU CC に対して貢献した人々に関しては、GNU CC マニュアルを参照してください。 .SH 日本語訳 細川 達己(hosokawa@mt.cs.keio.ac.jp): NetBSD 用に翻訳 .br sakai@csl.cl.nec.co.jp, h-nokubi@nmit.mt.nec.co.jp, .br kumano@strl.nhk.or.jp, horikawa@isrd.hitachi.co.jp: FreeBSD 向けに修正, 査閲 diff --git a/ja/man/man1/ipf.1 b/ja/man/man1/ipf.1 index 6dd918ac8a..38ef22ec8b 100644 --- a/ja/man/man1/ipf.1 +++ b/ja/man/man1/ipf.1 @@ -1,119 +1,120 @@ .TH IPF 1 -.\" jpman %Id: ipf.1,v 1.2 1998/10/09 17:00:20 horikawa Stab % +.\" jpman %Id: ipf.1,v 1.3 1998/10/15 12:27:39 kuma Stab % .SH 名称 ipf \- IP パケット入出力用のパケットフィルタリストを変更する .SH 書式 .B ipf [ .B \-AdDEInorsUvyzZ ] [ .B \-l ] [ .B \-F ] .B \-f <\fIfilename\fP> [ .B \-f <\fIfilename\fP> [...]] .SH 解説 .PP \fBipf\fP は列挙されたファイルをオープンし ("\-" は標準入力として扱います)、 そのファイルを解釈して、 パケットフィルタルールセットに対し追加または削除するルールセットを求めます。 .PP \fBipf\fP が処理する各ルールは、解釈に問題がなければ、 カーネル内部のリストに追加されます。 -ルールは内部リストの最後に追加され、 -\fBipf\fP に与えられた時の出現順にマッチが行われます。 +ルールは、\fBipf\fP に与えられた時の出現順に一致する順序で +内部リストの最後に追加されます。 .SH オプション .TP .B \-A リストを、動作中のリストに変更を加えるものとします (デフォルト)。 .TP .B \-d デバッグモードをオンにします。 各フィルタルールを処理するごとに、フィルタルールの 16 進数ダンプを作成します。 .TP .B \-D -(有効な場合) フィルタを無効にします。 +(フィルタが有効な場合) フィルタを無効にします。 ローダブルカーネルバージョンでは動作しません。 .TP .B \-E -(無効な場合) フィルタを有効にします。 +(フィルタが無効な場合) フィルタを有効にします。 ローダブルカーネルバージョンでは動作しません。 .TP .BR \-F \0 このオプションは、どのフィルタリストを捨てるのかを指定します。 パラメータは、"i" (input; 入力), "o" (output; 出力), "a" (all; 全フィルタルールの除去) のいずれかです。 -単一レターまたは適切なレターで開始する語全体のどちらでもかまいません。 +レター一文字でも、またはそのレターで開始する語でも +どちらを用いてもかまいません。 実行オプションを指定するコマンドラインにおいて、 このオプションの位置は他のオプションの前でも後でもかまいません。 .TP .BR \-f \0 このオプションは、パケットフィルタルールリストを変更するための入力を、 \fBipf\fP がどのファイルから得るのかを指定します。 .TP .B \-I リストを、動作中ではないリストに変更を加えるものとします。 .TP .B \-l \0 \fB-l\fP フラグを使用すると、パケットのデフォルトログ動作を切り替えます。 このオプションに対する有効な引数は、 \fBpass\fP, \fBblock\fP, \fBnomatch\fP のいずれかです。 オプションが設定されたとき、 フィルタリングから抜け出した、 いずれかの分類にマッチするパケットは、ログされます。 これが最も有用なのは、 ロードしたルールのいずれにもマッチしなかった全パケットをログする場合です。 .TP .B \-n このフラグ (無変更) は、\fBipf\fP が実際に ioctl を呼び出すことと、 現在実行中のカーネルを変更することを妨げます。 .TP .B \-o (デフォルトの) 入力リストに対してではなく、 出力リストに対してデフォルトでルールを追加/削除するように強制します。 .TP .B \-r マッチするフィルタルールを、内部リストに追加するのではなく、削除します。 .TP .B \-s 使用中の活動フィルタリストを「他」のものと交換します。 .TP .B \-U (SOLARIS 2 のみ) IP パケットとしては認識されないような データストリームを伴っているパケットをブロックします。 このようなパケットはコンソールに表示されます。 .TP .B \-v 冗長モードをオンにします。ルール処理に関する情報を表示します。 .TP .B \-y (SOLARIS 2 のみ) IP フィルタが管理しているカーネル内インタフェースリストと、 現在のインタフェース状態リストとを、手動で再同期します。 .TP .B \-z 入力ファイル中の各ルールに対し、統計情報を 0 にリセットし、 0 にする前の統計情報を表示します。 .TP .B \-Z フィルタリングのみに使用されるカーネル内全体統計情報を 0 にします (断片化と状態の統計には無関係です)。 .DT .SH 関連項目 ipfstat(1), ipftest(1), ipf(5), mkfilters(1) .SH 診断 .PP -カーネル内の実際のパケットフィルタリストを更新するには、 +カーネル内のパケットフィルタリストを実際に更新するには、 root として実行する必要があります。 .SH バグ .PP バグをみつけたら、darrenr@cyber.com.au に電子メールを送ってください。 diff --git a/ja/man/man1/ipftest.1 b/ja/man/man1/ipftest.1 index c4afa4518b..6dc2526217 100644 --- a/ja/man/man1/ipftest.1 +++ b/ja/man/man1/ipftest.1 @@ -1,133 +1,135 @@ .TH ipftest 1 -.\" jpman %Id: ipftest.1,v 1.2 1998/10/09 17:01:23 horikawa Stab % +.\" jpman %Id: ipftest.1,v 1.3 1998/10/15 13:05:45 kuma Stab % .SH 名称 ipftest \- 任意の入力に対してパケットフィルタルールをテストする .SH 書式 .B ipftest [ .B \-vbdPSTEHX ] [ .B \-I interface ] .B \-r [ .B \-i ] .SH 解説 .PP -\fBipftest\fP の提供の目的は、動作中に、 -フィルタルール集合をあるべき場所に置く必要なくテスト可能とすることであり、 -フィルタルールの効果をテストします。 -また、安全な IP 環境提供への影響を最小化することを望みます。 +\fBipftest\fP は、 +フィルタルール集合をあるべき場所に置かずにテストできるようにする +ために提供されています。 +これは動作して、フィルタルールの効果をテストします。 +安全な IP 環境を提供するに際し、混乱を最小にできればよいということです。 .PP \fBipftest\fP は、\fBipf\fP の標準ルールセットを解釈し、 これを入力に対して適用し、結果として出力を返します。 しかし、フィルタを通過したパケットに対して \fBipftest\fP が返すのは、 次の 3 つの値のうちの 1 つです: pass, block, nomatch。 これは、 パケットがフィルタルールセットを通過するにあたって何が発生しているのかに関し、 オペレータの理解を助けることを意図しています。 .PP \fB\-S\fP, \fB\-T\fP, \fB\-E\fP のいずれのオプションも使用しない場合、 \fBipftest\fP は固有のテキスト入力フォーマットを使用し、 「擬似」IP パケットを生成します。 使用するフォーマットは次のとおりです: .nf "in"|"out" "on" if ["tcp"|"udp"|"icmp"] srchost[,srcport] dsthost[,destport] [FSRPAU] .fi .PP -インタフェース (if) にて、 +あるインタフェース (if) にて、 入る ("in") または出る ("out") パケットを生成できます。 -オプションとして 3 つの主なるプロトコルから 1 つを選択できます。 -TCP または UDP の場合、ポートパラメータも指定が必要です。 -TCP が選択された場合、(オプションとして) 最後の TCP フラグを指定可能です。 -以下に数例示します: +オプションとして主要プロトコル 3 つの中から 1 つを選択できます。 +TCP または UDP の場合、ポートパラメータの指定も必要です。 +TCP が選択された場合、(オプションとして) 最後に TCP フラグを指定可能です。 +以下に例を数個示します: .nf # le0 に到着する UDP パケット in on le0 udp 10.1.1.1,2210 10.2.1.5,23 # localhost から le0 に到着する IP パケット - うーむ :) in on le0 localhost 10.4.12.1 # SYN フラグを設定されて le0 から出て行く TCP パケット out on le0 tcp 10.4.12.1,2245 10.1.1.1,23 S .fi .SH オプション .TP .B \-v 冗長モード。 通過したまたはしなかった入力パケットに対して -ルールのどの部分がマッチしたのかに関し、更なる情報を提供します。 +ルールのどの部分がマッチしたのかに関し、より詳しい情報を提供します。 .TP .B \-d フィルタルールデバッグをオンにします。 -現在、IP ヘッダチェックにおいて、ルールが マッチしなかった理由のみを表示します +現在は、IP ヘッダチェックにおいて、ルールがマッチしなかった理由を表示 +するだけです (アドレス/ネットマスクなど)。 .TP .B \-b パケットをフィルタに通した結果の出力を、短いまとめ (1 語)、 すなわち "pass", "block", "nomatch" のいずれかにします。 後戻りして確認する際に使用します。 .TP .BR \-I \0 (ルールのマッチに使用される) インタフェース名を、指定された名前に設定します。 この方法無しにはパケットとインタフェースとを関連付けられない、 \fB\-P\fR, \fB\-S\fR, \fB\-T\fP, \fB\-E\fP の各オプションにおいて有用です。 通常の「テキストパケット」は、この設定に優先します。 .TP .B \-P \fB\-i\fP で指定される入力ファイルは、 libcap (すなわち tcpdump バージョン 3) が生成したバイナリファイルです。 このファイルから読まれたパケットは、(ルールに対する) 入力になります。 インタフェースは \fB\-I\fP で指定可能です。 .TP .B \-S 入力ファイルは「スヌープ」フォーマット (RFC 1761 参照) です。 パケットはこのファイルから読み取られ、 任意のインタフェースからの入力として使用されます。 おそらく現在のところ、これが最も有用な入力タイプでしょう。 .TP .B \-T 入力ファイルは tcpdump のテキスト出力です。 現在サポートされているテキストフォーマットは、 次の tcpdump オプションの組み合わせの出力です: .PP .nf tcpdump -n tcpdump -nq tcpdump -nqt tcpdump -nqtt tcpdump -nqte .fi .LP .TP .B \-H 入力ファイルは16 進数であり、パケットのバイナリ構造を表現する必要があります。 IP ヘッダの長さが正しくなくても、長さは補正されません。 .TP .B \-X 入力ファイルは IP パケットのテキスト記述からなります。 .TP .B \-E 入力ファイルは etherfind のテキスト出力です。 現在サポートされているテキストフォーマットは、 次の etherfind オプションの組み合わせの出力です: .PP .nf etherfind -n etherfind -n -t .fi .LP .TP .BR \-i \0 入力を得るファイル名を指定します。デフォルトは標準入力です。 .TP .BR \-r \0 フィルタルールを読み取るファイル名を指定します。 .SH 関連項目 ipf(5), ipf(8), snoop(1m), tcpdump(8), etherfind(8c) .SH バグ 入力形式によっては、テストに有用なことがらすべてをカバーできるほど 十分に多種多様なパケットを表現できません。 diff --git a/ja/man/man1/ipnat.1 b/ja/man/man1/ipnat.1 index ae6aa7edfe..3a7858665e 100644 --- a/ja/man/man1/ipnat.1 +++ b/ja/man/man1/ipnat.1 @@ -1,51 +1,52 @@ .TH IPNAT 1 -.\" jpman %Id: ipnat.1,v 1.2 1998/10/09 17:03:16 horikawa Stab % +.\" jpman %Id: ipnat.1,v 1.3 1998/10/15 13:17:52 kuma Stab % .SH 名称 ipnat \- NAT のユーザインタフェース .SH 書式 .B ipnat [ .B \-lnrsvCF ] .B \-f <\fIfilename\fP> .SH 解説 .PP \fBipnat\fP は列挙されたファイルをオープンし ("\-" は標準入力として扱います)、 そのファイルを解釈して、 IP NAT に対し追加または削除するルールセットを求めます。 .PP \fBipnat\fP が処理する各ルールは、解釈に問題がなければ、 カーネル内部のリストに追加されます。 -ルールは内部リストの最後に追加され、 -\fBipnat\fP に与えられた時の出現順にマッチが行われます。 +ルールは、\fBipnat\fP に与えられた時の出現順に一致する順序で +内部リストの最後に追加されます。 .SH オプション .TP .B \-C 現在の NAT リスト (NAT ルール) から全エントリを除去します。 .TP .B \-F 現在の NAT テーブル中のすべての活動エントリ -(現在活動状況の NAT マッピング) +(現在活動状態の NAT マッピング) を除去します。 .TP .B \-l 現在の NAT テーブルエントリマッピングのリストを表示します。 .TP .B \-n -このフラグ (無変更) は、\fBipf\fP が実際に ioctl を呼び出すことと、 +このフラグ (無変更) は、\fBipnat\fP が実際に ioctl を呼び出すことと、 現在実行中のカーネルを変更することを妨げます。 .\" ipf -> ipnat だと思う +.\" ipnat にしときました(kuma) .TP .B \-s NAT 統計を取り出して表示します。 .TP .B \-r マッチする NAT ルールを、内部リストに追加するのではなく、削除します。 .TP .B \-v 冗長モードをオンにします。ルール処理に関する情報を表示します。 .DT .SH 関連ファイル /dev/ipnat .SH 関連項目 ipnat(5), ipf(8), ipfstat(8) diff --git a/ja/man/man1/ipresend.1 b/ja/man/man1/ipresend.1 index 9c5008c59c..8a94cd2c86 100644 --- a/ja/man/man1/ipresend.1 +++ b/ja/man/man1/ipresend.1 @@ -1,106 +1,110 @@ .TH IPRESEND 1 -.\" jpman %Id: ipresend.1,v 0.0 1998/09/12 16:02:08 horikawa Stab % -.SH NAME -ipresend \- resend IP packets out to network -.SH SYNOPSIS +.\" jpman %Id: ipresend.1,v 1.3 1998/10/12 11:29:16 horikawa Stab % +.\" +.\" WORD: root root (スーパユーザのこと、「ルート」とカナ書きにしない) +.\" +.SH 名称 +ipresend \- IP パケットをネットワークに再送する +.SH 書式 .B ipsend [ .B \-EHPRSTX ] [ .B \-d ] [ .B \-g <\fIgateway\fP> ] [ .B \-m <\fIMTU\fP> ] [ .B \-r <\fIfilename\fP> ] -.SH DESCRIPTION +.SH 解説 .PP -\fBipresend\fP was designed to allow packets to be resent, once captured, -back out onto the network for use in testing. \fIipresend\fP supports a -number of different file formats as input, including saved snoop/tcpdump -binary data. -.SH OPTIONS +\fBipresend\fP は、テストの際に、一度受理したパケットを、ネットワークに対して +再送することができるようにするために設計されました。\fIipresend\fP は、 +入力として、snoop/tcpdump がセーブしたバイナリデータを含む、 +いくつかのファイル形式をサポートしています。 +.SH オプション .TP .BR \-d \0 -Set the interface name to be the name supplied. This is useful with the -\fB\-P, \-S, \-T\fP and \fB\-E\fP options, where it is not otherwise possible -to associate a packet with an interface. Normal "text packets" can override -this setting. +指定した名前をインタフェース名として設定します。 +これは \fB\-P, \-S, \-T, \-E\fP オプションとともに、つまり、 +インタフェースの指定なしではパケットをあるインタフェースに対応付け +できない場合に使用すると有益です。普通の「テキストパケット」は +この設定を上書きすることがあります。 .TP .BR \-g \0 -Specify the hostname of the gateway through which to route packets. This -is required whenever the destination host isn't directly attached to the -same network as the host from which you're sending. +パケットを通すゲートウェイのホスト名を指定します。送出しようとする +ホストと同一のネットワークに直接接続されていないホストを終点とする場合は、 +つねにこのオプションが必要です。 .TP .BR \-m \0 -Specify the MTU to be used when sending out packets. This option allows you -to set a fake MTU, allowing the simulation of network interfaces with small -MTU's without setting them so. +パケットを送出する際に使用する MTU を指定します。このオプションを +使うことで、実際と異なる MTU を設定することができます。これにより、 +実際にネットワークインタフェースの MTU を小さく設定しなくても、 +小さな MTU を持つインタフェースをシミュレートすることができます。 .TP .BR \-r \0 -Specify the filename from which to take input. Default is stdin. +入力を得るファイル名を指定します。デフォルトは標準入力です。 +.TP .B \-E -The input file is to be text output from etherfind. The text formats which -are currently supported are those which result from the following etherfind -option combinations: +入力ファイルの形式を etherfind のテキスト出力と想定します。 +現在サポートされているテキスト形式は、次の etherfind オプションの +組み合わせの結果生成されるものです。 .PP .nf etherfind -n etherfind -n -t .fi .LP .TP .B \-H -The input file is to be hex digits, representing the binary makeup of the -packet. No length correction is made, if an incorrect length is put in -the IP header. +入力ファイルの形式を、パケットを形成するバイナリデータを表す 16 進数と +想定します。IP ヘッダに間違った長さが置かれていても、長さ補正は +行ないません。 .TP .B \-P -The input file specified by \fB\-i\fP is a binary file produced using libpcap -(i.e., tcpdump version 3). Packets are read from this file as being input -(for rule purposes). +\fB\-i\fP で指定した入力ファイルは libpcap (すなわち tcpdump バージョン 3) +を用いて生成されたバイナリファイルです。このファイルからパケットが +入力として読み込まれます(よく使われます)。 .TP .B \-R -When sending packets out, send them out "raw" (the way they came in). The -only real significance here is that it will expect the link layer (i.e. -ethernet) headers to be prepended to the IP packet being output. +パケットを送出する際に、生データとして (受信したそのままを) 送出します。 +ここで本当に重要なことは、送出する IP パケットの前に +リンク層 (つまりイーサネット) ヘッダを付けることが必要なことです。 .TP .B \-S -The input file is to be in "snoop" format (see RFC 1761). Packets are read -from this file and used as input from any interface. This is perhaps the -most useful input type, currently. +入力ファイルの形式を、"snoop" の形式 (RFC 1761 参照) と想定します。 +パケットはこのファイルから読み込まれ、どのインタフェースの入力としても +用いられます。現在では最も有益な形式でしょう。 .TP .B \-T -The input file is to be text output from tcpdump. The text formats which -are currently supported are those which result from the following tcpdump -option combinations: +入力ファイルの形式を、tcpdump のテキスト出力形式と想定します。 +現在サポートされているテキスト形式は、以下の tcpdump オプションの組み合わせの +結果生成されるものです。 .PP .nf tcpdump -n tcpdump -nq tcpdump -nqt tcpdump -nqtt tcpdump -nqte .fi .LP .TP .B \-X -The input file is composed of text descriptions of IP packets. -.TP -.SH SEE ALSO +入力ファイルは、IP パケットのテキスト記述からなります。 +.SH 関連項目 snoop(1m), tcpdump(8), etherfind(8c), ipftest(1), ipresend(1), iptest(1), bpf(4), dlpi(7p) -.SH DIAGNOSTICS +.SH 診断 .PP -Needs to be run as root. -.SH BUGS +root で実行する必要があります。 +.SH バグ .PP -Not all of the input formats are sufficiently capable of introducing a -wide enough variety of packets for them to be all useful in testing. -If you find any, please send email to me at darrenr@pobox.com - +入力形式によっては、テストに有益なことがらすべてをカバーできるほど +十分に多種多様なパケットを表現できません。 +なにかお気づきの点があれば、darrenr@pobox.com までメール下さい。 diff --git a/ja/man/man1/ipsend.1 b/ja/man/man1/ipsend.1 index 3daf132eae..2e977f8807 100644 --- a/ja/man/man1/ipsend.1 +++ b/ja/man/man1/ipsend.1 @@ -1,110 +1,113 @@ .TH IPSEND 1 -.\" jpman %Id: ipsend.1,v 0.0 1998/09/12 16:02:09 horikawa Stab % +.\" jpman %Id: ipsend.1,v 1.3 1998/10/12 11:29:47 horikawa Stab % .SH NAME -ipsend \- sends IP packets -.SH SYNOPSIS +ipsend \- IP パケットを送信する +.SH 書式 .B ipsend [ .B \-dITUv ] [ .B \-i ] [ .B \-f <\fIoffset\fP> ] [ .B \-g <\fIgateway\fP> ] [ .B \-m <\fIMTU\fP> ] [ .B \-o <\fIoption\fP> ] [ .B \-P ] [ .B \-s <\fIsource\fP> ] [ .B \-t <\fIdest. port\fP> ] [ .B \-w <\fIwindow\fP> ] [TCP-flags] -.SH DESCRIPTION +.SH 解説 .PP -\fBipsend\fP can be compiled in two ways. The first is used to send one-off -packets to a destination host, using command line options to specify various -attributes present in the headers. The \fIdestination\fP must be given as -the last command line option, except for when TCP flags are specified as -a combination of A, S, F, U, P and R, last. +\fBipsend\fP は 2 種類の方法でコンパイルされている可能性があります。最初 +の方法は、コマンド行オプションを用いてさまざまな属性値をヘッダに入れた、 +一度だけのパケットを終点のホストに向けて送信するために用いられます。 +TCP フラグが A, S, F, U, P, R の組み合わせとして最後に指定される場合を除く +と、\fIdestionation\fP は最後のコマンド行オプションとして指定する必要 +があります。 .PP -The other way it may be compiled, with DOSOCKET defined, is to allow an -attempt at making a TCP connection using a with ipsend resending the SYN -packet as per the command line options. -.SH OPTIONS +もう一つの方法は、コンパイルの際に DOSOCKET が定義されている場合ですが、 +コマンド行オプションの指定により ipsend で SYN パケットを再送して、TCP +コネクションを作成しようとすることを可能とするために使用します。 +.SH オプション .TP .BR \-d -enable debugging mode. +デバッグモードを有効にします。 .TP .BR \-f \0 -The \fI-f\fP allows the IP offset field in the IP header to be set to an -arbitrary value, which can be specified in decimal or hexidecimal. +\fI-f\fP を指定することにより、IP ヘッダの IP オフセットフィールドに +任意の値を設定することができます。この値は 10 進数または 16 進数で +指定することができます。 .TP .BR \-g \0 -Specify the hostname of the gateway through which to route packets. This -is required whenever the destination host isn't directly attached to the -same network as the host from which you're sending. +パケットを通すゲートウェイのホスト名を指定します。送出しようとする +ホストと同一のネットワークに直接接続されていないホストを終点とする場合は、 +つねにこのオプションが必要です。 .TP .BR \-i \0 -Set the interface name to be the name supplied. +指定した名前をインタフェース名として設定します。 .TP .TP .BR \-m \0 -Specify the MTU to be used when sending out packets. This option allows you -to set a fake MTU, allowing the simulation of network interfaces with small -MTU's without setting them so. +パケットを送出する際に使用する MTU を指定します。このオプションを +使うことで、実際と異なる MTU を設定することができます。これにより、 +実際にネットワークインタフェースの MTU を小さく設定しなくても、 +小さな MTU を持つインタフェースをシミュレートすることができます。 .TP .BR \-o \0