Provided by: libxpa-dev_2.1.17-1_amd64 bug

NAME

       XPANSLookup -  lookup registered XPA access points

SYNOPSIS

         #include <xpa.h>

         int XPANSLookup(XPA xpa,
                         char *template, char type,
                         char ***classes, char ***names,
                         char ***methods, char ***infos)

DESCRIPTION

       XPA routines act on a class:name identifier in such a way that all access points that
       match the identifier are processed.  It is sometimes desirable to choose specific access
       points from the candidates that match the template.  In order to do this, the XPANSLookup
       routine can be called to return a list of matches, so that specific class:name instances
       can then be fed to XPAGet(), XPASet(), etc.

        The first argument is an optional XPA struct. If non\-NULL, the
       existing name server connection associated with the specified xpa is
       used to query the xpans name server for matching templates. Otherwise,
       a new (temporary) connection is established with the name server.

       The second argument to XPANSLookup is the class:name template to match.

       The third argument for XPANSLookup() is the type of access and can be any combination of:

         type          explanation
         ------        -----------
         g             xpaget calls can be made on this access point
         s             xpaset calls can be made on this access point
         i             xpainfo calls can be made on this access point

       The call typically specifies only one of these at a time.

       The final arguments are pointers to arrays that will be filled in and returned by the name
       server. The name server will allocate and return arrays filled with the classes, names,
       and methods of all XPA access points that match the template and have the specified type.
       Also returned are info strings, which generally are used internally by the client
       routines. These can be ignored (but the strings must be freed).  The function returns the
       number of matches. The returned value can be used to loop through the matches:

       Example -

         #include <xpa.h>

         char **classes;
         char **names;
         char **methods;
         char **infos;
         int i, n;
         n = XPANSLookup(NULL, "foo*", "g", &classes, &names, &methods, &infos);
         for(i=0; i<n; i++){
           [more specific checks on possibilities ...]
           [perhaps a call to XPAGet for those that pass, etc. ...]
           /* don't forget to free alloc'ed strings when done */
           free(classes[i]);
           free(names[i]);
           free(methods[i]);
           free(infos[i]);
         }
         /* free up arrays alloc'ed by names server */
         if( n > 0 ){
           free(classes);
           free(names);
           free(methods);
           free(infos);
         }

       The specified template also can be a host:port specification, for example:

         myhost:12345

       In this case, no connection is made to the name server. Instead, the call will return one
       entry such that the ip array contains the ip for the specified host and the port array
       contains the port.  The class and name entries are set to the character "?", since the
       class and name of the access point are not known.

SEE ALSO

       See xpa(7) for a list of XPA help pages