Find the status of printer with the api
picavet
thefxp17 at yahoo.fr
Thu Aug 10 08:03:15 PDT 2006
> picavet wrote:
> > I search to find the method to recuperate the status of printer with the CUPS API.
> > I try to use cupsGetDests but i don't find the "printer-state".
> >
> > How I can do to recuperate this status
>
> What version of CUPS are you using?
>
> For CUPS 1.2 and higher, you can use the cupsGetDests() function and
> then look for the printer-state attribute in the options array:
>
> int num_dests;
> cups_dest_t *dests, *dest;
> const char *value;
> ipp_pstate_t printer_state;
>
>
> num_dests = cupsGetDests(&dests);
> dest = cupsGetDest("myprinter", NULL, num_dests, dests);
> value = cupsGetOption("printer-state", dest->num_options,
> dest->options);
> if (value)
> printer_state = (ipp_pstate_t)atoi(value);
> else
> printer_state = IPP_PRINTER_IDLE;
>
> For all versions of CUPS, you can also send an IPP request to the
> scheduler (IPP_GET_PRINTER_ATTRIBUTES); the following code is for
> CUPS 1.2, but will work with some modification for 1.1 (see the
> 1.1 programmer's manual or the CUPS book for a template):
>
> ipp_pstate_t
> get_printer_state(const char *printer_name)
> {
> http_t *http;
> ipp_t *request, *response;
> ipp_attribute_t *attr;
> ipp_pstate_t printer_state;
> char uri[1024];
>
>
> http = httpConnectEncrypt(cupsServer(), ippPort(), cupsEncryption());
> request = ippNewRequest(IPP_GET_PRINTER_ATTRIBUTES);
>
> httpAssembleURIf(HTTP_URI_CODING_ALL, uri, sizeof(uri), "ipp",
> NULL, cupsServer(), ippPort(), "/printers/%s",
> printer_name);
> ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI,
> "printer-uri", NULL, uri);
> ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD,
> "requested-attributes", NULL, "printer-state");
>
> response = cupsDoRequest(http, request, "/");
> if ((attr = ippFindAttribute(response, "printer-state",
> IPP_TAG_ENUM)) != NULL)
> printer_state = (ipp_pstate_t)attr->values[0].integer;
> else
> printer_state = IPP_PRINTER_IDLE;
>
> ippDelete(response);
>
> return (printer_state);
> }
>
> --
> ______________________________________________________________________
> Michael Sweet, Easy Software Products mike at easysw dot com
> Internet Printing and Document Software http://www.easysw.com
thanks.
I use cups 1.1.17-13.3.37
so i try to use ipp request
More information about the cups-devel
mailing list