Provided by: libpcp-pmda3-dev_3.5.11_amd64 bug


       pmdaGetOpt - get options from argument vector, trapping generic PMDA options


       #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


       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.

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


       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)

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


       pmdaGetOpt will display the same error messages as getopt.


       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 pmdaDaemon(3).


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