NAME
pmdaGetOpt - get options from argument vector, trapping
generic PMDA options
C SYNOPSIS
#include <pcp/pmapi.h>
#include <pcp/impl.h>
#include <pcp/pmda.h>
int pmdaGetOpt(int argc, char *const *argv, const char
*optstring, pmdaInterface *dispatch, int *err)
cc ... -lpcp_pmda -lpcp
DESCRIPTION
This function is a wrapper for getopt(3). The behavior of
the function is identical except that certain options are
assumed to have a predefined behavior which initializes
several fields in the pmdaInterface structure.
The options that pmdaGetOpt will trap are:
-Dtrace Set the PMAPI(3) debug control variable
(pmDebug) to trace. Used for controlling
levels of trace output while debugging.
-ddomain Set the domain number of this agent.
-hhelpfile Obtain the help text (see pmdaText(3)) for
the metrics from this file rather than from
the path specified with pmdaDSO(3) or
pmdaDaemon(3).
-iport Expect PMCD to connect on inet port (number
or name).
-llogfile Redirect diagnostics and trace output to
logfile.
-p Expect PMCD to supply stdin/stdout pipe.
-usocket Expect PMCD to connect on unix domain
socket.
Only one of -i, -p and -u may be specified. If none of
these three options is given, a pipe (-p) is assumed.
When these options are encountered by pmdaGetOpt, the
option is processed and the next option is examined.
Therefore, pmdaGetOpt will only return when an option
other than those listed above is found, or the end of the
list is reached. The returned value will be the argument
or EOF, respectively.
accept with the optstring argument. To accept all the
options, the PMDA should call pmdaGetOpt with the option
string "D:d:h:i:l:pu:". Any PMDA specific options should
be added to this string in the style of getopt(3), and
returned by pmdaGetOpt if encountered. However, the PMDA
cannot reuse any of the options specified above.
pmdaGetOpt takes a pointer to an int, err, which is used
as an error count. This variable should be initialized to
zero before pmdaGetOpt is first called, and tested when
pmdaGetOpt returns EOF.
pmdaGetOpt does not modify argc or argv.
EXAMPLE
A PMDA which takes the additional argument -n and does not
use pmDebug might call pmdaGetOpt like this:
pmdaInterface dispatch;
int err = 0;
int c = 0;
while ((c = pmdaGetOpt(argv, argc, "d:h:i:l:pu:n:",
dispatch &err)) != EOF) {
/* process argument 'n', may use optarg etc. */
}
if (err)
usage(argv[0]);
The global variables used by getopt (3) may be used by the
caller of pmdaGetOpt within the argument parsing loop.
DIAGNOSTICS
pmdaGetOpt will display the same error messages as getopt.
CAVEAT
The options -D, -d, -i, -l, -p and -u cannot be reused for
other purposes by the PMDA.
The PMDA must be using PMDA_INTERFACE_2 or later, as spec
ified in the call to pmdaDSO(3) or pmdaDaemon(3).
SEE ALSO
pmdbg(1), getopt(3), PMAPI(3), PMDA(3), pmdaDaemon(3),
pmdaDSO(3) and pmdaText(3).
Man(1) output converted with
man2html