UPSCLI_LIST_START(3) ==================== NAME ---- upscli_list_start - begin multi-item retrieval from a UPS SYNOPSIS -------- #include int upscli_list_start(UPSCONN_t *ups, size_t numq, const char **query) DESCRIPTION ----------- The *upscli_list_start()* function takes the pointer 'ups' to a `UPSCONN_t` 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 linkman:upsd[8]. Upon success, the caller must call linkman:upscli_list_next[3] to retrieve the elements of the list. Failure to retrieve the list will most likely result in the client getting out of sync with the server due to buffered data. USES ---- This function implements the "LIST" command in the protocol. As a result, you can use it to request many different things from the server. Some examples are: - LIST UPS - LIST VAR - LIST RW - LIST CMD - LIST ENUM - LIST RANGE QUERY FORMATTING ---------------- To see the list of variables on a UPS called 'su700', the protocol command would be `LIST VAR su700`. To start that list with this function, you would populate query and numq as follows: ------ size_t numq; const char *query[2]; query[0] = "VAR"; query[1] = "su700"; numq = 2; ------ All escaping of special characters and quoting of elements with spaces are handled for you inside this function. ERROR CHECKING -------------- This function checks the response from linkman:upsd[8] against your query. If it is not starting a list, or is starting the wrong type of list, it will return an error code. When this happens, linkman:upscli_upserror[3] will return `UPSCLI_ERR_PROTOCOL`. RETURN VALUE ------------ The *upscli_list_start()* function returns 0 on success, or -1 if an error occurs. SEE ALSO -------- linkman:upscli_fd[3], linkman:upscli_get[3], linkman:upscli_readline[3], linkman:upscli_sendline[3], linkman:upscli_ssl[3], linkman:upscli_strerror[3], linkman:upscli_upserror[3]