Man Linux: Main Page and Category List

NAME

       upscli_get - retrieve data from a UPS

SYNOPSIS

       #include <upsclient.h>

       int upscli_get(UPSCONN *ups, int numq, const char **query,
                      int *numa, char ***answer)

DESCRIPTION

       The  upscli_get()  function  takes  the  pointer ups to a UPSCONN state
       structure, and the pointer query to an array of  numq  query  elements.
       It   builds  a  properly-formatted  request  from  those  elements  and
       transmits it to upsd(8).

       Upon success, the response will be split into separate  components.   A
       pointer  to those components will be returned in answer.  The number of
       usable answer components will be returned in numa.

USES

       This function implements the "GET"  command  in  the  protocol.   As  a
       result,  you  can  use  it  to  request  many different things from the
       server.  Some examples are:

        - GET NUMLOGINS <ups>
        - GET UPSDESC <ups>
        - GET VAR <ups> <var>
        - GET TYPE <ups> <var>
        - GET DESC <ups> <var>
        - GET CMDDESC <ups> <cmd>

QUERY FORMATTING

       To generate a request for "GET NUMLOGINS  su700",  you  would  populate
       query and numq as follows:

            int numq;
            const char *query[2];

            query[0] = "NUMLOGINS";
            query[1] = "su700";
            numq = 2;

       All  escaping of special characters and quoting of elements with spaces
       is handled for you inside this function.

ANSWER FORMATTING

       The raw response from upsd to the above query would be "NUMLOGINS su700
       1". Since this is split up for you, the values work out like this:

            numa = 3;
            answer[0] = "NUMLOGINS"
            answer[1] = "su700"
            answer[2] = "1"

       Notice  that the value which you seek typically starts at answer[numq].

ERROR CHECKING

       This function will check your query against  the  response  from  upsd.
       For  example, if you send "VAR" "su700" "ups.status", it will expect to
       see those at the beginning of the response.

       If the results from upsd do not pass this case-insensitive test against
       your  request, this function will return an error.   When this happens,
       upscli_upserror(3) will return UPSCLI_ERR_PROTOCOL.

ANSWER ARRAY LIFETIME

       The pointers contained within the answer array are only valid until the
       next  call  to a upsclient function which references them.  If you need
       to use data from multiple calls, you must copy it somewhere else first.

       The answer array and its elements may change locations, so you must not
       rely on previous addresses.  You must only use the addresses which were
       returned  by  the  most  recent call.  You also must not attempt to use
       more than numa elements in answer.  Such behavior is undefined, and may
       yield bogus data or a crash.

       The  array  will  be  deleted  after calling upscli_disconnect(3).  Any
       access after that point is also undefined.

RETURN VALUE

       The upscli_get() function returns 0 on  success,  or  -1  if  an  error
       occurs.

SEE ALSO

       upscli_list_start(3),      upscli_list_next(3),     upscli_strerror(3),
       upscli_upserror(3)

                                Mon Jan 22 2007