Provided by: libpcp-pmda3-dev_6.2.0-1.1build4_amd64 bug

NAME

       pmdaGetOpt, pmdaGetOptions - get options from arguments, parsing generic PMDA options

C SYNOPSIS

       #include <pcp/pmapi.h>
       #include <pcp/pmda.h>

       int pmdaGetOptions(int argc, char *const *argv, pmdaOptions *opts, pmdaInterface *dispatch);

       int pmdaGetOpt(int argc, char *const *argv, const char *optstring, pmdaInterface *dispatch, int *err);

       cc ... -lpcp_pmda -lpcp

DESCRIPTION

       These  functions  are  wrappers for pmgetopt_r(3).  The behavior of each function is that certain options
       are assumed to have a predefined behavior which initializes several fields in  the  pmdaInterface  struc‐
       ture.   The  pmdaGetOptions  interface allows both short and long options to be given, whereas pmdaGetOpt
       allows for short form options only.

       The options that both pmdaGetOptions and pmdaGetOpt will trap are:

       -Ddebugspec    Set the PMAPI(3) debugging options to debugspec, as described in  PCPIntro(1).   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).

       -6port         Expect PMCD to connect on ipv6 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.

       The  pmdaGetOptions interface will also capture the following options, and store them within the opts pa‐
       rameter:

       -Uusername     Set the user account name under which the PMDA should execute.

       Only one of -i, -6, -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.

       A PMDA can control which of these options the program will accept with either the opts or optstring argu‐
       ment.  To accept all the options, the PMDA should call pmdaGetOptions with the short_options field of the
       opts  structure set to the PMDA_OPTIONS macro, or pmdaGetOpt with the option string "D:d:h:i:l:pu:".  Any
       PMDA specific options should be added to these strings in the style of getopt(3), and will be returned by
       both pmdaGetOptions and pmdaGetOpt if encountered.

       When a command line option usage error is detected in the pmdaGetOptions interface, the  error  field  of
       the opts structure will contain a non-zero error count.

       pmdaGetOpt takes a pointer to an int, err, which is used as an error count.  This variable should be ini‐
       tialized to zero before pmdaGetOpt is first called, and tested when pmdaGetOpt returns EOF.

       Neither pmdaGetOptions nor pmdaGetOpt modify their argc or argv parameters.

       The global variables used by the system getopt (3) interface may also be used by the caller of pmdaGetOpt
       within the argument parsing loop.

       On the other hand, the pmdaGetOptions interface does not utilize global variables at all (neither reading
       nor modifying them).  Instead, these variables can be access via the opts fields of the same name.

CAVEAT

       The  options  -D, -d, -i, -l, -p and -u cannot be reused for other purposes by the PMDA, unless using the
       override method provided by the pmdaGetOptions interface, which operates in the same way as described for
       the pmGetOptions(3) interface used by PMAPI client tools.

       The PMDA must be using PMDA_INTERFACE_2 or later, as specified in the  call  to  pmdaDSO(3)  or  pmdaDae‐
       mon(3).

DIAGNOSTICS

       Both pmdaGetOptions and pmdaGetOpt will display the same error messages as getopt.

SEE ALSO

       pmdbg(1), getopt(3), pmgetopt_r(3), pmGetOptions(3), PMAPI(3), PMDA(3), pmdaDaemon(3), pmdaDSO(3) and pm‐
       daText(3).

Performance Co-Pilot                                   PCP                                     PMDAGETOPTIONS(3)