Provided by: libpcp-pmda3-dev_3.8.12ubuntu1_amd64 bug

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).

       -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.

       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 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 spe‐
       cific options should be added to this string in the style of getopt(3), and returned by pmdaGetOpt if en‐
       countered.  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 ini‐
       tialized 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:6: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 pars‐
       ing 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 specified in the  call  to  pmdaDSO(3)  or  pmdaDae‐
       mon(3).

SEE ALSO

       pmdbg(1), getopt(3), PMAPI(3), PMDA(3), pmdaDaemon(3), pmdaDSO(3) and pmdaText(3).

Performance Co-Pilot                                   PCP                                         PMDAGETOPT(3)