]> git.ipfire.org Git - thirdparty/cups.git/blob - doc/help/api-httpipp.html
Merge changes from CUPS 1.4svn-r7696.
[thirdparty/cups.git] / doc / help / api-httpipp.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
2 <html>
3 <!-- SECTION: Programming -->
4 <head>
5 <title>HTTP and IPP APIs</title>
6 <meta name="keywords" content="Programming">
7 <meta name="creator" content="Mini-XML v2.5">
8 <style type="text/css"><!--
9 BODY {
10 font-family: lucida grande, geneva, helvetica, arial, sans-serif;
11 }
12
13 H1, H2, H3, H4, H5, H6, P, TD, TH {
14 font-family: lucida grande, geneva, helvetica, arial, sans-serif;
15 }
16
17 KBD {
18 font-family: monaco, courier, monospace;
19 font-weight: bold;
20 }
21
22 PRE {
23 font-family: monaco, courier, monospace;
24 }
25
26 PRE.command {
27 margin-left: 36pt;
28 }
29
30 PRE.example {
31 background: #eeeeee;
32 border: dotted thin #999999;
33 margin-left: 36pt;
34 padding: 10px;
35 }
36
37 PRE.command EM, PRE.example EM {
38 font-family: lucida grande, geneva, helvetica, arial, sans-serif;
39 }
40
41 P.command {
42 font-family: monaco, courier, monospace;
43 margin-left: 36pt;
44 }
45
46 P.formula {
47 font-style: italic;
48 margin-left: 36pt;
49 }
50
51 BLOCKQUOTE {
52 background: #cccccc;
53 border: solid thin #999999;
54 padding: 10pt;
55 }
56
57 A:link, A:visited {
58 font-weight: normal;
59 text-decoration: none;
60 }
61
62 A:link:hover, A:visited:hover, A:active {
63 text-decoration: underline;
64 }
65
66 SUB, SUP {
67 font-size: 50%;
68 }
69
70 DIV.table TABLE {
71 border: solid thin #999999;
72 border-collapse: collapse;
73 border-spacing: 0;
74 margin-left: auto;
75 margin-right: auto;
76 }
77
78 DIV.table CAPTION {
79 caption-side: top;
80 font-size: 120%;
81 font-style: italic;
82 font-weight: bold;
83 margin-left: auto;
84 margin-right: auto;
85 }
86
87 DIV.table TABLE TD {
88 border: solid thin #cccccc;
89 padding-top: 5pt;
90 }
91
92 DIV.table TABLE TH {
93 background: #cccccc;
94 border: none;
95 border-bottom: solid thin #999999;
96 }
97
98 DIV.figure TABLE {
99 margin-left: auto;
100 margin-right: auto;
101 }
102
103 DIV.figure CAPTION {
104 caption-side: bottom;
105 font-size: 120%;
106 font-style: italic;
107 font-weight: bold;
108 margin-left: auto;
109 margin-right: auto;
110 }
111
112 TH.label {
113 padding-top: 5pt;
114 text-align: right;
115 vertical-align: top;
116 }
117
118 HR {
119 border: solid thin;
120 }
121
122 SPAN.info {
123 background: #000000;
124 border: thin solid #000000;
125 color: #ffffff;
126 font-size: 80%;
127 font-style: italic;
128 font-weight: bold;
129 white-space: nowrap;
130 }
131
132 H2 SPAN.info, H3 SPAN.info, H4 SPAN.info {
133 float: right;
134 font-size: 100%;
135 }
136
137 H2.title, H3.title {
138 border-bottom: solid 2pt #000000;
139 }
140
141 DT {
142 margin-left: 36pt;
143 margin-top: 12pt;
144 }
145
146 DD {
147 margin-left: 54pt;
148 }
149
150 DL.category DT {
151 font-weight: bold;
152 }
153
154 P.summary {
155 margin-left: 36pt;
156 font-family: monaco, courier, monospace;
157 }
158
159 SPAN.message {
160 font-style: italic;
161 font-size: smaller;
162 }
163
164 DIV.summary TABLE {
165 border: solid thin #999999;
166 border-collapse: collapse;
167 border-spacing: 0;
168 margin: 10px;
169 }
170
171 DIV.summary TABLE TD, DIV.summary TABLE TH {
172 border: solid thin #999999;
173 padding: 5px;
174 text-align: left;
175 vertical-align: top;
176 }
177
178 DIV.summary TABLE THEAD TH {
179 background: #eeeeee;
180 }
181
182 /* API documentation styles... */
183 div.body h1 {
184 margin: 0;
185 }
186 div.body h2 {
187 margin-top: 1.5em;
188 }
189 div.body h3, div.body h4, div.body h5 {
190 margin-bottom: 0.5em;
191 margin-top: 1.5em;
192 }
193 .class, .enumeration, .function, .struct, .typedef, .union {
194 border-bottom: solid thin #999999;
195 margin-bottom: 0;
196 margin-top: 2em;
197 }
198 .description {
199 margin-top: 0.5em;
200 }
201 code, p.code, pre, ul.code li {
202 font-family: monaco, courier, monospace;
203 font-size: 90%;
204 }
205 ul.code, ul.contents, ul.subcontents {
206 list-style-type: none;
207 margin: 0;
208 padding-left: 0;
209 }
210 ul.code li {
211 margin: 0;
212 }
213 ul.contents > li {
214 margin-top: 1em;
215 }
216 ul.contents li ul.code, ul.contents li ul.subcontents {
217 padding-left: 2em;
218 }
219 div.body dl {
220 margin-left: 0;
221 margin-top: 0;
222 }
223 div.body dt {
224 font-style: italic;
225 margin-left: 0;
226 margin-top: 0;
227 }
228 div.body dd {
229 margin-bottom: 0.5em;
230 }
231
232 /* This is just for the HTML files generated with the framedhelp target */
233 div.contents {
234 background: #e8e8e8;
235 border: solid thin black;
236 padding: 10px;
237 }
238 div.contents h1 {
239 font-size: 110%;
240 }
241 div.contents h2 {
242 font-size: 100%;
243 }
244 div.contents ul.contents {
245 font-size: 80%;
246 }
247 div.contents ul.subcontents li {
248 margin-left: 1em;
249 text-indent: -1em;
250 }
251 --></style>
252 </head>
253 <body>
254 <div class='body'>
255 <!--
256 "$Id: api-httpipp.header 7258 2008-01-28 00:15:05Z mike $"
257
258 HTTP and IPP API header for the Common UNIX Printing System (CUPS).
259
260 Copyright 2007-2008 by Apple Inc.
261 Copyright 1997-2006 by Easy Software Products, all rights reserved.
262
263 These coded instructions, statements, and computer programs are the
264 property of Apple Inc. and are protected by Federal copyright
265 law. Distribution and use rights are outlined in the file "LICENSE.txt"
266 which should have been included with this file. If this file is
267 file is missing or damaged, see the license at "http://www.cups.org/".
268 -->
269
270 <h1 class="title">HTTP and IPP APIs</h1>
271
272 <div class='summary'><table summary='General Information'>
273 <thead>
274 <tr>
275 <th>Header</th>
276 <th>cups/cups.h</th>
277 </tr>
278 </thead>
279 <tbody>
280 <tr>
281 <th>Library</th>
282 <td>-lcups</td>
283 </tr>
284 <tr>
285 <th>See Also</th>
286 <td>Programming: <a href='api-overview.html'>Introduction to CUPS Programming</a><br>
287 Programming: <a href='api-cups.html'>CUPS API</a><br>
288 References: <a href='spec-ipp.html'>CUPS Implementation of IPP</a></td>
289 </tr>
290 </tbody>
291 </table></div>
292 <h2 class="title">Contents</h2>
293 <ul class="contents">
294 </li>
295 <li><a href="#OVERVIEW">Overview</a><ul class="subcontents">
296 <li><a href="#CREATING_URI_STRINGS">Creating URI Strings</a></li>
297 <li><a href="#SENDING_REQUESTS_WITH_FILES">Sending Requests with Files</a></li>
298 <li><a href="#ASYNCHRONOUS_REQUEST_PROCESSING">Asynchronous Request Processing</a></li>
299 </ul></li>
300 <li><a href="#FUNCTIONS">Functions</a><ul class="code">
301 <li><a href="#cupsDoAuthentication" title="Authenticate a request.">cupsDoAuthentication</a></li>
302 <li><a href="#cupsDoFileRequest" title="Do an IPP request with a file.">cupsDoFileRequest</a></li>
303 <li><a href="#cupsDoIORequest" title="Do an IPP request with file descriptors.">cupsDoIORequest</a></li>
304 <li><a href="#cupsDoRequest" title="Do an IPP request.">cupsDoRequest</a></li>
305 <li><a href="#cupsEncodeOptions" title="Encode printer options into IPP attributes.">cupsEncodeOptions</a></li>
306 <li><a href="#cupsEncodeOptions2" title="Encode printer options into IPP attributes for a group.">cupsEncodeOptions2</a></li>
307 <li><a href="#cupsGetDevices" title="Get available printer devices.">cupsGetDevices</a></li>
308 <li><a href="#cupsGetFd" title="Get a file from the server.">cupsGetFd</a></li>
309 <li><a href="#cupsGetFile" title="Get a file from the server.">cupsGetFile</a></li>
310 <li><a href="#cupsGetResponse" title="Get a response to an IPP request.">cupsGetResponse</a></li>
311 <li><a href="#cupsPutFd" title="Put a file on the server.">cupsPutFd</a></li>
312 <li><a href="#cupsPutFile" title="Put a file on the server.">cupsPutFile</a></li>
313 <li><a href="#cupsReadResponseData" title="Read additional data after the IPP response.">cupsReadResponseData</a></li>
314 <li><a href="#cupsSendRequest" title="Send an IPP request.">cupsSendRequest</a></li>
315 <li><a href="#cupsWriteRequestData" title="Write additional data after an IPP request.">cupsWriteRequestData</a></li>
316 <li><a href="#httpAddrAny" title="Check for the &quot;any&quot; address.">httpAddrAny</a></li>
317 <li><a href="#httpAddrEqual" title="Compare two addresses.">httpAddrEqual</a></li>
318 <li><a href="#httpAddrLength" title="Return the length of the address in bytes.">httpAddrLength</a></li>
319 <li><a href="#httpAddrLocalhost" title="Check for the local loopback address.">httpAddrLocalhost</a></li>
320 <li><a href="#httpAddrLookup" title="Lookup the hostname associated with the address.">httpAddrLookup</a></li>
321 <li><a href="#httpAddrString" title="Convert an address to a numeric string.">httpAddrString</a></li>
322 <li><a href="#httpAssembleURI" title="Assemble a uniform resource identifier from its
323 components.">httpAssembleURI</a></li>
324 <li><a href="#httpAssembleURIf" title="Assemble a uniform resource identifier from its
325 components with a formatted resource.">httpAssembleURIf</a></li>
326 <li><a href="#httpBlocking" title="Set blocking/non-blocking behavior on a connection.">httpBlocking</a></li>
327 <li><a href="#httpCheck" title="Check to see if there is a pending response from the server.">httpCheck</a></li>
328 <li><a href="#httpClearCookie" title="Clear the cookie value(s).">httpClearCookie</a></li>
329 <li><a href="#httpClearFields" title="Clear HTTP request fields.">httpClearFields</a></li>
330 <li><a href="#httpClose" title="Close an HTTP connection...">httpClose</a></li>
331 <li><a href="#httpConnect" title="Connect to a HTTP server.">httpConnect</a></li>
332 <li><a href="#httpConnectEncrypt" title="Connect to a HTTP server using encryption.">httpConnectEncrypt</a></li>
333 <li><a href="#httpDecode64" title="Base64-decode a string.">httpDecode64</a></li>
334 <li><a href="#httpDecode64_2" title="Base64-decode a string.">httpDecode64_2</a></li>
335 <li><a href="#httpDelete" title="Send a DELETE request to the server.">httpDelete</a></li>
336 <li><a href="#httpEncode64" title="Base64-encode a string.">httpEncode64</a></li>
337 <li><a href="#httpEncode64_2" title="Base64-encode a string.">httpEncode64_2</a></li>
338 <li><a href="#httpEncryption" title="Set the required encryption on the link.">httpEncryption</a></li>
339 <li><a href="#httpError" title="Get the last error on a connection.">httpError</a></li>
340 <li><a href="#httpFlush" title="Flush data from a HTTP connection.">httpFlush</a></li>
341 <li><a href="#httpFlushWrite" title="Flush data in write buffer.">httpFlushWrite</a></li>
342 <li><a href="#httpGet" title="Send a GET request to the server.">httpGet</a></li>
343 <li><a href="#httpGetAuthString" title="Get the current authorization string.">httpGetAuthString</a></li>
344 <li><a href="#httpGetBlocking" title="Get the blocking/non-block state of a connection.">httpGetBlocking</a></li>
345 <li><a href="#httpGetCookie" title="Get any cookie data from the response.">httpGetCookie</a></li>
346 <li><a href="#httpGetDateString" title="Get a formatted date/time string from a time value.">httpGetDateString</a></li>
347 <li><a href="#httpGetDateString2" title="Get a formatted date/time string from a time value.">httpGetDateString2</a></li>
348 <li><a href="#httpGetDateTime" title="Get a time value from a formatted date/time string.">httpGetDateTime</a></li>
349 <li><a href="#httpGetFd" title="Get the file descriptor associated with a connection.">httpGetFd</a></li>
350 <li><a href="#httpGetField" title="Get a field value from a request/response.">httpGetField</a></li>
351 <li><a href="#httpGetHostByName" title="Lookup a hostname or IPv4 address, and return
352 address records for the specified name.">httpGetHostByName</a></li>
353 <li><a href="#httpGetHostname" title="Get the FQDN for the connection or local system.">httpGetHostname</a></li>
354 <li><a href="#httpGetLength" title="Get the amount of data remaining from the
355 content-length or transfer-encoding fields.">httpGetLength</a></li>
356 <li><a href="#httpGetLength2" title="Get the amount of data remaining from the
357 content-length or transfer-encoding fields.">httpGetLength2</a></li>
358 <li><a href="#httpGetStatus" title="Get the status of the last HTTP request.">httpGetStatus</a></li>
359 <li><a href="#httpGetSubField" title="Get a sub-field value.">httpGetSubField</a></li>
360 <li><a href="#httpGetSubField2" title="Get a sub-field value.">httpGetSubField2</a></li>
361 <li><a href="#httpGets" title="Get a line of text from a HTTP connection.">httpGets</a></li>
362 <li><a href="#httpHead" title="Send a HEAD request to the server.">httpHead</a></li>
363 <li><a href="#httpInitialize" title="Initialize the HTTP interface library and set the
364 default HTTP proxy (if any).">httpInitialize</a></li>
365 <li><a href="#httpMD5" title="Compute the MD5 sum of the username:group:password.">httpMD5</a></li>
366 <li><a href="#httpMD5Final" title="Combine the MD5 sum of the username, group, and password
367 with the server-supplied nonce value, method, and
368 request-uri.">httpMD5Final</a></li>
369 <li><a href="#httpMD5String" title="Convert an MD5 sum to a character string.">httpMD5String</a></li>
370 <li><a href="#httpOptions" title="Send an OPTIONS request to the server.">httpOptions</a></li>
371 <li><a href="#httpPost" title="Send a POST request to the server.">httpPost</a></li>
372 <li><a href="#httpPut" title="Send a PUT request to the server.">httpPut</a></li>
373 <li><a href="#httpRead" title="Read data from a HTTP connection.">httpRead</a></li>
374 <li><a href="#httpRead2" title="Read data from a HTTP connection.">httpRead2</a></li>
375 <li><a href="#httpReconnect" title="Reconnect to a HTTP server.">httpReconnect</a></li>
376 <li><a href="#httpSeparate" title="Separate a Universal Resource Identifier into its
377 components.">httpSeparate</a></li>
378 <li><a href="#httpSeparate2" title="Separate a Universal Resource Identifier into its
379 components.">httpSeparate2</a></li>
380 <li><a href="#httpSeparateURI" title="Separate a Universal Resource Identifier into its
381 components.">httpSeparateURI</a></li>
382 <li><a href="#httpSetAuthString" title="Set the current authorization string.">httpSetAuthString</a></li>
383 <li><a href="#httpSetCookie" title="Set the cookie value(s)...">httpSetCookie</a></li>
384 <li><a href="#httpSetExpect" title="Set the Expect: header in a request.">httpSetExpect</a></li>
385 <li><a href="#httpSetField" title="Set the value of an HTTP header.">httpSetField</a></li>
386 <li><a href="#httpSetLength" title="Set the content-length and content-encoding.">httpSetLength</a></li>
387 <li><a href="#httpStatus" title="Return a short string describing a HTTP status code.">httpStatus</a></li>
388 <li><a href="#httpTrace" title="Send an TRACE request to the server.">httpTrace</a></li>
389 <li><a href="#httpUpdate" title="Update the current HTTP state for incoming data.">httpUpdate</a></li>
390 <li><a href="#httpWait" title="Wait for data available on a connection.">httpWait</a></li>
391 <li><a href="#httpWrite" title="Write data to a HTTP connection.">httpWrite</a></li>
392 <li><a href="#httpWrite2" title="Write data to a HTTP connection.">httpWrite2</a></li>
393 <li><a href="#ippAddBoolean" title="Add a boolean attribute to an IPP message.">ippAddBoolean</a></li>
394 <li><a href="#ippAddBooleans" title="Add an array of boolean values.">ippAddBooleans</a></li>
395 <li><a href="#ippAddCollection" title="Add a collection value.">ippAddCollection</a></li>
396 <li><a href="#ippAddCollections" title="Add an array of collection values.">ippAddCollections</a></li>
397 <li><a href="#ippAddDate" title="Add a date attribute to an IPP message.">ippAddDate</a></li>
398 <li><a href="#ippAddInteger" title="Add a integer attribute to an IPP message.">ippAddInteger</a></li>
399 <li><a href="#ippAddIntegers" title="Add an array of integer values.">ippAddIntegers</a></li>
400 <li><a href="#ippAddOctetString" title="Add an octetString value to an IPP message.">ippAddOctetString</a></li>
401 <li><a href="#ippAddRange" title="Add a range of values to an IPP message.">ippAddRange</a></li>
402 <li><a href="#ippAddRanges" title="Add ranges of values to an IPP message.">ippAddRanges</a></li>
403 <li><a href="#ippAddResolution" title="Add a resolution value to an IPP message.">ippAddResolution</a></li>
404 <li><a href="#ippAddResolutions" title="Add resolution values to an IPP message.">ippAddResolutions</a></li>
405 <li><a href="#ippAddSeparator" title="Add a group separator to an IPP message.">ippAddSeparator</a></li>
406 <li><a href="#ippAddString" title="Add a language-encoded string to an IPP message.">ippAddString</a></li>
407 <li><a href="#ippAddStrings" title="Add language-encoded strings to an IPP message.">ippAddStrings</a></li>
408 <li><a href="#ippDateToTime" title="Convert from RFC 1903 Date/Time format to UNIX time
409 in seconds.">ippDateToTime</a></li>
410 <li><a href="#ippDelete" title="Delete an IPP message.">ippDelete</a></li>
411 <li><a href="#ippDeleteAttribute" title="Delete a single attribute in an IPP message.">ippDeleteAttribute</a></li>
412 <li><a href="#ippErrorString" title="Return a name for the given status code.">ippErrorString</a></li>
413 <li><a href="#ippErrorValue" title="Return a status code for the given name.">ippErrorValue</a></li>
414 <li><a href="#ippFindAttribute" title="Find a named attribute in a request...">ippFindAttribute</a></li>
415 <li><a href="#ippFindNextAttribute" title="Find the next named attribute in a request...">ippFindNextAttribute</a></li>
416 <li><a href="#ippLength" title="Compute the length of an IPP message.">ippLength</a></li>
417 <li><a href="#ippNew" title="Allocate a new IPP message.">ippNew</a></li>
418 <li><a href="#ippNewRequest" title="Allocate a new IPP request message.">ippNewRequest</a></li>
419 <li><a href="#ippOpString" title="Return a name for the given operation id.">ippOpString</a></li>
420 <li><a href="#ippOpValue" title="Return an operation id for the given name.">ippOpValue</a></li>
421 <li><a href="#ippPort" title="Return the default IPP port number.">ippPort</a></li>
422 <li><a href="#ippRead" title="Read data for an IPP message from a HTTP connection.">ippRead</a></li>
423 <li><a href="#ippReadFile" title="Read data for an IPP message from a file.">ippReadFile</a></li>
424 <li><a href="#ippReadIO" title="Read data for an IPP message.">ippReadIO</a></li>
425 <li><a href="#ippSetPort" title="Set the default port number.">ippSetPort</a></li>
426 <li><a href="#ippTimeToDate" title="Convert from UNIX time to RFC 1903 format.">ippTimeToDate</a></li>
427 <li><a href="#ippWrite" title="Write data for an IPP message to a HTTP connection.">ippWrite</a></li>
428 <li><a href="#ippWriteFile" title="Write data for an IPP message to a file.">ippWriteFile</a></li>
429 <li><a href="#ippWriteIO" title="Write data for an IPP message.">ippWriteIO</a></li>
430 </ul>
431 <li><a href="#TYPES">Data Types</a><ul class="code">
432 <li><a href="#http_addrlist_t" title="Socket address list, which is
433 used to enumerate all of the
434 addresses that are associated
435 with a hostname. ">http_addrlist_t</a></li>
436 <li><a href="#http_auth_t" title="HTTP authentication types">http_auth_t</a></li>
437 <li><a href="#http_encoding_t" title="HTTP transfer encoding values">http_encoding_t</a></li>
438 <li><a href="#http_encryption_t" title="HTTP encryption values">http_encryption_t</a></li>
439 <li><a href="#http_field_t" title="HTTP field names">http_field_t</a></li>
440 <li><a href="#http_keepalive_t" title="Types and structures...">http_keepalive_t</a></li>
441 <li><a href="#http_status_t" title="HTTP status codes">http_status_t</a></li>
442 <li><a href="#http_t" title="HTTP connection type">http_t</a></li>
443 <li><a href="#http_uri_coding_t" title="HTTP version numbers">http_uri_coding_t</a></li>
444 <li><a href="#http_uri_status_t" title="URI en/decode flags">http_uri_status_t</a></li>
445 <li><a href="#http_version_t" title="Socket address union, which
446 makes using IPv6 and other
447 address types easier and
448 more portable. ">http_version_t</a></li>
449 <li><a href="#ipp_attribute_t" title="Attribute">ipp_attribute_t</a></li>
450 <li><a href="#ipp_finish_t" title="Orientation...">ipp_finish_t</a></li>
451 <li><a href="#ipp_iocb_t" title="IPP IO Callback Function ">ipp_iocb_t</a></li>
452 <li><a href="#ipp_jstate_t" title="Printer States....">ipp_jstate_t</a></li>
453 <li><a href="#ipp_op_t" title="Old names for the operations">ipp_op_t</a></li>
454 <li><a href="#ipp_orient_t" title="Qualities...">ipp_orient_t</a></li>
455 <li><a href="#ipp_pstate_t" title="IPP states...">ipp_pstate_t</a></li>
456 <li><a href="#ipp_quality_t" title="Job States....">ipp_quality_t</a></li>
457 <li><a href="#ipp_request_t" title="Request Header">ipp_request_t</a></li>
458 <li><a href="#ipp_res_t" title="Types and structures...">ipp_res_t</a></li>
459 <li><a href="#ipp_state_t" title="IPP operations...">ipp_state_t</a></li>
460 <li><a href="#ipp_t" title="Attribute Value">ipp_t</a></li>
461 <li><a href="#ipp_uchar_t" title="IPP status codes...">ipp_uchar_t</a></li>
462 <li><a href="#ipp_tag_t" title="Format tags for attributes...">ipp_tag_t</a></li>
463 <li><a href="#ipp_value_t" title="New in CUPS 1.1.19">ipp_value_t</a></li>
464 </ul></li>
465 <li><a href="#STRUCTURES">Structures</a><ul class="code">
466 <li><a href="#http_addrlist_s" title="Socket address list, which is
467 used to enumerate all of the
468 addresses that are associated
469 with a hostname. ">http_addrlist_s</a></li>
470 <li><a href="#ipp_attribute_s" title="Attribute">ipp_attribute_s</a></li>
471 <li><a href="#ipp_s" title="IPP Request/Response/Notification">ipp_s</a></li>
472 </ul></li>
473 <li><a href="#UNIONS">Unions</a><ul class="code">
474 <li><a href="#ipp_request_u" title="Request Header">ipp_request_u</a></li>
475 <li><a href="#ipp_value_u" title="New in CUPS 1.1.19">ipp_value_u</a></li>
476 </ul></li>
477 <li><a href="#ENUMERATIONS">Constants</a><ul class="code">
478 <li><a href="#http_auth_e" title="HTTP authentication types">http_auth_e</a></li>
479 <li><a href="#http_encoding_e" title="HTTP transfer encoding values">http_encoding_e</a></li>
480 <li><a href="#http_encryption_e" title="HTTP encryption values">http_encryption_e</a></li>
481 <li><a href="#http_field_e" title="HTTP field names">http_field_e</a></li>
482 <li><a href="#http_keepalive_e" title="Types and structures...">http_keepalive_e</a></li>
483 <li><a href="#http_state_e" title="">http_state_e</a></li>
484 <li><a href="#http_status_e" title="HTTP status codes">http_status_e</a></li>
485 <li><a href="#http_uri_coding_e" title="">http_uri_coding_e</a></li>
486 <li><a href="#http_uri_status_e" title="">http_uri_status_e</a></li>
487 <li><a href="#http_version_e" title="">http_version_e</a></li>
488 <li><a href="#ipp_finish_e" title="">ipp_finish_e</a></li>
489 <li><a href="#ipp_jstate_e" title="">ipp_jstate_e</a></li>
490 <li><a href="#ipp_op_e" title="">ipp_op_e</a></li>
491 <li><a href="#ipp_orient_e" title="">ipp_orient_e</a></li>
492 <li><a href="#ipp_pstate_e" title="">ipp_pstate_e</a></li>
493 <li><a href="#ipp_quality_e" title="">ipp_quality_e</a></li>
494 <li><a href="#ipp_res_e" title="Types and structures...">ipp_res_e</a></li>
495 <li><a href="#ipp_state_e" title="">ipp_state_e</a></li>
496 <li><a href="#ipp_status_e" title="IPP status codes...">ipp_status_e</a></li>
497 <li><a href="#ipp_tag_e" title="Format tags for attributes...">ipp_tag_e</a></li>
498 </ul></li>
499 </ul>
500 <!--
501 "$Id: api-httpipp.shtml 7258 2008-01-28 00:15:05Z mike $"
502
503 HTTP and IPP API introduction for the Common UNIX Printing System (CUPS).
504
505 Copyright 2007-2008 by Apple Inc.
506 Copyright 1997-2006 by Easy Software Products, all rights reserved.
507
508 These coded instructions, statements, and computer programs are the
509 property of Apple Inc. and are protected by Federal copyright
510 law. Distribution and use rights are outlined in the file "LICENSE.txt"
511 which should have been included with this file. If this file is
512 file is missing or damaged, see the license at "http://www.cups.org/".
513 -->
514
515 <h2 class='title'><a name='OVERVIEW'>Overview</a></h2>
516
517 <p>The CUPS HTTP and IPP APIs provide low-level access to the HTTP and IPP
518 protocols and CUPS scheduler. They are typically used by monitoring and
519 administration programs to perform specific functions not supported by the
520 high-level CUPS API functions.</p>
521
522 <p>The HTTP APIs use an opaque structure called
523 <a href='#http_t'><code>http_t</code></a> to manage connections to
524 a particular HTTP or IPP server. The
525 <a href='#httpConnectEncrypt'><code>httpConnectEncrypt</code></a> function is
526 used to create an instance of this structure for a particular server.
527 The constant <code>CUPS_HTTP_DEFAULT</code> can be used with all of the
528 <code>cups</code> functions to refer to the default CUPS server - the functions
529 create a per-thread <a href='#http_t'><code>http_t</code></a> as needed.</p>
530
531 <p>The IPP APIs use two structures for requests (messages sent to the CUPS
532 scheduler) and responses (messages sent back to your application from the
533 scheduler). The <a href='#ipp_t'><code>ipp_t</code></a> structure holds a
534 complete request or response and is allocated using the
535 <a href='#ippNew'><code>ippNew</code></a> or
536 <a href='#ippNewRequest'><code>ippNewRequest</code></a> functions and
537 freed using the <a href='#ippDelete'><code>ippDelete</code></a> function.</p>
538
539 <p>The second structure is called
540 <a href='#ipp_attribute_t'><code>ipp_attribute_t</code></a> and holds a
541 single IPP attribute which consists of a group tag (<code>group_tag</code>), a
542 value type tag (<code>value_tag</code>), the attribute name (<code>name</code>),
543 and 1 or more values (<code>values[]</code>). Attributes are added to an
544 <a href='#ipp_t'><code>ipp_t</code></a> structure using one of the
545 <code>ippAdd</code> functions. For example, use
546 <a href='#ippAddString'><code>ippAddString</code></a> to add a
547 "requesting-user-name" string attribute to a request:</p>
548
549 <pre class='example'>
550 <a href='#ipp_t'>ipp_t</a> *request = <a href='#ippNewRequest'>ippNewRequest</a>(IPP_GET_JOBS);
551
552 <a href='#ippAddString'>ippAddString</a>(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "requesting-user-name",
553 NULL, cupsUser());
554 </pre>
555
556 <p>Once you have created an IPP request, use the <code>cups</code>
557 functions to send the request to and read the response from the server.
558 For example, the <a href='#cupsDoRequest'><code>cupsDoRequest</code></a>
559 function can be used for simple query operations that do not involve files:</p>
560
561 <pre class='example'>
562 #include &lt;cups/cups.h&gt;
563
564
565 <a href='#ipp_t'>ipp_t</a> *<a name='get_jobs'>get_jobs</a>(void)
566 {
567 <a href='#ipp_t'>ipp_t</a> *request = <a href='#ippNewRequest'>ippNewRequest</a>(IPP_GET_JOBS);
568
569 <a href='#ippAddString'>ippAddString</a>(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "requesting-user-name",
570 NULL, cupsUser());
571
572 return (<a href='#cupsDoRequest'>cupsDoRequest</a>(CUPS_HTTP_DEFAULT, request, "/"));
573 }
574 </pre>
575
576 <p>The <a href='#cupsDoRequest'><code>cupsDoRequest</code></a> function frees
577 the request structure and returns an IPP response structure or NULL pointer if
578 the request could not be sent to the server. Once you have a response from
579 the server, you can either use the
580 <a href='#ippFindAttribute'><code>ippFindAttribute</code></a> and
581 <a href='#ippFindNextAttribute'><code>ippFindNextAttribute</code></a> functions
582 to find specific attributes, for example:</p>
583
584 <pre class='example'>
585 <a href='#ipp_t'>ipp_t</a> *response;
586 <a href='#ipp_attribute_t'>ipp_attribute_t</a> *attr;
587
588 attr = <a href='#ippFindAttribute'>ippFindAttribute</a>(response, "printer-state", IPP_TAG_ENUM);
589 </pre>
590
591 <p>You can also walk the list of attributes with a simple <code>for</code> loop
592 like this:</p>
593
594 <pre class='example'>
595 <a href='#ipp_t'>ipp_t</a> *response;
596 <a href='#ipp_attribute_t'>ipp_attribute_t</a> *attr;
597
598 for (attr = response->attrs; attr != NULL; attr = attr->next)
599 if (attr->name == NULL)
600 puts("--SEPARATOR--");
601 else
602 puts(attr->name);
603 </pre>
604
605 <p>The <code>for</code> loop approach is normally used when collecting
606 attributes for multiple objects (jobs, printers, etc.) in a response. Attributes
607 with <code>NULL</code> names indicate a separator between the attributes of
608 each object. For example, the following code will list the jobs returned from
609 our previous <a href='#get_jobs'><code>get_jobs</code></a> example code:</p>
610
611 <pre class='example'>
612 <a href='#ipp_t'>ipp_t</a> *response = <a href='#get_jobs'>get_jobs</a>();
613
614 if (response != NULL)
615 {
616 <a href='#ipp_attribute_t'>ipp_attribute_t</a> *attr;
617 int job_id = 0;
618 char *job_name = NULL;
619 char *job_originating_user_name = NULL;
620
621 puts("Job ID Owner Title");
622 puts("------ ---------------- ---------------------------------");
623
624 for (attr = response->attrs; attr != NULL; attr = attr->next)
625 {
626 /* Attributes without names are separators between jobs */
627 if (attr->name == NULL)
628 {
629 if (job_id > 0 &amp;&amp; job_name != NULL &amp;&amp; job_originating_user_name != NULL)
630 printf("%5d %-16s %s\n", job_id, job_originating_user_name, job_name);
631
632 job_id = 0;
633 job_name = NULL;
634 job_originating_user_name = NULL;
635 continue;
636 }
637 else if (!strcmp(attr->name, "job-id") &amp;&amp; attr->value_tag == IPP_TAG_INTEGER)
638 job_id = attr->values[0].integer;
639 else if (!strcmp(attr->name, "job-name") &amp;&amp; attr->value_tag == IPP_TAG_NAME)
640 job_name = attr->values[0].string.text;
641 else if (!strcmp(attr->name, "job-originating-user-name") &amp;&amp;
642 attr->value_tag == IPP_TAG_NAME)
643 job_originating_user_name = attr->values[0].string.text;
644 }
645
646 if (job_id > 0 &amp;&amp; job_name != NULL &amp;&amp; job_originating_user_name != NULL)
647 printf("%5d %-16s %s\n", job_id, job_originating_user_name, job_name);
648 }
649 </pre>
650
651 <h3><a name='CREATING_URI_STRINGS'>Creating URI Strings</a></h3>
652
653 <p>To ensure proper encoding, the
654 <a href='#httpAssembleURIf'><code>httpAssembleURIf</code></a> function must be
655 used to format a "printer-uri" string for all printer-based requests:</p>
656
657 <pre class='example'>
658 const char *name = "Foo";
659 char uri[1024];
660 <a href='#ipp_t'>ipp_t</a> *request;
661
662 <a href='#httpAssembleURIf'>httpAssembleURIf</a>(HTTP_URI_CODING_ALL, uri, sizeof(uri), "ipp", NULL, cupsServer(),
663 ippPort(), "/printers/%s", name);
664 <a href='#ippAddString'>ippAddString</a>(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL, uri);
665 </pre>
666
667 <h3><a name='SENDING_REQUESTS_WITH_FILES'>Sending Requests with Files</a></h3>
668
669 <p>The <a href='#cupsDoFileRequest'><code>cupsDoFileRequest</code></a> and
670 <a href='#cupsDoIORequest'><code>cupsDoIORequest</code></a> functions are
671 used for requests involving files. The
672 <a href='#cupsDoFileRequest'><code>cupsDoFileRequest</code></a> function
673 attaches the named file to a request and is typically used when sending a print
674 file or changing a printer's PPD file:</p>
675
676 <pre class='example'>
677 const char *filename = "/usr/share/cups/data/testprint.ps";
678 const char *name = "Foo";
679 char uri[1024];
680 char resource[1024];
681 <a href='#ipp_t'>ipp_t</a> *request = <a href='#ippNewRequest'>ippNewRequest</a>(IPP_PRINT_JOB);
682 <a href='#ipp_t'>ipp_t</a> *response;
683
684 /* Use httpAssembleURIf for the printer-uri string */
685 <a href='#httpAssembleURIf'>httpAssembleURIf</a>(HTTP_URI_CODING_ALL, uri, sizeof(uri), "ipp", NULL, cupsServer(),
686 ippPort(), "/printers/%s", name);
687 <a href='#ippAddString'>ippAddString</a>(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL, uri);
688 <a href='#ippAddString'>ippAddString</a>(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "requesting-user-name",
689 NULL, cupsUser());
690 <a href='#ippAddString'>ippAddString</a>(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "job-name",
691 NULL, "testprint.ps");
692
693 /* Use snprintf for the resource path */
694 snprintf(resource, sizeof(resource), "/printers/%s", name);
695
696 response = <a href='#cupsDoFileRequest'>cupsDoFileRequest</a>(CUPS_HTTP_DEFAULT, request, resource, filename);
697 </pre>
698
699 <p>The <a href='#cupsDoIORequest'><code>cupsDoIORequest</code></a> function
700 optionally attaches a file to the request and optionally saves a file in the
701 response from the server. It is used when using a pipe for the request
702 attachment or when using a request that returns a file, currently only
703 <code>CUPS_GET_DOCUMENT</code> and <code>CUPS_GET_PPD</code>. For example,
704 the following code will download the PPD file for the sample HP LaserJet
705 printer driver:</p>
706
707 <pre class='example'>
708 char tempfile[1024];
709 int tempfd;
710 <a href='#ipp_t'>ipp_t</a> *request = <a href='#ippNewRequest'>ippNewRequest</a>(CUPS_GET_PPD);
711 <a href='#ipp_t'>ipp_t</a> *response;
712
713 <a href='#ippAddString'>ippAddString</a>(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "ppd-name",
714 NULL, "laserjet.ppd");
715
716 tempfd = cupsTempFd(tempfile, sizeof(tempfile));
717
718 response = <a href='#cupsDoIORequest'>cupsDoIORequest</a>(CUPS_HTTP_DEFAULT, request, "/", -1, tempfd);
719 </pre>
720
721 <p>The example passes <code>-1</code> for the input file descriptor to specify
722 that no file is to be attached to the request. The PPD file attached to the
723 response is written to the temporary file descriptor we created using the
724 <code>cupsTempFd</code> function.</p>
725
726 <h3><a name='ASYNCHRONOUS_REQUEST_PROCESSING'>Asynchronous Request Processing</a></h3>
727
728 <p>The <a href='#cupsSendRequest'><code>cupsSendRequest</code></a> and
729 <a href='#cupsGetResponse'><code>cupsGetResponse</code></a> support
730 asynchronous communications with the server. Unlike the other request
731 functions, the IPP request is not automatically freed, so remember to
732 free your request with the <a href='#ippDelete'><code>ippDelete</code></a>
733 function.</p>
734
735 <p>File data is attached to the request using the
736 <a href='#cupsWriteRequestData'><code>cupsWriteRequestData</code></a>
737 function, while file data returned from the server is read using the
738 <a href='#cupsReadResponseData'><code>cupsReadResponseData</code></a>
739 function. We can rewrite the previous <code>CUPS_GET_PPD</code> example
740 to use the asynchronous functions quite easily:</p>
741
742 <pre class='example'>
743 char tempfile[1024];
744 int tempfd;
745 <a href='#ipp_t'>ipp_t</a> *request = <a href='#ippNewRequest'>ippNewRequest</a>(CUPS_GET_PPD);
746 <a href='#ipp_t'>ipp_t</a> *response;
747
748 <a href='#ippAddString'>ippAddString</a>(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "ppd-name",
749 NULL, "laserjet.ppd");
750
751 tempfd = cupsTempFd(tempfile, sizeof(tempfile));
752
753 if (<a href='#cupsSendRequest'>cupsSendRequest</a>(CUPS_HTTP_DEFAULT, request, "/") == HTTP_CONTINUE)
754 {
755 response = <a href='#cupsGetResponse'>cupsGetResponse</a>(CUPS_HTTP_DEFAULT, "/");
756
757 if (response != NULL)
758 {
759 ssize_t bytes;
760 char buffer[8192];
761
762 while ((bytes = <a href='#cupsReadResponseData'>cupsReadResponseData</a>(CUPS_HTTP_DEFAULT, buffer, sizeof(buffer))) > 0)
763 write(tempfd, buffer, bytes);
764 }
765 }
766
767 /* Free the request! */
768 <a href='#ippDelete'>ippDelete</a>(request);
769 </pre>
770
771 <p>The <a href='#cupsSendRequest'><code>cupsSendRequest</code></a> function
772 returns the initial HTTP request status, typically either
773 <code>HTTP_CONTINUE</code> or <code>HTTP_UNAUTHORIZED</code>. The latter status
774 is returned when the request requires authentication of some sort. The
775 <a href='#cupsDoAuthentication'><code>cupsDoAuthentication</code></a> function
776 must be called when your see <code>HTTP_UNAUTHORIZED</code> and the request
777 re-sent. We can add authentication support to our example code by using a
778 <code>do ... while</code> loop:</p>
779
780 <pre class='example'>
781 char tempfile[1024];
782 int tempfd;
783 <a href='#ipp_t'>ipp_t</a> *request = <a href='#ippNewRequest'>ippNewRequest</a>(CUPS_GET_PPD);
784 <a href='#ipp_t'>ipp_t</a> *response;
785 http_status_t status;
786
787 <a href='#ippAddString'>ippAddString</a>(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "ppd-name",
788 NULL, "laserjet.ppd");
789
790 tempfd = cupsTempFd(tempfile, sizeof(tempfile));
791
792 /* Loop for authentication */
793 do
794 {
795 status = <a href='#cupsSendRequest'>cupsSendRequest</a>(CUPS_HTTP_DEFAULT, request, "/");
796
797 if (status == HTTP_UNAUTHORIZED)
798 {
799 /* Try to authenticate, break out of the loop if that fails */
800 if (<a href='#cupsDoAuthentication'>cupsDoAuthentication</a>(CUPS_HTTP_DEFAULT, "POST", "/"))
801 break;
802 }
803 }
804 while (status != HTTP_CONTINUE &amp;&amp; status != HTTP_UNAUTHORIZED);
805
806 if (status == HTTP_CONTINUE)
807 {
808 response = <a href='#cupsGetResponse'>cupsGetResponse</a>(CUPS_HTTP_DEFAULT, "/");
809
810 if (response != NULL)
811 {
812 ssize_t bytes;
813 char buffer[8192];
814
815 while ((bytes = <a href='#cupsReadResponseData'>cupsReadResponseData</a>(CUPS_HTTP_DEFAULT, buffer, sizeof(buffer))) > 0)
816 write(tempfd, buffer, bytes);
817 }
818 }
819
820 /* Free the request! */
821 <a href='#ippDelete'>ippDelete</a>(request);
822 </pre>
823 <h2 class="title"><a name="FUNCTIONS">Functions</a></h2>
824 <h3 class="function"><span class="info">&nbsp;CUPS 1.1.20&nbsp;</span><a name="cupsDoAuthentication">cupsDoAuthentication</a></h3>
825 <p class="description">Authenticate a request.</p>
826 <p class="code">
827 int cupsDoAuthentication (<br>
828 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
829 &nbsp;&nbsp;&nbsp;&nbsp;const char *method,<br>
830 &nbsp;&nbsp;&nbsp;&nbsp;const char *resource<br>
831 );</p>
832 <h4 class="parameters">Parameters</h4>
833 <dl>
834 <dt>http</dt>
835 <dd class="description">Connection to server or <code>CUPS_HTTP_DEFAULT</code></dd>
836 <dt>method</dt>
837 <dd class="description">Request method (&quot;GET&quot;, &quot;POST&quot;, &quot;PUT&quot;)</dd>
838 <dt>resource</dt>
839 <dd class="description">Resource path</dd>
840 </dl>
841 <h4 class="returnvalue">Return Value</h4>
842 <p class="description">0 on success, -1 on error</p>
843 <h4 class="discussion">Discussion</h4>
844 <p class="discussion">This function should be called in response to a <code>HTTP_UNAUTHORIZED</code>
845 status, prior to resubmitting your request.
846
847 </p>
848 <h3 class="function"><a name="cupsDoFileRequest">cupsDoFileRequest</a></h3>
849 <p class="description">Do an IPP request with a file.</p>
850 <p class="code">
851 <a href="#ipp_t">ipp_t</a> *cupsDoFileRequest (<br>
852 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
853 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *request,<br>
854 &nbsp;&nbsp;&nbsp;&nbsp;const char *resource,<br>
855 &nbsp;&nbsp;&nbsp;&nbsp;const char *filename<br>
856 );</p>
857 <h4 class="parameters">Parameters</h4>
858 <dl>
859 <dt>http</dt>
860 <dd class="description">Connection to server or <code>CUPS_HTTP_DEFAULT</code></dd>
861 <dt>request</dt>
862 <dd class="description">IPP request</dd>
863 <dt>resource</dt>
864 <dd class="description">HTTP resource for POST</dd>
865 <dt>filename</dt>
866 <dd class="description">File to send or <code>NULL</code> for none</dd>
867 </dl>
868 <h4 class="returnvalue">Return Value</h4>
869 <p class="description">Response data</p>
870 <h4 class="discussion">Discussion</h4>
871 <p class="discussion">This function sends the IPP request to the specified server, retrying
872 and authenticating as necessary. The request is freed with <a href="#ippDelete"><code>ippDelete</code></a>
873 after receiving a valid IPP response.</p>
874 <h3 class="function"><span class="info">&nbsp;CUPS 1.3&nbsp;</span><a name="cupsDoIORequest">cupsDoIORequest</a></h3>
875 <p class="description">Do an IPP request with file descriptors.</p>
876 <p class="code">
877 <a href="#ipp_t">ipp_t</a> *cupsDoIORequest (<br>
878 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
879 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *request,<br>
880 &nbsp;&nbsp;&nbsp;&nbsp;const char *resource,<br>
881 &nbsp;&nbsp;&nbsp;&nbsp;int infile,<br>
882 &nbsp;&nbsp;&nbsp;&nbsp;int outfile<br>
883 );</p>
884 <h4 class="parameters">Parameters</h4>
885 <dl>
886 <dt>http</dt>
887 <dd class="description">Connection to server or <code>CUPS_HTTP_DEFAULT</code></dd>
888 <dt>request</dt>
889 <dd class="description">IPP request</dd>
890 <dt>resource</dt>
891 <dd class="description">HTTP resource for POST</dd>
892 <dt>infile</dt>
893 <dd class="description">File to read from or -1 for none</dd>
894 <dt>outfile</dt>
895 <dd class="description">File to write to or -1 for none</dd>
896 </dl>
897 <h4 class="returnvalue">Return Value</h4>
898 <p class="description">Response data</p>
899 <h4 class="discussion">Discussion</h4>
900 <p class="discussion">This function sends the IPP request to the specified server, retrying
901 and authenticating as necessary. The request is freed with ippDelete()
902 after receiving a valid IPP response.<br>
903 <br>
904 If &quot;infile&quot; is a valid file descriptor, cupsDoIORequest() copies
905 all of the data from the file after the IPP request message.<br>
906 <br>
907 If &quot;outfile&quot; is a valid file descriptor, cupsDoIORequest() copies
908 all of the data after the IPP response message to the file.
909
910 </p>
911 <h3 class="function"><a name="cupsDoRequest">cupsDoRequest</a></h3>
912 <p class="description">Do an IPP request.</p>
913 <p class="code">
914 <a href="#ipp_t">ipp_t</a> *cupsDoRequest (<br>
915 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
916 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *request,<br>
917 &nbsp;&nbsp;&nbsp;&nbsp;const char *resource<br>
918 );</p>
919 <h4 class="parameters">Parameters</h4>
920 <dl>
921 <dt>http</dt>
922 <dd class="description">Connection to server or <code>CUPS_HTTP_DEFAULT</code></dd>
923 <dt>request</dt>
924 <dd class="description">IPP request</dd>
925 <dt>resource</dt>
926 <dd class="description">HTTP resource for POST</dd>
927 </dl>
928 <h4 class="returnvalue">Return Value</h4>
929 <p class="description">Response data</p>
930 <h4 class="discussion">Discussion</h4>
931 <p class="discussion">This function sends the IPP request to the specified server, retrying
932 and authenticating as necessary. The request is freed with ippDelete()
933 after receiving a valid IPP response.</p>
934 <h3 class="function"><a name="cupsEncodeOptions">cupsEncodeOptions</a></h3>
935 <p class="description">Encode printer options into IPP attributes.</p>
936 <p class="code">
937 void cupsEncodeOptions (<br>
938 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp,<br>
939 &nbsp;&nbsp;&nbsp;&nbsp;int num_options,<br>
940 &nbsp;&nbsp;&nbsp;&nbsp;cups_option_t *options<br>
941 );</p>
942 <h4 class="parameters">Parameters</h4>
943 <dl>
944 <dt>ipp</dt>
945 <dd class="description">Request to add to</dd>
946 <dt>num_options</dt>
947 <dd class="description">Number of options</dd>
948 <dt>options</dt>
949 <dd class="description">Options</dd>
950 </dl>
951 <h4 class="discussion">Discussion</h4>
952 <p class="discussion">This function adds operation, job, and then subscription attributes,
953 in that order. Use the cupsEncodeOptions2() function to add attributes
954 for a single group.</p>
955 <h3 class="function"><span class="info">&nbsp;CUPS 1.2&nbsp;</span><a name="cupsEncodeOptions2">cupsEncodeOptions2</a></h3>
956 <p class="description">Encode printer options into IPP attributes for a group.</p>
957 <p class="code">
958 void cupsEncodeOptions2 (<br>
959 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp,<br>
960 &nbsp;&nbsp;&nbsp;&nbsp;int num_options,<br>
961 &nbsp;&nbsp;&nbsp;&nbsp;cups_option_t *options,<br>
962 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> group_tag<br>
963 );</p>
964 <h4 class="parameters">Parameters</h4>
965 <dl>
966 <dt>ipp</dt>
967 <dd class="description">Request to add to</dd>
968 <dt>num_options</dt>
969 <dd class="description">Number of options</dd>
970 <dt>options</dt>
971 <dd class="description">Options</dd>
972 <dt>group_tag</dt>
973 <dd class="description">Group to encode</dd>
974 </dl>
975 <h4 class="discussion">Discussion</h4>
976 <p class="discussion">This function only adds attributes for a single group. Call this
977 function multiple times for each group, or use cupsEncodeOptions()
978 to add the standard groups.
979
980 </p>
981 <h3 class="function"><span class="info">&nbsp;CUPS 1.4&nbsp;</span><a name="cupsGetDevices">cupsGetDevices</a></h3>
982 <p class="description">Get available printer devices.</p>
983 <p class="code">
984 ipp_status_t cupsGetDevices (<br>
985 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
986 &nbsp;&nbsp;&nbsp;&nbsp;int timeout,<br>
987 &nbsp;&nbsp;&nbsp;&nbsp;const char *exclude_schemes,<br>
988 &nbsp;&nbsp;&nbsp;&nbsp;cups_device_cb_t callback,<br>
989 &nbsp;&nbsp;&nbsp;&nbsp;void *user_data<br>
990 );</p>
991 <h4 class="parameters">Parameters</h4>
992 <dl>
993 <dt>http</dt>
994 <dd class="description">Connection to server or <code>CUPS_HTTP_DEFAULT</code></dd>
995 <dt>timeout</dt>
996 <dd class="description">Timeout in seconds or <code>CUPS_TIMEOUT_DEFAULT</code></dd>
997 <dt>exclude_schemes</dt>
998 <dd class="description">Comma-separated URI schemes to exclude or <code>CUPS_EXCLUDE_NONE</code></dd>
999 <dt>callback</dt>
1000 <dd class="description">Callback function</dd>
1001 <dt>user_data</dt>
1002 <dd class="description">User data pointer</dd>
1003 </dl>
1004 <h4 class="returnvalue">Return Value</h4>
1005 <p class="description">Request status - <code>IPP_OK</code> on success.</p>
1006 <h4 class="discussion">Discussion</h4>
1007 <p class="discussion">This function sends a CUPS-Get-Devices request and streams the discovered
1008 devices to the specified callback function. The &quot;timeout&quot; parameter controls
1009 how long the request lasts, while the &quot;exclude_schemes&quot; parameter provides
1010 a comma-delimited list of backends to omit from the request.
1011
1012 </p>
1013 <h3 class="function"><span class="info">&nbsp;CUPS 1.1.20&nbsp;</span><a name="cupsGetFd">cupsGetFd</a></h3>
1014 <p class="description">Get a file from the server.</p>
1015 <p class="code">
1016 <a href="#http_status_t">http_status_t</a> cupsGetFd (<br>
1017 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
1018 &nbsp;&nbsp;&nbsp;&nbsp;const char *resource,<br>
1019 &nbsp;&nbsp;&nbsp;&nbsp;int fd<br>
1020 );</p>
1021 <h4 class="parameters">Parameters</h4>
1022 <dl>
1023 <dt>http</dt>
1024 <dd class="description">Connection to server or <code>CUPS_HTTP_DEFAULT</code></dd>
1025 <dt>resource</dt>
1026 <dd class="description">Resource name</dd>
1027 <dt>fd</dt>
1028 <dd class="description">File descriptor</dd>
1029 </dl>
1030 <h4 class="returnvalue">Return Value</h4>
1031 <p class="description">HTTP status</p>
1032 <h4 class="discussion">Discussion</h4>
1033 <p class="discussion">This function returns <code>HTTP_OK</code> when the file is successfully retrieved.
1034
1035 </p>
1036 <h3 class="function"><span class="info">&nbsp;CUPS 1.1.20&nbsp;</span><a name="cupsGetFile">cupsGetFile</a></h3>
1037 <p class="description">Get a file from the server.</p>
1038 <p class="code">
1039 <a href="#http_status_t">http_status_t</a> cupsGetFile (<br>
1040 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
1041 &nbsp;&nbsp;&nbsp;&nbsp;const char *resource,<br>
1042 &nbsp;&nbsp;&nbsp;&nbsp;const char *filename<br>
1043 );</p>
1044 <h4 class="parameters">Parameters</h4>
1045 <dl>
1046 <dt>http</dt>
1047 <dd class="description">Connection to server or <code>CUPS_HTTP_DEFAULT</code></dd>
1048 <dt>resource</dt>
1049 <dd class="description">Resource name</dd>
1050 <dt>filename</dt>
1051 <dd class="description">Filename</dd>
1052 </dl>
1053 <h4 class="returnvalue">Return Value</h4>
1054 <p class="description">HTTP status</p>
1055 <h4 class="discussion">Discussion</h4>
1056 <p class="discussion">This function returns <code>HTTP_OK</code> when the file is successfully retrieved.
1057
1058 </p>
1059 <h3 class="function"><span class="info">&nbsp;CUPS 1.4&nbsp;</span><a name="cupsGetResponse">cupsGetResponse</a></h3>
1060 <p class="description">Get a response to an IPP request.</p>
1061 <p class="code">
1062 <a href="#ipp_t">ipp_t</a> *cupsGetResponse (<br>
1063 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
1064 &nbsp;&nbsp;&nbsp;&nbsp;const char *resource<br>
1065 );</p>
1066 <h4 class="parameters">Parameters</h4>
1067 <dl>
1068 <dt>http</dt>
1069 <dd class="description">Connection to server or <code>CUPS_HTTP_DEFAULT</code></dd>
1070 <dt>resource</dt>
1071 <dd class="description">HTTP resource for POST</dd>
1072 </dl>
1073 <h4 class="returnvalue">Return Value</h4>
1074 <p class="description">Response or <code>NULL</code> on HTTP error</p>
1075 <h4 class="discussion">Discussion</h4>
1076 <p class="discussion">Use this function to get the response for an IPP request sent using
1077 cupsSendDocument() or cupsSendRequest(). For requests that return
1078 additional data, use httpRead() after getting a successful response.
1079
1080 </p>
1081 <h3 class="function"><span class="info">&nbsp;CUPS 1.1.20&nbsp;</span><a name="cupsPutFd">cupsPutFd</a></h3>
1082 <p class="description">Put a file on the server.</p>
1083 <p class="code">
1084 <a href="#http_status_t">http_status_t</a> cupsPutFd (<br>
1085 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
1086 &nbsp;&nbsp;&nbsp;&nbsp;const char *resource,<br>
1087 &nbsp;&nbsp;&nbsp;&nbsp;int fd<br>
1088 );</p>
1089 <h4 class="parameters">Parameters</h4>
1090 <dl>
1091 <dt>http</dt>
1092 <dd class="description">Connection to server or <code>CUPS_HTTP_DEFAULT</code></dd>
1093 <dt>resource</dt>
1094 <dd class="description">Resource name</dd>
1095 <dt>fd</dt>
1096 <dd class="description">File descriptor</dd>
1097 </dl>
1098 <h4 class="returnvalue">Return Value</h4>
1099 <p class="description">HTTP status</p>
1100 <h4 class="discussion">Discussion</h4>
1101 <p class="discussion">This function returns <code>HTTP_CREATED</code> when the file is stored
1102 successfully.
1103
1104 </p>
1105 <h3 class="function"><span class="info">&nbsp;CUPS 1.1.20&nbsp;</span><a name="cupsPutFile">cupsPutFile</a></h3>
1106 <p class="description">Put a file on the server.</p>
1107 <p class="code">
1108 <a href="#http_status_t">http_status_t</a> cupsPutFile (<br>
1109 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
1110 &nbsp;&nbsp;&nbsp;&nbsp;const char *resource,<br>
1111 &nbsp;&nbsp;&nbsp;&nbsp;const char *filename<br>
1112 );</p>
1113 <h4 class="parameters">Parameters</h4>
1114 <dl>
1115 <dt>http</dt>
1116 <dd class="description">Connection to server or <code>CUPS_HTTP_DEFAULT</code></dd>
1117 <dt>resource</dt>
1118 <dd class="description">Resource name</dd>
1119 <dt>filename</dt>
1120 <dd class="description">Filename</dd>
1121 </dl>
1122 <h4 class="returnvalue">Return Value</h4>
1123 <p class="description">HTTP status</p>
1124 <h4 class="discussion">Discussion</h4>
1125 <p class="discussion">This function returns <code>HTTP_CREATED</code> when the file is stored
1126 successfully.
1127
1128 </p>
1129 <h3 class="function"><span class="info">&nbsp;CUPS 1.4&nbsp;</span><a name="cupsReadResponseData">cupsReadResponseData</a></h3>
1130 <p class="description">Read additional data after the IPP response.</p>
1131 <p class="code">
1132 ssize_t cupsReadResponseData (<br>
1133 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
1134 &nbsp;&nbsp;&nbsp;&nbsp;char *buffer,<br>
1135 &nbsp;&nbsp;&nbsp;&nbsp;size_t length<br>
1136 );</p>
1137 <h4 class="parameters">Parameters</h4>
1138 <dl>
1139 <dt>http</dt>
1140 <dd class="description">Connection to server or <code>CUPS_HTTP_DEFAULT</code></dd>
1141 <dt>buffer</dt>
1142 <dd class="description">Buffer to use</dd>
1143 <dt>length</dt>
1144 <dd class="description">Number of bytes to read</dd>
1145 </dl>
1146 <h4 class="returnvalue">Return Value</h4>
1147 <p class="description">Bytes read, 0 on EOF, -1 on error</p>
1148 <h4 class="discussion">Discussion</h4>
1149 <p class="discussion">This function is used after cupsGetResponse() to read the PPD or document
1150 files for CUPS_GET_PPD and CUPS_GET_DOCUMENT requests, respectively.
1151
1152 </p>
1153 <h3 class="function"><span class="info">&nbsp;CUPS 1.4&nbsp;</span><a name="cupsSendRequest">cupsSendRequest</a></h3>
1154 <p class="description">Send an IPP request.</p>
1155 <p class="code">
1156 <a href="#http_status_t">http_status_t</a> cupsSendRequest (<br>
1157 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
1158 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *request,<br>
1159 &nbsp;&nbsp;&nbsp;&nbsp;const char *resource,<br>
1160 &nbsp;&nbsp;&nbsp;&nbsp;size_t length<br>
1161 );</p>
1162 <h4 class="parameters">Parameters</h4>
1163 <dl>
1164 <dt>http</dt>
1165 <dd class="description">Connection to server or <code>CUPS_HTTP_DEFAULT</code></dd>
1166 <dt>request</dt>
1167 <dd class="description">IPP request</dd>
1168 <dt>resource</dt>
1169 <dd class="description">Resource path</dd>
1170 <dt>length</dt>
1171 <dd class="description">Length of data to follow or <code>CUPS_LENGTH_VARIABLE</code></dd>
1172 </dl>
1173 <h4 class="returnvalue">Return Value</h4>
1174 <p class="description">Initial HTTP status</p>
1175 <h4 class="discussion">Discussion</h4>
1176 <p class="discussion">Use httpWrite() to write any additional data (document, PPD file, etc.)
1177 for the request, cupsGetResponse() to get the IPP response, and httpRead()
1178 to read any additional data following the response. Only one request can be
1179 sent/queued at a time.<br>
1180 <br>
1181 Unlike cupsDoFileRequest(), cupsDoIORequest(), and cupsDoRequest(), the
1182 request is not freed.
1183
1184 </p>
1185 <h3 class="function"><span class="info">&nbsp;CUPS 1.4&nbsp;</span><a name="cupsWriteRequestData">cupsWriteRequestData</a></h3>
1186 <p class="description">Write additional data after an IPP request.</p>
1187 <p class="code">
1188 <a href="#http_status_t">http_status_t</a> cupsWriteRequestData (<br>
1189 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
1190 &nbsp;&nbsp;&nbsp;&nbsp;const char *buffer,<br>
1191 &nbsp;&nbsp;&nbsp;&nbsp;size_t length<br>
1192 );</p>
1193 <h4 class="parameters">Parameters</h4>
1194 <dl>
1195 <dt>http</dt>
1196 <dd class="description">Connection to server or <code>CUPS_HTTP_DEFAULT</code></dd>
1197 <dt>buffer</dt>
1198 <dd class="description">Bytes to write</dd>
1199 <dt>length</dt>
1200 <dd class="description">Number of bytes to write</dd>
1201 </dl>
1202 <h4 class="returnvalue">Return Value</h4>
1203 <p class="description"><code>HTTP_CONTINUE</code> if OK or HTTP status on error</p>
1204 <h4 class="discussion">Discussion</h4>
1205 <p class="discussion">This function is used after <a href="#cupsSendRequest"><code>cupsSendRequest</code></a> to provide a PPD and
1206 after <a href="#cupsStartDocument"><code>cupsStartDocument</code></a> to provide a document file.
1207
1208 </p>
1209 <h3 class="function"><span class="info">&nbsp;CUPS 1.2&nbsp;</span><a name="httpAddrAny">httpAddrAny</a></h3>
1210 <p class="description">Check for the &quot;any&quot; address.</p>
1211 <p class="code">
1212 int httpAddrAny (<br>
1213 &nbsp;&nbsp;&nbsp;&nbsp;const <a href="#http_addr_t">http_addr_t</a> *addr<br>
1214 );</p>
1215 <h4 class="parameters">Parameters</h4>
1216 <dl>
1217 <dt>addr</dt>
1218 <dd class="description">Address to check</dd>
1219 </dl>
1220 <h4 class="returnvalue">Return Value</h4>
1221 <p class="description">1 if &quot;any&quot;, 0 otherwise</p>
1222 <h3 class="function"><span class="info">&nbsp;CUPS 1.2&nbsp;</span><a name="httpAddrEqual">httpAddrEqual</a></h3>
1223 <p class="description">Compare two addresses.</p>
1224 <p class="code">
1225 int httpAddrEqual (<br>
1226 &nbsp;&nbsp;&nbsp;&nbsp;const <a href="#http_addr_t">http_addr_t</a> *addr1,<br>
1227 &nbsp;&nbsp;&nbsp;&nbsp;const <a href="#http_addr_t">http_addr_t</a> *addr2<br>
1228 );</p>
1229 <h4 class="parameters">Parameters</h4>
1230 <dl>
1231 <dt>addr1</dt>
1232 <dd class="description">First address</dd>
1233 <dt>addr2</dt>
1234 <dd class="description">Second address</dd>
1235 </dl>
1236 <h4 class="returnvalue">Return Value</h4>
1237 <p class="description">1 if equal, 0 if not</p>
1238 <h3 class="function"><span class="info">&nbsp;CUPS 1.2&nbsp;</span><a name="httpAddrLength">httpAddrLength</a></h3>
1239 <p class="description">Return the length of the address in bytes.</p>
1240 <p class="code">
1241 int httpAddrLength (<br>
1242 &nbsp;&nbsp;&nbsp;&nbsp;const <a href="#http_addr_t">http_addr_t</a> *addr<br>
1243 );</p>
1244 <h4 class="parameters">Parameters</h4>
1245 <dl>
1246 <dt>addr</dt>
1247 <dd class="description">Address</dd>
1248 </dl>
1249 <h4 class="returnvalue">Return Value</h4>
1250 <p class="description">Length in bytes</p>
1251 <h3 class="function"><span class="info">&nbsp;CUPS 1.2&nbsp;</span><a name="httpAddrLocalhost">httpAddrLocalhost</a></h3>
1252 <p class="description">Check for the local loopback address.</p>
1253 <p class="code">
1254 int httpAddrLocalhost (<br>
1255 &nbsp;&nbsp;&nbsp;&nbsp;const <a href="#http_addr_t">http_addr_t</a> *addr<br>
1256 );</p>
1257 <h4 class="parameters">Parameters</h4>
1258 <dl>
1259 <dt>addr</dt>
1260 <dd class="description">Address to check</dd>
1261 </dl>
1262 <h4 class="returnvalue">Return Value</h4>
1263 <p class="description">1 if local host, 0 otherwise</p>
1264 <h3 class="function"><span class="info">&nbsp;CUPS 1.2&nbsp;</span><a name="httpAddrLookup">httpAddrLookup</a></h3>
1265 <p class="description">Lookup the hostname associated with the address.</p>
1266 <p class="code">
1267 char *httpAddrLookup (<br>
1268 &nbsp;&nbsp;&nbsp;&nbsp;const <a href="#http_addr_t">http_addr_t</a> *addr,<br>
1269 &nbsp;&nbsp;&nbsp;&nbsp;char *name,<br>
1270 &nbsp;&nbsp;&nbsp;&nbsp;int namelen<br>
1271 );</p>
1272 <h4 class="parameters">Parameters</h4>
1273 <dl>
1274 <dt>addr</dt>
1275 <dd class="description">Address to lookup</dd>
1276 <dt>name</dt>
1277 <dd class="description">Host name buffer</dd>
1278 <dt>namelen</dt>
1279 <dd class="description">Size of name buffer</dd>
1280 </dl>
1281 <h4 class="returnvalue">Return Value</h4>
1282 <p class="description">Host name</p>
1283 <h3 class="function"><span class="info">&nbsp;CUPS 1.2&nbsp;</span><a name="httpAddrString">httpAddrString</a></h3>
1284 <p class="description">Convert an address to a numeric string.</p>
1285 <p class="code">
1286 char *httpAddrString (<br>
1287 &nbsp;&nbsp;&nbsp;&nbsp;const <a href="#http_addr_t">http_addr_t</a> *addr,<br>
1288 &nbsp;&nbsp;&nbsp;&nbsp;char *s,<br>
1289 &nbsp;&nbsp;&nbsp;&nbsp;int slen<br>
1290 );</p>
1291 <h4 class="parameters">Parameters</h4>
1292 <dl>
1293 <dt>addr</dt>
1294 <dd class="description">Address to convert</dd>
1295 <dt>s</dt>
1296 <dd class="description">String buffer</dd>
1297 <dt>slen</dt>
1298 <dd class="description">Length of string</dd>
1299 </dl>
1300 <h4 class="returnvalue">Return Value</h4>
1301 <p class="description">Numeric address string</p>
1302 <h3 class="function"><span class="info">&nbsp;CUPS 1.2&nbsp;</span><a name="httpAssembleURI">httpAssembleURI</a></h3>
1303 <p class="description">Assemble a uniform resource identifier from its
1304 components.</p>
1305 <p class="code">
1306 <a href="#http_uri_status_t">http_uri_status_t</a> httpAssembleURI (<br>
1307 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_uri_coding_t">http_uri_coding_t</a> encoding,<br>
1308 &nbsp;&nbsp;&nbsp;&nbsp;char *uri,<br>
1309 &nbsp;&nbsp;&nbsp;&nbsp;int urilen,<br>
1310 &nbsp;&nbsp;&nbsp;&nbsp;const char *scheme,<br>
1311 &nbsp;&nbsp;&nbsp;&nbsp;const char *username,<br>
1312 &nbsp;&nbsp;&nbsp;&nbsp;const char *host,<br>
1313 &nbsp;&nbsp;&nbsp;&nbsp;int port,<br>
1314 &nbsp;&nbsp;&nbsp;&nbsp;const char *resource<br>
1315 );</p>
1316 <h4 class="parameters">Parameters</h4>
1317 <dl>
1318 <dt>encoding</dt>
1319 <dd class="description">Encoding flags</dd>
1320 <dt>uri</dt>
1321 <dd class="description">URI buffer</dd>
1322 <dt>urilen</dt>
1323 <dd class="description">Size of URI buffer</dd>
1324 <dt>scheme</dt>
1325 <dd class="description">Scheme name</dd>
1326 <dt>username</dt>
1327 <dd class="description">Username</dd>
1328 <dt>host</dt>
1329 <dd class="description">Hostname or address</dd>
1330 <dt>port</dt>
1331 <dd class="description">Port number</dd>
1332 <dt>resource</dt>
1333 <dd class="description">Resource</dd>
1334 </dl>
1335 <h4 class="returnvalue">Return Value</h4>
1336 <p class="description">URI status</p>
1337 <h4 class="discussion">Discussion</h4>
1338 <p class="discussion">This function escapes reserved characters in the URI depending on the
1339 value of the &quot;encoding&quot; argument. You should use this function in
1340 place of traditional string functions whenever you need to create a
1341 URI string.
1342
1343 </p>
1344 <h3 class="function"><span class="info">&nbsp;CUPS 1.2&nbsp;</span><a name="httpAssembleURIf">httpAssembleURIf</a></h3>
1345 <p class="description">Assemble a uniform resource identifier from its
1346 components with a formatted resource.</p>
1347 <p class="code">
1348 <a href="#http_uri_status_t">http_uri_status_t</a> httpAssembleURIf (<br>
1349 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_uri_coding_t">http_uri_coding_t</a> encoding,<br>
1350 &nbsp;&nbsp;&nbsp;&nbsp;char *uri,<br>
1351 &nbsp;&nbsp;&nbsp;&nbsp;int urilen,<br>
1352 &nbsp;&nbsp;&nbsp;&nbsp;const char *scheme,<br>
1353 &nbsp;&nbsp;&nbsp;&nbsp;const char *username,<br>
1354 &nbsp;&nbsp;&nbsp;&nbsp;const char *host,<br>
1355 &nbsp;&nbsp;&nbsp;&nbsp;int port,<br>
1356 &nbsp;&nbsp;&nbsp;&nbsp;const char *resourcef,<br>
1357 &nbsp;&nbsp;&nbsp;&nbsp;...<br>
1358 );</p>
1359 <h4 class="parameters">Parameters</h4>
1360 <dl>
1361 <dt>encoding</dt>
1362 <dd class="description">Encoding flags</dd>
1363 <dt>uri</dt>
1364 <dd class="description">URI buffer</dd>
1365 <dt>urilen</dt>
1366 <dd class="description">Size of URI buffer</dd>
1367 <dt>scheme</dt>
1368 <dd class="description">Scheme name</dd>
1369 <dt>username</dt>
1370 <dd class="description">Username</dd>
1371 <dt>host</dt>
1372 <dd class="description">Hostname or address</dd>
1373 <dt>port</dt>
1374 <dd class="description">Port number</dd>
1375 <dt>resourcef</dt>
1376 <dd class="description">Printf-style resource</dd>
1377 <dt>...</dt>
1378 <dd class="description">Additional arguments as needed</dd>
1379 </dl>
1380 <h4 class="returnvalue">Return Value</h4>
1381 <p class="description">URI status</p>
1382 <h4 class="discussion">Discussion</h4>
1383 <p class="discussion">This function creates a formatted version of the resource string
1384 argument &quot;resourcef&quot; and escapes reserved characters in the URI
1385 depending on the value of the &quot;encoding&quot; argument. You should use
1386 this function in place of traditional string functions whenever
1387 you need to create a URI string.
1388
1389 </p>
1390 <h3 class="function"><a name="httpBlocking">httpBlocking</a></h3>
1391 <p class="description">Set blocking/non-blocking behavior on a connection.</p>
1392 <p class="code">
1393 void httpBlocking (<br>
1394 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
1395 &nbsp;&nbsp;&nbsp;&nbsp;int b<br>
1396 );</p>
1397 <h4 class="parameters">Parameters</h4>
1398 <dl>
1399 <dt>http</dt>
1400 <dd class="description">Connection to server</dd>
1401 <dt>b</dt>
1402 <dd class="description">1 = blocking, 0 = non-blocking</dd>
1403 </dl>
1404 <h3 class="function"><a name="httpCheck">httpCheck</a></h3>
1405 <p class="description">Check to see if there is a pending response from the server.</p>
1406 <p class="code">
1407 int httpCheck (<br>
1408 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http<br>
1409 );</p>
1410 <h4 class="parameters">Parameters</h4>
1411 <dl>
1412 <dt>http</dt>
1413 <dd class="description">Connection to server</dd>
1414 </dl>
1415 <h4 class="returnvalue">Return Value</h4>
1416 <p class="description">0 = no data, 1 = data available</p>
1417 <h3 class="function"><span class="info">&nbsp;CUPS 1.1.19&nbsp;</span><a name="httpClearCookie">httpClearCookie</a></h3>
1418 <p class="description">Clear the cookie value(s).</p>
1419 <p class="code">
1420 void httpClearCookie (<br>
1421 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http<br>
1422 );</p>
1423 <h4 class="parameters">Parameters</h4>
1424 <dl>
1425 <dt>http</dt>
1426 <dd class="description">Connection to server</dd>
1427 </dl>
1428 <h3 class="function"><a name="httpClearFields">httpClearFields</a></h3>
1429 <p class="description">Clear HTTP request fields.</p>
1430 <p class="code">
1431 void httpClearFields (<br>
1432 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http<br>
1433 );</p>
1434 <h4 class="parameters">Parameters</h4>
1435 <dl>
1436 <dt>http</dt>
1437 <dd class="description">Connection to server</dd>
1438 </dl>
1439 <h3 class="function"><a name="httpClose">httpClose</a></h3>
1440 <p class="description">Close an HTTP connection...</p>
1441 <p class="code">
1442 void httpClose (<br>
1443 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http<br>
1444 );</p>
1445 <h4 class="parameters">Parameters</h4>
1446 <dl>
1447 <dt>http</dt>
1448 <dd class="description">Connection to server</dd>
1449 </dl>
1450 <h3 class="function"><a name="httpConnect">httpConnect</a></h3>
1451 <p class="description">Connect to a HTTP server.</p>
1452 <p class="code">
1453 <a href="#http_t">http_t</a> *httpConnect (<br>
1454 &nbsp;&nbsp;&nbsp;&nbsp;const char *host,<br>
1455 &nbsp;&nbsp;&nbsp;&nbsp;int port<br>
1456 );</p>
1457 <h4 class="parameters">Parameters</h4>
1458 <dl>
1459 <dt>host</dt>
1460 <dd class="description">Host to connect to</dd>
1461 <dt>port</dt>
1462 <dd class="description">Port number</dd>
1463 </dl>
1464 <h4 class="returnvalue">Return Value</h4>
1465 <p class="description">New HTTP connection</p>
1466 <h3 class="function"><a name="httpConnectEncrypt">httpConnectEncrypt</a></h3>
1467 <p class="description">Connect to a HTTP server using encryption.</p>
1468 <p class="code">
1469 <a href="#http_t">http_t</a> *httpConnectEncrypt (<br>
1470 &nbsp;&nbsp;&nbsp;&nbsp;const char *host,<br>
1471 &nbsp;&nbsp;&nbsp;&nbsp;int port,<br>
1472 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_encryption_t">http_encryption_t</a> encryption<br>
1473 );</p>
1474 <h4 class="parameters">Parameters</h4>
1475 <dl>
1476 <dt>host</dt>
1477 <dd class="description">Host to connect to</dd>
1478 <dt>port</dt>
1479 <dd class="description">Port number</dd>
1480 <dt>encryption</dt>
1481 <dd class="description">Type of encryption to use</dd>
1482 </dl>
1483 <h4 class="returnvalue">Return Value</h4>
1484 <p class="description">New HTTP connection</p>
1485 <h3 class="function"><span class="info">&nbsp;DEPRECATED&nbsp;</span><a name="httpDecode64">httpDecode64</a></h3>
1486 <p class="description">Base64-decode a string.</p>
1487 <p class="code">
1488 char *httpDecode64 (<br>
1489 &nbsp;&nbsp;&nbsp;&nbsp;char *out,<br>
1490 &nbsp;&nbsp;&nbsp;&nbsp;const char *in<br>
1491 );</p>
1492 <h4 class="parameters">Parameters</h4>
1493 <dl>
1494 <dt>out</dt>
1495 <dd class="description">String to write to</dd>
1496 <dt>in</dt>
1497 <dd class="description">String to read from</dd>
1498 </dl>
1499 <h4 class="returnvalue">Return Value</h4>
1500 <p class="description">Decoded string</p>
1501 <h4 class="discussion">Discussion</h4>
1502 <p class="discussion">This function is deprecated. Use the httpDecode64_2() function instead
1503 which provides buffer length arguments.
1504
1505 </p>
1506 <h3 class="function"><span class="info">&nbsp;CUPS 1.1.21&nbsp;</span><a name="httpDecode64_2">httpDecode64_2</a></h3>
1507 <p class="description">Base64-decode a string.</p>
1508 <p class="code">
1509 char *httpDecode64_2 (<br>
1510 &nbsp;&nbsp;&nbsp;&nbsp;char *out,<br>
1511 &nbsp;&nbsp;&nbsp;&nbsp;int *outlen,<br>
1512 &nbsp;&nbsp;&nbsp;&nbsp;const char *in<br>
1513 );</p>
1514 <h4 class="parameters">Parameters</h4>
1515 <dl>
1516 <dt>out</dt>
1517 <dd class="description">String to write to</dd>
1518 <dt>outlen</dt>
1519 <dd class="description">Size of output string</dd>
1520 <dt>in</dt>
1521 <dd class="description">String to read from</dd>
1522 </dl>
1523 <h4 class="returnvalue">Return Value</h4>
1524 <p class="description">Decoded string</p>
1525 <h3 class="function"><a name="httpDelete">httpDelete</a></h3>
1526 <p class="description">Send a DELETE request to the server.</p>
1527 <p class="code">
1528 int httpDelete (<br>
1529 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
1530 &nbsp;&nbsp;&nbsp;&nbsp;const char *uri<br>
1531 );</p>
1532 <h4 class="parameters">Parameters</h4>
1533 <dl>
1534 <dt>http</dt>
1535 <dd class="description">Connection to server</dd>
1536 <dt>uri</dt>
1537 <dd class="description">URI to delete</dd>
1538 </dl>
1539 <h4 class="returnvalue">Return Value</h4>
1540 <p class="description">Status of call (0 = success)</p>
1541 <h3 class="function"><span class="info">&nbsp;DEPRECATED&nbsp;</span><a name="httpEncode64">httpEncode64</a></h3>
1542 <p class="description">Base64-encode a string.</p>
1543 <p class="code">
1544 char *httpEncode64 (<br>
1545 &nbsp;&nbsp;&nbsp;&nbsp;char *out,<br>
1546 &nbsp;&nbsp;&nbsp;&nbsp;const char *in<br>
1547 );</p>
1548 <h4 class="parameters">Parameters</h4>
1549 <dl>
1550 <dt>out</dt>
1551 <dd class="description">String to write to</dd>
1552 <dt>in</dt>
1553 <dd class="description">String to read from</dd>
1554 </dl>
1555 <h4 class="returnvalue">Return Value</h4>
1556 <p class="description">Encoded string</p>
1557 <h4 class="discussion">Discussion</h4>
1558 <p class="discussion">This function is deprecated. Use the httpEncode64_2() function instead
1559 which provides buffer length arguments.
1560
1561 </p>
1562 <h3 class="function"><span class="info">&nbsp;CUPS 1.1.21&nbsp;</span><a name="httpEncode64_2">httpEncode64_2</a></h3>
1563 <p class="description">Base64-encode a string.</p>
1564 <p class="code">
1565 char *httpEncode64_2 (<br>
1566 &nbsp;&nbsp;&nbsp;&nbsp;char *out,<br>
1567 &nbsp;&nbsp;&nbsp;&nbsp;int outlen,<br>
1568 &nbsp;&nbsp;&nbsp;&nbsp;const char *in,<br>
1569 &nbsp;&nbsp;&nbsp;&nbsp;int inlen<br>
1570 );</p>
1571 <h4 class="parameters">Parameters</h4>
1572 <dl>
1573 <dt>out</dt>
1574 <dd class="description">String to write to</dd>
1575 <dt>outlen</dt>
1576 <dd class="description">Size of output string</dd>
1577 <dt>in</dt>
1578 <dd class="description">String to read from</dd>
1579 <dt>inlen</dt>
1580 <dd class="description">Size of input string</dd>
1581 </dl>
1582 <h4 class="returnvalue">Return Value</h4>
1583 <p class="description">Encoded string</p>
1584 <h3 class="function"><a name="httpEncryption">httpEncryption</a></h3>
1585 <p class="description">Set the required encryption on the link.</p>
1586 <p class="code">
1587 int httpEncryption (<br>
1588 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
1589 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_encryption_t">http_encryption_t</a> e<br>
1590 );</p>
1591 <h4 class="parameters">Parameters</h4>
1592 <dl>
1593 <dt>http</dt>
1594 <dd class="description">Connection to server</dd>
1595 <dt>e</dt>
1596 <dd class="description">New encryption preference</dd>
1597 </dl>
1598 <h4 class="returnvalue">Return Value</h4>
1599 <p class="description">-1 on error, 0 on success</p>
1600 <h3 class="function"><a name="httpError">httpError</a></h3>
1601 <p class="description">Get the last error on a connection.</p>
1602 <p class="code">
1603 int httpError (<br>
1604 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http<br>
1605 );</p>
1606 <h4 class="parameters">Parameters</h4>
1607 <dl>
1608 <dt>http</dt>
1609 <dd class="description">Connection to server</dd>
1610 </dl>
1611 <h4 class="returnvalue">Return Value</h4>
1612 <p class="description">Error code (errno) value</p>
1613 <h3 class="function"><a name="httpFlush">httpFlush</a></h3>
1614 <p class="description">Flush data from a HTTP connection.</p>
1615 <p class="code">
1616 void httpFlush (<br>
1617 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http<br>
1618 );</p>
1619 <h4 class="parameters">Parameters</h4>
1620 <dl>
1621 <dt>http</dt>
1622 <dd class="description">Connection to server</dd>
1623 </dl>
1624 <h3 class="function"><span class="info">&nbsp;CUPS 1.2&nbsp;</span><a name="httpFlushWrite">httpFlushWrite</a></h3>
1625 <p class="description">Flush data in write buffer.</p>
1626 <p class="code">
1627 int httpFlushWrite (<br>
1628 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http<br>
1629 );</p>
1630 <h4 class="parameters">Parameters</h4>
1631 <dl>
1632 <dt>http</dt>
1633 <dd class="description">Connection to server</dd>
1634 </dl>
1635 <h4 class="returnvalue">Return Value</h4>
1636 <p class="description">Bytes written or -1 on error</p>
1637 <h3 class="function"><a name="httpGet">httpGet</a></h3>
1638 <p class="description">Send a GET request to the server.</p>
1639 <p class="code">
1640 int httpGet (<br>
1641 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
1642 &nbsp;&nbsp;&nbsp;&nbsp;const char *uri<br>
1643 );</p>
1644 <h4 class="parameters">Parameters</h4>
1645 <dl>
1646 <dt>http</dt>
1647 <dd class="description">Connection to server</dd>
1648 <dt>uri</dt>
1649 <dd class="description">URI to get</dd>
1650 </dl>
1651 <h4 class="returnvalue">Return Value</h4>
1652 <p class="description">Status of call (0 = success)</p>
1653 <h3 class="function"><span class="info">&nbsp;CUPS 1.3&nbsp;</span><a name="httpGetAuthString">httpGetAuthString</a></h3>
1654 <p class="description">Get the current authorization string.</p>
1655 <p class="code">
1656 char *httpGetAuthString (<br>
1657 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http<br>
1658 );</p>
1659 <h4 class="parameters">Parameters</h4>
1660 <dl>
1661 <dt>http</dt>
1662 <dd class="description">Connection to server</dd>
1663 </dl>
1664 <h4 class="returnvalue">Return Value</h4>
1665 <p class="description">Authorization string</p>
1666 <h4 class="discussion">Discussion</h4>
1667 <p class="discussion">The authorization string is set by cupsDoAuthentication() and
1668 httpSetAuthString(). Use httpGetAuthString() to retrieve the
1669 string to use with httpSetField() for the HTTP_FIELD_AUTHORIZATION
1670 value.
1671
1672 </p>
1673 <h3 class="function"><span class="info">&nbsp;CUPS 1.2&nbsp;</span><a name="httpGetBlocking">httpGetBlocking</a></h3>
1674 <p class="description">Get the blocking/non-block state of a connection.</p>
1675 <p class="code">
1676 int httpGetBlocking (<br>
1677 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http<br>
1678 );</p>
1679 <h4 class="parameters">Parameters</h4>
1680 <dl>
1681 <dt>http</dt>
1682 <dd class="description">Connection to server</dd>
1683 </dl>
1684 <h4 class="returnvalue">Return Value</h4>
1685 <p class="description">1 if blocking, 0 if non-blocking</p>
1686 <h3 class="function"><span class="info">&nbsp;CUPS 1.1.19&nbsp;</span><a name="httpGetCookie">httpGetCookie</a></h3>
1687 <p class="description">Get any cookie data from the response.</p>
1688 <p class="code">
1689 const char *httpGetCookie (<br>
1690 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http<br>
1691 );</p>
1692 <h4 class="parameters">Parameters</h4>
1693 <dl>
1694 <dt>http</dt>
1695 <dd class="description">HTTP connecion</dd>
1696 </dl>
1697 <h4 class="returnvalue">Return Value</h4>
1698 <p class="description">Cookie data or NULL</p>
1699 <h3 class="function"><span class="info">&nbsp;DEPRECATED&nbsp;</span><a name="httpGetDateString">httpGetDateString</a></h3>
1700 <p class="description">Get a formatted date/time string from a time value.</p>
1701 <p class="code">
1702 const char *httpGetDateString (<br>
1703 &nbsp;&nbsp;&nbsp;&nbsp;time_t t<br>
1704 );</p>
1705 <h4 class="parameters">Parameters</h4>
1706 <dl>
1707 <dt>t</dt>
1708 <dd class="description">UNIX time</dd>
1709 </dl>
1710 <h4 class="returnvalue">Return Value</h4>
1711 <p class="description">Date/time string</p>
1712 <h3 class="function"><span class="info">&nbsp;CUPS 1.2&nbsp;</span><a name="httpGetDateString2">httpGetDateString2</a></h3>
1713 <p class="description">Get a formatted date/time string from a time value.</p>
1714 <p class="code">
1715 const char *httpGetDateString2 (<br>
1716 &nbsp;&nbsp;&nbsp;&nbsp;time_t t,<br>
1717 &nbsp;&nbsp;&nbsp;&nbsp;char *s,<br>
1718 &nbsp;&nbsp;&nbsp;&nbsp;int slen<br>
1719 );</p>
1720 <h4 class="parameters">Parameters</h4>
1721 <dl>
1722 <dt>t</dt>
1723 <dd class="description">UNIX time</dd>
1724 <dt>s</dt>
1725 <dd class="description">String buffer</dd>
1726 <dt>slen</dt>
1727 <dd class="description">Size of string buffer</dd>
1728 </dl>
1729 <h4 class="returnvalue">Return Value</h4>
1730 <p class="description">Date/time string</p>
1731 <h3 class="function"><a name="httpGetDateTime">httpGetDateTime</a></h3>
1732 <p class="description">Get a time value from a formatted date/time string.</p>
1733 <p class="code">
1734 time_t httpGetDateTime (<br>
1735 &nbsp;&nbsp;&nbsp;&nbsp;const char *s<br>
1736 );</p>
1737 <h4 class="parameters">Parameters</h4>
1738 <dl>
1739 <dt>s</dt>
1740 <dd class="description">Date/time string</dd>
1741 </dl>
1742 <h4 class="returnvalue">Return Value</h4>
1743 <p class="description">UNIX time</p>
1744 <h3 class="function"><span class="info">&nbsp;CUPS 1.2&nbsp;</span><a name="httpGetFd">httpGetFd</a></h3>
1745 <p class="description">Get the file descriptor associated with a connection.</p>
1746 <p class="code">
1747 int httpGetFd (<br>
1748 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http<br>
1749 );</p>
1750 <h4 class="parameters">Parameters</h4>
1751 <dl>
1752 <dt>http</dt>
1753 <dd class="description">Connection to server</dd>
1754 </dl>
1755 <h4 class="returnvalue">Return Value</h4>
1756 <p class="description">File descriptor or -1 if none</p>
1757 <h3 class="function"><a name="httpGetField">httpGetField</a></h3>
1758 <p class="description">Get a field value from a request/response.</p>
1759 <p class="code">
1760 const char *httpGetField (<br>
1761 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
1762 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_field_t">http_field_t</a> field<br>
1763 );</p>
1764 <h4 class="parameters">Parameters</h4>
1765 <dl>
1766 <dt>http</dt>
1767 <dd class="description">Connection to server</dd>
1768 <dt>field</dt>
1769 <dd class="description">Field to get</dd>
1770 </dl>
1771 <h4 class="returnvalue">Return Value</h4>
1772 <p class="description">Field value</p>
1773 <h3 class="function"><span class="info">&nbsp;DEPRECATED&nbsp;</span><a name="httpGetHostByName">httpGetHostByName</a></h3>
1774 <p class="description">Lookup a hostname or IPv4 address, and return
1775 address records for the specified name.</p>
1776 <p class="code">
1777 struct hostent *httpGetHostByName (<br>
1778 &nbsp;&nbsp;&nbsp;&nbsp;const char *name<br>
1779 );</p>
1780 <h4 class="parameters">Parameters</h4>
1781 <dl>
1782 <dt>name</dt>
1783 <dd class="description">Hostname or IP address</dd>
1784 </dl>
1785 <h4 class="returnvalue">Return Value</h4>
1786 <p class="description">Host entry</p>
1787 <h3 class="function"><span class="info">&nbsp;CUPS 1.2&nbsp;</span><a name="httpGetHostname">httpGetHostname</a></h3>
1788 <p class="description">Get the FQDN for the connection or local system.</p>
1789 <p class="code">
1790 const char *httpGetHostname (<br>
1791 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
1792 &nbsp;&nbsp;&nbsp;&nbsp;char *s,<br>
1793 &nbsp;&nbsp;&nbsp;&nbsp;int slen<br>
1794 );</p>
1795 <h4 class="parameters">Parameters</h4>
1796 <dl>
1797 <dt>http</dt>
1798 <dd class="description">HTTP connection or NULL</dd>
1799 <dt>s</dt>
1800 <dd class="description">String buffer for name</dd>
1801 <dt>slen</dt>
1802 <dd class="description">Size of buffer</dd>
1803 </dl>
1804 <h4 class="returnvalue">Return Value</h4>
1805 <p class="description">FQDN for connection or system</p>
1806 <h4 class="discussion">Discussion</h4>
1807 <p class="discussion">When &quot;http&quot; points to a connected socket, return the hostname or
1808 address that was used in the call to httpConnect() or httpConnectEncrypt().
1809 Otherwise, return the FQDN for the local system using both gethostname()
1810 and gethostbyname() to get the local hostname with domain.
1811
1812 </p>
1813 <h3 class="function"><span class="info">&nbsp;DEPRECATED&nbsp;</span><a name="httpGetLength">httpGetLength</a></h3>
1814 <p class="description">Get the amount of data remaining from the
1815 content-length or transfer-encoding fields.</p>
1816 <p class="code">
1817 int httpGetLength (<br>
1818 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http<br>
1819 );</p>
1820 <h4 class="parameters">Parameters</h4>
1821 <dl>
1822 <dt>http</dt>
1823 <dd class="description">Connection to server</dd>
1824 </dl>
1825 <h4 class="returnvalue">Return Value</h4>
1826 <p class="description">Content length</p>
1827 <h4 class="discussion">Discussion</h4>
1828 <p class="discussion">This function is deprecated and will not return lengths larger than
1829 2^31 - 1; use httpGetLength2() instead.
1830
1831 </p>
1832 <h3 class="function"><span class="info">&nbsp;CUPS 1.2&nbsp;</span><a name="httpGetLength2">httpGetLength2</a></h3>
1833 <p class="description">Get the amount of data remaining from the
1834 content-length or transfer-encoding fields.</p>
1835 <p class="code">
1836 off_t httpGetLength2 (<br>
1837 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http<br>
1838 );</p>
1839 <h4 class="parameters">Parameters</h4>
1840 <dl>
1841 <dt>http</dt>
1842 <dd class="description">Connection to server</dd>
1843 </dl>
1844 <h4 class="returnvalue">Return Value</h4>
1845 <p class="description">Content length</p>
1846 <h4 class="discussion">Discussion</h4>
1847 <p class="discussion">This function returns the complete content length, even for
1848 content larger than 2^31 - 1.
1849
1850 </p>
1851 <h3 class="function"><span class="info">&nbsp;CUPS 1.2&nbsp;</span><a name="httpGetStatus">httpGetStatus</a></h3>
1852 <p class="description">Get the status of the last HTTP request.</p>
1853 <p class="code">
1854 <a href="#http_status_t">http_status_t</a> httpGetStatus (<br>
1855 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http<br>
1856 );</p>
1857 <h4 class="parameters">Parameters</h4>
1858 <dl>
1859 <dt>http</dt>
1860 <dd class="description">Connection to server</dd>
1861 </dl>
1862 <h4 class="returnvalue">Return Value</h4>
1863 <p class="description">HTTP status</p>
1864 <h3 class="function"><span class="info">&nbsp;DEPRECATED&nbsp;</span><a name="httpGetSubField">httpGetSubField</a></h3>
1865 <p class="description">Get a sub-field value.</p>
1866 <p class="code">
1867 char *httpGetSubField (<br>
1868 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
1869 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_field_t">http_field_t</a> field,<br>
1870 &nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
1871 &nbsp;&nbsp;&nbsp;&nbsp;char *value<br>
1872 );</p>
1873 <h4 class="parameters">Parameters</h4>
1874 <dl>
1875 <dt>http</dt>
1876 <dd class="description">Connection to server</dd>
1877 <dt>field</dt>
1878 <dd class="description">Field index</dd>
1879 <dt>name</dt>
1880 <dd class="description">Name of sub-field</dd>
1881 <dt>value</dt>
1882 <dd class="description">Value string</dd>
1883 </dl>
1884 <h4 class="returnvalue">Return Value</h4>
1885 <p class="description">Value or NULL</p>
1886 <h3 class="function"><span class="info">&nbsp;CUPS 1.2&nbsp;</span><a name="httpGetSubField2">httpGetSubField2</a></h3>
1887 <p class="description">Get a sub-field value.</p>
1888 <p class="code">
1889 char *httpGetSubField2 (<br>
1890 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
1891 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_field_t">http_field_t</a> field,<br>
1892 &nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
1893 &nbsp;&nbsp;&nbsp;&nbsp;char *value,<br>
1894 &nbsp;&nbsp;&nbsp;&nbsp;int valuelen<br>
1895 );</p>
1896 <h4 class="parameters">Parameters</h4>
1897 <dl>
1898 <dt>http</dt>
1899 <dd class="description">Connection to server</dd>
1900 <dt>field</dt>
1901 <dd class="description">Field index</dd>
1902 <dt>name</dt>
1903 <dd class="description">Name of sub-field</dd>
1904 <dt>value</dt>
1905 <dd class="description">Value string</dd>
1906 <dt>valuelen</dt>
1907 <dd class="description">Size of value buffer</dd>
1908 </dl>
1909 <h4 class="returnvalue">Return Value</h4>
1910 <p class="description">Value or NULL</p>
1911 <h3 class="function"><a name="httpGets">httpGets</a></h3>
1912 <p class="description">Get a line of text from a HTTP connection.</p>
1913 <p class="code">
1914 char *httpGets (<br>
1915 &nbsp;&nbsp;&nbsp;&nbsp;char *line,<br>
1916 &nbsp;&nbsp;&nbsp;&nbsp;int length,<br>
1917 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http<br>
1918 );</p>
1919 <h4 class="parameters">Parameters</h4>
1920 <dl>
1921 <dt>line</dt>
1922 <dd class="description">Line to read into</dd>
1923 <dt>length</dt>
1924 <dd class="description">Max length of buffer</dd>
1925 <dt>http</dt>
1926 <dd class="description">Connection to server</dd>
1927 </dl>
1928 <h4 class="returnvalue">Return Value</h4>
1929 <p class="description">Line or NULL</p>
1930 <h3 class="function"><a name="httpHead">httpHead</a></h3>
1931 <p class="description">Send a HEAD request to the server.</p>
1932 <p class="code">
1933 int httpHead (<br>
1934 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
1935 &nbsp;&nbsp;&nbsp;&nbsp;const char *uri<br>
1936 );</p>
1937 <h4 class="parameters">Parameters</h4>
1938 <dl>
1939 <dt>http</dt>
1940 <dd class="description">Connection to server</dd>
1941 <dt>uri</dt>
1942 <dd class="description">URI for head</dd>
1943 </dl>
1944 <h4 class="returnvalue">Return Value</h4>
1945 <p class="description">Status of call (0 = success)</p>
1946 <h3 class="function"><a name="httpInitialize">httpInitialize</a></h3>
1947 <p class="description">Initialize the HTTP interface library and set the
1948 default HTTP proxy (if any).</p>
1949 <p class="code">
1950 void httpInitialize (void);</p>
1951 <h3 class="function"><a name="httpMD5">httpMD5</a></h3>
1952 <p class="description">Compute the MD5 sum of the username:group:password.</p>
1953 <p class="code">
1954 char *httpMD5 (<br>
1955 &nbsp;&nbsp;&nbsp;&nbsp;const char *username,<br>
1956 &nbsp;&nbsp;&nbsp;&nbsp;const char *realm,<br>
1957 &nbsp;&nbsp;&nbsp;&nbsp;const char *passwd,<br>
1958 &nbsp;&nbsp;&nbsp;&nbsp;char md5[33]<br>
1959 );</p>
1960 <h4 class="parameters">Parameters</h4>
1961 <dl>
1962 <dt>username</dt>
1963 <dd class="description">User name</dd>
1964 <dt>realm</dt>
1965 <dd class="description">Realm name</dd>
1966 <dt>passwd</dt>
1967 <dd class="description">Password string</dd>
1968 <dt>md5[33]</dt>
1969 <dd class="description">MD5 string</dd>
1970 </dl>
1971 <h4 class="returnvalue">Return Value</h4>
1972 <p class="description">MD5 sum</p>
1973 <h3 class="function"><a name="httpMD5Final">httpMD5Final</a></h3>
1974 <p class="description">Combine the MD5 sum of the username, group, and password
1975 with the server-supplied nonce value, method, and
1976 request-uri.</p>
1977 <p class="code">
1978 char *httpMD5Final (<br>
1979 &nbsp;&nbsp;&nbsp;&nbsp;const char *nonce,<br>
1980 &nbsp;&nbsp;&nbsp;&nbsp;const char *method,<br>
1981 &nbsp;&nbsp;&nbsp;&nbsp;const char *resource,<br>
1982 &nbsp;&nbsp;&nbsp;&nbsp;char md5[33]<br>
1983 );</p>
1984 <h4 class="parameters">Parameters</h4>
1985 <dl>
1986 <dt>nonce</dt>
1987 <dd class="description">Server nonce value</dd>
1988 <dt>method</dt>
1989 <dd class="description">METHOD (GET, POST, etc.)</dd>
1990 <dt>resource</dt>
1991 <dd class="description">Resource path</dd>
1992 <dt>md5[33]</dt>
1993 <dd class="description">MD5 sum</dd>
1994 </dl>
1995 <h4 class="returnvalue">Return Value</h4>
1996 <p class="description">New sum</p>
1997 <h3 class="function"><a name="httpMD5String">httpMD5String</a></h3>
1998 <p class="description">Convert an MD5 sum to a character string.</p>
1999 <p class="code">
2000 char *httpMD5String (<br>
2001 &nbsp;&nbsp;&nbsp;&nbsp;const unsigned char *sum,<br>
2002 &nbsp;&nbsp;&nbsp;&nbsp;char md5[33]<br>
2003 );</p>
2004 <h4 class="parameters">Parameters</h4>
2005 <dl>
2006 <dt>sum</dt>
2007 <dd class="description">MD5 sum data</dd>
2008 <dt>md5[33]</dt>
2009 <dd class="description">MD5 sum in hex</dd>
2010 </dl>
2011 <h4 class="returnvalue">Return Value</h4>
2012 <p class="description">MD5 sum in hex</p>
2013 <h3 class="function"><a name="httpOptions">httpOptions</a></h3>
2014 <p class="description">Send an OPTIONS request to the server.</p>
2015 <p class="code">
2016 int httpOptions (<br>
2017 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
2018 &nbsp;&nbsp;&nbsp;&nbsp;const char *uri<br>
2019 );</p>
2020 <h4 class="parameters">Parameters</h4>
2021 <dl>
2022 <dt>http</dt>
2023 <dd class="description">Connection to server</dd>
2024 <dt>uri</dt>
2025 <dd class="description">URI for options</dd>
2026 </dl>
2027 <h4 class="returnvalue">Return Value</h4>
2028 <p class="description">Status of call (0 = success)</p>
2029 <h3 class="function"><a name="httpPost">httpPost</a></h3>
2030 <p class="description">Send a POST request to the server.</p>
2031 <p class="code">
2032 int httpPost (<br>
2033 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
2034 &nbsp;&nbsp;&nbsp;&nbsp;const char *uri<br>
2035 );</p>
2036 <h4 class="parameters">Parameters</h4>
2037 <dl>
2038 <dt>http</dt>
2039 <dd class="description">Connection to server</dd>
2040 <dt>uri</dt>
2041 <dd class="description">URI for post</dd>
2042 </dl>
2043 <h4 class="returnvalue">Return Value</h4>
2044 <p class="description">Status of call (0 = success)</p>
2045 <h3 class="function"><a name="httpPut">httpPut</a></h3>
2046 <p class="description">Send a PUT request to the server.</p>
2047 <p class="code">
2048 int httpPut (<br>
2049 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
2050 &nbsp;&nbsp;&nbsp;&nbsp;const char *uri<br>
2051 );</p>
2052 <h4 class="parameters">Parameters</h4>
2053 <dl>
2054 <dt>http</dt>
2055 <dd class="description">Connection to server</dd>
2056 <dt>uri</dt>
2057 <dd class="description">URI to put</dd>
2058 </dl>
2059 <h4 class="returnvalue">Return Value</h4>
2060 <p class="description">Status of call (0 = success)</p>
2061 <h3 class="function"><span class="info">&nbsp;DEPRECATED&nbsp;</span><a name="httpRead">httpRead</a></h3>
2062 <p class="description">Read data from a HTTP connection.</p>
2063 <p class="code">
2064 int httpRead (<br>
2065 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
2066 &nbsp;&nbsp;&nbsp;&nbsp;char *buffer,<br>
2067 &nbsp;&nbsp;&nbsp;&nbsp;int length<br>
2068 );</p>
2069 <h4 class="parameters">Parameters</h4>
2070 <dl>
2071 <dt>http</dt>
2072 <dd class="description">Connection to server</dd>
2073 <dt>buffer</dt>
2074 <dd class="description">Buffer for data</dd>
2075 <dt>length</dt>
2076 <dd class="description">Maximum number of bytes</dd>
2077 </dl>
2078 <h4 class="returnvalue">Return Value</h4>
2079 <p class="description">Number of bytes read</p>
2080 <h4 class="discussion">Discussion</h4>
2081 <p class="discussion">This function is deprecated. Use the httpRead2() function which can
2082 read more than 2GB of data.
2083
2084 </p>
2085 <h3 class="function"><span class="info">&nbsp;CUPS 1.2&nbsp;</span><a name="httpRead2">httpRead2</a></h3>
2086 <p class="description">Read data from a HTTP connection.</p>
2087 <p class="code">
2088 ssize_t httpRead2 (<br>
2089 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
2090 &nbsp;&nbsp;&nbsp;&nbsp;char *buffer,<br>
2091 &nbsp;&nbsp;&nbsp;&nbsp;size_t length<br>
2092 );</p>
2093 <h4 class="parameters">Parameters</h4>
2094 <dl>
2095 <dt>http</dt>
2096 <dd class="description">Connection to server</dd>
2097 <dt>buffer</dt>
2098 <dd class="description">Buffer for data</dd>
2099 <dt>length</dt>
2100 <dd class="description">Maximum number of bytes</dd>
2101 </dl>
2102 <h4 class="returnvalue">Return Value</h4>
2103 <p class="description">Number of bytes read</p>
2104 <h3 class="function"><a name="httpReconnect">httpReconnect</a></h3>
2105 <p class="description">Reconnect to a HTTP server.</p>
2106 <p class="code">
2107 int httpReconnect (<br>
2108 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http<br>
2109 );</p>
2110 <h4 class="parameters">Parameters</h4>
2111 <dl>
2112 <dt>http</dt>
2113 <dd class="description">Connection to server</dd>
2114 </dl>
2115 <h4 class="returnvalue">Return Value</h4>
2116 <p class="description">0 on success, non-zero on failure</p>
2117 <h3 class="function"><span class="info">&nbsp;DEPRECATED&nbsp;</span><a name="httpSeparate">httpSeparate</a></h3>
2118 <p class="description">Separate a Universal Resource Identifier into its
2119 components.</p>
2120 <p class="code">
2121 void httpSeparate (<br>
2122 &nbsp;&nbsp;&nbsp;&nbsp;const char *uri,<br>
2123 &nbsp;&nbsp;&nbsp;&nbsp;char *scheme,<br>
2124 &nbsp;&nbsp;&nbsp;&nbsp;char *username,<br>
2125 &nbsp;&nbsp;&nbsp;&nbsp;char *host,<br>
2126 &nbsp;&nbsp;&nbsp;&nbsp;int *port,<br>
2127 &nbsp;&nbsp;&nbsp;&nbsp;char *resource<br>
2128 );</p>
2129 <h4 class="parameters">Parameters</h4>
2130 <dl>
2131 <dt>uri</dt>
2132 <dd class="description">Universal Resource Identifier</dd>
2133 <dt>scheme</dt>
2134 <dd class="description">Scheme [32] (http, https, etc.)</dd>
2135 <dt>username</dt>
2136 <dd class="description">Username [1024]</dd>
2137 <dt>host</dt>
2138 <dd class="description">Hostname [1024]</dd>
2139 <dt>port</dt>
2140 <dd class="description">Port number to use</dd>
2141 <dt>resource</dt>
2142 <dd class="description">Resource/filename [1024]</dd>
2143 </dl>
2144 <h4 class="discussion">Discussion</h4>
2145 <p class="discussion">This function is deprecated; use the httpSeparateURI() function instead.
2146
2147 </p>
2148 <h3 class="function"><span class="info">&nbsp;CUPS 1.1.21&nbsp;</span><a name="httpSeparate2">httpSeparate2</a></h3>
2149 <p class="description">Separate a Universal Resource Identifier into its
2150 components.</p>
2151 <p class="code">
2152 void httpSeparate2 (<br>
2153 &nbsp;&nbsp;&nbsp;&nbsp;const char *uri,<br>
2154 &nbsp;&nbsp;&nbsp;&nbsp;char *scheme,<br>
2155 &nbsp;&nbsp;&nbsp;&nbsp;int schemelen,<br>
2156 &nbsp;&nbsp;&nbsp;&nbsp;char *username,<br>
2157 &nbsp;&nbsp;&nbsp;&nbsp;int usernamelen,<br>
2158 &nbsp;&nbsp;&nbsp;&nbsp;char *host,<br>
2159 &nbsp;&nbsp;&nbsp;&nbsp;int hostlen,<br>
2160 &nbsp;&nbsp;&nbsp;&nbsp;int *port,<br>
2161 &nbsp;&nbsp;&nbsp;&nbsp;char *resource,<br>
2162 &nbsp;&nbsp;&nbsp;&nbsp;int resourcelen<br>
2163 );</p>
2164 <h4 class="parameters">Parameters</h4>
2165 <dl>
2166 <dt>uri</dt>
2167 <dd class="description">Universal Resource Identifier</dd>
2168 <dt>scheme</dt>
2169 <dd class="description">Scheme (http, https, etc.)</dd>
2170 <dt>schemelen</dt>
2171 <dd class="description">Size of scheme buffer</dd>
2172 <dt>username</dt>
2173 <dd class="description">Username</dd>
2174 <dt>usernamelen</dt>
2175 <dd class="description">Size of username buffer</dd>
2176 <dt>host</dt>
2177 <dd class="description">Hostname</dd>
2178 <dt>hostlen</dt>
2179 <dd class="description">Size of hostname buffer</dd>
2180 <dt>port</dt>
2181 <dd class="description">Port number to use</dd>
2182 <dt>resource</dt>
2183 <dd class="description">Resource/filename</dd>
2184 <dt>resourcelen</dt>
2185 <dd class="description">Size of resource buffer</dd>
2186 </dl>
2187 <h4 class="discussion">Discussion</h4>
2188 <p class="discussion">This function is deprecated; use the httpSeparateURI() function instead.
2189
2190
2191 </p>
2192 <h3 class="function"><span class="info">&nbsp;CUPS 1.2&nbsp;</span><a name="httpSeparateURI">httpSeparateURI</a></h3>
2193 <p class="description">Separate a Universal Resource Identifier into its
2194 components.</p>
2195 <p class="code">
2196 <a href="#http_uri_status_t">http_uri_status_t</a> httpSeparateURI (<br>
2197 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_uri_coding_t">http_uri_coding_t</a> decoding,<br>
2198 &nbsp;&nbsp;&nbsp;&nbsp;const char *uri,<br>
2199 &nbsp;&nbsp;&nbsp;&nbsp;char *scheme,<br>
2200 &nbsp;&nbsp;&nbsp;&nbsp;int schemelen,<br>
2201 &nbsp;&nbsp;&nbsp;&nbsp;char *username,<br>
2202 &nbsp;&nbsp;&nbsp;&nbsp;int usernamelen,<br>
2203 &nbsp;&nbsp;&nbsp;&nbsp;char *host,<br>
2204 &nbsp;&nbsp;&nbsp;&nbsp;int hostlen,<br>
2205 &nbsp;&nbsp;&nbsp;&nbsp;int *port,<br>
2206 &nbsp;&nbsp;&nbsp;&nbsp;char *resource,<br>
2207 &nbsp;&nbsp;&nbsp;&nbsp;int resourcelen<br>
2208 );</p>
2209 <h4 class="parameters">Parameters</h4>
2210 <dl>
2211 <dt>decoding</dt>
2212 <dd class="description">Decoding flags</dd>
2213 <dt>uri</dt>
2214 <dd class="description">Universal Resource Identifier</dd>
2215 <dt>scheme</dt>
2216 <dd class="description">Scheme (http, https, etc.)</dd>
2217 <dt>schemelen</dt>
2218 <dd class="description">Size of scheme buffer</dd>
2219 <dt>username</dt>
2220 <dd class="description">Username</dd>
2221 <dt>usernamelen</dt>
2222 <dd class="description">Size of username buffer</dd>
2223 <dt>host</dt>
2224 <dd class="description">Hostname</dd>
2225 <dt>hostlen</dt>
2226 <dd class="description">Size of hostname buffer</dd>
2227 <dt>port</dt>
2228 <dd class="description">Port number to use</dd>
2229 <dt>resource</dt>
2230 <dd class="description">Resource/filename</dd>
2231 <dt>resourcelen</dt>
2232 <dd class="description">Size of resource buffer</dd>
2233 </dl>
2234 <h4 class="returnvalue">Return Value</h4>
2235 <p class="description">Result of separation</p>
2236 <h3 class="function"><span class="info">&nbsp;CUPS 1.3&nbsp;</span><a name="httpSetAuthString">httpSetAuthString</a></h3>
2237 <p class="description">Set the current authorization string.</p>
2238 <p class="code">
2239 void httpSetAuthString (<br>
2240 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
2241 &nbsp;&nbsp;&nbsp;&nbsp;const char *scheme,<br>
2242 &nbsp;&nbsp;&nbsp;&nbsp;const char *data<br>
2243 );</p>
2244 <h4 class="parameters">Parameters</h4>
2245 <dl>
2246 <dt>http</dt>
2247 <dd class="description">Connection to server</dd>
2248 <dt>scheme</dt>
2249 <dd class="description">Auth scheme (NULL to clear it)</dd>
2250 <dt>data</dt>
2251 <dd class="description">Auth data (NULL for none)</dd>
2252 </dl>
2253 <h4 class="discussion">Discussion</h4>
2254 <p class="discussion">This function just stores a copy of the current authorization string in
2255 the HTTP connection object. You must still call httpSetField() to set
2256 HTTP_FIELD_AUTHORIZATION prior to issuing a HTTP request using httpGet(),
2257 httpHead(), httpOptions(), httpPost, or httpPut().
2258
2259 </p>
2260 <h3 class="function"><span class="info">&nbsp;CUPS 1.1.19&nbsp;</span><a name="httpSetCookie">httpSetCookie</a></h3>
2261 <p class="description">Set the cookie value(s)...</p>
2262 <p class="code">
2263 void httpSetCookie (<br>
2264 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
2265 &nbsp;&nbsp;&nbsp;&nbsp;const char *cookie<br>
2266 );</p>
2267 <h4 class="parameters">Parameters</h4>
2268 <dl>
2269 <dt>http</dt>
2270 <dd class="description">Connection</dd>
2271 <dt>cookie</dt>
2272 <dd class="description">Cookie string</dd>
2273 </dl>
2274 <h3 class="function"><span class="info">&nbsp;CUPS 1.2&nbsp;</span><a name="httpSetExpect">httpSetExpect</a></h3>
2275 <p class="description">Set the Expect: header in a request.</p>
2276 <p class="code">
2277 void httpSetExpect (<br>
2278 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
2279 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_status_t">http_status_t</a> expect<br>
2280 );</p>
2281 <h4 class="parameters">Parameters</h4>
2282 <dl>
2283 <dt>http</dt>
2284 <dd class="description">Connection to server</dd>
2285 <dt>expect</dt>
2286 <dd class="description">HTTP status to expect (HTTP_CONTINUE)</dd>
2287 </dl>
2288 <h4 class="discussion">Discussion</h4>
2289 <p class="discussion">Currently only HTTP_CONTINUE is supported for the &quot;expect&quot; argument.
2290
2291 </p>
2292 <h3 class="function"><a name="httpSetField">httpSetField</a></h3>
2293 <p class="description">Set the value of an HTTP header.</p>
2294 <p class="code">
2295 void httpSetField (<br>
2296 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
2297 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_field_t">http_field_t</a> field,<br>
2298 &nbsp;&nbsp;&nbsp;&nbsp;const char *value<br>
2299 );</p>
2300 <h4 class="parameters">Parameters</h4>
2301 <dl>
2302 <dt>http</dt>
2303 <dd class="description">Connection to server</dd>
2304 <dt>field</dt>
2305 <dd class="description">Field index</dd>
2306 <dt>value</dt>
2307 <dd class="description">Value</dd>
2308 </dl>
2309 <h3 class="function"><span class="info">&nbsp;CUPS 1.2&nbsp;</span><a name="httpSetLength">httpSetLength</a></h3>
2310 <p class="description">Set the content-length and content-encoding.</p>
2311 <p class="code">
2312 void httpSetLength (<br>
2313 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
2314 &nbsp;&nbsp;&nbsp;&nbsp;size_t length<br>
2315 );</p>
2316 <h4 class="parameters">Parameters</h4>
2317 <dl>
2318 <dt>http</dt>
2319 <dd class="description">Connection to server</dd>
2320 <dt>length</dt>
2321 <dd class="description">Length (0 for chunked)</dd>
2322 </dl>
2323 <h3 class="function"><a name="httpStatus">httpStatus</a></h3>
2324 <p class="description">Return a short string describing a HTTP status code.</p>
2325 <p class="code">
2326 const char *httpStatus (<br>
2327 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_status_t">http_status_t</a> status<br>
2328 );</p>
2329 <h4 class="parameters">Parameters</h4>
2330 <dl>
2331 <dt>status</dt>
2332 <dd class="description">HTTP status code</dd>
2333 </dl>
2334 <h4 class="returnvalue">Return Value</h4>
2335 <p class="description">String or NULL</p>
2336 <h3 class="function"><a name="httpTrace">httpTrace</a></h3>
2337 <p class="description">Send an TRACE request to the server.</p>
2338 <p class="code">
2339 int httpTrace (<br>
2340 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
2341 &nbsp;&nbsp;&nbsp;&nbsp;const char *uri<br>
2342 );</p>
2343 <h4 class="parameters">Parameters</h4>
2344 <dl>
2345 <dt>http</dt>
2346 <dd class="description">Connection to server</dd>
2347 <dt>uri</dt>
2348 <dd class="description">URI for trace</dd>
2349 </dl>
2350 <h4 class="returnvalue">Return Value</h4>
2351 <p class="description">Status of call (0 = success)</p>
2352 <h3 class="function"><a name="httpUpdate">httpUpdate</a></h3>
2353 <p class="description">Update the current HTTP state for incoming data.</p>
2354 <p class="code">
2355 <a href="#http_status_t">http_status_t</a> httpUpdate (<br>
2356 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http<br>
2357 );</p>
2358 <h4 class="parameters">Parameters</h4>
2359 <dl>
2360 <dt>http</dt>
2361 <dd class="description">Connection to server</dd>
2362 </dl>
2363 <h4 class="returnvalue">Return Value</h4>
2364 <p class="description">HTTP status</p>
2365 <h3 class="function"><span class="info">&nbsp;CUPS 1.1.19&nbsp;</span><a name="httpWait">httpWait</a></h3>
2366 <p class="description">Wait for data available on a connection.</p>
2367 <p class="code">
2368 int httpWait (<br>
2369 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
2370 &nbsp;&nbsp;&nbsp;&nbsp;int msec<br>
2371 );</p>
2372 <h4 class="parameters">Parameters</h4>
2373 <dl>
2374 <dt>http</dt>
2375 <dd class="description">Connection to server</dd>
2376 <dt>msec</dt>
2377 <dd class="description">Milliseconds to wait</dd>
2378 </dl>
2379 <h4 class="returnvalue">Return Value</h4>
2380 <p class="description">1 if data is available, 0 otherwise</p>
2381 <h3 class="function"><span class="info">&nbsp;DEPRECATED&nbsp;</span><a name="httpWrite">httpWrite</a></h3>
2382 <p class="description">Write data to a HTTP connection.</p>
2383 <p class="code">
2384 int httpWrite (<br>
2385 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
2386 &nbsp;&nbsp;&nbsp;&nbsp;const char *buffer,<br>
2387 &nbsp;&nbsp;&nbsp;&nbsp;int length<br>
2388 );</p>
2389 <h4 class="parameters">Parameters</h4>
2390 <dl>
2391 <dt>http</dt>
2392 <dd class="description">Connection to server</dd>
2393 <dt>buffer</dt>
2394 <dd class="description">Buffer for data</dd>
2395 <dt>length</dt>
2396 <dd class="description">Number of bytes to write</dd>
2397 </dl>
2398 <h4 class="returnvalue">Return Value</h4>
2399 <p class="description">Number of bytes written</p>
2400 <h4 class="discussion">Discussion</h4>
2401 <p class="discussion">This function is deprecated. Use the httpWrite2() function which can
2402 write more than 2GB of data.
2403
2404 </p>
2405 <h3 class="function"><span class="info">&nbsp;CUPS 1.2&nbsp;</span><a name="httpWrite2">httpWrite2</a></h3>
2406 <p class="description">Write data to a HTTP connection.</p>
2407 <p class="code">
2408 ssize_t httpWrite2 (<br>
2409 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
2410 &nbsp;&nbsp;&nbsp;&nbsp;const char *buffer,<br>
2411 &nbsp;&nbsp;&nbsp;&nbsp;size_t length<br>
2412 );</p>
2413 <h4 class="parameters">Parameters</h4>
2414 <dl>
2415 <dt>http</dt>
2416 <dd class="description">Connection to server</dd>
2417 <dt>buffer</dt>
2418 <dd class="description">Buffer for data</dd>
2419 <dt>length</dt>
2420 <dd class="description">Number of bytes to write</dd>
2421 </dl>
2422 <h4 class="returnvalue">Return Value</h4>
2423 <p class="description">Number of bytes written</p>
2424 <h3 class="function"><a name="ippAddBoolean">ippAddBoolean</a></h3>
2425 <p class="description">Add a boolean attribute to an IPP message.</p>
2426 <p class="code">
2427 <a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddBoolean (<br>
2428 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp,<br>
2429 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> group,<br>
2430 &nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
2431 &nbsp;&nbsp;&nbsp;&nbsp;char value<br>
2432 );</p>
2433 <h4 class="parameters">Parameters</h4>
2434 <dl>
2435 <dt>ipp</dt>
2436 <dd class="description">IPP message</dd>
2437 <dt>group</dt>
2438 <dd class="description">IPP group</dd>
2439 <dt>name</dt>
2440 <dd class="description">Name of attribute</dd>
2441 <dt>value</dt>
2442 <dd class="description">Value of attribute</dd>
2443 </dl>
2444 <h4 class="returnvalue">Return Value</h4>
2445 <p class="description">New attribute</p>
2446 <h3 class="function"><a name="ippAddBooleans">ippAddBooleans</a></h3>
2447 <p class="description">Add an array of boolean values.</p>
2448 <p class="code">
2449 <a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddBooleans (<br>
2450 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp,<br>
2451 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> group,<br>
2452 &nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
2453 &nbsp;&nbsp;&nbsp;&nbsp;int num_values,<br>
2454 &nbsp;&nbsp;&nbsp;&nbsp;const char *values<br>
2455 );</p>
2456 <h4 class="parameters">Parameters</h4>
2457 <dl>
2458 <dt>ipp</dt>
2459 <dd class="description">IPP message</dd>
2460 <dt>group</dt>
2461 <dd class="description">IPP group</dd>
2462 <dt>name</dt>
2463 <dd class="description">Name of attribute</dd>
2464 <dt>num_values</dt>
2465 <dd class="description">Number of values</dd>
2466 <dt>values</dt>
2467 <dd class="description">Values</dd>
2468 </dl>
2469 <h4 class="returnvalue">Return Value</h4>
2470 <p class="description">New attribute</p>
2471 <h3 class="function"><span class="info">&nbsp;CUPS 1.1.19&nbsp;</span><a name="ippAddCollection">ippAddCollection</a></h3>
2472 <p class="description">Add a collection value.</p>
2473 <p class="code">
2474 <a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddCollection (<br>
2475 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp,<br>
2476 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> group,<br>
2477 &nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
2478 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *value<br>
2479 );</p>
2480 <h4 class="parameters">Parameters</h4>
2481 <dl>
2482 <dt>ipp</dt>
2483 <dd class="description">IPP message</dd>
2484 <dt>group</dt>
2485 <dd class="description">IPP group</dd>
2486 <dt>name</dt>
2487 <dd class="description">Name of attribute</dd>
2488 <dt>value</dt>
2489 <dd class="description">Value</dd>
2490 </dl>
2491 <h4 class="returnvalue">Return Value</h4>
2492 <p class="description">New attribute</p>
2493 <h3 class="function"><span class="info">&nbsp;CUPS 1.1.19&nbsp;</span><a name="ippAddCollections">ippAddCollections</a></h3>
2494 <p class="description">Add an array of collection values.</p>
2495 <p class="code">
2496 <a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddCollections (<br>
2497 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp,<br>
2498 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> group,<br>
2499 &nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
2500 &nbsp;&nbsp;&nbsp;&nbsp;int num_values,<br>
2501 &nbsp;&nbsp;&nbsp;&nbsp;const <a href="#ipp_t">ipp_t</a> **values<br>
2502 );</p>
2503 <h4 class="parameters">Parameters</h4>
2504 <dl>
2505 <dt>ipp</dt>
2506 <dd class="description">IPP message</dd>
2507 <dt>group</dt>
2508 <dd class="description">IPP group</dd>
2509 <dt>name</dt>
2510 <dd class="description">Name of attribute</dd>
2511 <dt>num_values</dt>
2512 <dd class="description">Number of values</dd>
2513 <dt>values</dt>
2514 <dd class="description">Values</dd>
2515 </dl>
2516 <h4 class="returnvalue">Return Value</h4>
2517 <p class="description">New attribute</p>
2518 <h3 class="function"><a name="ippAddDate">ippAddDate</a></h3>
2519 <p class="description">Add a date attribute to an IPP message.</p>
2520 <p class="code">
2521 <a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddDate (<br>
2522 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp,<br>
2523 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> group,<br>
2524 &nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
2525 &nbsp;&nbsp;&nbsp;&nbsp;const <a href="#ipp_uchar_t">ipp_uchar_t</a> *value<br>
2526 );</p>
2527 <h4 class="parameters">Parameters</h4>
2528 <dl>
2529 <dt>ipp</dt>
2530 <dd class="description">IPP message</dd>
2531 <dt>group</dt>
2532 <dd class="description">IPP group</dd>
2533 <dt>name</dt>
2534 <dd class="description">Name of attribute</dd>
2535 <dt>value</dt>
2536 <dd class="description">Value</dd>
2537 </dl>
2538 <h4 class="returnvalue">Return Value</h4>
2539 <p class="description">New attribute</p>
2540 <h3 class="function"><a name="ippAddInteger">ippAddInteger</a></h3>
2541 <p class="description">Add a integer attribute to an IPP message.</p>
2542 <p class="code">
2543 <a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddInteger (<br>
2544 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp,<br>
2545 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> group,<br>
2546 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> type,<br>
2547 &nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
2548 &nbsp;&nbsp;&nbsp;&nbsp;int value<br>
2549 );</p>
2550 <h4 class="parameters">Parameters</h4>
2551 <dl>
2552 <dt>ipp</dt>
2553 <dd class="description">IPP message</dd>
2554 <dt>group</dt>
2555 <dd class="description">IPP group</dd>
2556 <dt>type</dt>
2557 <dd class="description">Type of attribute</dd>
2558 <dt>name</dt>
2559 <dd class="description">Name of attribute</dd>
2560 <dt>value</dt>
2561 <dd class="description">Value of attribute</dd>
2562 </dl>
2563 <h4 class="returnvalue">Return Value</h4>
2564 <p class="description">New attribute</p>
2565 <h3 class="function"><a name="ippAddIntegers">ippAddIntegers</a></h3>
2566 <p class="description">Add an array of integer values.</p>
2567 <p class="code">
2568 <a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddIntegers (<br>
2569 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp,<br>
2570 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> group,<br>
2571 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> type,<br>
2572 &nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
2573 &nbsp;&nbsp;&nbsp;&nbsp;int num_values,<br>
2574 &nbsp;&nbsp;&nbsp;&nbsp;const int *values<br>
2575 );</p>
2576 <h4 class="parameters">Parameters</h4>
2577 <dl>
2578 <dt>ipp</dt>
2579 <dd class="description">IPP message</dd>
2580 <dt>group</dt>
2581 <dd class="description">IPP group</dd>
2582 <dt>type</dt>
2583 <dd class="description">Type of attribute</dd>
2584 <dt>name</dt>
2585 <dd class="description">Name of attribute</dd>
2586 <dt>num_values</dt>
2587 <dd class="description">Number of values</dd>
2588 <dt>values</dt>
2589 <dd class="description">Values</dd>
2590 </dl>
2591 <h4 class="returnvalue">Return Value</h4>
2592 <p class="description">New attribute</p>
2593 <h3 class="function"><span class="info">&nbsp;CUPS 1.2&nbsp;</span><a name="ippAddOctetString">ippAddOctetString</a></h3>
2594 <p class="description">Add an octetString value to an IPP message.</p>
2595 <p class="code">
2596 <a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddOctetString (<br>
2597 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp,<br>
2598 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> group,<br>
2599 &nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
2600 &nbsp;&nbsp;&nbsp;&nbsp;const void *data,<br>
2601 &nbsp;&nbsp;&nbsp;&nbsp;int datalen<br>
2602 );</p>
2603 <h4 class="parameters">Parameters</h4>
2604 <dl>
2605 <dt>ipp</dt>
2606 <dd class="description">IPP message</dd>
2607 <dt>group</dt>
2608 <dd class="description">IPP group</dd>
2609 <dt>name</dt>
2610 <dd class="description">Name of attribute</dd>
2611 <dt>data</dt>
2612 <dd class="description">octetString data</dd>
2613 <dt>datalen</dt>
2614 <dd class="description">Length of data in bytes</dd>
2615 </dl>
2616 <h4 class="returnvalue">Return Value</h4>
2617 <p class="description">New attribute</p>
2618 <h3 class="function"><a name="ippAddRange">ippAddRange</a></h3>
2619 <p class="description">Add a range of values to an IPP message.</p>
2620 <p class="code">
2621 <a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddRange (<br>
2622 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp,<br>
2623 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> group,<br>
2624 &nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
2625 &nbsp;&nbsp;&nbsp;&nbsp;int lower,<br>
2626 &nbsp;&nbsp;&nbsp;&nbsp;int upper<br>
2627 );</p>
2628 <h4 class="parameters">Parameters</h4>
2629 <dl>
2630 <dt>ipp</dt>
2631 <dd class="description">IPP message</dd>
2632 <dt>group</dt>
2633 <dd class="description">IPP group</dd>
2634 <dt>name</dt>
2635 <dd class="description">Name of attribute</dd>
2636 <dt>lower</dt>
2637 <dd class="description">Lower value</dd>
2638 <dt>upper</dt>
2639 <dd class="description">Upper value</dd>
2640 </dl>
2641 <h4 class="returnvalue">Return Value</h4>
2642 <p class="description">New attribute</p>
2643 <h3 class="function"><a name="ippAddRanges">ippAddRanges</a></h3>
2644 <p class="description">Add ranges of values to an IPP message.</p>
2645 <p class="code">
2646 <a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddRanges (<br>
2647 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp,<br>
2648 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> group,<br>
2649 &nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
2650 &nbsp;&nbsp;&nbsp;&nbsp;int num_values,<br>
2651 &nbsp;&nbsp;&nbsp;&nbsp;const int *lower,<br>
2652 &nbsp;&nbsp;&nbsp;&nbsp;const int *upper<br>
2653 );</p>
2654 <h4 class="parameters">Parameters</h4>
2655 <dl>
2656 <dt>ipp</dt>
2657 <dd class="description">IPP message</dd>
2658 <dt>group</dt>
2659 <dd class="description">IPP group</dd>
2660 <dt>name</dt>
2661 <dd class="description">Name of attribute</dd>
2662 <dt>num_values</dt>
2663 <dd class="description">Number of values</dd>
2664 <dt>lower</dt>
2665 <dd class="description">Lower values</dd>
2666 <dt>upper</dt>
2667 <dd class="description">Upper values</dd>
2668 </dl>
2669 <h4 class="returnvalue">Return Value</h4>
2670 <p class="description">New attribute</p>
2671 <h3 class="function"><a name="ippAddResolution">ippAddResolution</a></h3>
2672 <p class="description">Add a resolution value to an IPP message.</p>
2673 <p class="code">
2674 <a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddResolution (<br>
2675 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp,<br>
2676 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> group,<br>
2677 &nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
2678 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_res_t">ipp_res_t</a> units,<br>
2679 &nbsp;&nbsp;&nbsp;&nbsp;int xres,<br>
2680 &nbsp;&nbsp;&nbsp;&nbsp;int yres<br>
2681 );</p>
2682 <h4 class="parameters">Parameters</h4>
2683 <dl>
2684 <dt>ipp</dt>
2685 <dd class="description">IPP message</dd>
2686 <dt>group</dt>
2687 <dd class="description">IPP group</dd>
2688 <dt>name</dt>
2689 <dd class="description">Name of attribute</dd>
2690 <dt>units</dt>
2691 <dd class="description">Units for resolution</dd>
2692 <dt>xres</dt>
2693 <dd class="description">X resolution</dd>
2694 <dt>yres</dt>
2695 <dd class="description">Y resolution</dd>
2696 </dl>
2697 <h4 class="returnvalue">Return Value</h4>
2698 <p class="description">New attribute</p>
2699 <h3 class="function"><a name="ippAddResolutions">ippAddResolutions</a></h3>
2700 <p class="description">Add resolution values to an IPP message.</p>
2701 <p class="code">
2702 <a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddResolutions (<br>
2703 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp,<br>
2704 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> group,<br>
2705 &nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
2706 &nbsp;&nbsp;&nbsp;&nbsp;int num_values,<br>
2707 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_res_t">ipp_res_t</a> units,<br>
2708 &nbsp;&nbsp;&nbsp;&nbsp;const int *xres,<br>
2709 &nbsp;&nbsp;&nbsp;&nbsp;const int *yres<br>
2710 );</p>
2711 <h4 class="parameters">Parameters</h4>
2712 <dl>
2713 <dt>ipp</dt>
2714 <dd class="description">IPP message</dd>
2715 <dt>group</dt>
2716 <dd class="description">IPP group</dd>
2717 <dt>name</dt>
2718 <dd class="description">Name of attribute</dd>
2719 <dt>num_values</dt>
2720 <dd class="description">Number of values</dd>
2721 <dt>units</dt>
2722 <dd class="description">Units for resolution</dd>
2723 <dt>xres</dt>
2724 <dd class="description">X resolutions</dd>
2725 <dt>yres</dt>
2726 <dd class="description">Y resolutions</dd>
2727 </dl>
2728 <h4 class="returnvalue">Return Value</h4>
2729 <p class="description">New attribute</p>
2730 <h3 class="function"><a name="ippAddSeparator">ippAddSeparator</a></h3>
2731 <p class="description">Add a group separator to an IPP message.</p>
2732 <p class="code">
2733 <a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddSeparator (<br>
2734 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp<br>
2735 );</p>
2736 <h4 class="parameters">Parameters</h4>
2737 <dl>
2738 <dt>ipp</dt>
2739 <dd class="description">IPP message</dd>
2740 </dl>
2741 <h4 class="returnvalue">Return Value</h4>
2742 <p class="description">New attribute</p>
2743 <h3 class="function"><a name="ippAddString">ippAddString</a></h3>
2744 <p class="description">Add a language-encoded string to an IPP message.</p>
2745 <p class="code">
2746 <a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddString (<br>
2747 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp,<br>
2748 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> group,<br>
2749 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> type,<br>
2750 &nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
2751 &nbsp;&nbsp;&nbsp;&nbsp;const char *charset,<br>
2752 &nbsp;&nbsp;&nbsp;&nbsp;const char *value<br>
2753 );</p>
2754 <h4 class="parameters">Parameters</h4>
2755 <dl>
2756 <dt>ipp</dt>
2757 <dd class="description">IPP message</dd>
2758 <dt>group</dt>
2759 <dd class="description">IPP group</dd>
2760 <dt>type</dt>
2761 <dd class="description">Type of attribute</dd>
2762 <dt>name</dt>
2763 <dd class="description">Name of attribute</dd>
2764 <dt>charset</dt>
2765 <dd class="description">Character set</dd>
2766 <dt>value</dt>
2767 <dd class="description">Value</dd>
2768 </dl>
2769 <h4 class="returnvalue">Return Value</h4>
2770 <p class="description">New attribute</p>
2771 <h3 class="function"><a name="ippAddStrings">ippAddStrings</a></h3>
2772 <p class="description">Add language-encoded strings to an IPP message.</p>
2773 <p class="code">
2774 <a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddStrings (<br>
2775 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp,<br>
2776 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> group,<br>
2777 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> type,<br>
2778 &nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
2779 &nbsp;&nbsp;&nbsp;&nbsp;int num_values,<br>
2780 &nbsp;&nbsp;&nbsp;&nbsp;const char *charset,<br>
2781 &nbsp;&nbsp;&nbsp;&nbsp;const char *const *values<br>
2782 );</p>
2783 <h4 class="parameters">Parameters</h4>
2784 <dl>
2785 <dt>ipp</dt>
2786 <dd class="description">IPP message</dd>
2787 <dt>group</dt>
2788 <dd class="description">IPP group</dd>
2789 <dt>type</dt>
2790 <dd class="description">Type of attribute</dd>
2791 <dt>name</dt>
2792 <dd class="description">Name of attribute</dd>
2793 <dt>num_values</dt>
2794 <dd class="description">Number of values</dd>
2795 <dt>charset</dt>
2796 <dd class="description">Character set</dd>
2797 <dt>values</dt>
2798 <dd class="description">Values</dd>
2799 </dl>
2800 <h4 class="returnvalue">Return Value</h4>
2801 <p class="description">New attribute</p>
2802 <h3 class="function"><a name="ippDateToTime">ippDateToTime</a></h3>
2803 <p class="description">Convert from RFC 1903 Date/Time format to UNIX time
2804 in seconds.</p>
2805 <p class="code">
2806 time_t ippDateToTime (<br>
2807 &nbsp;&nbsp;&nbsp;&nbsp;const <a href="#ipp_uchar_t">ipp_uchar_t</a> *date<br>
2808 );</p>
2809 <h4 class="parameters">Parameters</h4>
2810 <dl>
2811 <dt>date</dt>
2812 <dd class="description">RFC 1903 date info</dd>
2813 </dl>
2814 <h4 class="returnvalue">Return Value</h4>
2815 <p class="description">UNIX time value</p>
2816 <h3 class="function"><a name="ippDelete">ippDelete</a></h3>
2817 <p class="description">Delete an IPP message.</p>
2818 <p class="code">
2819 void ippDelete (<br>
2820 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp<br>
2821 );</p>
2822 <h4 class="parameters">Parameters</h4>
2823 <dl>
2824 <dt>ipp</dt>
2825 <dd class="description">IPP message</dd>
2826 </dl>
2827 <h3 class="function"><span class="info">&nbsp;CUPS 1.1.19&nbsp;</span><a name="ippDeleteAttribute">ippDeleteAttribute</a></h3>
2828 <p class="description">Delete a single attribute in an IPP message.</p>
2829 <p class="code">
2830 void ippDeleteAttribute (<br>
2831 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp,<br>
2832 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr<br>
2833 );</p>
2834 <h4 class="parameters">Parameters</h4>
2835 <dl>
2836 <dt>ipp</dt>
2837 <dd class="description">IPP message</dd>
2838 <dt>attr</dt>
2839 <dd class="description">Attribute to delete</dd>
2840 </dl>
2841 <h3 class="function"><a name="ippErrorString">ippErrorString</a></h3>
2842 <p class="description">Return a name for the given status code.</p>
2843 <p class="code">
2844 const char *ippErrorString (<br>
2845 &nbsp;&nbsp;&nbsp;&nbsp;ipp_status_t error<br>
2846 );</p>
2847 <h4 class="parameters">Parameters</h4>
2848 <dl>
2849 <dt>error</dt>
2850 <dd class="description">Error status</dd>
2851 </dl>
2852 <h4 class="returnvalue">Return Value</h4>
2853 <p class="description">Text string</p>
2854 <h3 class="function"><span class="info">&nbsp;CUPS 1.2&nbsp;</span><a name="ippErrorValue">ippErrorValue</a></h3>
2855 <p class="description">Return a status code for the given name.</p>
2856 <p class="code">
2857 ipp_status_t ippErrorValue (<br>
2858 &nbsp;&nbsp;&nbsp;&nbsp;const char *name<br>
2859 );</p>
2860 <h4 class="parameters">Parameters</h4>
2861 <dl>
2862 <dt>name</dt>
2863 <dd class="description">Name</dd>
2864 </dl>
2865 <h4 class="returnvalue">Return Value</h4>
2866 <p class="description">IPP status code</p>
2867 <h3 class="function"><a name="ippFindAttribute">ippFindAttribute</a></h3>
2868 <p class="description">Find a named attribute in a request...</p>
2869 <p class="code">
2870 <a href="#ipp_attribute_t">ipp_attribute_t</a> *ippFindAttribute (<br>
2871 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp,<br>
2872 &nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
2873 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> type<br>
2874 );</p>
2875 <h4 class="parameters">Parameters</h4>
2876 <dl>
2877 <dt>ipp</dt>
2878 <dd class="description">IPP message</dd>
2879 <dt>name</dt>
2880 <dd class="description">Name of attribute</dd>
2881 <dt>type</dt>
2882 <dd class="description">Type of attribute</dd>
2883 </dl>
2884 <h4 class="returnvalue">Return Value</h4>
2885 <p class="description">Matching attribute</p>
2886 <h3 class="function"><a name="ippFindNextAttribute">ippFindNextAttribute</a></h3>
2887 <p class="description">Find the next named attribute in a request...</p>
2888 <p class="code">
2889 <a href="#ipp_attribute_t">ipp_attribute_t</a> *ippFindNextAttribute (<br>
2890 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp,<br>
2891 &nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
2892 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> type<br>
2893 );</p>
2894 <h4 class="parameters">Parameters</h4>
2895 <dl>
2896 <dt>ipp</dt>
2897 <dd class="description">IPP message</dd>
2898 <dt>name</dt>
2899 <dd class="description">Name of attribute</dd>
2900 <dt>type</dt>
2901 <dd class="description">Type of attribute</dd>
2902 </dl>
2903 <h4 class="returnvalue">Return Value</h4>
2904 <p class="description">Matching attribute</p>
2905 <h3 class="function"><a name="ippLength">ippLength</a></h3>
2906 <p class="description">Compute the length of an IPP message.</p>
2907 <p class="code">
2908 size_t ippLength (<br>
2909 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp<br>
2910 );</p>
2911 <h4 class="parameters">Parameters</h4>
2912 <dl>
2913 <dt>ipp</dt>
2914 <dd class="description">IPP message</dd>
2915 </dl>
2916 <h4 class="returnvalue">Return Value</h4>
2917 <p class="description">Size of IPP message</p>
2918 <h3 class="function"><a name="ippNew">ippNew</a></h3>
2919 <p class="description">Allocate a new IPP message.</p>
2920 <p class="code">
2921 <a href="#ipp_t">ipp_t</a> *ippNew (void);</p>
2922 <h4 class="returnvalue">Return Value</h4>
2923 <p class="description">New IPP message</p>
2924 <h3 class="function"><span class="info">&nbsp;CUPS 1.2&nbsp;</span><a name="ippNewRequest">ippNewRequest</a></h3>
2925 <p class="description">Allocate a new IPP request message.</p>
2926 <p class="code">
2927 <a href="#ipp_t">ipp_t</a> *ippNewRequest (<br>
2928 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_op_t">ipp_op_t</a> op<br>
2929 );</p>
2930 <h4 class="parameters">Parameters</h4>
2931 <dl>
2932 <dt>op</dt>
2933 <dd class="description">Operation code</dd>
2934 </dl>
2935 <h4 class="returnvalue">Return Value</h4>
2936 <p class="description">IPP request message</p>
2937 <h4 class="discussion">Discussion</h4>
2938 <p class="discussion">The new request message is initialized with the attributes-charset and
2939 attributes-natural-language attributes added. The
2940 attributes-natural-language value is derived from the current locale.
2941
2942 </p>
2943 <h3 class="function"><span class="info">&nbsp;CUPS 1.2&nbsp;</span><a name="ippOpString">ippOpString</a></h3>
2944 <p class="description">Return a name for the given operation id.</p>
2945 <p class="code">
2946 const char *ippOpString (<br>
2947 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_op_t">ipp_op_t</a> op<br>
2948 );</p>
2949 <h4 class="parameters">Parameters</h4>
2950 <dl>
2951 <dt>op</dt>
2952 <dd class="description">Operation ID</dd>
2953 </dl>
2954 <h4 class="returnvalue">Return Value</h4>
2955 <p class="description">Name</p>
2956 <h3 class="function"><span class="info">&nbsp;CUPS 1.2&nbsp;</span><a name="ippOpValue">ippOpValue</a></h3>
2957 <p class="description">Return an operation id for the given name.</p>
2958 <p class="code">
2959 <a href="#ipp_op_t">ipp_op_t</a> ippOpValue (<br>
2960 &nbsp;&nbsp;&nbsp;&nbsp;const char *name<br>
2961 );</p>
2962 <h4 class="parameters">Parameters</h4>
2963 <dl>
2964 <dt>name</dt>
2965 <dd class="description">Textual name</dd>
2966 </dl>
2967 <h4 class="returnvalue">Return Value</h4>
2968 <p class="description">Operation ID</p>
2969 <h3 class="function"><a name="ippPort">ippPort</a></h3>
2970 <p class="description">Return the default IPP port number.</p>
2971 <p class="code">
2972 int ippPort (void);</p>
2973 <h4 class="returnvalue">Return Value</h4>
2974 <p class="description">Port number</p>
2975 <h3 class="function"><a name="ippRead">ippRead</a></h3>
2976 <p class="description">Read data for an IPP message from a HTTP connection.</p>
2977 <p class="code">
2978 <a href="#ipp_state_t">ipp_state_t</a> ippRead (<br>
2979 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
2980 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp<br>
2981 );</p>
2982 <h4 class="parameters">Parameters</h4>
2983 <dl>
2984 <dt>http</dt>
2985 <dd class="description">HTTP connection</dd>
2986 <dt>ipp</dt>
2987 <dd class="description">IPP data</dd>
2988 </dl>
2989 <h4 class="returnvalue">Return Value</h4>
2990 <p class="description">Current state</p>
2991 <h3 class="function"><span class="info">&nbsp;CUPS 1.1.19&nbsp;</span><a name="ippReadFile">ippReadFile</a></h3>
2992 <p class="description">Read data for an IPP message from a file.</p>
2993 <p class="code">
2994 <a href="#ipp_state_t">ipp_state_t</a> ippReadFile (<br>
2995 &nbsp;&nbsp;&nbsp;&nbsp;int fd,<br>
2996 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp<br>
2997 );</p>
2998 <h4 class="parameters">Parameters</h4>
2999 <dl>
3000 <dt>fd</dt>
3001 <dd class="description">HTTP data</dd>
3002 <dt>ipp</dt>
3003 <dd class="description">IPP data</dd>
3004 </dl>
3005 <h4 class="returnvalue">Return Value</h4>
3006 <p class="description">Current state</p>
3007 <h3 class="function"><span class="info">&nbsp;CUPS 1.2&nbsp;</span><a name="ippReadIO">ippReadIO</a></h3>
3008 <p class="description">Read data for an IPP message.</p>
3009 <p class="code">
3010 <a href="#ipp_state_t">ipp_state_t</a> ippReadIO (<br>
3011 &nbsp;&nbsp;&nbsp;&nbsp;void *src,<br>
3012 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_iocb_t">ipp_iocb_t</a> cb,<br>
3013 &nbsp;&nbsp;&nbsp;&nbsp;int blocking,<br>
3014 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *parent,<br>
3015 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp<br>
3016 );</p>
3017 <h4 class="parameters">Parameters</h4>
3018 <dl>
3019 <dt>src</dt>
3020 <dd class="description">Data source</dd>
3021 <dt>cb</dt>
3022 <dd class="description">Read callback function</dd>
3023 <dt>blocking</dt>
3024 <dd class="description">Use blocking IO?</dd>
3025 <dt>parent</dt>
3026 <dd class="description">Parent request, if any</dd>
3027 <dt>ipp</dt>
3028 <dd class="description">IPP data</dd>
3029 </dl>
3030 <h4 class="returnvalue">Return Value</h4>
3031 <p class="description">Current state</p>
3032 <h3 class="function"><a name="ippSetPort">ippSetPort</a></h3>
3033 <p class="description">Set the default port number.</p>
3034 <p class="code">
3035 void ippSetPort (<br>
3036 &nbsp;&nbsp;&nbsp;&nbsp;int p<br>
3037 );</p>
3038 <h4 class="parameters">Parameters</h4>
3039 <dl>
3040 <dt>p</dt>
3041 <dd class="description">Port number to use</dd>
3042 </dl>
3043 <h3 class="function"><a name="ippTimeToDate">ippTimeToDate</a></h3>
3044 <p class="description">Convert from UNIX time to RFC 1903 format.</p>
3045 <p class="code">
3046 const <a href="#ipp_uchar_t">ipp_uchar_t</a> *ippTimeToDate (<br>
3047 &nbsp;&nbsp;&nbsp;&nbsp;time_t t<br>
3048 );</p>
3049 <h4 class="parameters">Parameters</h4>
3050 <dl>
3051 <dt>t</dt>
3052 <dd class="description">UNIX time value</dd>
3053 </dl>
3054 <h4 class="returnvalue">Return Value</h4>
3055 <p class="description">RFC-1903 date/time data</p>
3056 <h3 class="function"><a name="ippWrite">ippWrite</a></h3>
3057 <p class="description">Write data for an IPP message to a HTTP connection.</p>
3058 <p class="code">
3059 <a href="#ipp_state_t">ipp_state_t</a> ippWrite (<br>
3060 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_t">http_t</a> *http,<br>
3061 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp<br>
3062 );</p>
3063 <h4 class="parameters">Parameters</h4>
3064 <dl>
3065 <dt>http</dt>
3066 <dd class="description">HTTP connection</dd>
3067 <dt>ipp</dt>
3068 <dd class="description">IPP data</dd>
3069 </dl>
3070 <h4 class="returnvalue">Return Value</h4>
3071 <p class="description">Current state</p>
3072 <h3 class="function"><span class="info">&nbsp;CUPS 1.1.19&nbsp;</span><a name="ippWriteFile">ippWriteFile</a></h3>
3073 <p class="description">Write data for an IPP message to a file.</p>
3074 <p class="code">
3075 <a href="#ipp_state_t">ipp_state_t</a> ippWriteFile (<br>
3076 &nbsp;&nbsp;&nbsp;&nbsp;int fd,<br>
3077 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp<br>
3078 );</p>
3079 <h4 class="parameters">Parameters</h4>
3080 <dl>
3081 <dt>fd</dt>
3082 <dd class="description">HTTP data</dd>
3083 <dt>ipp</dt>
3084 <dd class="description">IPP data</dd>
3085 </dl>
3086 <h4 class="returnvalue">Return Value</h4>
3087 <p class="description">Current state</p>
3088 <h3 class="function"><span class="info">&nbsp;CUPS 1.2&nbsp;</span><a name="ippWriteIO">ippWriteIO</a></h3>
3089 <p class="description">Write data for an IPP message.</p>
3090 <p class="code">
3091 <a href="#ipp_state_t">ipp_state_t</a> ippWriteIO (<br>
3092 &nbsp;&nbsp;&nbsp;&nbsp;void *dst,<br>
3093 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_iocb_t">ipp_iocb_t</a> cb,<br>
3094 &nbsp;&nbsp;&nbsp;&nbsp;int blocking,<br>
3095 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *parent,<br>
3096 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *ipp<br>
3097 );</p>
3098 <h4 class="parameters">Parameters</h4>
3099 <dl>
3100 <dt>dst</dt>
3101 <dd class="description">Destination</dd>
3102 <dt>cb</dt>
3103 <dd class="description">Write callback function</dd>
3104 <dt>blocking</dt>
3105 <dd class="description">Use blocking IO?</dd>
3106 <dt>parent</dt>
3107 <dd class="description">Parent IPP message</dd>
3108 <dt>ipp</dt>
3109 <dd class="description">IPP data</dd>
3110 </dl>
3111 <h4 class="returnvalue">Return Value</h4>
3112 <p class="description">Current state</p>
3113 <h2 class="title"><a name="TYPES">Data Types</a></h2>
3114 <h3 class="typedef"><span class="info">&nbsp;CUPS 1.2&nbsp;</span><a name="http_addrlist_t">http_addrlist_t</a></h3>
3115 <p class="description">Socket address list, which is
3116 used to enumerate all of the
3117 addresses that are associated
3118 with a hostname. </p>
3119 <p class="code">
3120 typedef struct <a href="#http_addrlist_s">http_addrlist_s</a> / http_addrlist_t;
3121 </p>
3122 <h3 class="typedef"><a name="http_auth_t">http_auth_t</a></h3>
3123 <p class="description">HTTP authentication types</p>
3124 <p class="code">
3125 typedef enum <a href="#http_auth_e">http_auth_e</a> http_auth_t;
3126 </p>
3127 <h3 class="typedef"><a name="http_encoding_t">http_encoding_t</a></h3>
3128 <p class="description">HTTP transfer encoding values</p>
3129 <p class="code">
3130 typedef enum <a href="#http_encoding_e">http_encoding_e</a> http_encoding_t;
3131 </p>
3132 <h3 class="typedef"><a name="http_encryption_t">http_encryption_t</a></h3>
3133 <p class="description">HTTP encryption values</p>
3134 <p class="code">
3135 typedef enum <a href="#http_encryption_e">http_encryption_e</a> http_encryption_t;
3136 </p>
3137 <h3 class="typedef"><a name="http_field_t">http_field_t</a></h3>
3138 <p class="description">HTTP field names</p>
3139 <p class="code">
3140 typedef enum <a href="#http_field_e">http_field_e</a> http_field_t;
3141 </p>
3142 <h3 class="typedef"><a name="http_keepalive_t">http_keepalive_t</a></h3>
3143 <p class="description">Types and structures...</p>
3144 <p class="code">
3145 typedef enum <a href="#http_keepalive_e">http_keepalive_e</a> http_keepalive_t;
3146 </p>
3147 <h3 class="typedef"><a name="http_status_t">http_status_t</a></h3>
3148 <p class="description">HTTP status codes</p>
3149 <p class="code">
3150 typedef enum <a href="#http_status_e">http_status_e</a> http_status_t;
3151 </p>
3152 <h3 class="typedef"><a name="http_t">http_t</a></h3>
3153 <p class="description">HTTP connection type</p>
3154 <p class="code">
3155 typedef struct _http_s http_t;
3156 </p>
3157 <h3 class="typedef"><a name="http_uri_coding_t">http_uri_coding_t</a></h3>
3158 <p class="description">HTTP version numbers</p>
3159 <p class="code">
3160 typedef enum <a href="#http_uri_coding_e">http_uri_coding_e</a> http_uri_coding_t;
3161 </p>
3162 <h3 class="typedef"><a name="http_uri_status_t">http_uri_status_t</a></h3>
3163 <p class="description">URI en/decode flags</p>
3164 <p class="code">
3165 typedef enum <a href="#http_uri_status_e">http_uri_status_e</a> http_uri_status_t;
3166 </p>
3167 <h3 class="typedef"><span class="info">&nbsp;CUPS 1.2&nbsp;</span><a name="http_version_t">http_version_t</a></h3>
3168 <p class="description">Socket address union, which
3169 makes using IPv6 and other
3170 address types easier and
3171 more portable. </p>
3172 <p class="code">
3173 typedef enum <a href="#http_version_e">http_version_e</a> http_version_t;
3174 </p>
3175 <h3 class="typedef"><a name="ipp_attribute_t">ipp_attribute_t</a></h3>
3176 <p class="description">Attribute</p>
3177 <p class="code">
3178 typedef struct <a href="#ipp_attribute_s">ipp_attribute_s</a> ipp_attribute_t;
3179 </p>
3180 <h3 class="typedef"><a name="ipp_finish_t">ipp_finish_t</a></h3>
3181 <p class="description">Orientation...</p>
3182 <p class="code">
3183 typedef enum <a href="#ipp_finish_e">ipp_finish_e</a> ipp_finish_t;
3184 </p>
3185 <h3 class="typedef"><span class="info">&nbsp;CUPS 1.2&nbsp;</span><a name="ipp_iocb_t">ipp_iocb_t</a></h3>
3186 <p class="description">IPP IO Callback Function </p>
3187 <p class="code">
3188 typedef ssize_t (*ipp_iocb_t)(void *, <a href="#ipp_uchar_t">ipp_uchar_t</a> *, size_t);
3189 </p>
3190 <h3 class="typedef"><a name="ipp_jstate_t">ipp_jstate_t</a></h3>
3191 <p class="description">Printer States....</p>
3192 <p class="code">
3193 typedef enum <a href="#ipp_jstate_e">ipp_jstate_e</a> ipp_jstate_t;
3194 </p>
3195 <h3 class="typedef"><a name="ipp_op_t">ipp_op_t</a></h3>
3196 <p class="description">Old names for the operations</p>
3197 <p class="code">
3198 typedef enum <a href="#ipp_op_e">ipp_op_e</a> ipp_op_t;
3199 </p>
3200 <h3 class="typedef"><a name="ipp_orient_t">ipp_orient_t</a></h3>
3201 <p class="description">Qualities...</p>
3202 <p class="code">
3203 typedef enum <a href="#ipp_orient_e">ipp_orient_e</a> ipp_orient_t;
3204 </p>
3205 <h3 class="typedef"><a name="ipp_pstate_t">ipp_pstate_t</a></h3>
3206 <p class="description">IPP states...</p>
3207 <p class="code">
3208 typedef enum <a href="#ipp_pstate_e">ipp_pstate_e</a> ipp_pstate_t;
3209 </p>
3210 <h3 class="typedef"><a name="ipp_quality_t">ipp_quality_t</a></h3>
3211 <p class="description">Job States....</p>
3212 <p class="code">
3213 typedef enum <a href="#ipp_quality_e">ipp_quality_e</a> ipp_quality_t;
3214 </p>
3215 <h3 class="typedef"><a name="ipp_request_t">ipp_request_t</a></h3>
3216 <p class="description">Request Header</p>
3217 <p class="code">
3218 typedef union <a href="#ipp_request_u">ipp_request_u</a> ipp_request_t;
3219 </p>
3220 <h3 class="typedef"><a name="ipp_res_t">ipp_res_t</a></h3>
3221 <p class="description">Types and structures...</p>
3222 <p class="code">
3223 typedef enum <a href="#ipp_res_e">ipp_res_e</a> ipp_res_t;
3224 </p>
3225 <h3 class="typedef"><a name="ipp_state_t">ipp_state_t</a></h3>
3226 <p class="description">IPP operations...</p>
3227 <p class="code">
3228 typedef enum <a href="#ipp_state_e">ipp_state_e</a> ipp_state_t;
3229 </p>
3230 <h3 class="typedef"><a name="ipp_t">ipp_t</a></h3>
3231 <p class="description">Attribute Value</p>
3232 <p class="code">
3233 typedef struct <a href="#ipp_s">ipp_s</a> ipp_t;
3234 </p>
3235 <h3 class="typedef"><a name="ipp_uchar_t">ipp_uchar_t</a></h3>
3236 <p class="description">IPP status codes...</p>
3237 <p class="code">
3238 typedef typedef unsigned char ipp_uchar_t;
3239 </p>
3240 <h3 class="typedef"><a name="ipp_tag_t">ipp_tag_t</a></h3>
3241 <p class="description">Format tags for attributes...</p>
3242 <p class="code">
3243 typedef enum <a href="#ipp_tag_e">ipp_tag_e</a> ipp_tag_t;
3244 </p>
3245 <h3 class="typedef"><a name="ipp_value_t">ipp_value_t</a></h3>
3246 <p class="description">New in CUPS 1.1.19</p>
3247 <p class="code">
3248 typedef union <a href="#ipp_value_u">ipp_value_u</a> ipp_value_t;
3249 </p>
3250 <h2 class="title"><a name="STRUCTURES">Structures</a></h2>
3251 <h3 class="struct"><span class="info">&nbsp;CUPS 1.2&nbsp;</span><a name="http_addrlist_s">http_addrlist_s</a></h3>
3252 <p class="description">Socket address list, which is
3253 used to enumerate all of the
3254 addresses that are associated
3255 with a hostname. </p>
3256 <p class="code">struct http_addrlist_s {<br>
3257 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#http_addr_t">http_addr_t</a> addr;<br>
3258 &nbsp;&nbsp;&nbsp;&nbsp;struct <a href="#http_addrlist_s">http_addrlist_s</a> *next;<br>
3259 };</p>
3260 <h4 class="members">Members</h4>
3261 <dl>
3262 <dt>addr </dt>
3263 <dd class="description">Address</dd>
3264 <dt>next </dt>
3265 <dd class="description">Pointer to next address in list</dd>
3266 </dl>
3267 <h3 class="struct"><a name="ipp_attribute_s">ipp_attribute_s</a></h3>
3268 <p class="description">Attribute</p>
3269 <p class="code">struct ipp_attribute_s {<br>
3270 &nbsp;&nbsp;&nbsp;&nbsp;char *name;<br>
3271 &nbsp;&nbsp;&nbsp;&nbsp;struct <a href="#ipp_attribute_s">ipp_attribute_s</a> *next;<br>
3272 &nbsp;&nbsp;&nbsp;&nbsp;int num_values;<br>
3273 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> group_tag, value_tag;<br>
3274 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_value_t">ipp_value_t</a> values[1];<br>
3275 };</p>
3276 <h4 class="members">Members</h4>
3277 <dl>
3278 <dt>name </dt>
3279 <dd class="description">Name of attribute</dd>
3280 <dt>next </dt>
3281 <dd class="description">Next attribute in list</dd>
3282 <dt>num_values </dt>
3283 <dd class="description">Number of values</dd>
3284 <dt>value_tag </dt>
3285 <dd class="description">What type of value is it?</dd>
3286 <dt>values[1] </dt>
3287 <dd class="description">Values</dd>
3288 </dl>
3289 <h3 class="struct"><a name="ipp_s">ipp_s</a></h3>
3290 <p class="description">IPP Request/Response/Notification</p>
3291 <p class="code">struct ipp_s {<br>
3292 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_attribute_t">ipp_attribute_t</a> *attrs;<br>
3293 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_attribute_t">ipp_attribute_t</a> *current;<br>
3294 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_tag_t">ipp_tag_t</a> curtag;<br>
3295 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_attribute_t">ipp_attribute_t</a> *last;<br>
3296 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_attribute_t">ipp_attribute_t</a> *prev;<br>
3297 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_request_t">ipp_request_t</a> request;<br>
3298 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_state_t">ipp_state_t</a> state;<br>
3299 };</p>
3300 <h4 class="members">Members</h4>
3301 <dl>
3302 <dt>attrs </dt>
3303 <dd class="description">Attributes</dd>
3304 <dt>current </dt>
3305 <dd class="description">Current attribute (for read/write)</dd>
3306 <dt>curtag </dt>
3307 <dd class="description">Current attribute group tag</dd>
3308 <dt>last </dt>
3309 <dd class="description">Last attribute in list</dd>
3310 <dt>prev </dt>
3311 <dd class="description">Previous attribute (for read)</dd>
3312 <dt>request </dt>
3313 <dd class="description">Request header</dd>
3314 <dt>state </dt>
3315 <dd class="description">State of request</dd>
3316 </dl>
3317 <h2 class="title"><a name="UNIONS">Unions</a></h2>
3318 <h3 class="union"><a name="ipp_request_u">ipp_request_u</a></h3>
3319 <p class="description">Request Header</p>
3320 <p class="code">union ipp_request_u {<br>
3321 };</p>
3322 <h4 class="members">Members</h4>
3323 <dl>
3324 </dl>
3325 <h3 class="union"><a name="ipp_value_u">ipp_value_u</a></h3>
3326 <p class="description">New in CUPS 1.1.19</p>
3327 <p class="code">union ipp_value_u {<br>
3328 &nbsp;&nbsp;&nbsp;&nbsp;char boolean;<br>
3329 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_t">ipp_t</a> *collection;<br>
3330 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ipp_uchar_t">ipp_uchar_t</a> date[11];<br>
3331 &nbsp;&nbsp;&nbsp;&nbsp;int integer;<br>
3332 };</p>
3333 <h4 class="members">Members</h4>
3334 <dl>
3335 <dt>boolean </dt>
3336 <dd class="description">Boolean value</dd>
3337 <dt>collection </dt>
3338 <dd class="description">Collection value</dd>
3339 <dt>date[11] </dt>
3340 <dd class="description">Date/time value</dd>
3341 <dt>integer </dt>
3342 <dd class="description">Integer/enumerated value</dd>
3343 </dl>
3344 <h2 class="title"><a name="ENUMERATIONS">Constants</a></h2>
3345 <h3 class="enumeration"><a name="http_auth_e">http_auth_e</a></h3>
3346 <p class="description">HTTP authentication types</p>
3347 <h4 class="constants">Constants</h4>
3348 <dl>
3349 <dt>HTTP_AUTH_BASIC </dt>
3350 <dd class="description">Basic authentication in use</dd>
3351 <dt>HTTP_AUTH_MD5 </dt>
3352 <dd class="description">Digest authentication in use</dd>
3353 <dt>HTTP_AUTH_MD5_INT </dt>
3354 <dd class="description">Digest authentication in use for body</dd>
3355 <dt>HTTP_AUTH_MD5_SESS </dt>
3356 <dd class="description">MD5-session authentication in use</dd>
3357 <dt>HTTP_AUTH_MD5_SESS_INT </dt>
3358 <dd class="description">MD5-session authentication in use for body</dd>
3359 <dt>HTTP_AUTH_NEGOTIATE <span class="info">&nbsp;CUPS 1.3&nbsp;</span></dt>
3360 <dd class="description">GSSAPI authentication in use </dd>
3361 <dt>HTTP_AUTH_NONE </dt>
3362 <dd class="description">No authentication in use</dd>
3363 </dl>
3364 <h3 class="enumeration"><a name="http_encoding_e">http_encoding_e</a></h3>
3365 <p class="description">HTTP transfer encoding values</p>
3366 <h4 class="constants">Constants</h4>
3367 <dl>
3368 <dt>HTTP_ENCODE_CHUNKED </dt>
3369 <dd class="description">Data is chunked</dd>
3370 <dt>HTTP_ENCODE_FIELDS </dt>
3371 <dd class="description">Sending HTTP fields</dd>
3372 <dt>HTTP_ENCODE_LENGTH </dt>
3373 <dd class="description">Data is sent with Content-Length</dd>
3374 </dl>
3375 <h3 class="enumeration"><a name="http_encryption_e">http_encryption_e</a></h3>
3376 <p class="description">HTTP encryption values</p>
3377 <h4 class="constants">Constants</h4>
3378 <dl>
3379 <dt>HTTP_ENCRYPT_ALWAYS </dt>
3380 <dd class="description">Always encrypt (SSL)</dd>
3381 <dt>HTTP_ENCRYPT_IF_REQUESTED </dt>
3382 <dd class="description">Encrypt if requested (TLS upgrade)</dd>
3383 <dt>HTTP_ENCRYPT_NEVER </dt>
3384 <dd class="description">Never encrypt</dd>
3385 <dt>HTTP_ENCRYPT_REQUIRED </dt>
3386 <dd class="description">Encryption is required (TLS upgrade)</dd>
3387 </dl>
3388 <h3 class="enumeration"><a name="http_field_e">http_field_e</a></h3>
3389 <p class="description">HTTP field names</p>
3390 <h4 class="constants">Constants</h4>
3391 <dl>
3392 <dt>HTTP_FIELD_ACCEPT_LANGUAGE </dt>
3393 <dd class="description">Accept-Language field</dd>
3394 <dt>HTTP_FIELD_ACCEPT_RANGES </dt>
3395 <dd class="description">Accept-Ranges field</dd>
3396 <dt>HTTP_FIELD_AUTHORIZATION </dt>
3397 <dd class="description">Authorization field</dd>
3398 <dt>HTTP_FIELD_CONNECTION </dt>
3399 <dd class="description">Connection field</dd>
3400 <dt>HTTP_FIELD_CONTENT_ENCODING </dt>
3401 <dd class="description">Content-Encoding field</dd>
3402 <dt>HTTP_FIELD_CONTENT_LANGUAGE </dt>
3403 <dd class="description">Content-Language field</dd>
3404 <dt>HTTP_FIELD_CONTENT_LENGTH </dt>
3405 <dd class="description">Content-Length field</dd>
3406 <dt>HTTP_FIELD_CONTENT_LOCATION </dt>
3407 <dd class="description">Content-Location field</dd>
3408 <dt>HTTP_FIELD_CONTENT_MD5 </dt>
3409 <dd class="description">Content-MD5 field</dd>
3410 <dt>HTTP_FIELD_CONTENT_RANGE </dt>
3411 <dd class="description">Content-Range field</dd>
3412 <dt>HTTP_FIELD_CONTENT_TYPE </dt>
3413 <dd class="description">Content-Type field</dd>
3414 <dt>HTTP_FIELD_CONTENT_VERSION </dt>
3415 <dd class="description">Content-Version field</dd>
3416 <dt>HTTP_FIELD_DATE </dt>
3417 <dd class="description">Date field</dd>
3418 <dt>HTTP_FIELD_HOST </dt>
3419 <dd class="description">Host field</dd>
3420 <dt>HTTP_FIELD_IF_MODIFIED_SINCE </dt>
3421 <dd class="description">If-Modified-Since field</dd>
3422 <dt>HTTP_FIELD_IF_UNMODIFIED_SINCE </dt>
3423 <dd class="description">If-Unmodified-Since field</dd>
3424 <dt>HTTP_FIELD_KEEP_ALIVE </dt>
3425 <dd class="description">Keep-Alive field</dd>
3426 <dt>HTTP_FIELD_LAST_MODIFIED </dt>
3427 <dd class="description">Last-Modified field</dd>
3428 <dt>HTTP_FIELD_LINK </dt>
3429 <dd class="description">Link field</dd>
3430 <dt>HTTP_FIELD_LOCATION </dt>
3431 <dd class="description">Location field</dd>
3432 <dt>HTTP_FIELD_MAX </dt>
3433 <dd class="description">Maximum field index</dd>
3434 <dt>HTTP_FIELD_RANGE </dt>
3435 <dd class="description">Range field</dd>
3436 <dt>HTTP_FIELD_REFERER </dt>
3437 <dd class="description">Referer field</dd>
3438 <dt>HTTP_FIELD_RETRY_AFTER </dt>
3439 <dd class="description">Retry-After field</dd>
3440 <dt>HTTP_FIELD_TRANSFER_ENCODING </dt>
3441 <dd class="description">Transfer-Encoding field</dd>
3442 <dt>HTTP_FIELD_UNKNOWN </dt>
3443 <dd class="description">Unknown field</dd>
3444 <dt>HTTP_FIELD_UPGRADE </dt>
3445 <dd class="description">Upgrade field</dd>
3446 <dt>HTTP_FIELD_USER_AGENT </dt>
3447 <dd class="description">User-Agent field</dd>
3448 <dt>HTTP_FIELD_WWW_AUTHENTICATE </dt>
3449 <dd class="description">WWW-Authenticate field</dd>
3450 </dl>
3451 <h3 class="enumeration"><a name="http_keepalive_e">http_keepalive_e</a></h3>
3452 <p class="description">Types and structures...</p>
3453 <h4 class="constants">Constants</h4>
3454 <dl>
3455 <dt>HTTP_KEEPALIVE_OFF </dt>
3456 <dd class="description">No keep alive support</dd>
3457 <dt>HTTP_KEEPALIVE_ON </dt>
3458 <dd class="description">Use keep alive</dd>
3459 </dl>
3460 <h3 class="enumeration"><a name="http_state_e">http_state_e</a></h3>
3461 <p class="description"></p>
3462 <h4 class="constants">Constants</h4>
3463 <dl>
3464 <dt>HTTP_CLOSE </dt>
3465 <dd class="description">CLOSE command, waiting for blank line</dd>
3466 <dt>HTTP_DELETE </dt>
3467 <dd class="description">DELETE command, waiting for blank line</dd>
3468 <dt>HTTP_GET </dt>
3469 <dd class="description">GET command, waiting for blank line</dd>
3470 <dt>HTTP_GET_SEND </dt>
3471 <dd class="description">GET command, sending data</dd>
3472 <dt>HTTP_HEAD </dt>
3473 <dd class="description">HEAD command, waiting for blank line</dd>
3474 <dt>HTTP_OPTIONS </dt>
3475 <dd class="description">OPTIONS command, waiting for blank line</dd>
3476 <dt>HTTP_POST </dt>
3477 <dd class="description">POST command, waiting for blank line</dd>
3478 <dt>HTTP_POST_RECV </dt>
3479 <dd class="description">POST command, receiving data</dd>
3480 <dt>HTTP_POST_SEND </dt>
3481 <dd class="description">POST command, sending data</dd>
3482 <dt>HTTP_PUT </dt>
3483 <dd class="description">PUT command, waiting for blank line</dd>
3484 <dt>HTTP_PUT_RECV </dt>
3485 <dd class="description">PUT command, receiving data</dd>
3486 <dt>HTTP_STATUS </dt>
3487 <dd class="description">Command complete, sending status</dd>
3488 <dt>HTTP_TRACE </dt>
3489 <dd class="description">TRACE command, waiting for blank line</dd>
3490 <dt>HTTP_WAITING </dt>
3491 <dd class="description">Waiting for command</dd>
3492 </dl>
3493 <h3 class="enumeration"><a name="http_status_e">http_status_e</a></h3>
3494 <p class="description">HTTP status codes</p>
3495 <h4 class="constants">Constants</h4>
3496 <dl>
3497 <dt>HTTP_ACCEPTED </dt>
3498 <dd class="description">DELETE command was successful</dd>
3499 <dt>HTTP_BAD_GATEWAY </dt>
3500 <dd class="description">Bad gateway</dd>
3501 <dt>HTTP_BAD_REQUEST </dt>
3502 <dd class="description">Bad request</dd>
3503 <dt>HTTP_CONFLICT </dt>
3504 <dd class="description">Request is self-conflicting</dd>
3505 <dt>HTTP_CONTINUE </dt>
3506 <dd class="description">Everything OK, keep going...</dd>
3507 <dt>HTTP_CREATED </dt>
3508 <dd class="description">PUT command was successful</dd>
3509 <dt>HTTP_ERROR </dt>
3510 <dd class="description">An error response from httpXxxx()</dd>
3511 <dt>HTTP_EXPECTATION_FAILED </dt>
3512 <dd class="description">The expectation given in an Expect header field was not met</dd>
3513 <dt>HTTP_FORBIDDEN </dt>
3514 <dd class="description">Forbidden to access this URI</dd>
3515 <dt>HTTP_GATEWAY_TIMEOUT </dt>
3516 <dd class="description">Gateway connection timed out</dd>
3517 <dt>HTTP_GONE </dt>
3518 <dd class="description">Server has gone away</dd>
3519 <dt>HTTP_LENGTH_REQUIRED </dt>
3520 <dd class="description">A content length or encoding is required</dd>
3521 <dt>HTTP_METHOD_NOT_ALLOWED </dt>
3522 <dd class="description">Method is not allowed</dd>
3523 <dt>HTTP_MOVED_PERMANENTLY </dt>
3524 <dd class="description">Document has moved permanently</dd>
3525 <dt>HTTP_MOVED_TEMPORARILY </dt>
3526 <dd class="description">Document has moved temporarily</dd>
3527 <dt>HTTP_MULTIPLE_CHOICES </dt>
3528 <dd class="description">Multiple files match request</dd>
3529 <dt>HTTP_NOT_ACCEPTABLE </dt>
3530 <dd class="description">Not Acceptable</dd>
3531 <dt>HTTP_NOT_AUTHORITATIVE </dt>
3532 <dd class="description">Information isn't authoritative</dd>
3533 <dt>HTTP_NOT_FOUND </dt>
3534 <dd class="description">URI was not found</dd>
3535 <dt>HTTP_NOT_IMPLEMENTED </dt>
3536 <dd class="description">Feature not implemented</dd>
3537 <dt>HTTP_NOT_MODIFIED </dt>
3538 <dd class="description">File not modified</dd>
3539 <dt>HTTP_NOT_SUPPORTED </dt>
3540 <dd class="description">HTTP version not supported</dd>
3541 <dt>HTTP_NO_CONTENT </dt>
3542 <dd class="description">Successful command, no new data</dd>
3543 <dt>HTTP_OK </dt>
3544 <dd class="description">OPTIONS/GET/HEAD/POST/TRACE command was successful</dd>
3545 <dt>HTTP_PARTIAL_CONTENT </dt>
3546 <dd class="description">Only a partial file was recieved/sent</dd>
3547 <dt>HTTP_PAYMENT_REQUIRED </dt>
3548 <dd class="description">Payment required</dd>
3549 <dt>HTTP_PRECONDITION </dt>
3550 <dd class="description">Precondition failed</dd>
3551 <dt>HTTP_PROXY_AUTHENTICATION </dt>
3552 <dd class="description">Proxy Authentication is Required</dd>
3553 <dt>HTTP_REQUESTED_RANGE </dt>
3554 <dd class="description">The requested range is not satisfiable</dd>
3555 <dt>HTTP_REQUEST_TIMEOUT </dt>
3556 <dd class="description">Request timed out</dd>
3557 <dt>HTTP_REQUEST_TOO_LARGE </dt>
3558 <dd class="description">Request entity too large</dd>
3559 <dt>HTTP_RESET_CONTENT </dt>
3560 <dd class="description">Content was reset/recreated</dd>
3561 <dt>HTTP_SEE_OTHER </dt>
3562 <dd class="description">See this other link...</dd>
3563 <dt>HTTP_SERVER_ERROR </dt>
3564 <dd class="description">Internal server error</dd>
3565 <dt>HTTP_SERVICE_UNAVAILABLE </dt>
3566 <dd class="description">Service is unavailable</dd>
3567 <dt>HTTP_SWITCHING_PROTOCOLS </dt>
3568 <dd class="description">HTTP upgrade to TLS/SSL</dd>
3569 <dt>HTTP_UNAUTHORIZED </dt>
3570 <dd class="description">Unauthorized to access host</dd>
3571 <dt>HTTP_UNSUPPORTED_MEDIATYPE </dt>
3572 <dd class="description">The requested media type is unsupported</dd>
3573 <dt>HTTP_UPGRADE_REQUIRED </dt>
3574 <dd class="description">Upgrade to SSL/TLS required</dd>
3575 <dt>HTTP_URI_TOO_LONG </dt>
3576 <dd class="description">URI too long</dd>
3577 <dt>HTTP_USE_PROXY </dt>
3578 <dd class="description">Must use a proxy to access this URI</dd>
3579 </dl>
3580 <h3 class="enumeration"><a name="http_uri_coding_e">http_uri_coding_e</a></h3>
3581 <p class="description"></p>
3582 <h4 class="constants">Constants</h4>
3583 <dl>
3584 <dt>HTTP_URI_CODING_ALL </dt>
3585 <dd class="description">En/decode everything</dd>
3586 <dt>HTTP_URI_CODING_HOSTNAME </dt>
3587 <dd class="description">En/decode the hostname portion</dd>
3588 <dt>HTTP_URI_CODING_MOST </dt>
3589 <dd class="description">En/decode all but the query</dd>
3590 <dt>HTTP_URI_CODING_NONE </dt>
3591 <dd class="description">Don't en/decode anything</dd>
3592 <dt>HTTP_URI_CODING_QUERY </dt>
3593 <dd class="description">En/decode the query portion</dd>
3594 <dt>HTTP_URI_CODING_RESOURCE </dt>
3595 <dd class="description">En/decode the resource portion</dd>
3596 <dt>HTTP_URI_CODING_USERNAME </dt>
3597 <dd class="description">En/decode the username portion</dd>
3598 </dl>
3599 <h3 class="enumeration"><a name="http_uri_status_e">http_uri_status_e</a></h3>
3600 <p class="description"></p>
3601 <h4 class="constants">Constants</h4>
3602 <dl>
3603 <dt>HTTP_URI_BAD_ARGUMENTS </dt>
3604 <dd class="description">Bad arguments to function (error)</dd>
3605 <dt>HTTP_URI_BAD_HOSTNAME </dt>
3606 <dd class="description">Bad hostname in URI (error)</dd>
3607 <dt>HTTP_URI_BAD_PORT </dt>
3608 <dd class="description">Bad port number in URI (error)</dd>
3609 <dt>HTTP_URI_BAD_RESOURCE </dt>
3610 <dd class="description">Bad resource in URI (error)</dd>
3611 <dt>HTTP_URI_BAD_SCHEME </dt>
3612 <dd class="description">Bad scheme in URI (error)</dd>
3613 <dt>HTTP_URI_BAD_URI </dt>
3614 <dd class="description">Bad/empty URI (error)</dd>
3615 <dt>HTTP_URI_BAD_USERNAME </dt>
3616 <dd class="description">Bad username in URI (error)</dd>
3617 <dt>HTTP_URI_MISSING_RESOURCE </dt>
3618 <dd class="description">Missing resource in URI (warning)</dd>
3619 <dt>HTTP_URI_MISSING_SCHEME </dt>
3620 <dd class="description">Missing scheme in URI (warning)</dd>
3621 <dt>HTTP_URI_OK </dt>
3622 <dd class="description">URI decoded OK</dd>
3623 <dt>HTTP_URI_OVERFLOW </dt>
3624 <dd class="description">URI buffer for httpAssembleURI is too small</dd>
3625 <dt>HTTP_URI_UNKNOWN_SCHEME </dt>
3626 <dd class="description">Unknown scheme in URI (warning)</dd>
3627 </dl>
3628 <h3 class="enumeration"><a name="http_version_e">http_version_e</a></h3>
3629 <p class="description"></p>
3630 <h4 class="constants">Constants</h4>
3631 <dl>
3632 <dt>HTTP_0_9 </dt>
3633 <dd class="description">HTTP/0.9</dd>
3634 <dt>HTTP_1_0 </dt>
3635 <dd class="description">HTTP/1.0</dd>
3636 <dt>HTTP_1_1 </dt>
3637 <dd class="description">HTTP/1.1</dd>
3638 </dl>
3639 <h3 class="enumeration"><a name="ipp_finish_e">ipp_finish_e</a></h3>
3640 <p class="description"></p>
3641 <h4 class="constants">Constants</h4>
3642 <dl>
3643 <dt>IPP_FINISHINGS_BALE </dt>
3644 <dd class="description">Bale (any type)</dd>
3645 <dt>IPP_FINISHINGS_BIND </dt>
3646 <dd class="description">Bind</dd>
3647 <dt>IPP_FINISHINGS_BIND_BOTTOM </dt>
3648 <dd class="description">Bind on bottom</dd>
3649 <dt>IPP_FINISHINGS_BIND_LEFT </dt>
3650 <dd class="description">Bind on left</dd>
3651 <dt>IPP_FINISHINGS_BIND_RIGHT </dt>
3652 <dd class="description">Bind on right</dd>
3653 <dt>IPP_FINISHINGS_BIND_TOP </dt>
3654 <dd class="description">Bind on top</dd>
3655 <dt>IPP_FINISHINGS_BOOKLET_MAKER </dt>
3656 <dd class="description">Fold to make booklet</dd>
3657 <dt>IPP_FINISHINGS_COVER </dt>
3658 <dd class="description">Add cover</dd>
3659 <dt>IPP_FINISHINGS_EDGE_STITCH </dt>
3660 <dd class="description">Stitch along any side</dd>
3661 <dt>IPP_FINISHINGS_EDGE_STITCH_BOTTOM </dt>
3662 <dd class="description">Stitch along bottom edge</dd>
3663 <dt>IPP_FINISHINGS_EDGE_STITCH_LEFT </dt>
3664 <dd class="description">Stitch along left side</dd>
3665 <dt>IPP_FINISHINGS_EDGE_STITCH_RIGHT </dt>
3666 <dd class="description">Stitch along right side</dd>
3667 <dt>IPP_FINISHINGS_EDGE_STITCH_TOP </dt>
3668 <dd class="description">Stitch along top edge</dd>
3669 <dt>IPP_FINISHINGS_FOLD </dt>
3670 <dd class="description">Fold (any type)</dd>
3671 <dt>IPP_FINISHINGS_JOB_OFFSET </dt>
3672 <dd class="description">Offset for binding (any type)</dd>
3673 <dt>IPP_FINISHINGS_NONE </dt>
3674 <dd class="description">No finishing</dd>
3675 <dt>IPP_FINISHINGS_PUNCH </dt>
3676 <dd class="description">Punch (any location/count)</dd>
3677 <dt>IPP_FINISHINGS_SADDLE_STITCH </dt>
3678 <dd class="description">Staple interior</dd>
3679 <dt>IPP_FINISHINGS_STAPLE </dt>
3680 <dd class="description">Staple (any location)</dd>
3681 <dt>IPP_FINISHINGS_STAPLE_BOTTOM_LEFT </dt>
3682 <dd class="description">Staple bottom left corner</dd>
3683 <dt>IPP_FINISHINGS_STAPLE_BOTTOM_RIGHT </dt>
3684 <dd class="description">Staple bottom right corner</dd>
3685 <dt>IPP_FINISHINGS_STAPLE_DUAL_BOTTOM </dt>
3686 <dd class="description">Two staples on bottom</dd>
3687 <dt>IPP_FINISHINGS_STAPLE_DUAL_LEFT </dt>
3688 <dd class="description">Two staples on left</dd>
3689 <dt>IPP_FINISHINGS_STAPLE_DUAL_RIGHT </dt>
3690 <dd class="description">Two staples on right</dd>
3691 <dt>IPP_FINISHINGS_STAPLE_DUAL_TOP </dt>
3692 <dd class="description">Two staples on top</dd>
3693 <dt>IPP_FINISHINGS_STAPLE_TOP_LEFT </dt>
3694 <dd class="description">Staple top left corner</dd>
3695 <dt>IPP_FINISHINGS_STAPLE_TOP_RIGHT </dt>
3696 <dd class="description">Staple top right corner</dd>
3697 <dt>IPP_FINISHINGS_TRIM </dt>
3698 <dd class="description">Trim (any type)</dd>
3699 </dl>
3700 <h3 class="enumeration"><a name="ipp_jstate_e">ipp_jstate_e</a></h3>
3701 <p class="description"></p>
3702 <h4 class="constants">Constants</h4>
3703 <dl>
3704 <dt>IPP_JOB_ABORTED </dt>
3705 <dd class="description">Job has aborted due to error</dd>
3706 <dt>IPP_JOB_CANCELED </dt>
3707 <dd class="description">Job has been canceled</dd>
3708 <dt>IPP_JOB_COMPLETED </dt>
3709 <dd class="description">Job has completed successfully</dd>
3710 <dt>IPP_JOB_HELD </dt>
3711 <dd class="description">Job is held for printing</dd>
3712 <dt>IPP_JOB_PENDING </dt>
3713 <dd class="description">Job is waiting to be printed</dd>
3714 <dt>IPP_JOB_PROCESSING </dt>
3715 <dd class="description">Job is currently printing</dd>
3716 <dt>IPP_JOB_STOPPED </dt>
3717 <dd class="description">Job has been stopped</dd>
3718 </dl>
3719 <h3 class="enumeration"><a name="ipp_op_e">ipp_op_e</a></h3>
3720 <p class="description"></p>
3721 <h4 class="constants">Constants</h4>
3722 <dl>
3723 <dt>CUPS_ACCEPT_JOBS </dt>
3724 <dd class="description">Accept new jobs on a printer</dd>
3725 <dt>CUPS_ADD_MODIFY_CLASS </dt>
3726 <dd class="description">Add or modify a class</dd>
3727 <dt>CUPS_ADD_MODIFY_PRINTER </dt>
3728 <dd class="description">Add or modify a printer</dd>
3729 <dt>CUPS_AUTHENTICATE_JOB <span class="info">&nbsp;CUPS 1.2&nbsp;</span></dt>
3730 <dd class="description">Authenticate a job </dd>
3731 <dt>CUPS_DELETE_CLASS </dt>
3732 <dd class="description">Delete a class</dd>
3733 <dt>CUPS_DELETE_PRINTER </dt>
3734 <dd class="description">Delete a printer</dd>
3735 <dt>CUPS_GET_CLASSES <span class="info">&nbsp;DEPRECATED&nbsp;</span></dt>
3736 <dd class="description">Get a list of classes </dd>
3737 <dt>CUPS_GET_DEFAULT </dt>
3738 <dd class="description">Get the default printer</dd>
3739 <dt>CUPS_GET_DEVICES </dt>
3740 <dd class="description">Get a list of supported devices</dd>
3741 <dt>CUPS_GET_DOCUMENT <span class="info">&nbsp;CUPS 1.4&nbsp;</span></dt>
3742 <dd class="description">Get a document file </dd>
3743 <dt>CUPS_GET_PPD <span class="info">&nbsp;CUPS 1.3&nbsp;</span></dt>
3744 <dd class="description">Get a PPD file </dd>
3745 <dt>CUPS_GET_PPDS </dt>
3746 <dd class="description">Get a list of supported drivers</dd>
3747 <dt>CUPS_GET_PRINTERS </dt>
3748 <dd class="description">Get a list of printers and/or classes</dd>
3749 <dt>CUPS_MOVE_JOB </dt>
3750 <dd class="description">Move a job to a different printer</dd>
3751 <dt>CUPS_REJECT_JOBS </dt>
3752 <dd class="description">Reject new jobs on a printer</dd>
3753 <dt>CUPS_SET_DEFAULT </dt>
3754 <dd class="description">Set the default printer</dd>
3755 <dt>IPP_CANCEL_JOB </dt>
3756 <dd class="description">Cancel a job</dd>
3757 <dt>IPP_CANCEL_SUBSCRIPTION <span class="info">&nbsp;CUPS 1.2&nbsp;</span></dt>
3758 <dd class="description">Cancel a subscription </dd>
3759 <dt>IPP_CREATE_JOB </dt>
3760 <dd class="description">Create an empty print job</dd>
3761 <dt>IPP_CREATE_JOB_SUBSCRIPTION <span class="info">&nbsp;CUPS 1.2&nbsp;</span></dt>
3762 <dd class="description">Create a job subscription </dd>
3763 <dt>IPP_CREATE_PRINTER_SUBSCRIPTION <span class="info">&nbsp;CUPS 1.2&nbsp;</span></dt>
3764 <dd class="description">Create a printer subscription </dd>
3765 <dt>IPP_DISABLE_PRINTER </dt>
3766 <dd class="description">Stop a printer</dd>
3767 <dt>IPP_ENABLE_PRINTER </dt>
3768 <dd class="description">Start a printer</dd>
3769 <dt>IPP_GET_JOBS </dt>
3770 <dd class="description">Get a list of jobs</dd>
3771 <dt>IPP_GET_JOB_ATTRIBUTES </dt>
3772 <dd class="description">Get job attributes</dd>
3773 <dt>IPP_GET_NOTIFICATIONS <span class="info">&nbsp;CUPS 1.2&nbsp;</span></dt>
3774 <dd class="description">Get notification events </dd>
3775 <dt>IPP_GET_PRINTER_ATTRIBUTES </dt>
3776 <dd class="description">Get printer attributes</dd>
3777 <dt>IPP_GET_PRINTER_SUPPORTED_VALUES </dt>
3778 <dd class="description">Get supported attribute values</dd>
3779 <dt>IPP_GET_SUBSCRIPTIONS <span class="info">&nbsp;CUPS 1.2&nbsp;</span></dt>
3780 <dd class="description">Get list of subscriptions </dd>
3781 <dt>IPP_GET_SUBSCRIPTION_ATTRIBUTES <span class="info">&nbsp;CUPS 1.2&nbsp;</span></dt>
3782 <dd class="description">Get subscription attributes </dd>
3783 <dt>IPP_HOLD_JOB </dt>
3784 <dd class="description">Hold a job for printing</dd>
3785 <dt>IPP_PAUSE_PRINTER </dt>
3786 <dd class="description">Stop a printer</dd>
3787 <dt>IPP_PRINT_JOB </dt>
3788 <dd class="description">Print a single file</dd>
3789 <dt>IPP_PURGE_JOBS </dt>
3790 <dd class="description">Cancel all jobs</dd>
3791 <dt>IPP_RELEASE_JOB </dt>
3792 <dd class="description">Release a job for printing</dd>
3793 <dt>IPP_RENEW_SUBSCRIPTION <span class="info">&nbsp;CUPS 1.2&nbsp;</span></dt>
3794 <dd class="description">Renew a printer subscription </dd>
3795 <dt>IPP_RESTART_JOB </dt>
3796 <dd class="description">Reprint a job</dd>
3797 <dt>IPP_RESUME_PRINTER </dt>
3798 <dd class="description">Start a printer</dd>
3799 <dt>IPP_SEND_DOCUMENT </dt>
3800 <dd class="description">Add a file to a job</dd>
3801 <dt>IPP_SET_JOB_ATTRIBUTES </dt>
3802 <dd class="description">Set job attributes</dd>
3803 <dt>IPP_VALIDATE_JOB </dt>
3804 <dd class="description">Validate job options</dd>
3805 </dl>
3806 <h3 class="enumeration"><a name="ipp_orient_e">ipp_orient_e</a></h3>
3807 <p class="description"></p>
3808 <h4 class="constants">Constants</h4>
3809 <dl>
3810 <dt>IPP_LANDSCAPE </dt>
3811 <dd class="description">90 degrees counter-clockwise</dd>
3812 <dt>IPP_PORTRAIT </dt>
3813 <dd class="description">No rotation</dd>
3814 <dt>IPP_REVERSE_LANDSCAPE </dt>
3815 <dd class="description">90 degrees clockwise</dd>
3816 <dt>IPP_REVERSE_PORTRAIT </dt>
3817 <dd class="description">180 degrees</dd>
3818 </dl>
3819 <h3 class="enumeration"><a name="ipp_pstate_e">ipp_pstate_e</a></h3>
3820 <p class="description"></p>
3821 <h4 class="constants">Constants</h4>
3822 <dl>
3823 <dt>IPP_PRINTER_IDLE </dt>
3824 <dd class="description">Printer is idle</dd>
3825 <dt>IPP_PRINTER_PROCESSING </dt>
3826 <dd class="description">Printer is working</dd>
3827 <dt>IPP_PRINTER_STOPPED </dt>
3828 <dd class="description">Printer is stopped</dd>
3829 </dl>
3830 <h3 class="enumeration"><a name="ipp_quality_e">ipp_quality_e</a></h3>
3831 <p class="description"></p>
3832 <h4 class="constants">Constants</h4>
3833 <dl>
3834 <dt>IPP_QUALITY_DRAFT </dt>
3835 <dd class="description">Draft quality</dd>
3836 <dt>IPP_QUALITY_HIGH </dt>
3837 <dd class="description">High quality</dd>
3838 <dt>IPP_QUALITY_NORMAL </dt>
3839 <dd class="description">Normal quality</dd>
3840 </dl>
3841 <h3 class="enumeration"><a name="ipp_res_e">ipp_res_e</a></h3>
3842 <p class="description">Types and structures...</p>
3843 <h4 class="constants">Constants</h4>
3844 <dl>
3845 <dt>IPP_RES_PER_CM </dt>
3846 <dd class="description">Pixels per centimeter</dd>
3847 <dt>IPP_RES_PER_INCH </dt>
3848 <dd class="description">Pixels per inch</dd>
3849 </dl>
3850 <h3 class="enumeration"><a name="ipp_state_e">ipp_state_e</a></h3>
3851 <p class="description"></p>
3852 <h4 class="constants">Constants</h4>
3853 <dl>
3854 <dt>IPP_ATTRIBUTE </dt>
3855 <dd class="description">One or more attributes need to be sent/received</dd>
3856 <dt>IPP_DATA </dt>
3857 <dd class="description">IPP request data needs to be sent/received</dd>
3858 <dt>IPP_ERROR </dt>
3859 <dd class="description">An error occurred</dd>
3860 <dt>IPP_HEADER </dt>
3861 <dd class="description">The request header needs to be sent/received</dd>
3862 <dt>IPP_IDLE </dt>
3863 <dd class="description">Nothing is happening/request completed</dd>
3864 </dl>
3865 <h3 class="enumeration"><a name="ipp_status_e">ipp_status_e</a></h3>
3866 <p class="description">IPP status codes...</p>
3867 <h4 class="constants">Constants</h4>
3868 <dl>
3869 <dt>CUPS_SEE_OTHER </dt>
3870 <dd class="description">cups-see-other</dd>
3871 <dt>IPP_ATTRIBUTES </dt>
3872 <dd class="description">client-error-attributes-or-values-not-supported</dd>
3873 <dt>IPP_ATTRIBUTES_NOT_SETTABLE </dt>
3874 <dd class="description">client-error-attributes-not-settable</dd>
3875 <dt>IPP_BAD_REQUEST </dt>
3876 <dd class="description">client-error-bad-request</dd>
3877 <dt>IPP_CHARSET </dt>
3878 <dd class="description">client-error-charset-not-supported</dd>
3879 <dt>IPP_COMPRESSION_ERROR </dt>
3880 <dd class="description">client-error-compression-error</dd>
3881 <dt>IPP_COMPRESSION_NOT_SUPPORTED </dt>
3882 <dd class="description">client-error-compression-not-supported</dd>
3883 <dt>IPP_CONFLICT </dt>
3884 <dd class="description">client-error-conflicting-attributes</dd>
3885 <dt>IPP_DEVICE_ERROR </dt>
3886 <dd class="description">server-error-device-error</dd>
3887 <dt>IPP_DOCUMENT_ACCESS_ERROR </dt>
3888 <dd class="description">client-error-document-access-error</dd>
3889 <dt>IPP_DOCUMENT_FORMAT </dt>
3890 <dd class="description">client-error-document-format-not-supported</dd>
3891 <dt>IPP_DOCUMENT_FORMAT_ERROR </dt>
3892 <dd class="description">client-error-document-format-error</dd>
3893 <dt>IPP_ERROR_JOB_CANCELED </dt>
3894 <dd class="description">server-error-job-canceled</dd>
3895 <dt>IPP_FORBIDDEN </dt>
3896 <dd class="description">client-error-forbidden</dd>
3897 <dt>IPP_GONE </dt>
3898 <dd class="description">client-error-gone</dd>
3899 <dt>IPP_IGNORED_ALL_NOTIFICATIONS </dt>
3900 <dd class="description">client-error-ignored-all-notifications</dd>
3901 <dt>IPP_IGNORED_ALL_SUBSCRIPTIONS </dt>
3902 <dd class="description">client-error-ignored-all-subscriptions</dd>
3903 <dt>IPP_INTERNAL_ERROR </dt>
3904 <dd class="description">server-error-internal-error</dd>
3905 <dt>IPP_MULTIPLE_JOBS_NOT_SUPPORTED </dt>
3906 <dd class="description">server-error-multiple-document-jobs-not-supported</dd>
3907 <dt>IPP_NOT_ACCEPTING </dt>
3908 <dd class="description">server-error-not-accepting-jobs</dd>
3909 <dt>IPP_NOT_AUTHENTICATED </dt>
3910 <dd class="description">client-error-not-authenticated</dd>
3911 <dt>IPP_NOT_AUTHORIZED </dt>
3912 <dd class="description">client-error-not-authorized</dd>
3913 <dt>IPP_NOT_FOUND </dt>
3914 <dd class="description">client-error-not-found</dd>
3915 <dt>IPP_NOT_POSSIBLE </dt>
3916 <dd class="description">client-error-not-possible</dd>
3917 <dt>IPP_OK </dt>
3918 <dd class="description">successful-ok</dd>
3919 <dt>IPP_OK_BUT_CANCEL_SUBSCRIPTION </dt>
3920 <dd class="description">successful-ok-but-cancel-subscription</dd>
3921 <dt>IPP_OK_CONFLICT </dt>
3922 <dd class="description">successful-ok-conflicting-attributes</dd>
3923 <dt>IPP_OK_EVENTS_COMPLETE </dt>
3924 <dd class="description">successful-ok-events-complete</dd>
3925 <dt>IPP_OK_IGNORED_NOTIFICATIONS </dt>
3926 <dd class="description">successful-ok-ignored-notifications</dd>
3927 <dt>IPP_OK_IGNORED_SUBSCRIPTIONS </dt>
3928 <dd class="description">successful-ok-ignored-subscriptions</dd>
3929 <dt>IPP_OK_SUBST </dt>
3930 <dd class="description">successful-ok-ignored-or-substituted-attributes</dd>
3931 <dt>IPP_OK_TOO_MANY_EVENTS </dt>
3932 <dd class="description">successful-ok-too-many-events</dd>
3933 <dt>IPP_OPERATION_NOT_SUPPORTED </dt>
3934 <dd class="description">server-error-operation-not-supported</dd>
3935 <dt>IPP_PRINTER_BUSY </dt>
3936 <dd class="description">server-error-busy</dd>
3937 <dt>IPP_PRINTER_IS_DEACTIVATED </dt>
3938 <dd class="description">server-error-printer-is-deactivated</dd>
3939 <dt>IPP_PRINT_SUPPORT_FILE_NOT_FOUND </dt>
3940 <dd class="description">client-error-print-support-file-not-found</dd>
3941 <dt>IPP_REQUEST_ENTITY </dt>
3942 <dd class="description">client-error-request-entity-too-large</dd>
3943 <dt>IPP_REQUEST_VALUE </dt>
3944 <dd class="description">client-error-request-value-too-long</dd>
3945 <dt>IPP_SERVICE_UNAVAILABLE </dt>
3946 <dd class="description">server-error-service-unavailable</dd>
3947 <dt>IPP_TEMPORARY_ERROR </dt>
3948 <dd class="description">server-error-temporary-error</dd>
3949 <dt>IPP_TIMEOUT </dt>
3950 <dd class="description">client-error-timeout</dd>
3951 <dt>IPP_TOO_MANY_SUBSCRIPTIONS </dt>
3952 <dd class="description">client-error-too-many-subscriptions</dd>
3953 <dt>IPP_URI_SCHEME </dt>
3954 <dd class="description">client-error-uri-scheme-not-supported</dd>
3955 <dt>IPP_VERSION_NOT_SUPPORTED </dt>
3956 <dd class="description">server-error-version-not-supported</dd>
3957 </dl>
3958 <h3 class="enumeration"><a name="ipp_tag_e">ipp_tag_e</a></h3>
3959 <p class="description">Format tags for attributes...</p>
3960 <h4 class="constants">Constants</h4>
3961 <dl>
3962 <dt>IPP_TAG_ADMINDEFINE </dt>
3963 <dd class="description">Admin-defined value</dd>
3964 <dt>IPP_TAG_BEGIN_COLLECTION </dt>
3965 <dd class="description">Beginning of collection value</dd>
3966 <dt>IPP_TAG_BOOLEAN </dt>
3967 <dd class="description">Boolean value</dd>
3968 <dt>IPP_TAG_CHARSET </dt>
3969 <dd class="description">Character set value</dd>
3970 <dt>IPP_TAG_COPY </dt>
3971 <dd class="description">Bitflag for copied attribute values</dd>
3972 <dt>IPP_TAG_DATE </dt>
3973 <dd class="description">Date/time value</dd>
3974 <dt>IPP_TAG_DEFAULT </dt>
3975 <dd class="description">Default value</dd>
3976 <dt>IPP_TAG_DELETEATTR </dt>
3977 <dd class="description">Delete-attribute value</dd>
3978 <dt>IPP_TAG_END </dt>
3979 <dd class="description">End-of-attributes</dd>
3980 <dt>IPP_TAG_END_COLLECTION </dt>
3981 <dd class="description">End of collection value</dd>
3982 <dt>IPP_TAG_ENUM </dt>
3983 <dd class="description">Enumeration value</dd>
3984 <dt>IPP_TAG_EVENT_NOTIFICATION </dt>
3985 <dd class="description">Event group</dd>
3986 <dt>IPP_TAG_INTEGER </dt>
3987 <dd class="description">Integer value</dd>
3988 <dt>IPP_TAG_JOB </dt>
3989 <dd class="description">Job group</dd>
3990 <dt>IPP_TAG_KEYWORD </dt>
3991 <dd class="description">Keyword value</dd>
3992 <dt>IPP_TAG_LANGUAGE </dt>
3993 <dd class="description">Language value</dd>
3994 <dt>IPP_TAG_MASK </dt>
3995 <dd class="description">Mask for copied attribute values</dd>
3996 <dt>IPP_TAG_MEMBERNAME </dt>
3997 <dd class="description">Collection member name value</dd>
3998 <dt>IPP_TAG_MIMETYPE </dt>
3999 <dd class="description">MIME media type value</dd>
4000 <dt>IPP_TAG_NAME </dt>
4001 <dd class="description">Name value</dd>
4002 <dt>IPP_TAG_NAMELANG </dt>
4003 <dd class="description">Name-with-language value</dd>
4004 <dt>IPP_TAG_NOTSETTABLE </dt>
4005 <dd class="description">Not-settable value</dd>
4006 <dt>IPP_TAG_NOVALUE </dt>
4007 <dd class="description">No-value value</dd>
4008 <dt>IPP_TAG_OPERATION </dt>
4009 <dd class="description">Operation group</dd>
4010 <dt>IPP_TAG_PRINTER </dt>
4011 <dd class="description">Printer group</dd>
4012 <dt>IPP_TAG_RANGE </dt>
4013 <dd class="description">Range value</dd>
4014 <dt>IPP_TAG_RESOLUTION </dt>
4015 <dd class="description">Resolution value</dd>
4016 <dt>IPP_TAG_STRING </dt>
4017 <dd class="description">Octet string value</dd>
4018 <dt>IPP_TAG_SUBSCRIPTION </dt>
4019 <dd class="description">Subscription group</dd>
4020 <dt>IPP_TAG_TEXT </dt>
4021 <dd class="description">Text value</dd>
4022 <dt>IPP_TAG_TEXTLANG </dt>
4023 <dd class="description">Text-with-language value</dd>
4024 <dt>IPP_TAG_UNKNOWN </dt>
4025 <dd class="description">Unknown value</dd>
4026 <dt>IPP_TAG_UNSUPPORTED_GROUP </dt>
4027 <dd class="description">Unsupported attributes group</dd>
4028 <dt>IPP_TAG_UNSUPPORTED_VALUE </dt>
4029 <dd class="description">Unsupported value</dd>
4030 <dt>IPP_TAG_URI </dt>
4031 <dd class="description">URI value</dd>
4032 <dt>IPP_TAG_URISCHEME </dt>
4033 <dd class="description">URI scheme value</dd>
4034 <dt>IPP_TAG_ZERO </dt>
4035 <dd class="description">Zero tag - used for separators</dd>
4036 </dl>
4037 </div>
4038 </body>
4039 </html>