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