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