Provided by: libpcp3-dev_3.10.8build1_amd64 bug


       __pmParseHostSpec,  __pmUnparseHostSpec,  __pmFreeHostSpec  -  uniform  host specification


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

       int __pmParseHostSpec(const char *string, pmHostSpec **hostsp, int *count, char **errmsg);
       int __pmUnparseHostSpec(pmHostSpec *hosts, int count, char *string, size_t size);
       void __pmFreeHostSpec(pmHostSpec *hosts, int count);

       cc ... -lpcp


       __pmParseHostSpec accepts a string specifying the location of  a  PCP  performance  metric
       collector  daemon.   The  syntax  of  the  various  formats of this string is described in
       PCPIntro(1) where several examples are also presented.

       The syntax allows the initial pmcd(1) hostname to be optionally followed by a list of port
       numbers,  which will be tried in order when connecting to pmcd on that host.  The portlist
       is separated from the hostname using a  colon,  and  each  port  in  the  list  is  comma-

       In  addition,  one or more optional pmproxy(1) hosts can be specified (currently, only one
       proxy host is supported by the PCP protocols).  These are separated from  each  other  and
       from  the pmcd component using the @ character.  These may also be followed by an optional
       port list, using the same comma-separated syntax as before.

       __pmParseHostSpec takes a null-terminated host specification string and returns  an  array
       of pmHostSpec structures, where the array has count entries.

       These pmHostSpec structures that are returned via hostsp represent each individual host in
       the specification string and has the following declaration:

           typedef struct {
               char    *name;       /* hostname (always valid) */
               int     *ports;      /* array of host port numbers */
               int     nports;      /* number of ports in host port array */
           } pmHostSpec;

       __pmUnparseHostSpec performs the inverse operation, creating a string representation  from
       a number of hosts structures.  Where the count of structures indicated by hosts is greater
       than one, the proxy syntax is used to indicate a chain of proxied hosts.  The size of  the
       supplied string buffer must be provided by the caller using the size parameter.


       If  the  given string is successfully parsed __pmParseHostSpec returns zero.  In this case
       the  dynamic  storage  allocated  by  __pmParseHostSpec  can  be   released   by   calling
       __pmFreeHostSpec using the address returned from __pmParseHostSpec via hosts.

       __pmParseHostSpec  returns PM_ERR_GENERIC and a dynamically allocated error message string
       in errmsg, if the given string does not parse, and the  user-supplied  errmsg  pointer  is
       non-null.  Be sure to free(3C) the error message string in this situation.

       In the case of an error, hosts is undefined.  In the case of success, errmsg is undefined.

       On  success  __pmUnparseHostSpec  returns  a  positive  value  indicating  the  number  of
       characters written into the supplied buffer.  However, if  the  supplied  buffer  was  too
       small, a negative status code of -E2BIG is returned.


       pmcd(1), pmproxy(1), pmchart(1), __pmParseHostAttrsSpec(3), PMAPI(3) and pmNewContext(3).