File:  [Local Repository] / gnujdoc / gengetopt-2.14 / gengetopt-ja.texi
Revision 1.1: download - view: text, annotated - select for diffs
Fri Oct 28 13:07:30 2005 UTC (15 years ago) by futoshi
Branches: MAIN
CVS tags: HEAD
Add gengetopt-2.14.

    1: \input texinfo.tex      @c -*-texinfo-*-*
    2: 
    3: @c Copyright (C) 2001-2005  Free Software Foundation, Inc.
    4: @c
    5: @c This file is part of GNU gengetopt 
    6: @c
    7: @c GNU gengetopt is free software; you can redistribute it and/or modify 
    8: @c it under the terms of the GNU General Public License as published by 
    9: @c the Free Software Foundation; either version 2, or (at your option) 
   10: @c any later version. 
   11: @c
   12: @c GNU gengetopt is distributed in the hope that it will be useful, but 
   13: @c WITHOUT ANY WARRANTY; without even the implied warranty of 
   14: @c MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
   15: @c Public License for more details. 
   16: @c
   17: @c You should have received a copy of the GNU General Public License along 
   18: @c with gengetopt; see the file COPYING. If not, write to the Free Software 
   19: @c Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 
   20: 
   21: @c %**start of header
   22: @setfilename gengetopt-ja.info
   23: @include gengetopt-v.texi
   24: @settitle GNU Gengetopt @value{VERSION}
   25: @finalout
   26: @c @setchapternewpage odd
   27: @c %**end of header
   28: 
   29: @c @documentlanguage ja
   30: 
   31: @set myhomepage @uref{http://www.lorenzobettini.it}
   32: 
   33: @ifinfo
   34: This file documents GNU Gengetopt, a tool to write option parsers for C programs.
   35: 
   36: This edition is for Gengetopt version @value{VERSION}.
   37: 
   38: Copyright @copyright{} 2001-2005 Free Software Foundation, Inc.
   39: 
   40: Permission is granted to make and distribute verbatim copies of
   41: this manual provided the copyright notice and this permission notice
   42: are preserved on all copies.
   43: 
   44: @ignore
   45: Permission is granted to process this file through TeX and print the
   46: results, provided the printed document carries copying permission
   47: notice identical to this one except for the removal of this paragraph
   48: (this paragraph not being relevant to the printed manual).
   49: 
   50: @end ignore
   51: Permission is granted to copy and distribute modified versions of this
   52: manual under the conditions for verbatim copying, provided that the entire
   53: resulting derived work is distributed under the terms of a permission
   54: notice identical to this one.
   55: 
   56: Permission is granted to copy and distribute translations of this manual
   57: into another language, under the above conditions for modified versions,
   58: except that this permission notice may be stated in a translation approved
   59: by the Free Software Foundation.
   60: @end ifinfo
   61: 
   62: @c @shorttitlepage Gengetopt
   63: 
   64: @titlepage
   65: @title GNU Gengetopt
   66: @subtitle An command line option parser generator
   67: @subtitle for GNU Gengetopt version @value{VERSION}
   68: @subtitle updated on @value{UPDATED-MONTH}
   69: 
   70: @author Lorenzo Bettini
   71: 
   72: @c 翻訳:西尾 太
   73: 
   74: @page
   75: @vskip 0pt plus 1filll
   76: Copyright @copyright{} 2001-2005 Free Software Foundation, Inc.
   77: 
   78: This is Edition @value{EDITION} of the Gengetopt manual.
   79: 
   80: It documents GNU Gengetopt version @value{VERSION}.
   81: 
   82: @c I don't think FSF will be printing this anytime soon :-)
   83: @c Published by the Free Software Foundation @*
   84: @c 59 Temple Place Suite 330 @*
   85: @c Boston, MA 02111-1307 @*
   86: @c USA @*
   87: @c ISBN ...
   88: 
   89: Permission is granted to make and distribute verbatim copies of
   90: this manual provided the copyright notice and this permission notice
   91: are preserved on all copies.
   92: 
   93: Permission is granted to copy and distribute modified versions of this
   94: manual under the conditions for verbatim copying, provided that the entire
   95: resulting derived work is distributed under the terms of a permission
   96: notice identical to this one.
   97: 
   98: Permission is granted to copy and distribute translations of this manual
   99: into another language, under the above conditions for modified versions,
  100: except that this permission notice may be stated in a translation approved
  101: by the Free Software Foundation.
  102: @end titlepage
  103: 
  104: @ifnottex
  105: @node Top, Audience, (dir), (dir)
  106: @top Gengetopt
  107: 
  108: @c Gengetopt is a tool to write option parsing code for C programs.
  109: @c 
  110: gengetoptは,Cプログラムのオプションを構文解析するコードを書くツールです.
  111: 
  112: @c This is Edition @value{EDITION} of the Gengetopt manual.
  113: @c 
  114: これは,gengetoptマニュアルの@value{EDITION}版です.
  115: 
  116: @c It documents GNU Gengetopt version @value{VERSION}.
  117: @c 
  118: これは,GNU gengetoptのバージョン@value{VERSION}のドキュメントです.
  119: @end ifnottex
  120: 
  121: @menu
  122: * Audience::                    What is gengetopt and who it is for.
  123: * Copying::                     Your rights.
  124: * Installation::                Download and Installation
  125: * Basic Usage::                 How to run Gengetopt; syntax of .ggo files
  126: * Invoking gengetopt::          gengetopt command line options
  127: * Terminology::                 Definitions of options, values, and so forth.
  128: * Group options::               Mutual exclusive options
  129: * Configuration files::         Parsing a configuration file
  130: * Multiple Options::            Multiple options
  131: * No getopt_long::              What if getopt_long is not available?
  132: * Bugs::                        What is lame and/or buggy in Gengetopt @value{VERSION}
  133: * Mailing Lists::               For discussions and announces
  134: * Index::                       Index.
  135: @end menu
  136: 
  137: @node Audience, Copying, Top, Top
  138: @c @unnumbered Audience
  139: @unnumbered 読者の皆様へ
  140: @cindex Audience
  141: @cindex Who should use Gengetopt
  142: 
  143: @c Gengetopt is a tool to generate C code to parse the command line
  144: @c arguments @code{argc} and @code{argv} that are part of every C or C++
  145: @c program.  The generated code uses the C library function
  146: @c @code{getopt_long} to perform the actual command line parsing.
  147: @c 
  148: gengetoptは,すべてのCやC++プログラムの一部であるコマンドライン引数
  149: @code{argc}と@code{argv}を構文解析する,Cのコードを生成するツールです.
  150: 生成されたコードは、実際にコマンドラインの構文解析を行うために,Cライブ
  151: ラリ関数の@code{getopt_long}を使用します.
  152: 
  153: @c This manual is written for C and C++ programmers, specifically the
  154: @c @emph{lazy} ones.  If you've written any non-trivial C program, you've
  155: @c had to deal with argument parsing.  It isn't particularly difficult, nor
  156: @c is it particularly exciting.  It @emph{is} one of the classic
  157: @c programming nuisances, which is why most books on programming leave it
  158: @c as an exercise for the reader.  Gengetopt can save you from this work,
  159: @c leaving you free to focus on the interesting parts of your program.
  160: @c 
  161: このマニュアルは,CとC++のプログラマに対して書かれていて,特に@emph{な
  162: まけもの}のためです.それなりのCプログラムを書いた経験があれば,引数の
  163: 構文解析を処理する必要があったことでしょう.特に難しくもありませんが,
  164: 興味深いことでもありません.それは,伝統的なプログラム行為@emph{であり},
  165: 殆どのプログラミングの書籍で読者の訓練として残されているものです.
  166: gengetoptは,この作業からあなたを解放し,プログラムの興味深い部分に集中
  167: するべく自由をあたえてくれます.
  168: 
  169: @c Thus your program will be able to handle command line options such as: 
  170: @c 
  171: このように,プログラムでは,以下のようなコマンドラインオプションを処理
  172: することが可能になるでしょう.
  173: 
  174: @example
  175: myprog --input foo.c -o foo.o --no-tabs -i 100 *.class
  176: @end example
  177: 
  178: @c And both long options (those that start with @code{--}) and short
  179: @c options (start with @code{-} and consist of only one character) can be
  180: @c handled (see @ref{Terminology} for further details). For standards about
  181: @c short and long options you may want to take a look at the GNU Coding
  182: @c Standards (@uref{http://www.gnu.org/prep/standards_toc.html}).
  183: @c 
  184: また,長いオプション(@code{--}で始まるものです)と短いオプション
  185: (@code{-}で始まり,単一の文字となっています)の両方が処理されます(詳細は
  186: @ref{Terminology}).短いオプションと長いオプションに関する標準は,GNU
  187: Coding Standards (@uref{http://www.gnu.org/prep/standards_toc.html})を
  188: 参照してください.
  189: 
  190: @c Gengetopt can also generate a function to save the command line options
  191: @c into a file (see @ref{Basic Usage}), and a function to read the command
  192: @c line options from a  file (see @ref{Configuration files}).  Of course,
  193: @c these two kinds of files are compliant.
  194: @c 
  195: gengetoptは,コマンドラインオプションをファイルに保存する関数
  196: (@ref{Basic Usage})と,コマンドラインオプションをファイルから読みこむ関
  197: 数(@ref{Configuration files}) を生成することが可能です.もちろん,これ
  198: ら二種類のファイルは標準にしたがっています.
  199: 
  200: @node Copying, Installation, Audience, Top
  201: @c @unnumbered Gengetopt Copying Conditions
  202: @unnumbered gengetoptのコピー条件
  203: @cindex Copying conditions
  204: @cindex Conditions for copying Gengetopt
  205: 
  206: @c Gengetopt is free software; you are free to use, share and modify it
  207: @c under the terms of the GNU General Public License that accompanies this
  208: @c manual.
  209: @c 
  210: gengetoptはフリーソフトウェアです.利用,共有,そして編集は,このマニュ
  211: アルに記載されているGNU General Public Licenseの元に自由にできます.
  212: 
  213: @c The code that Gengetopt generates is also free software; however it is
  214: @c licensed with a simple all-permissive license instead of the GPL or
  215: @c LGPL.  You are free to do anything you like with the generated code,
  216: @c including incorporating it into or linking it with proprietary software.
  217: @c 
  218: gengetoptが生成したコードもフリーソフトウェアです.しかし,GPLやLGPLの
  219: 代わりに,単純にすべてのことが許可されたライセンスで許可されています.
  220: 生成されたコードは,独占的なソフトウェアに組み込んだり,リンクしたりす
  221: ることも自由です.
  222: 
  223: @c Gengetopt was originally written by Roberto Arturo Tena Sanchez.   It is
  224: @c currently maintained by Lorenzo Bettini @value{myhomepage}.
  225: @c 
  226: gengetoptは,最初にRoberto Arturo Tena Sanchezによって書かれました.現
  227: 在では,Lorenzo Bettini @value{myhomepage}がメンテナンスしています.
  228: 
  229: @c A primordial version of @ref{Terminology} was written by 
  230: @c Adam Greenblatt.
  231: @c 
  232: 最初のバージョンの@ref{Terminology}は,Adam Greenblattによって書かれま
  233: した.
  234: 
  235: @node Installation, Basic Usage, Copying, Top
  236: @c @chapter Installation
  237: @chapter インストール
  238: @cindex installation
  239: @cindex download
  240: 
  241: @c See the file @file{INSTALL} for detailed building and  installation
  242: @c instructions; anyway if you're used to compiling Linux software that
  243: @c comes with sources you may simply follow the usual procedure, i.e. untar
  244: @c the file you downloaded in a directory and then:
  245: @c 
  246: ビルドとインストールの説明の詳細は,ファイル@file{INSTALL}を参照してく
  247: ださい.ソースコードが付随しているLinuxソフトウェアをコンパイルするため
  248: にとりあえず使用したい場合,以下の一般的な手順に従って下さい.つまり,
  249: 適当なディレクトリでダウンロードしたファイルを展開(untar)し,以下を実行
  250: します.
  251: 
  252: @example
  253: cd <source code main directory>
  254: ./configure
  255: make
  256: make install
  257: @end example
  258: 
  259: @c Note: unless you specify a different install directory by 
  260: @c @code{--prefix} option of
  261: @c configure (e.g. @code{./configure --prefix=<your home>}), 
  262: @c you must be root to run @code{make install}.
  263: @c 
  264: 注意:@command{configure}の@code{--prefix}オプションで,別のインストー
  265: ルディレクトリを指定していない限り(例えば,@code{./configure
  266: --prefix=<your home>}),ルートで@code{make install}を実行する必要があり
  267: ます.
  268: 
  269: @c Files will be installed in the following directories:
  270: @c 
  271: ファイルは,以下のディレクトリにインストールされます.
  272: 
  273: @table @code
  274: @c @item executables
  275: @c         @code{/prefix/bin}
  276: @c @item docs
  277: @c         @code{/prefix/share/doc/gengetopt}
  278: @c @item examples
  279: @c         @code{/prefix/share/doc/gengetopt/examples}
  280: @c @item additional files           
  281: @c         @code{/prefix/share/gengetopt}
  282: @c 
  283: @item 実行形式
  284:         @code{/prefix/bin}
  285: @item ドキュメント
  286:         @code{/prefix/share/doc/gengetopt}
  287: @item 例
  288:         @code{/prefix/share/doc/gengetopt/examples}
  289: @item 追加ファイル
  290:         @code{/prefix/share/gengetopt}
  291: @end table
  292: 
  293: @c Default value for prefix is @code{/usr/local} 
  294: @c but you may change it with @code{--prefix}
  295: @c option to configure.
  296: @c 
  297: @var{prefix}のデフォルトは@code{/usr/local}ですが,@command{configure}
  298: の@code{--prefix}オプションで変更してもかまいません.
  299: 
  300: @c @section Download
  301: @section ダウンロード
  302: @cindex download
  303: 
  304: @c You can download it from GNU's ftp site:
  305: @c @uref{ftp://ftp.gnu.org/gnu/gengetopt} or from one of its mirrors (see
  306: @c @uref{http://www.gnu.org/prep/ftp.html}).
  307: @c 
  308: GNUのFTPサイト@uref{ftp://ftp.gnu.org/gnu/gengetopt}や,そのミラーの一
  309: つ(@uref{http://www.gnu.org/prep/ftp.html}を参照してください)からダウン
  310: ロードすることが可能です.
  311: 
  312: @c I do not distribute Windows binaries anymore; since, they can be easily
  313: @c built by using Cygnus C/C++ compiler, available at
  314: @c @uref{http://www.cygwin.com}.  However, if you don't feel like
  315: @c downloading such compiler, you can request such binaries directly to me,
  316: @c by e-mail (find my e-mail at my home page) and I can send them to you.
  317: @c 
  318: Windows用のバイナリは,もはや配付していません.その理由は,
  319: @uref{http://www.cygwin.com}で利用可能なCygnus C/C++ コンパイラを使用す
  320: ることで簡単にビルドすることが可能だからです.しかし,そのようなコンパ
  321: イラのダウンロードが自由にできない場合,バイナリを直接要求することが可
  322: 能で,電子メール(ホームページでメールアドレスを探して下さい)を送っても
  323: らえればそれらを送付することが可能です.
  324: 
  325: @c Archives are digitally signed by me (Lorenzo Bettini) with GNU gpg
  326: @c (@uref{http://www.gnupg.org}). My GPG public key can be found at my home
  327: @c page (@value{myhomepage}).
  328: @c 
  329: 私(Lorenzo Bettini)の電子署名は,GNU gpg (@uref{http://www.gnupg.org})
  330: でなされていて,GPGの公開鍵はホームページ(@value{myhomepage})で見つかる
  331: はずです.
  332: 
  333: @c You can also get the patches, if they are available for a particular
  334: @c release (see below for patching from a previous version).
  335: @c 
  336: 特定のリリースが利用可能であれば,パッチの入手も可能です(以前のバージョ
  337: ンからのパッチは以下を参照してください).
  338: 
  339: @c @section Anonymous CVS Access
  340: @section 匿名でのCVSアクセス
  341: @cindex CVS
  342: 
  343: @c This project's CVS repository can be checked out through anonymous
  344: @c (pserver) CVS with the following instruction set. When prompted for a
  345: @c password for anoncvs, simply press the Enter key.
  346: @c 
  347: このプロジェクトのCVSリポジトリは,以下の手順で匿名(pserver)CVSから取り
  348: 出すことが可能です.anoncvsのパスワード入力のプロンプトでは,単純に
  349: Enterキーを押してください.
  350: 
  351: @example
  352: cvs -d:pserver:anoncvs@@subversions.gnu.org:/cvsroot/gengetopt login
  353: 
  354: cvs -z3 -d:pserver:anoncvs@@subversions.gnu.org:/cvsroot/gengetopt \
  355:   co gengetopt
  356: @end example
  357: 
  358: @c Further instructions can be found at the address:
  359: @c 
  360: それ以上の手順は,以下のアドレスで見つかるはずです.
  361: 
  362: @uref{http://savannah.gnu.org/projects/gengetopt}.
  363: 
  364: @c Please notice that this way you will get the latest development sources
  365: @c of Gengetopt, which may also be unstable.  This solution is the
  366: @c best if you intend to correct/extend this program: you should send me
  367: @c patches against the latest cvs repository sources.
  368: @c 
  369: この方法は,gengetoptの最新の開発バージョンを入手する方法で,不安定の可
  370: 能性があることに注意してください.この手法は,このプログラムを修整した
  371: り拡張したりすることが目的の場合は最適です.最新のcvsリポジトリソースへ
  372: のパッチを送ったほうが良いでしょう.
  373: 
  374: @c If, on the contrary, you want to get the sources of a given release,
  375: @c through cvs, say, e.g., version X.Y.Z, you must specify the tag
  376: @c @code{rel_X_Y_Z} when you run the cvs command or the @code{cvs update}
  377: @c command.
  378: @c 
  379: 反対に,該当するリリースのソースを入手したい場合,例えばバージョン
  380: X.Y.Zでは,cvsコマンドや@code{cvs update}コマンドを実行するとき,タグ
  381: @code{rel_X_Y_Z}を指定する必要があります.
  382: 
  383: @c When you compile the sources that you get through the cvs repository,
  384: @c before running the @code{configure} and @code{make} commands, you
  385: @c should, at least the first time, run the command:
  386: @c 
  387: cvsリポジトリから入手したソースをコンパイルするとき,@code{configure}と
  388: @code{make}コマンドの前に,少なくとも一度,以下のコマンドを実行してくだ
  389: さい.
  390: 
  391: @example
  392: sh reconf
  393: @end example
  394: 
  395: @noindent
  396: @c This will run the autotools commands in the correct order, and also copy
  397: @c possibly missing files.  You should have installed recent versions of
  398: @c @code{automake} and @code{autoconf} in order for this to succeed.
  399: @c You will also need @code{flex} and @code{bison}.
  400: @c 
  401: これで,autotoolsコマンドを正しい順序で実行し,足りない可能性があるファ
  402: イルもコピーします.これを成功させるため,最新バージョンの
  403: @code{automake}と@code{autoconf}をインストールすべきです.また,
  404: @code{flex}と@code{bison}も必要です.
  405: 
  406: @c NOTICE: This convention holds since release 2.14.
  407: @c 
  408: 注意:この慣習は,リリース2.14以降から維持されています.
  409: 
  410: @c @section What you need to build gengetopt
  411: @section gengetoptのビルドに必要なもの
  412: @cindex requirements
  413: 
  414: @c Gengetopt has been developed under GNU/Linux, using gcc (C++),
  415: @c and bison (yacc) and flex (lex), and ported under Win32 with Cygnus
  416: @c C/C++compiler, available at @uref{http://www.cygwin.com}.  I used the
  417: @c excellent GNU Autoconf and GNU Automake.  I also used Autotools
  418: @c (@uref{ftp://ftp.ugcs.caltech.edu/pub/elef/autotools}) which creates a
  419: @c starting source tree (according to GNU standards) with autoconf,
  420: @c automake starting files.
  421: @c 
  422: gengetoptは,GNU/Linuxで,gcc (C++),bison (yacc),そしてflex (lex)を使
  423: 用して開発され,また@uref{http://www.cygwin.com}で利用可能なCygnus
  424: C/C++コンパイラに移植されました.優秀なGNU AutoconfとGNU Automakeを使用
  425: しています.また,Autotools
  426: (@uref{ftp://ftp.ugcs.caltech.edu/pub/elef/autotools})も利用しており,
  427: それは(GNU標準に準拠した)ソースツリーでのautoconfとautomakeを用いたスター
  428: トファイルを生成します.
  429: 
  430: @c Moreover @emph{Gengen}
  431: @c (@uref{http://www.lorenzobettini.it/software/gengen}) is used for
  432: @c automatically generating the code that generates the command line parser.
  433: @c 
  434: さらに,@emph{Gengen}
  435: (@uref{http://www.lorenzobettini.it/software/gengen})をコマンドライン構
  436: 文解析を生成するコードの自動生成で使用しています.
  437: 
  438: @c Actually, you don't need all these tools above to build source-highlight
  439: @c because I provide generated sources, unless you want to develop
  440: @c source-highlight.
  441: @c 
  442: 実際,生成されたソースを提供しているので,ソースの重要部分を開発したい
  443: わけでは無いかぎり,ソースの重要部分をビルドするために,これらの上記の
  444: すべてのツールが必要だというわけではありません.
  445: 
  446: @c The code generated by gengetopt relies on the @code{getopt_long}
  447: @c function that is usually in the standard C library; however, there may
  448: @c be some implementations of the C library that don't include it; in this
  449: @c case you have to link the program that uses the file generated by
  450: @c gengetopt with the files @file{getopt.c} and @file{getopt1.c} and
  451: @c include @file{gnugetopt.h} in your project.  We obviously provide these
  452: @c files in the utility files directory (@file{<install
  453: @c prefix>/share/gengetopt}).  These files are part of the GNU C library.
  454: @c You may want to take a look at @code{getopt_long} man page. 
  455: @c 
  456: gengetoptで生成されるコードは,@code{getopt_long}関数に依存し,通常それ
  457: は標準のCライブラリに含まれています.しかし,それが含まれていないCライ
  458: ブラリの実装も存在する可能性があります.この状況では,プログラムをファ
  459: イル@file{getopt.c}と@file{getopt1.c}とともにgengetoptで生成されたファ
  460: イルを使用してプログラムをリンクし,プロジェクトに@file{gnugetopt.h}を
  461: 含める必要があります.我々は明示的にこれらのファイルをユーティリティファ
  462: イルのディレクトリで提供しています(@file{<install
  463: prefix>/share/gengetopt}).これらのファイルはGNU Cライブラリの一部です.
  464: @code{getopt_long}のmanページを参照してください.
  465: 
  466: @c Read also @ref{No getopt_long}, for instructions on how to check whether
  467: @c getopt_long is part of the library and how to deal with their lacking
  468: @c (using autoconf and automake).
  469: @c 
  470: @code{getopt_long}がライブラリの一部かどうかを調査する方法と,足りない
  471: 場合に(autoconfとautomakeを使用して)処理する方法の手順は,@ref{No
  472: getopt_long}も参照してください.
  473: 
  474: @c @section Patching from a previous version
  475: @section 以前のバージョンからのパッチ
  476: @cindex patching
  477: 
  478: @c If you downloaded a patch, say
  479: @c @file{gengetopt-1.3-1.3.1-patch.gz} (i.e., the patch to go from version
  480: @c 1.3 to version 1.3.1), cd to the directory with sources from the
  481: @c previous version (gengetopt-1.3) and type:  
  482: @c 
  483: @file{gengetopt-1.3-1.3.1-patch.gz} (例えば,バージョン1.3をバージョン
  484: 1.3.1に変更するパッチ)といったパッチをダウンロードした場合,ディレクト
  485: リを以前のバージョンのソースディレクトリ(gengetopt-1.3)に移動し,以下を
  486: 入力します.
  487: 
  488: @example
  489: gunzip -cd ../gengetopt-1.3-1.3.1.patch.gz | patch -p1 
  490: @end example
  491: 
  492: @c and restart the compilation process (if you had already run configure a
  493: @c simple make should do).
  494: @c 
  495: そして,コンパイル処理を再び開始してください(既に@command{configure}を
  496: 実行している場合,単純に@command{make}してください).
  497: 
  498: @node Basic Usage, Invoking gengetopt, Installation, Top
  499: @c @chapter Basic Usage
  500: @chapter 基本的な使用方法
  501: @cindex how to use Gengetopt
  502: @cindex getting started with Gengetopt
  503: @cindex tutorial
  504: 
  505: @c The command line options, which have to be handled by gengetopt
  506: @c generated function, are specified in a file (typically with @file{.ggo}
  507: @c extension). This file consist in lines of sentences with the following
  508: @c formats, commands in @{@} are optional@footnote{Command lines that are too long are
  509: @c split into multiple indented lines separated by a @code{\}.  Of course
  510: @c these commands are to be given in one line only, anyway.}:
  511: @c 
  512: gengetoptが生成した関数で処理する必要があるコマンドラインオプションは,
  513: ファイル(通常は@file{.ggo}の拡張子)で指定します.このファイルは,以下の
  514: フォーマットの文で構築し,@{@}のコマンドはオプションです@footnote{長す
  515: ぎるコマンドラインは複数の行に@code{\}で分割します.もちろん,これらの
  516: コマンドは,いずれにせよ一行だけであたえることになります.}.
  517: 
  518: @example
  519: package <packname>
  520: version <version>
  521: 
  522: option <long> <short> <desc> @{argtype@} @{typestr="<type descr>"@} \
  523:     @{default="<default value>"@} @{required@} @{argoptional@} @{multiple@}
  524: option <long> <short> <desc> @{typestr="<type descr>"@} \
  525:     @{values="value1","value2",...@} @{default="<default value>"@} \
  526:     @{required@} @{argoptional@} @{multiple@}
  527: option <long> <short> <desc> flag <on/off>
  528: @end example
  529: 
  530: @c Where:
  531: @c 
  532: これらの意味は以下のようになります.
  533: 
  534: @table @code
  535: @item package
  536: 
  537: @c Double quoted string.  This has the precedence over @code{PACKAGE} generated by autoconf.
  538: @c 
  539: 二重引用符で囲まれた文字列です.これは,autoconfが生成する
  540: @code{PACKAGE}に優先します.
  541:  
  542: @item version 
  543: 
  544: @c Double quoted string.  This has the precedence over @code{VERSION} generated by autoconf.
  545: @c 
  546: 二重引用符で囲まれた文字列です.これは,autoconfが生成する
  547: @code{VERSION}に優先します.
  548: 
  549: @item purpose 
  550: 
  551: @c What the program does (even on more than one line), it will be printed
  552: @c with the help.  Double quoted string.
  553: @c 
  554: プログラムの目的で(一行以上でもかまいません),ヘルプで出力されます.二
  555: 重引用符で囲まれた文字列です.
  556: 
  557: @item long 
  558: 
  559: @c The long option, a double quoted string with upper and lower case
  560: @c characters, digits, a dash (@code{-}) and a dot (@code{.}).  No spaces
  561: @c allowed.  The name of the variables generated to store arguments (see
  562: @c later in this section) are long options converted to be legal C variable
  563: @c names.  This means that @code{.} and @code{-} are both replaced by
  564: @c @code{_}.
  565: @c 
  566: 長いオプションで,二重引用符で囲まれた文字列で,大文字と小文字,数字,
  567: ダッシュ(@code{-}),そしてドット(@code{.})を使用します.スペースは利用
  568: できません.引数を保存するために生成される変数の名前は(このセクションの
  569: 後の部分を参照してください),正当なCの変数名に変換された長いオプション
  570: になります.これは,@code{.}と@code{-}が両方とも@code{_}で置換されるこ
  571: とを意味します.
  572: 
  573: @item short 
  574: 
  575: @c The short option, a single upper or lower case char, or a digit.  If
  576: @c a @code{-} is specified, then no short option is considered for the long
  577: @c option (thus long options with no associated short options are allowed).
  578: @c 
  579: 短いオプションで,単一の大文字や小文字,または数字です.@code{-}が指定
  580: されている場合,短いオプションは,長いオプションに対するものとは考慮さ
  581: れません(このため,関聯する短いオプションが無い長いオプションが可能にな
  582: ります).
  583: 
  584: @item desc 
  585: 
  586: @cindex wrapping
  587: 
  588: @c Double quoted string with upper and lower case characters, digits, a
  589: @c dash (@code{-}) and a dot (@code{.}).   The first character must not be
  590: @c a space.  This description will be printed during the output of
  591: @c @code{--help}.  Wrapping will be automatically performed, and @code{\n}
  592: @c is interpreted as a newline request.
  593: @c 
  594: 二重引用符で囲まれた文字列で,大文字と小文字,数字,ダッシュ(@code{-}),
  595: そしてドット(@code{.})を使用します.最初の文字はスペースにしてはいけま
  596: せん.この記述は,@code{--help}の出力で表示されます.改行は自動的に行わ
  597: れ,@code{\n}は改行が要求されているものと解釈されます.
  598: 
  599: @item argtype 
  600: 
  601: @c @code{string}, @code{int}, @code{short}, @code{long}, @code{float},
  602: @c @code{double}, @code{longdouble} or @code{longlong}.  If no type is
  603: @c specified the option does not accept an argument.
  604: @c 
  605: @code{string},@code{int},@code{short},@code{long},@code{float},
  606: @code{double},@code{longdouble},または@code{longlong}です.型が指定さ
  607: れていない場合,オプションは引数を受けつけません.
  608: 
  609: @item typestr 
  610: 
  611: @c a description for the type of the values for the option.   This will be
  612: @c used during the output of @code{--help} (e.g., @code{"filename"} instead
  613: @c of simply @code{STRING}, or @code{"portnumber"} instead of simply
  614: @c @code{INT}).
  615: @c 
  616: オプション値の型の記述です.これは,@code{--help}の出力で使用されます
  617: (例えば,単純な@code{STRING}の代わりに@code{"filename"},単純な
  618: @code{INT}の代わりに@code{"portnumber"}).
  619: 
  620: @item values
  621:  
  622: @c a list of strings containing all the possible values that can be passed
  623: @c to the option.  The type is considered string and must not be specified.
  624: @c 
  625: オプションに渡すことが可能な利用可能なすべての値を含む文字列のリストで
  626: す.型は文字列だと考慮され,指定してはなりません.
  627:  
  628: @item default 
  629: 
  630: @c an optional default value for the option.  The value must always be
  631: @c specified as a double quoted string.
  632: @c 
  633: オプションに対する追加のデフォルト値です.値は常に二重引用符で囲まれた
  634: 文字列として指定する必要があります.
  635: 
  636: @item required 
  637: 
  638: @c @code{yes} or @code{no}.  This specifies whether such option must be
  639: @c given at each program invocation.
  640: @c 
  641: @code{yes}または@code{no}です.これは,そのオプションがプログラムの呼び
  642: 出しごとに能える必要があるかどうかを指定します.
  643:  
  644: @item argoptional 
  645: 
  646: @c If this flag is specified then this option has an argument that is
  647: @c optional.  In this case, when you specify the argument at command line,
  648: @c please use @code{=} in case you use a long option, and avoid spaces if
  649: @c you use short option.  For instance, if the option with optional
  650: @c argument is @code{-B|--bar}, use the following command line syntax:
  651: @c @code{-B15} or @code{--bar=15}, and NOT the following one @code{-B 15}
  652: @c nor @code{--bar 15}.
  653: @c 
  654: このフラグが指定されている場合,このオプションは追加の引数を取ります.
  655: この状況では,コマンドラインで引数を指定するとき,長いオプションの使用
  656: 時には@code{=}を使用し,短いオプションの場合はスペースを入れないで下さ
  657: い.例えば,追加の引数があるオプションでは,以下のコマンドラインの構文
  658: を使用して下さい.@code{-B15}または@code{--bar=15}で,@code{-B 15}でも
  659: @code{--bar 15}でも@emph{ありません}.
  660:  
  661: @item multiple 
  662: 
  663: @c If this flag is specified then this option can be specified more than
  664: @c once at command line; all the values for this option are stored in an
  665: @c array.  See @ref{Multiple Options}.
  666: @c 
  667: このフラグが指定されている場合,このオプションはコマンドラインで一度以
  668: 上指定することが可能になります.このオプションのすべての値が配列に保存
  669: されます.@ref{Multiple Options}を参照して下さい.
  670: 
  671: @item on/off 
  672: 
  673: @c @code{on} or @code{off}.  This is the state of the flag when the program
  674: @c starts. If user specifies the option, the flag toggles.
  675: @c 
  676: @code{on}または@code{off}です.これは,プログラム開始時のフラグの状態と
  677: なります.ユーザがオプション指定している場合,フラグは切替えられます.
  678: 
  679: @end table
  680: 
  681: @c Comments begins with @code{#} in any place of the line and ends in the end of line.
  682: @c 
  683: コメントは行の任意の場所の@code{#}で始まり,行の終わりで終了となります.
  684: 
  685: @c Notice that the options @code{-h,--help} and @code{-V,--version} are
  686: @c added automatically; however, if you specify an option yourself that has
  687: @c @code{h} as short form or @code{help} as long form, then
  688: @c @code{-h,--help} is not added (and you have to handle the help option
  689: @c manually).  The same holds for @code{-V,--version}.
  690: @c 
  691: オプション@code{-h,--help}と@code{-V,--version}は自動的に追加されます.
  692: 短い形式の@code{h}や,長い形式の@code{help}を独自のオプションとして指定
  693: した場合,追加されません(ヘルプオプションを手動で処理する必要がありま
  694: す).@code{-V,--version}も同じです.
  695: 
  696: @c Options can be part of sections, that provide a more meaningful
  697: @c descriptions of the options.  A @emph{section} can be defined with the
  698: @c following syntax (the @code{sectiondesc} is optional) and all the options
  699: @c following a section declaration are considered part of that sections:
  700: @c 
  701: オプションはセクションの一部にすることが可能で,オプションのより意味の
  702: ある記述を提供します.@emph{section}は以下の構文で定義され
  703: (@code{sectiondesc}はオプションです),,セクション宣言が続くすべてのオ
  704: プションは,セクションの一部と考慮されます.
  705: 
  706: @example
  707: section "section name" @{sectiondesc="optional section description"@}
  708: @end example
  709: 
  710: @c You can also specify the list of values that can be passed to an option
  711: @c (in that case the option has type @code{string}).  If a value that is not in
  712: @c the list is passed, an error is raised.  You can think of such options
  713: @c as @emph{enumerated} options.
  714: @c 
  715: オプションに渡す値のリストを指定することも可能です(その状況では,オプショ
  716: ンの型は@code{string}です).値が渡されたリストに無い場合,エラーとなり
  717: ます.そのようなオプションは@emph{列挙型}オプションだと考えることができ
  718: ます.
  719:  
  720: @c Here's an example of such a file (the file is called @file{sample1.ggo})
  721: @c 
  722: 以下は,そのようなファイルの例です(ファイルは@file{sample1.ggo}としま
  723: す).
  724: 
  725: @example
  726: # file sample1.ggo 
  727: option  "str-opt"     s "A string option, for a filename" \
  728:      string typestr="filename" no 
  729: option  "my-opt"      m "Another integer option, \
  730:      this time the description of the \
  731:      option should be quite long to require wrapping... possibly \
  732:      more than one wrapping :-) especially if I\nrequire a line break" int no 
  733: option  "int-opt"     i "A int option"         int        yes 
  734: section "more involved options" \
  735:      sectiondesc="the following options\nare more complex"
  736: option  "flag-opt"    - "A flag option"        flag       off
  737: option  "funct-opt"   F "A function option"    no 
  738: section "last option section"
  739: option  "long-opt"    - "A long option"        long       no 
  740: option  "def-opt"     - "A string option with default" \
  741:      string default="Hello" no
  742: option  "enum-opt"    - "A string option with list of values" \
  743:      values="foo","bar","hello" default="hello" no
  744: @end example
  745: 
  746: @c The simplest way to use gengetopt is to pass this file as the standard input, i.e.: 
  747: @c 
  748: gengetoptを使用するもっとも簡単な方法は,このファイルを標準入力として渡
  749: す方法です.すなわち以下のようにします.
  750: 
  751: @example
  752: gengetopt < sample1.ggo
  753: @end example
  754: 
  755: @c By default gengetopt generates @file{cmdline.h} and @file{cmdline.c}.  Otherwise we
  756: @c can specify these names with a command line option:
  757: @c 
  758: デフォルトで,gengetoptは@file{cmdline.h}と@file{cmdline.c}を生成します.
  759: それ以外では,これらの名前をコマンドラインオプションで指定することが可
  760: 能です.
  761: 
  762: @example
  763: gengetopt < sample1.ggo --file-name=cmdline1 --unamed-opts
  764: @end example
  765: 
  766: @cindex parameter
  767: @cindex option without name
  768: @c The option @code{--unamed-opts} allows the generated command line parser
  769: @c to accept also names, without an option (for instance you can pass a
  770: @c file name without an option in front of it, and also use wildcards, such
  771: @c as @code{*.c}, @code{foo*.?} and so on).   These are also called
  772: @c @emph{parameters} (see @ref{Terminology}).  You can specify an optional
  773: @c description for these additional names (default is @code{FILES}).
  774: @c 
  775: オプション@code{--unamed-opts}で生成するコマンドライン構文解析器にも名
  776: 前を付けることが可能となり,オプションが無い場合(例えば,その前にオプショ
  777: ンが無ければファイル名を渡すことが可能で,そこでは,@code{*.c},
  778: @code{foo*.?}などのようなワイルドカードを使用することが可能です).これ
  779: らは@emph{パラメータ}とも呼ばれています(@pxref{Terminology}).これらの
  780: 追加の名前に,追加の記述を指定することが可能です(デフォルトは
  781: @code{FILES}です).
  782: 
  783: @c In @file{cmdline1.h} you'll find the generated C struct: 
  784: @c 
  785: ファイル@file{cmdline1.h}で,生成されるCの構造体を見つけましょう.
  786: 
  787: @include cmdline1.h.texinfo
  788: 
  789: @c The @code{<option>_given} field is set to a value different from 0 when
  790: @c an argument for @code{<option>} has been specified.   If the option
  791: @c accepts an argument and it is not of @code{flag} type The
  792: @c @code{<option>_arg} field is set to the value passed at the command
  793: @c line.  The @code{<option>_arg} field has the corresponding C type
  794: @c specified in the file passed to gengetopt.  The additional field
  795: @c @code{<option>_orig} is always a string containing the original value
  796: @c passed at the command line.  This may be different, for instance, in
  797: @c case of numerical arguments: gengetopt converts the passed value (a
  798: @c string) into the corresponding numerical type; due to convertions, float
  799: @c representations, etc., this may not correspond exactly to the original
  800: @c value passed at command line.  The user can always access this original
  801: @c value by using @code{<option>_orig} instead of @code{<option>_arg}, as
  802: @c he sees fit@footnote{The @code{<option>_orig} was introduced in the
  803: @c release 2.14.}.  For instance, gengetopt itselfs uses the original value
  804: @c when it saves the command line options into a file (see the
  805: @c @code{_file_save} function in the following).
  806: @c 
  807: @code{<option>_given}フィールドは,@code{<option>}の引数が指定されてい
  808: るとき,0以外の値が設定されます.オプションが引数を受け入れ,
  809: @code{flag}の型ではない場合,@code{<option>_arg}フィールドはコマンドラ
  810: インで渡された値に設定されます.@code{<option>_arg}フィールドは,
  811: gengetoptに渡されたファイルで指定されている,対応するCの型を持ちます.
  812: 追加のフィールド@code{<option>_orig}は常に,コマンドラインで渡された元
  813: の値を含む文字列です.これは,例えば数値の引数の状況では異なる可能性が
  814: あります.gengetoptは渡された値(文字列)を対応する数値の型に変換します.
  815: 変換のため,浮動小数点表現などになり,これは,コマンドラインで渡された
  816: 元の値とは正確に一致しない可能性があります.ユーザは,
  817: @code{<option>_arg}の代わりに@code{<option>_orig}を使用することで,この
  818: 元の値にアクセスすることが,足元を見るのと同じくらい,いつでも可能です
  819: @footnote{@code{<option>_orig}は,リリース2.14で導入されました}.例えば,
  820: gengetopt自身,コマンドラインオプションをファイルに保存するとき,元の値
  821: を使用しています(以下の@code{_file_save}関数を参照して下さい).
  822: 
  823: @c If it is of @code{flag} type, only the field @code{<option>_flag}
  824: @c is generated.
  825: @c 
  826: @code{flag}の型の場合,@code{<option>_flag}フィールドだけ生成されます.
  827: 
  828: @c Even if @code{<option>_given} is 0, the corresponding
  829: @c @code{<option>_arg} is set to default value (if one has been specified
  830: @c for @code{<option>}).  However, in this case, the @code{<option>_orig}
  831: @c is set to @code{NULL}.
  832: @c 
  833: @code{<option>_given}が0の場合でも,対応する@code{<option>_arg}はデフォ
  834: ルト値になります(@code{<option>}が指定されている場合).しかし,この状況
  835: では,@code{<option>_orig}は@code{NULL}に設定されます.
  836: 
  837: @c Notice that by default the generated function is called @code{cmdline_parser}
  838: @c (see the command line options below, to override this name), and it
  839: @c takes the arguments that main receives and a pointer to such a struct,
  840: @c that it will be filled.
  841: @c 
  842: デフォルトで,生成される関数は@code{cmdline_parser}と呼ばれ(この名前に
  843: 優先させる方法は,以下のコマンドラインオプションを参照して下さい),
  844: main関数が受け取る引数と,値が充填されている構造体へのポインタを受け取
  845: ります.
  846: 
  847: @c @code{cmdline_parser_free} can be called to deallocate memory allocated by the
  848: @c parser for string and multiple options.
  849: @c 
  850: @code{cmdline_parser_free}は,文字列と複数回オプションの構文解析器で確
  851: 保されたメモリを解放するために呼び出すことが可能です.
  852: 
  853: @c Notice that after calling this function, the parsing functions should
  854: @c not be called anymore.
  855: @c 
  856: この関数の呼び出し後,構文解析関数を呼び出してはならないことに注意して
  857: ください.
  858: 
  859: @c @code{cmdline_parser_init} can be called to initialize the struct (it is
  860: @c not mandatory, since it is done automatically by the command line
  861: @c parser).
  862: @c 
  863: @code{cmdline_parser_init}は,構造体の初期化をするために呼び出すことが
  864: 可能です(それは必須ではなく,その理由はコマンドライン構造解析器が自動的
  865: に行うためです).
  866: 
  867: @c @code{cmdline_parser_file_save}@footnote{This function was introduced in
  868: @c the release 2.14.} can be used to save the command line options into a
  869: @c file.  The contents of this file are consistent with the configuration
  870: @c files (@ref{Configuration files}).  Notice that if an option has a
  871: @c default value, this option will be saved into the file only if it was
  872: @c passed explicitly at command line (or read from a configuration file),
  873: @c i.e., default values will not be saved into the file.
  874: @c 
  875: @code{cmdline_parser_file_save}@footnote{この関数はリリース2.14で導入さ
  876: れました}は,コマンドラインオプションをファイルに保存するために使用する
  877: ことが可能です.このファイルの内容は,コンフィグレーションファイル
  878: (@ref{Configuration files})と両立します.オプションにデフォルト値がある
  879: 場合,このオプションではコマンドラインで明示的に渡されたもの(または,コ
  880: ンフィグレーションファイルから読み込まれたもの)だけをファイルに保存する
  881: ことに注意してください.つまり,デフォルト値はファイルに保存されません.
  882: 
  883: @c And here's how these functions can be used inside the main program: 
  884: @c 
  885: 以下は,これらの関数をmainプログラムで使用する方法を記述しています.
  886: 
  887: @include main1.cc.texinfo
  888: 
  889: @c Now you can compile @file{main1.cc} and the @file{cmdline1.c} generated
  890: @c by gengetopt and link all together to obtain @code{sample1} executable:
  891: @c 
  892: さて,@file{main1.cc}とgengetoptで生成した@file{cmdline1.c}をコンパイル
  893: し,@code{sample1}という実行形式を入手するために,すべてをリンクするこ
  894: とが可能となりました.
  895: 
  896: @example
  897: gcc -c cmdline1.c
  898: g++ -c main1.cc
  899: g++ -o sample1 cmdline1.o main1.o
  900: @end example
  901: 
  902: @c (Here we assume that @code{getopt_long} is included in the standard C library;
  903: @c see @ref{Installation} and @ref{No getopt_long}).
  904: @c 
  905: (ここでは,@code{getopt_long}が標準Cライブラリからインクルードされてい
  906: ることを仮定しています.@ref{Installation}と@ref{No getopt_long}を参照
  907: してください)
  908: 
  909: @c Now let's try some tests with this program:
  910: @c 
  911: さて,このプログラムでテストしてみましょう.
  912: 
  913: @example
  914: $ ./sample1 -s "hello" --int-opt 1234
  915: This one is from a C++ program
  916: Try to launch me with some options
  917: (type sample1 --help for the complete list)
  918: For example: ./sample1 *.* --funct-opt
  919: Here are the options you passed...
  920: You inserted hello for --str-opt option.
  921: This is the integer you input: 1234.
  922: The flag is off.
  923: Have a nice day! :-)
  924: @end example
  925: 
  926: @c You can also pass many file names to the command line (this also shows
  927: @c how flags work):
  928: @c 
  929: たくさんのファイル名をコマンドラインに渡すことも可能です(これでもフラグ
  930: の動作方法が分かります).
  931: 
  932: @example
  933: $ ./sample1 *.h -i -100 -x
  934: This one is from a C++ program
  935: Try to launch me with some options
  936: (type sample1 --help for the complete list)
  937: For example: ./sample1 *.* --funct-opt
  938: Here are the options you passed...
  939: file: cmdline1.h
  940: file: cmdline2.h
  941: file: cmdline.h
  942: file: getopt.h
  943: This is the integer you input: -100.
  944: The flag is on.
  945: Have a nice day! :-)
  946: @end example
  947: 
  948: @c And if we try to omit the @code{--int-opt} (or @code{-i}), which is
  949: @c required, we get an error:
  950: @c 
  951: そして,@code{--int-opt} (または,@code{-i})を省略してみると,それは必
  952: 須なのでエラーになります.
  953: 
  954: @example
  955: $ ./sample1
  956: This one is from a C++ program
  957: Try to launch me with some options
  958: (type sample1 --help for the complete list)
  959: For example: ./sample1 *.* --funct-opt
  960: sample1: `--int-opt' (`-i') option required!
  961: @end example
  962: 
  963: @c Here is the output of @code{--help}:
  964: @c 
  965: 以下は,@code{--help}の出力です.
  966: 
  967: @example
  968: sample1 2.0
  969: 
  970: Usage: sample1 -iINT|--int-opt=INT [-h|--help] [-V|--version] 
  971:          -sfilename|--str-opt=filename -mINT|--my-opt=INT [--flag-opt] 
  972:          [-F|--funct-opt] --long-opt=LONG --def-opt=STRING  [FILES]...
  973: 
  974:   -h, --help              Print help and exit
  975:   -V, --version           Print version and exit
  976:   -s, --str-opt=filename  A string option, for a filename
  977:   -m, --my-opt=INT        Another integer option, this time the description of
  978:                             the option should be quite long to require
  979:                             wrapping... possibly more than one wrapping :-)
  980:                             especially if I
  981:                             require a line break
  982:   -i, --int-opt=INT       A int option
  983: 
  984: more involved options:
  985: the following options
  986: are more complex
  987:       --flag-opt          A flag option  (default=off)
  988:   -F, --funct-opt         A function option
  989: 
  990: last option section:
  991:       --long-opt=LONG     A long option
  992:       --def-opt=STRING    A string option with default  (default=`Hello')
  993:       --enum-opt=STRING   A string option with list of values  (possible
  994:                             values="foo", "bar", "hello" default=`hello')
  995: @end example
  996: 
  997: @cindex wrapping
  998: 
  999: @c Notice how @code{filename} is printed instead of @code{STRING} for the option
 1000: @c @code{--str-opt} (since @code{typestr} was used in the @file{sample1.ggo} file) and how the
 1001: @c description of @code{--my-opt} is wrapped to 80 columns, and how the @code{\n} is
 1002: @c actually interpreted as a newline request.
 1003: @c 
 1004: オプション@code{--str-opt}に対して,@code{STRING}ではなく
 1005: @code{filename}が出力されること(@code{typestr}が@file{sample1.ggo}ファ
 1006: イルで使用されています),@code{--my-opt}の記述が80文字でおりかえされて
 1007: いること,そして,@code{\n}が実際に改行が要求されていることとして解釈さ
 1008: れていることに注目してください.
 1009:  
 1010: @c If you're curious you may want to take a look at the generated C file @file{cmdline1.c}. 
 1011: @c 
 1012: 心配であれば,生成されたCファイル@file{cmdline1.c}を見てください.
 1013: 
 1014: @c You may find other examples in @file{/prefix/share/doc/gengetopt/examples}
 1015: @c or in the @file{tests} of the source tarbal.
 1016: @c 
 1017: @file{/prefix/share/doc/gengetopt/examples}や,ソースのtarballの
 1018: @file{tests}で他の例も見つかるでしょう.
 1019: 
 1020: @node Invoking gengetopt, Terminology, Basic Usage, Top
 1021: @c @chapter Invoking gengetopt
 1022: @chapter gengetoptの呼び出し
 1023: @cindex invoking
 1024: @cindex gengetopt options
 1025: 
 1026: @c This is the output of @code{gengetopt --help}:
 1027: @c 
 1028: 以下は@code{gengetopt --help}の出力です.
 1029: 
 1030: @smallexample
 1031: @include help_output.texinfo
 1032: @end smallexample 
 1033: 
 1034: @c The options should be clear; in particular: 
 1035: @c 
 1036: オプションは,特に,はっきりとさせておくべきでしょう.
 1037: 
 1038: @table @code
 1039: 
 1040: @item --func-name 
 1041: @c if no @code{--func-name} is given, @code{cmdline_parser} is taken by default;
 1042: @c 
 1043: @code{--func-name}があたえられていない場合,@code{cmdline_parser}がデフォ
 1044: ルトになります.
 1045:  
 1046: @item --arg-struct-name 
 1047: @c allows to specify the name of the generated struct for command line
 1048: @c arguments (default is @code{gengetopt_args_info})
 1049: @c 
 1050: コマンドライン引数に対応して生成される構造体の名前を指定することが可能
 1051: です(デフォルトは@code{gengetopt_args_info}).
 1052:  
 1053: @item --long-help 
 1054: @c the ``Usage'' line reports all the options; this may be unpleasant if options are many;
 1055: @c 
 1056: ``Usage''行で,すべてのオプションを表示します.これは,オプションが多い
 1057: 場合,よろこばしくない可能性があります.
 1058:  
 1059: @item --unamed-opts 
 1060: @c the program will accept also options without a name, which, in most
 1061: @c case, means that we can pass many file names to the program (see the
 1062: @c example in @ref{Basic Usage}, where we call @code{sample1 *.h}). You can
 1063: @c specify an optional description for these additional names (default is
 1064: @c @code{FILES}).
 1065: @c 
 1066: プログラムは,名前の無いオプションも受け入れ,それはほとんどの状況で,
 1067: プログラムに多くのファイル名を渡すことが可能になることを意味します
 1068: (@code{sample1 *.h}を呼び出している@ref{Basic Usage}の例を参照して下さ
 1069: い).これらの追加の名前にオプションの記述を指定することが可能です(デフォ
 1070: ルトは@code{FILES}です).
 1071:  
 1072: @item --no-handle-help 
 1073: @itemx --no-handle-version
 1074: 
 1075: @c if @code{--no-handle-help} (@code{--no-handle-version}) is given the
 1076: @c command line option @code{--help|-h} (@code{--version|-V}) is not
 1077: @c handled automatically, so the programmer will be able to print some
 1078: @c other information; then the function for printing the standard help
 1079: @c (version) response can be used; this function is called
 1080: @c @code{<parser-name>_print_help} (@code{<parser-name>_print_version}),
 1081: @c where @code{<parser-name>} is the name specified with @code{--func-name}
 1082: @c or the default, @code{cmdline_parser}.
 1083: @c 
 1084: @code{--no-handle-help} (@code{--no-handle-version})が与えられている場
 1085: 合,コマンドラインオプション@code{--help|-h} (@code{--version|-V})は,
 1086: 自動的に処理されないので,プログラマはそれ以外のオプションを出力するこ
 1087: とが可能になります.標準的なヘルプ(バージョン)に対応して出力する関数は
 1088: 使用可能です.この関数は,@code{<parser-name>_print_help}
 1089: (@code{<parser-name>_print_version})と呼ばれ,@code{<parser-name>}の名
 1090: 前は,@code{--func-name}で指定されたもの,またはデフォルトの
 1091: @code{cmdline_parser}になります.
 1092:  
 1093: @item --no-handle-error
 1094: @c if @code{--no-handle-error} is given, an error in the parsing does not
 1095: @c provoke the exit of the program; instead, since the parser function, in
 1096: @c case of an error, returns a value different 0, the program can print a
 1097: @c help message, as gengetopt itself does in case of an error (try it!).
 1098: @c 
 1099: @code{--no-handle-error}が与えられている場合,構文解析時のエラーで,プ
 1100: ログラムの終了コードが呼び出されません.その代わりに,構文解析関数は,
 1101: エラー時には0以外の値を返し,プログラムはヘルプメッセージを出力し,
 1102: gengetopt自身がエラー時に行うことと同じようになります(試してみてください!).
 1103:  
 1104: @item --gen-version 
 1105: @c is a flag (default on) that when disabled does not put in the output
 1106: @c file the gengetopt version (it is useful for testing purposes).
 1107: @c 
 1108: これはフラグ(デフォルトでon)で,利用不可能なときは出力ファイルに
 1109: gengetoptのバージョンを書き出しません(テスト目的で役に立ちます).
 1110: 
 1111: @end table
 1112: 
 1113: @c You may have already guessed it: gengetopt uses gengetopt itself for
 1114: @c command line options, and its specification file is @code{cmdline.ggo}
 1115: @c in the source directory.   In particular the command line for gengetopt
 1116: @c itself is generated with the following command:
 1117: @c 
 1118: 既にお分かりかもしれませんが,gengetoptはgengetopt自身を,コマンドライ
 1119: ンオプションに対して使用していて,その仕様が書かれているファイルはソー
 1120: スディレクトリの@code{cmdline.ggo}です.特に,gengetopt自身のコマンドラ
 1121: インは,以下のコマンドで生成されています.
 1122: 
 1123: @example
 1124: gengetopt --input=cmdline.ggo --no-handle-version \
 1125:           --no-handle-help --no-handle-error
 1126: @end example
 1127: 
 1128: @c Indeed when @code{--help|-h} is passed on the command line, gengetopt will call
 1129: @c @code{cmdline_parser_print_help()} and then the lines for reporting bugs.  When
 1130: @c @code{--version|-V} is passed, it will call cmdline_parser_print_version() and
 1131: @c then prints a copyright.  If an error occurs it prints a message on the
 1132: @c screen:
 1133: @c 
 1134: 実際,@code{--help|-h}がコマンドラインで渡されると,gengetoptは
 1135: @code{cmdline_parser_print_help()}を呼び出し,バグ報告の行が表示されま
 1136: す.@code{--version|-V}が渡されるとき,
 1137: @code{cmdline_parser_print_version()}が呼び出され,著作権が出力されます.
 1138: エラーが生じた場合,画面にメッセージが出力されます.
 1139: 
 1140: @example
 1141: $ ./gengetopt --zzzz
 1142: ./gengetopt: unrecognized option `--zzzz'
 1143: Run gengetopt --help to see the list of options.
 1144: @end example
 1145: 
 1146: @node Terminology, Group options, Invoking gengetopt, Top
 1147: @c @chapter Terminology
 1148: @chapter 用語集
 1149: @cindex Terminology
 1150: @cindex argument, defined
 1151: @cindex option, defined
 1152: @cindex value, defined
 1153: @cindex parameter, defined
 1154: @cindex short option, defined
 1155: @cindex long option, defined
 1156: @cindex multiple option, defined
 1157: @cindex required option, defined
 1158: 
 1159: @c An @dfn{argument} is an element of the @code{argv} array passed into
 1160: @c your C or C++ program by your operating system.
 1161: @c 
 1162: @dfn{引数(argument)}とは,CやC++プログラムにオペレーティングシステムから渡さ
 1163: れる@code{argv}配列の要素です.
 1164: 
 1165: @c An @dfn{option} is an argument that begins with @option{-}, 
 1166: @c or @option{--}.
 1167: @c 
 1168: @dfn{オプション(option)}とは,@option{-}や@option{--}で始まる引数です.
 1169: 
 1170: @c A @dfn{value} is an argument, or part of an argument, that is associated
 1171: @c with a particular option (an option may also not accept any value).  For
 1172: @c example, in
 1173: @c 
 1174: @dfn{値(value)}とは,引数または引数の一部で,特定のオプションに関連付け
 1175: られたものです(オプションは引数を受け付けなくてもかまいません).例えば
 1176: 以下を考えます.
 1177: 
 1178: @example
 1179: > ls --width=80
 1180: @end example
 1181: 
 1182: @c @noindent @command{ls} is called with one argument, @option{--width=80},
 1183: @c which is an option that has a value, @code{80}, while in
 1184: @c 
 1185: @noindent
 1186: @command{ls}は一つの引数@option{--width=80}で呼び出され,それは値
 1187: @code{80}を持つオプションです.一方以下を考えます.
 1188: 
 1189: @example
 1190: > ls --width 80
 1191: @end example
 1192: 
 1193: @c @noindent @command{ls} is called with two arguments, @option{--width},
 1194: @c which is an option, and @code{80} which might or might not be a value.
 1195: @c In this case, whether the @code{80} is treated as a value associated
 1196: @c with the preceding @option{--width} option, or as the name of a file to
 1197: @c list depends on how @command{ls} parses the @option{--width} option.
 1198: @c 
 1199: @noindent
 1200: @command{ls}は二つの引数で呼び出され,@option{--width}はオプションで,
 1201: @code{80}は値かもしれませんし,そうでないかもしれません.この状況では,
 1202: @code{80}が前置されている@option{--width}オプションに関聯する値として扱
 1203: われるか,ファイル名のリストとして扱われるかは,@command{ls}が
 1204: @option{--width}オプションを構文解析する方法に依存します.
 1205: 
 1206: @c The order in which options are specified is @emph{usually} unimportant:
 1207: @c 
 1208: オプションの順番を指定することは,@emph{通常}重要ではありません.
 1209: 
 1210: @example
 1211: > ls -a -l
 1212: > ls -l -a
 1213: @end example
 1214: 
 1215: @c @noindent both do exactly the same thing.
 1216: @c 
 1217: @noindent
 1218: 両方とも正確に同じことを行います.
 1219: 
 1220: @c An @dfn{parameter} is an argument that is not an option.  For example, in
 1221: @c 
 1222: @dfn{パラメータ(parameter)}は,引数でオプションではありません.例えば以
 1223: 下を考えます.
 1224: 
 1225: @example
 1226: > cp --archive source dest
 1227: @end example
 1228: 
 1229: @c @noindent @command{cp} is called with three arguments, the option
 1230: @c @option{--archive}, the parameter @code{source}, and the parameter
 1231: @c @code{dest}.  Unlike options, the order in which parameters are
 1232: @c specified usually @emph{is} important:
 1233: @c 
 1234: @noindent
 1235: @command{cp}は,三つの引数で呼び出され,それはオプション
 1236: @option{--archive},パラメータ@code{source},そしてパラメータ
 1237: @code{dest}です.オプションとは異なり.パラメータの順序の指定は,通常重
 1238: 要@emph{です}.
 1239: 
 1240: @example
 1241: > cp --archive --verbose source dest
 1242: > cp --verbose --archive source dest
 1243: > cp --archive source --verbose dest
 1244: > cp --archive --verbose dest source
 1245: @end example
 1246: 
 1247: @c @noindent The first three @command{cp} commands do the same thing, but the
 1248: @c fourth one is completely different.
 1249: @c 
 1250: @noindent
 1251: 最初の三つの@command{cp}コマンドは同じことを行いますが,四番目のものは,
 1252: 全く異なります.
 1253: 
 1254: @c If you're new to Gengetopt, you may wish to skip the rest of this
 1255: @c section.  It goes into more detail about different sorts of options, and
 1256: @c how they are parsed.
 1257: @c 
 1258: gengetoptの初心者は,このセクションの残りを読まなくてもかまいません.オ
 1259: プションの種類の詳細と,それらの構文解析に進んでいきます.
 1260: 
 1261: @c Note that some parameters may begin with @option{-} or @option{--}.
 1262: @c Equivalently, not @emph{all} arguments that begin with @option{-} or
 1263: @c @option{--} are options.  Consider
 1264: @c 
 1265: パラメータには,@option{-}で@option{--}で始めてもかまわないものがあるこ
 1266: とに注意してください.特に,@option{-}や@option{--}で始まる@emph{すべて
 1267: の}引数はオプションです.以下を考えます.
 1268: 
 1269: @example
 1270: > ls -- -file
 1271: > tar -c -f - . > ../foo.tar
 1272: @end example
 1273: 
 1274: @c @noindent The @command{ls} command has two arguments; the first
 1275: @c argument, @option{--} is ignored by @command{ls}, but causes the
 1276: @c @option{-file} argument to be interpreted as a parameter.  The @command{tar}
 1277: @c command has four arguments.  The @option{-c} argument tells tar to
 1278: @c create an archive; the @option{-f} argument, which takes a value,
 1279: @c @code{-}, tells tar that the archive should be written onto the standard
 1280: @c output, and the fourth argument, @code{.}, tells tar what directories to
 1281: @c include in the archive.  (The remaining two items, @code{>} and
 1282: @c @code{../foo.tar}, tell the shell to redirect the @command{tar}
 1283: @c command's output to the file ../foo.tar.  The @command{tar} command
 1284: @c doesn't even see them.)
 1285: @c 
 1286: @noindent
 1287: @command{ls}コマンドには二つの引数があります.最初のものは引数で,
 1288: @option{--}は@command{ls}は無視しますが,これで@option{-file}引数はパラ
 1289: メータとして解釈されます.@command{tar}コマンドは四つの引数があります.
 1290: @option{-c}引数は,@command{tar}にアーカイブを作成するよう伝えます.
 1291: @option{-f}引数は値を取り,それは@code{-}で,@command{tar}にアーカイブ
 1292: を標準出力に書き込む用に伝え,四番目の引数@code{.}は,@command{tar}にアー
 1293: カイブに含めるディレクトリを伝えます.(残りの二つの項目は@code{>}と
 1294: @code{../foo.tar}で,シェルに@command{tar}コマンドの出力をファイル
 1295: @file{../foo.tar}にリダイレクトするよう伝えます.@command{tar}コマンド
 1296: が見ることはありません.)
 1297: 
 1298: @c The GNU convention is that @option{-} by itself is always interpreted as
 1299: @c a value or parameter, while the first @option{--} by itself is always
 1300: @c ignored, but causes all subsequent arguments to be interpreted as
 1301: @c parameters.  Gengetopt always behaves this way.
 1302: @c 
 1303: GNUの慣習では,@option{-}自身は常にパラメータとして解釈されますが,最初
 1304: の@option{--}自身は常に無視され,それ以降の全ての引数はパラメータとして
 1305: 解釈されます.gengetoptは常にこの方法で動作します.
 1306: 
 1307: @c A @dfn{short option} is an option that begins with @option{-}.  Not
 1308: @c including the leading dash, short options must be one character long:
 1309: @c 
 1310: @dfn{短いオプション(short option)}は@option{-}で始まるオプションです.
 1311: 前置するダッシュは含まれず,短いオプションは一文字の長さにする必要があ
 1312: ります.
 1313: 
 1314: @example
 1315: > ls -a -l -t --width=80
 1316: @end example
 1317: 
 1318: @c @noindent The @option{-a}, @option{-l}, and @option{-t} options are all short
 1319: @c options.  Multiple short options may be combined into a single
 1320: @c argument:
 1321: @c 
 1322: @noindent
 1323: @option{-a},@option{-l},そして@option{-t}オプションは,すべて短いオプ
 1324: ションです.複数の短いオプションは,一つに組み合わせてもかまいません.
 1325: 
 1326: @example
 1327: > ls -alt --width=80
 1328: @end example
 1329: 
 1330: @c @noindent is equivalent to the above example.
 1331: @c 
 1332: @noindent
 1333: これは,上記の例と等価です.
 1334: 
 1335: @c A @dfn{long option} is an option that begins with @option{-}
 1336: @c or @option{--}.  Ignoring the leading punctuation, long
 1337: @c options may be one or more characters long:
 1338: @c 
 1339: @dfn{長いオプション(long option)}は,@option{-}や@option{--}で始まるオ
 1340: プションです.前置される区切り文字(punctuation)は無視され,長いオプショ
 1341: ンは,一文字以上の長さにしてもかまいません.
 1342: 
 1343: @example
 1344: > ls --all -fs
 1345: @end example
 1346: 
 1347: @c @noindent The @command{ls} command has two arguments; the long option
 1348: @c @option{--all}, and the pair of short options @option{-fs}.  
 1349: @c 
 1350: @noindent
 1351: @command{ls}コマンドは,二つの引数があります.それは,長いオプション
 1352: @option{--all}と,短いオプションの組@option{-fs}です.
 1353: 
 1354: @c Long options need not have synonymous short options; after all, complex
 1355: @c programs like @command{cc} have more long options than there are valid
 1356: @c short option characters; it wouldn't be possible to assign a short
 1357: @c option to each of them.  Short options are encouraged, but not required,
 1358: @c to have a synonymous long option.
 1359: @c 
 1360: 長いオプションに短いオプションの同義語を持たせる必要はありません.結局,
 1361: @command{cc}のような複雑なプログラムでは,有効な短いオプション文字以上
 1362: の数の長いオプションがあります.短いオプションをすべてに割り当てること
 1363: は不可能でしょう.短いオプションが推奨されていますが,長いオプションの
 1364: 同義語を持たせることは必須ではありません.
 1365: 
 1366: @c Long options may be abbreviated, as long as the abbreviation is not
 1367: @c ambiguous.  Gengetopt automatically treats unambiguous abbreviations as
 1368: @c synonyms.  
 1369: @c 
 1370: 長いオプションは,省略しても不明瞭にならない限り,省略してもかまいませ
 1371: ん.gengetoptは,明確な省略語を同義語として自動的に処理します.
 1372: 
 1373: @c Short options may have values just like long options, but if several
 1374: @c short options are grouped together into one argument, only the last one
 1375: @c may have a value.  Values in the same argument as a long option are
 1376: @c delimited by an equals sign, values in the same argument as a short
 1377: @c option are not:
 1378: @c 
 1379: 短いオプションは,長いオプションのように値を持たせてもかまいませんが,
 1380: いくつかの短いオプションが一つの引数に纏められている場合,最後のものだ
 1381: けが値を持つことができます.長いオプションの引数の値は等号で分離されて
 1382: いて,短いオプションの引数の値は分離されていません.
 1383: 
 1384: @example
 1385: > ls --width 60  # ok, value is "60"
 1386: > ls --width=60  # ok, value is "60"
 1387: > ls -w60        # ok, value is "60"
 1388: > ls -w 60       # ok, value is "60"
 1389: > ls -w=60       # unexpected, value is "=60"
 1390: > ls -T7 -w60    # ok, value for -T is 7, value for -w is 60
 1391: > ls -T7w60      # unexpected, value for -T is "7w60", no -w at all
 1392: @end example
 1393: 
 1394: @c A @dfn{required option} must be present, otherwise  an error will be
 1395: @c raised.  
 1396: @c 
 1397: @dfn{必須のオプション(required option)}は必要で,そうでなければエラーと
 1398: なります.
 1399: 
 1400: @c A @dfn{multiple option} is an option that may appear more than once on
 1401: @c the command line.  Gengetopt would create a tidy array for multiple
 1402: @c options (see @ref{Multiple Options}, for further details about dealing
 1403: @c with multiple options).
 1404: @c 
 1405: @dfn{複数回オプション(multiple option)}とは,一度以上コマンドラインに書
 1406: いてもかまわないオプションです.gengetoptは,複数回オプションに対して,
 1407: 小さな配列を作成します(複数回オプションの詳細は@ref{Multiple Options}).
 1408: 
 1409: @node Group options, Configuration files, Terminology, Top
 1410: @c @chapter Group options
 1411: @chapter グループオプション
 1412: @cindex group options
 1413: 
 1414: @c It is also possible to group options; options belonging to a @emph{group} are
 1415: @c considered @emph{in mutual exclusion}.  In order to use this feature, first the
 1416: @c @code{group} has to be defined, and then a @code{groupoption} can be defined.  A
 1417: @c groupoption has basically the same syntax of a standard option, apart
 1418: @c that the required flag must not be specified (it would not make sense,
 1419: @c since the options of the same group are mutual exclusive) and the group
 1420: @c to which the option belongs has to be specified.
 1421: @c 
 1422: グループオプションも可能です.@emph{グループ}に所属するオプションは,
 1423: @emph{お互いに排他的である}と考慮されます.この機能を使用するために,最
 1424: 初に@code{group}を定義する必要があり,その後で@code{groupoption}を定義
 1425: することが可能になります.グループオプションは,基本的に標準的なオプショ
 1426: ンの構文と同じですが,必須フラグを指定してはならず(同じグループのオプショ
 1427: ンは,お互いに排他的なので,意味が無いでしょう),オプションが所属するグ
 1428: ループを指定する必要があります.
 1429: 
 1430: @example
 1431: defgroup "<group name>" @{groupdesc="<group description>"@} @{yes@}
 1432: groupoption <long> <short> <desc> <argtype> group="<group name>" \
 1433:      @{argoptional@} @{multiple@}
 1434: @end example
 1435: 
 1436: @c If a group is defined as required, then one (but only one) option
 1437: @c belonging to the group has to be specified.
 1438: @c 
 1439: グループが必須として定義されている場合,グループに所属している一つの(そ
 1440: して,一つだけ)オプションを指定する必要があります.
 1441:  
 1442: @c Here's an example (taken from the test @file{test_group_cmd.ggo}):
 1443: @c 
 1444: 以下は例です(テスト@file{test_group_cmd.ggo}から持ってきました).
 1445: 
 1446: @example 
 1447: defgroup "my grp2"
 1448: defgroup "grp1" groupdesc="an option of this group is required" yes
 1449: groupoption "opta" a "string a" group="grp1" multiple
 1450: groupoption "optA" A "string A" string group="grp1" argoptional
 1451: groupoption "optAmul" M "string M" string group="grp1" argoptional multiple
 1452: groupoption "optb" b "string b" group="grp1"
 1453: groupoption "optc" - "string c" group="my grp2"
 1454: groupoption "optd" d "string d" group="my grp2"
 1455: @end example
 1456: 
 1457: @c The group @code{grp1} is required, so either @code{--opta} or
 1458: @c @code{--optb} has to be specified (but only one of them).  Here's the
 1459: @c output of some executions:
 1460: @c 
 1461: グループ@code{grp1}は必須で,@code{--opta}または@code{--optb}を指定する
 1462: 必要があります(そしてそれは,どちらか一方だけです).以下は何度か実行し
 1463: た結果です.
 1464: 
 1465: @example 
 1466: $ ./test_groups
 1467: test_groups: 0 options of group grp1 were given. One is required
 1468: $ ./test_groups -a          OK
 1469: $ ./test_groups -a -a       OK (the same option given twice)
 1470: $ ./test_groups -a -b
 1471: test_groups: 2 options of group grp1 were given. One is required
 1472: $ ./test_groups -a -c       OK
 1473: $ ./test_groups -a --optc -d
 1474: test_groups: 2 options of group my grp2 were given. At most one is required
 1475: @end example
 1476: 
 1477: @node Configuration files, Multiple Options, Group options, Top
 1478: @c @chapter Configuration files
 1479: @chapter コンフィグレーションファイル
 1480: @cindex configuration files
 1481: 
 1482: @c It is often useful to specify command line options directly in a
 1483: @c configuration file, so that the value of some options are read from this
 1484: @c file if they are not given as command line options.  When the command
 1485: @c line option @code{--conf-parser} is given to gengetopt, apart from the standard
 1486: @c command line option parser, also this additional parser is generated
 1487: @c (its name is @code{<commandline_parser>_configfile}):
 1488: @c 
 1489: コマンドラインオプションを直接コンフィグレーションファイルで指定すると
 1490: 便利なときも多いので,オプションの値はコマンドラインオプションが与えら
 1491: れていない場合,このファイルから読みこまれるようにします.コマンドライ
 1492: ンオプション@code{--conf-parser}がgengetoptで与えられている場合,標準的
 1493: なコマンドラインオプションの構文解析器以外に,以下の追加の構文解析器が
 1494: 生成されます(名前は@code{<commandline_parser>_configfile}です).
 1495: 
 1496: @example
 1497: int
 1498: <cmd_parser_name>_configfile (char * const filename,
 1499:                               struct gengetopt_args_info *args_info,
 1500:                               int override,
 1501:                               int initialize,
 1502:                               int check_required);
 1503: @end example
 1504: 
 1505: @c The parameter @code{override} tells whether the values read in the
 1506: @c configuration file have to override those specified at the command line.
 1507: @c The @code{initialize} tells whether the args_info struct has to be
 1508: @c initialize.
 1509: @c 
 1510: パラメータ@code{override}は,コンフィグレーションファイルから読み込まれ
 1511: た値を,コマンドラインで指定されたものに優先させる必要があるかどうかを
 1512: 伝えます.@code{initialize}は,args_info構造体を初期化する必要があるか
 1513: どうかを伝えます.
 1514: 
 1515: @c IMPORTANT: you have to explicitly set @code{initialize} to true (i.e.,
 1516: @c different from 0) if you call the config file parser before the standard
 1517: @c command line option parser, otherwise unpredictable results may show.
 1518: @c 
 1519: 重要:コンフィグレーションファイルの構文解析器を,標準のコマンドライン
 1520: オプション構文解析器の前に呼び出す場合,明示的に@code{initialize}を真に
 1521: 設定する必要があり(例えば,0ではないもの),そうしなければ予想できない結
 1522: 果が表示される可能性があります.
 1523: 
 1524: @c The @code{check_required} tells whether the check for required options
 1525: @c must be performed or not.
 1526: @c 
 1527: @code{check_required}は,必須のオプションを調査する必要があるかどうかを
 1528: 伝えます.
 1529:  
 1530: @c If you call the config file parser before the standard command line
 1531: @c option parser and then you want to call the standard command line parser
 1532: @c you MUST use this second version, passing 0 for initialized, so that
 1533: @c collected values from the config file are not lost:
 1534: @c 
 1535: コンフィグレーションファイルの構文解析器を標準のコマンドラインオプショ
 1536: ンの構文解析器の前に呼び出す場合で,標準のコマンドラインの構文解析器を
 1537: 呼び出したい場合,以下の二番目のバージョンを使用する必要があり,コンフィ
 1538: グレーションファイルで収集した値を失わないように,初期化で0を渡す必要が
 1539: あります.
 1540: 
 1541: @example
 1542: int
 1543: <cmd_parser_name>2 (int argc,
 1544:                     char * const *argv,
 1545:                     struct gengetopt_args_info *args_info,
 1546:                     int override,
 1547:                     int initialize,
 1548:                     int check_required);
 1549: @end example
 1550: 
 1551: @c Notice, that with this version you can also specify whether the options
 1552: @c passed at the command line must override the ones read from the config
 1553: @c file.  If you set @code{override} to 0, and a command line option is
 1554: @c given that has already been read from the config file, an error will be
 1555: @c raised.  Moreover, you have to specify whether the check for missing
 1556: @c required options must be performed or not.  This concerns also options
 1557: @c of a required group (@ref{Group options}).
 1558: @c 
 1559: 注意:このバージョンを用いると,コマンドラインで渡すオプションをコンフィ
 1560: グレーションファイルから読み込んだものに優先させる必要があるかどうかを
 1561: 指定することも可能です.@code{override}を0に設定し,コンフィグレーショ
 1562: ンファイルから既に読み込まれているものに対し,コマンドラインオプション
 1563: が与えられた場合,エラーが発生します.さらに,足りない必須オプションの
 1564: 調査をする必要があるかどうかを指定する必要があります.これは,必須グルー
 1565: プのオプションにも関係します(@ref{Group options}).
 1566:  
 1567: @c If you decide not to request the check for required option, you can
 1568: @c test it manually, after the command line parsing returns by using the
 1569: @c following generated function:
 1570: @c 
 1571: 必須オプションの調査を要求しないことに決めた場合,コマンドラインの構文
 1572: 解析が,以下のように生成された関数を使用して戻った後で,手動で調査する
 1573: ことが可能です.
 1574: 
 1575: @example 
 1576: int
 1577: <cmd_parser_name>_required (struct gengetopt_args_info *args_info,
 1578:                             const char *program_name);
 1579: @end example
 1580: 
 1581: @c where @code{program_name} is the name of your executable (usually you
 1582: @c should pass @code{argv[0]} as argument).  If the function returns a
 1583: @c value different from 0, then some required options are missing.  An
 1584: @c error has already been printed by this function.  This concerns also
 1585: @c options of a required group (@ref{Group options}).
 1586: @c 
 1587: ここで,@code{program_name}は実行形式の名前です(通常,引数として
 1588: @code{argv[0]}で渡します).関数が0以外の値を返す場合,必須オプションに
 1589: 足りないものがあります.エラーはこの関数で既に出力されています.これは,
 1590: 必須グループのオプションにも関係します(@ref{Group options}).
 1591: 
 1592: @c The config file has the following simple syntax: lines starting with #
 1593: @c are considered comments and:
 1594: @c 
 1595: コンフィグレーションファイルは,以下のような単純な構文になっています.
 1596: @samp{#}で始まる行はコメントと考慮されます.
 1597: 
 1598: @example
 1599: <option_name> = @{<option_val>@} 
 1600: @end example
 1601: 
 1602: @noindent
 1603: @c or simply (if the option does not take an argument):
 1604: @c 
 1605: または,(オプションが引数を取らない場合)単純に以下のようになっています.
 1606: 
 1607: @example
 1608: <option_name>
 1609: @end example
 1610: 
 1611: @noindent
 1612: @c which means that @code{option_name} is given, and if it accepts an argument,
 1613: @c then its value is @code{option_val}.  The @code{=} is not mandatory.
 1614: @c 
 1615: これは,@code{option_name}が与えられていて,引数をうけいれる場合が値が
 1616: @code{option_val}になっていることを意味します.@code{=}は必須ではありま
 1617: せん.
 1618: 
 1619: @c For instance here's a program that uses this feature (this is the test
 1620: @c @file{test_conf_parser}):
 1621: @c 
 1622: 例えば,この機能を使用している以下のプログラムを考えます(これはテストの
 1623: @file{test_conf_parser}です).
 1624: 
 1625: @include test_conf_parser.c.texinfo
 1626: 
 1627: @c So if we use the following config file
 1628: @c 
 1629: そして,以下のコンフィグレーションファイルを使用している状況を考えます.
 1630: 
 1631: @example
 1632: # required option
 1633: required "this is a test"
 1634: float 3.14
 1635: no-short
 1636: string another
 1637: @end example
 1638: 
 1639: @noindent
 1640: @c and we run @code{test_conf_parser} like that, we will have
 1641: @c 
 1642: そして,@code{test_conf_parser}を以下のように実行します.
 1643: 
 1644: @example 
 1645: ./test_conf_parser -r bar -i 100 --float 2.14 --conf-file test_conf.conf 
 1646: value of required: this is a test
 1647: value of string: another
 1648: value of no-short: 1
 1649: value of int: 100
 1650: value of float: 3.140000
 1651: @end example
 1652: 
 1653: @c If, instead we call the @code{test_conf_parser_cmd_parser_configfile} with 0
 1654: @c for override argument, we get the following result
 1655: @c 
 1656: 代わりに,引数に優先させるため@code{test_conf_parser_cmd_parser_configfile}を0として呼び出す場合,以下のような結果になります.
 1657:  
 1658: @example
 1659: value of required: bar
 1660: value of string: another
 1661: value of no-short: 1
 1662: value of int: 100
 1663: value of float: 2.140000
 1664: @end example
 1665: 
 1666: @c This second example use the second version of the command line parser:
 1667: @c first call the configuration file parser and then the command line
 1668: @c parser (the command line options will override the configuration file
 1669: @c options):
 1670: @c 
 1671: この二番目の例では,二番目のバージョンのコマンドライン構文解析器を使用
 1672: しています.最初にコンフィグレーションファイル構文解析器を呼び出し,そ
 1673: れからコマンドライン構文解析器を呼び出します(コマンドラインオプションは,
 1674: コンフィグレーションファイルのオプションに優先します).
 1675:  
 1676: @include test_conf_parser_ov2.c.texinfo
 1677: 
 1678: @noindent
 1679: @c This is an invocation and its results:
 1680: @c 
 1681: 以下のように呼び出したときの結果です.
 1682: 
 1683: @example 
 1684: ./test_conf_parser_ov2 -r "bar" --float 2.14 -i 100
 1685: value of required: bar
 1686: value of string: another
 1687: value of no-short: 1
 1688: value of int: 100
 1689: value of float: 2.140000
 1690: @end example
 1691: 
 1692: @c @section Further details on the configuration file parser
 1693: @section コンフィグレーションファイルの構文解析器の詳細
 1694: 
 1695: @c The generated config file parser function uses the constant
 1696: @c @code{CONFIG_FILE_LINE_SIZE} to read each line of the configuration
 1697: @c file.  By default this constant is set to @code{2048} that should be
 1698: @c enough for most applications.  If your application uses configuration
 1699: @c files with lines that are longer, you can compile the generated C file
 1700: @c by specifying an explicit value for this constant with the @code{-D}
 1701: @c command line option of @code{gcc}.
 1702: @c 
 1703: 生成されるコンフィグレーションファイルの構文解析関数は,コンフィグレー
 1704: ションファイルのそれぞれの行を読み込むとき,定数
 1705: @code{CONFIG_FILE_LINE_SIZE}を使用しています.この定数のデフォルトは
 1706: @code{2048}に設定されていて,ほとんどのアプリケーションで十分でしょう.
 1707: アプリケーションで,それ以上の長さの行があるコンフィグレーションファイ
 1708: ルを使用している場合,@code{gcc}の@code{-D}コマンドラインオプションを用
 1709: いて,この定数の値を明示的に指定して,Cファイルのコンパイルをすることが
 1710: 可能です.
 1711: 
 1712: @node Multiple Options, No getopt_long, Configuration files, Top
 1713: @c @chapter Multiple Options
 1714: @chapter 複数回オプション
 1715: @cindex multiple options
 1716: 
 1717: @c If an option is specified as @code{multiple}, then it can be specified multiple
 1718: @c times at command line.  In this case, say the option is called @code{foo}, the
 1719: @c generated @code{foo_given} field in the args structure contains the number of
 1720: @c times it was specified and the generated field @code{foo_arg} is an array
 1721: @c containing all the values that were specified for this option.
 1722: @c 
 1723: オプションが@code{multiple}として指定されている場合,それをコマンドライ
 1724: ンで複数回指定することが可能です.ここで,オプションを@code{foo}と仮定
 1725: すると,生成される引数の構造体の@code{foo_given}フィールドには,指定さ
 1726: れた回数が含まれ,生成される@code{foo_arg}フィールドは,このオプション
 1727: で指定されたすべての値を含んでいる配列になります.
 1728:  
 1729: @c Notice that if a default value is specified for a multiple option, that
 1730: @c value is assigned to the option only if no other value is specified on
 1731: @c the command line (and the corresponding @code{_given} field will be set to 1),
 1732: @c i.e., a default value IS NOT always part of the values of a multiple
 1733: @c option.
 1734: @c 
 1735: 複数回オプションのデフォルト値が指定されている場合,それ以外の値がコマ
 1736: ンドラインで指定されていない場合だけ割り当てられることに注意してくださ
 1737: い(そのときは,対応する@code{_given}フィールドは1に設定されます).すな
 1738: わち,デフォルト値は常に複数回オプションの値になるわけではありません.
 1739: 
 1740: @c For instance, if the gengetopt file is as follows
 1741: @c 
 1742: 例えば,gengetoptへのファイルが以下のものを考えます.
 1743: 
 1744: @example
 1745: # test options that can be given more than once
 1746: option "string"      s "string option" string no multiple
 1747: option "int"         i "int option" int no multiple
 1748: @end example
 1749: 
 1750: @noindent
 1751: @c Then the command line options can be collected like that
 1752: @c 
 1753: そして,コマンドラインオプションを以下のようにまとめることが可能です.
 1754: 
 1755: @example
 1756: 
 1757: @end example
 1758: 
 1759: @noindent
 1760: @c Then if this program is called with the following command line options
 1761: @c 
 1762: プログラムが以下のコマンドラインオプションで呼び出されると仮定します.
 1763: 
 1764: @include multiple_example.c.texinfo
 1765: 
 1766: @noindent
 1767: @c The output of the program will be
 1768: @c 
 1769: プログラムの出力は以下のようになります.
 1770:  
 1771: @example
 1772: passed string: world
 1773: passed string: hello
 1774: passed string: bar
 1775: passed string: foo
 1776: passed int: 200
 1777: passed int: 100
 1778: @end example
 1779: 
 1780: @c You can also pass arguments to a multiple option separated by commas, as in the following:
 1781: @c 
 1782: 以下のように,複数回オプションにカンマで分離した引数を渡すことも可能で
 1783: す.
 1784: 
 1785: @example
 1786: ./test_multiple -s"foo","bar","hello" -i100,200 -s "world"
 1787: @end example
 1788: 
 1789: @node No getopt_long, Bugs, Multiple Options, Top
 1790: @c @chapter What if getopt_long is not available?
 1791: @chapter getopt_longが利用できない場合どうするの?
 1792: @cindex getopt_long
 1793: @cindex automake
 1794: @cindex autoconf
 1795: 
 1796: @c If you use gengetopt to generate C functions for parsing command line
 1797: @c arguments you have to know that these generated functions use
 1798: @c @code{getopt_long} to actually read the command line and parsing it.
 1799: @c This function is typically part of the standard C library, but some
 1800: @c implementations may not include it.   But this is not a problem: we
 1801: @c provide C files that actually implement getopt_long function:
 1802: @c @file{getopt.c} @file{getopt1.c} and @file{gnugetopt.h}.   You'll find
 1803: @c these files in the @file{<install prefix>/share/gengetopt} directory
 1804: @c where @file{<install prefix>} is the one you specified during
 1805: @c compilation.   If no prefix had been specified, @file{/usr/local} is the
 1806: @c default.   If you downloaded gengetopt in binary form prefix will
 1807: @c probably be @file{/usr/local} or @file{/usr}.
 1808: @c 
 1809: コマンドライン引数を構文解析するCの関数を生成するためgengetoptを使用し
 1810: ている場合,これらの生成された関数が,実際にコマンドラインを読み込み,
 1811: それを構文解析するために,@code{getopt_long}を使用していることを知って
 1812: おく必要があります.この関数は,通常標準Cライブラリの一部ですが,実装に
 1813: よっては含まれていない可能性があります.しかし,これは問題にはなりませ
 1814: ん.我々は,getopt_long関数を実際に実装しているCのファイルを提供してい
 1815: ます.@file{getopt.c},@file{getopt1.c}そして@file{gnugetopt.h}です.こ
 1816: れらのファイルは,@file{<install prefix>/share/gengetopt}ディレクトリで
 1817: 見つかり,@file{<install prefix>}はコンパイル時に指定したものになります.
 1818: プレフィクスを指定しなかった場合は@file{/usr/local}がデフォルトです.バ
 1819: イナリ形式のgengetoptをダウンロードした場合,プレフィクスは
 1820: @file{/usr/local}または@file{/usr}になります.
 1821: 
 1822: @c You can rename @file{gnugetopt.h} to @file{getopt.h} and then
 1823: @c simply compile these files and link them to the executable
 1824: @c of you program.  However, if you use automake and autoconf here's a more
 1825: @c elegant solution: you should download the macro you find
 1826: @c at this URL:
 1827: @c 
 1828: @file{gnugetopt.h}を@file{getopt.h}に名前を変更し,これらのファイルをコ
 1829: ンパイルし,プログラムの実行形式にリンクすることが可能です.しかし,
 1830: automakeとautoconfを使用している場合,より簡潔な解決方法があります.以
 1831: 下のURLからマクロをダウンロードしてください.
 1832: 
 1833: @uref{http://www.gnu.org/software/ac-archive/m4source/adl_func_getopt_long.m4}
 1834: 
 1835: @c and add it to your @file{acinclude.m4}.  You can find this macro
 1836: @c also in the @file{acinclude.m4} in the sources of gengetopt.
 1837: @c 
 1838: そして,@file{acinclude.m4}にそれを追加して下さい.このマクロは,
 1839: gengetoptのソースの@file{acinclude.m4}にもあります.
 1840: 
 1841: @c This macro checks if getopt_long function is in C library;
 1842: @c if it is not then it adds @file{getopt.o} and @file{getopt1.o} to the objects files
 1843: @c that will be linked to your executable (@code{LIBOBJS}).
 1844: @c 
 1845: このマクロはgetopt_long関数がCライブラリかどうかを調査し,そうでない場
 1846: 合は@file{getopt.o}と@file{getopt1.o}を実行形式にリンクするオブジェクト
 1847: ファイルに追加します(@code{LIBOBJS}).
 1848: 
 1849: @c Then in @file{Makefile.am} of your source directory you have to add the contents
 1850: @c of @code{LIBOBJS} to the @code{LDADD} of the program that has to use getopt_long;
 1851: @c e.g., if the program @file{foo} has to use getopt_long, you have to add
 1852: @c the following line
 1853: @c 
 1854: そして,ソースディレクトリの@file{Makefile.am}で,@code{LIBOBJS}の内容
 1855: に,getopt_longを使用する必要があるプログラムの@code{LDADD}を追加する必
 1856: 要があります.例えば,プログラム@file{foo}がgetopt_longを使用する必要が
 1857: ある場合,以下の行を追加する必要があります.
 1858: 
 1859: @example
 1860: foo_LDADD = @@LIBOBJS@@
 1861: @end example
 1862: 
 1863: @c Now these files will be compiled and linked to your program only if
 1864: @c necessary.
 1865: @c 
 1866: さて,これらのファイルはコンパイルされ,必要がある場合だけプログラムに
 1867: リンクされます.
 1868: 
 1869: @c Moreover you have to add @file{getopt.c} @file{getopt1.c} and
 1870: @c @file{gnugetopt.h} to your distribution.  Note that it is not necessary
 1871: @c to put these file names among the @code{foo_SOURCES} contents), but you have to
 1872: @c add @file{gnugetopt.h} to @code{EXTRA_DIST}:
 1873: @c 
 1874: 更に,@file{getopt.c},@file{getopt1.c},そして@file{gnugetopt.h}を配布
 1875: 物に追加する必要があります.これらのファイル名を@code{foo_SOURCES}の中
 1876: 身に書く必要はありませんが,@file{gnugetopt.h}は@code{EXTRA_DIST}に追加
 1877: する必要があります.
 1878: 
 1879: @example
 1880: EXTRA_DIST = gnugetopt.h
 1881: @end example
 1882: 
 1883: @c You may want to take a look at gengetopt's @file{configure.in} and
 1884: @c @file{src/Makefile.am}: they both use the techniques described here.
 1885: @c 
 1886: gengetoptの@file{configure.in}と@file{src/Makefile.am}を見てみると良い
 1887: でしょう.それらは両方とも,ここで記述しているテクニックを使用していま
 1888: す.
 1889: 
 1890: @node Bugs, Mailing Lists, No getopt_long, Top
 1891: @c @chapter Known Bugs and Limitations
 1892: @chapter 既知のバグと制限
 1893: @cindex Known Bugs
 1894: @cindex Limits
 1895: @cindex Misfeatures
 1896: 
 1897: @c If you find a bug in @command{gengetopt}, please send electronic
 1898: @c mail to 
 1899: @c 
 1900: @command{gengetopt}のバグを発見した場合,電子メールを以下に送って下さい.
 1901: 
 1902: @c @code{bug-gengetopt at gnu dot org}
 1903: @c 
 1904: @code{bug-gengetop@@gnu.org}
 1905: 
 1906: @c Include the version
 1907: @c number, which you can find by running @w{@samp{gengetopt
 1908: @c --version}}.  Also include in your message the output that the program
 1909: @c produced and the output you expected.@refill
 1910: @c 
 1911: @w{@samp{gengetopt --version}}を実行すると分かるバージョン番号を含めて
 1912: 下さい.また,メッセージにプログラムが生成した出力と,期待したものを含
 1913: めて下さい.@refill
 1914: 
 1915: @c If you have other questions, comments or suggestions about
 1916: @c @command{gengetopt}, contact the author via electronic mail
 1917: @c (find the address at @value{myhomepage}).  The author will try to help
 1918: @c you out, although he may not have time to fix your problems.
 1919: @c 
 1920: 他に@command{gengetopt}に関する疑問,コメント,または提案がある場合,電
 1921: 子メールと利用して,作者と連絡を取って下さい(アドレスは
 1922: @value{myhomepage}にあります).作者は手助けしようとしますが,問題を解決
 1923: するために十分な時間が取れないかもしれません.
 1924: 
 1925: @c The list of todos in the @file{TODO}.
 1926: @c 
 1927: TODOリストは@file{TODO}にあります.
 1928: 
 1929: @node Mailing Lists, Index, Bugs, Top
 1930: @c @chapter Mailing Lists
 1931: @chapter メーリングリスト
 1932: @cindex mailing list
 1933: 
 1934: @c The following mailing lists are available: 
 1935: @c 
 1936: 以下のメーリングリストが利用可能です.
 1937: 
 1938: @c @code{help-gengetopt at gnu dot org}
 1939: @c 
 1940: @code{help-gengetopt@@gnu.org}
 1941: 
 1942: @noindent
 1943: @c for generic discussions about the program and for asking for help about
 1944: @c it (open mailing list),
 1945: @c @uref{http://mail.gnu.org/mailman/listinfo/help-gengetopt}
 1946: @c 
 1947: プログラムと一般的な議論と,それに関するヘルプをお願いするもの(オープン
 1948: なメーリングリスト).
 1949: @uref{http://mail.gnu.org/mailman/listinfo/help-gengetopt}
 1950:  
 1951: @c @code{info-gengetopt at gnu dot org}
 1952: @c 
 1953: @code{info-gengetopt@@gnu.org}
 1954: 
 1955: @noindent
 1956: @c for receiving information about new releases and features (read-only
 1957: @c mailing list),
 1958: @c @uref{http://mail.gnu.org/mailman/listinfo/info-gengetopt}.
 1959: @c 
 1960: 新たなリリースや機能に関する情報を入手するためのもの(読むだけのメーリン
 1961: グリスト).
 1962: @uref{http://mail.gnu.org/mailman/listinfo/info-gengetopt}.
 1963:  
 1964: @c If you want to subscribe to a mailing list just go to the URL and follow
 1965: @c the instructions, or send me an e-mail and I'll subscribe you.
 1966: @c 
 1967: メーリングリストに参加したい場合,URLに移動し手順に従うか,私に電子メー
 1968: ルを送ってくれれば登録します.
 1969: 
 1970: @node Index,  , Mailing Lists, Top
 1971: @c @unnumbered Index
 1972: @unnumbered 索引
 1973: 
 1974: @printindex cp
 1975: 
 1976: @contents
 1977: @bye
 1978: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>