mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-07 22:27:57 +02:00
135 lines
5.4 KiB
TeX
135 lines
5.4 KiB
TeX
%
|
|
% $Id$
|
|
% This file is part of the FPC documentation.
|
|
% Copyright (C) 1997, by Michael Van Canneyt
|
|
%
|
|
% The FPC documentation is free text; you can redistribute it and/or
|
|
% modify it under the terms of the GNU Library General Public License as
|
|
% published by the Free Software Foundation; either version 2 of the
|
|
% License, or (at your option) any later version.
|
|
%
|
|
% The FPC Documentation is distributed in the hope that it will be useful,
|
|
% but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
% Library General Public License for more details.
|
|
%
|
|
% You should have received a copy of the GNU Library General Public
|
|
% License along with the FPC documentation; see the file COPYING.LIB. If not,
|
|
% write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
% Boston, MA 02111-1307, USA.
|
|
%
|
|
\chapter{The GETOPTS unit.}
|
|
This document describes the GETOPTS unit for Free Pascal. It was written for
|
|
\linux\ by Micha\"el Van Canneyt. It also works under DOS.
|
|
|
|
The chapter is divided in 2 sections:
|
|
\begin{itemize}
|
|
\item The first section lists types, constants and variables from the
|
|
interface part of the unit.
|
|
\item The second section describes the functions defined in the unit.
|
|
\end{itemize}
|
|
|
|
\section {Types, Constants and variables : }
|
|
\subsection{Constants}
|
|
\var{No\_Argument=0} : Specifies that a long option does not take an
|
|
argument. \\
|
|
\var{Required\_Argument=1} : Specifies that a long option needs an
|
|
argument. \\
|
|
\var{Optional\_Argument=2} : Specifies that a long option optionally takes an
|
|
argument. \\
|
|
\var{EndOfOptions=\#255} : Returned by getopt, getlongopts to indicate that
|
|
there are no more options.
|
|
\subsection{Types}
|
|
\begin{verbatim}
|
|
Option = record
|
|
Name : string;
|
|
Has_arg : Integer;
|
|
Flag : ^Char;
|
|
Value : Char;
|
|
end;
|
|
POption = ^Option;
|
|
\end{verbatim}
|
|
The \var{option} type is used to communicate the long options to \var{GetLongOpts}.
|
|
The \var{Name} field is the name of the option. \var{Has\_arg} specifies if the option
|
|
wants an argument, \var{Flag} is a pointer to a \var{char}, which is set to
|
|
\var{Value}, if it is non-\var{nil}.
|
|
|
|
\var{POption} is a pointer to a
|
|
\var{Option} record. It is used as an argument to the \var{GetLongOpts}
|
|
function.
|
|
|
|
\subsection{Variables}
|
|
\var{OptArg:String} \ Is set to the argument of an option, if the option needs
|
|
one.\\
|
|
\var{Optind:Integer} \ Is the index of the current \var{paramstr()}. When
|
|
all options have been processed, \var{optind} is the index of the first
|
|
non-option parameter. This is a read-only variable. Note that it can become
|
|
equal to \var{paramcount+1}\\
|
|
\var{OptErr:Boolean} \ Indicates whether \var{getopt()} prints error
|
|
messages.\\
|
|
\var{OptOpt:Char} \ In case of an error, contains the character causing the
|
|
error.
|
|
\section {Procedures and functions}
|
|
\function {Getopt}{(Shortopts : String)}{Char}
|
|
{
|
|
Returns the next option found on the command-line. If no more options are
|
|
found, returns \var{EndOfOptions}. If the option requires an argument, it is
|
|
returned in the \var{OptArg} variable.
|
|
|
|
\var{ShortOptions} is a string containing all possible one-letter options.
|
|
If a letter is followed by a colon (:), then that option needs an argument.
|
|
If a letter is followed by 2 colons, the option has an optional argument.
|
|
|
|
If the first character of \var{shortoptions} is a \var{'+'} then options following a non-option are
|
|
regarded as non-options (standard Unix behavior). If it is a \var{'-'},
|
|
then all non-options are treated as arguments of a option with character
|
|
\var{\#0}. This is useful for applications that require their options in
|
|
the exact order as they appear on the command-line.
|
|
|
|
If the first character of \var{shortoptions} is none of the above, options
|
|
and non-options are permuted, so all non-options are behind all options.
|
|
This allows options and non-options to be in random order on the command
|
|
line.
|
|
}
|
|
{
|
|
Errors are reported through giving back a \var{'?'} character. \var{OptOpt}
|
|
then gives the character which caused the error. If \var{OptErr} is
|
|
\var{True} then getopt prints an error-message to \var{stdout}.
|
|
}
|
|
{\seef{GetLongOpts}, \seem{getopt}{3}}
|
|
|
|
\input{optex/optex.tex}
|
|
|
|
\function {GetLongOpts}{(Shortopts : String, LongOpts : POption; var Longint
|
|
: Integer )}{Char}
|
|
{
|
|
Returns the next option found on the command-line, taking into account long
|
|
options as well. If no more options are
|
|
found, returns \var{EndOfOptions}. If the option requires an argument, it is
|
|
returned in the \var{OptArg} variable.
|
|
|
|
\var{ShortOptions} is a string containing all possible one-letter options.
|
|
(see \seef{Getopt} for its description and use)
|
|
|
|
\var{LongOpts} is a pointer to the first element of an array of \var{Option}
|
|
records, the last of which needs a name of zero length.
|
|
The function tries to match the names even partially (i.e. \var{--app}
|
|
will match e.g. the \var{append} option), but will report an error in case of
|
|
ambiguity.
|
|
|
|
If the option needs an argument, set \var{Has\_arg} to
|
|
\var{Required\_argument}, if the option optionally has an argument, set
|
|
\var{Has\_arg} to \var{Optional\_argument}. If the option needs no argument,
|
|
set \var{Has\_arg} to zero.
|
|
|
|
|
|
Required arguments can be specified in two ways :
|
|
\begin{enumerate}
|
|
\item \ Pasted to the option : \var{--option=value}
|
|
\item \ As a separate argument : \var {--option value}
|
|
\end{enumerate}
|
|
Optional arguments can only be specified through the first method.
|
|
}
|
|
{ see \seef{Getopt}, \seem{getopt}{3}}
|
|
|
|
For an example, see \seef{Getopt} |