]> git.ipfire.org Git - thirdparty/cups.git/blob - doc/help/api-httpipp.html
Load cups into easysw/current.
[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='#httpGetBlocking'><tt>httpGetBlocking()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
940 <li><a href='#httpGetCookie'><tt>httpGetCookie()</tt></a> <span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span></li>
941 <li><a href='#httpGetDateString'><tt>httpGetDateString()</tt></a> <span class='info'>&nbsp;DEPRECATED&nbsp;</span></li>
942 <li><a href='#httpGetDateString2'><tt>httpGetDateString2()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
943 <li><a href='#httpGetDateTime'><tt>httpGetDateTime()</tt></a> </li>
944 <li><a href='#httpGetFd'><tt>httpGetFd()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
945 <li><a href='#httpGetField'><tt>httpGetField()</tt></a> </li>
946 <li><a href='#httpGetHostByName'><tt>httpGetHostByName()</tt></a> <span class='info'>&nbsp;DEPRECATED&nbsp;</span></li>
947 <li><a href='#httpGetHostname'><tt>httpGetHostname()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
948 <li><a href='#httpGetLength'><tt>httpGetLength()</tt></a> <span class='info'>&nbsp;DEPRECATED&nbsp;</span></li>
949 <li><a href='#httpGetLength2'><tt>httpGetLength2()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
950 <li><a href='#httpGetStatus'><tt>httpGetStatus()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
951 <li><a href='#httpGetSubField'><tt>httpGetSubField()</tt></a> <span class='info'>&nbsp;DEPRECATED&nbsp;</span></li>
952 <li><a href='#httpGetSubField2'><tt>httpGetSubField2()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
953 <li><a href='#httpGets'><tt>httpGets()</tt></a> </li>
954 <li><a href='#httpHead'><tt>httpHead()</tt></a> </li>
955 <li><a href='#httpInitialize'><tt>httpInitialize()</tt></a> </li>
956 <li><a href='#httpMD5'><tt>httpMD5()</tt></a> </li>
957 <li><a href='#httpMD5Final'><tt>httpMD5Final()</tt></a> </li>
958 <li><a href='#httpMD5String'><tt>httpMD5String()</tt></a> </li>
959 <li><a href='#httpOptions'><tt>httpOptions()</tt></a> </li>
960 <li><a href='#httpPost'><tt>httpPost()</tt></a> </li>
961 <li><a href='#httpPut'><tt>httpPut()</tt></a> </li>
962 <li><a href='#httpRead'><tt>httpRead()</tt></a> <span class='info'>&nbsp;DEPRECATED&nbsp;</span></li>
963 <li><a href='#httpRead2'><tt>httpRead2()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
964 <li><a href='#httpReconnect'><tt>httpReconnect()</tt></a> </li>
965 <li><a href='#httpSeparate'><tt>httpSeparate()</tt></a> <span class='info'>&nbsp;DEPRECATED&nbsp;</span></li>
966 <li><a href='#httpSeparate2'><tt>httpSeparate2()</tt></a> <span class='info'>&nbsp;CUPS 1.1.21&nbsp;</span></li>
967 <li><a href='#httpSeparateURI'><tt>httpSeparateURI()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
968 <li><a href='#httpSetCookie'><tt>httpSetCookie()</tt></a> <span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span></li>
969 <li><a href='#httpSetExpect'><tt>httpSetExpect()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
970 <li><a href='#httpSetField'><tt>httpSetField()</tt></a> </li>
971 <li><a href='#httpSetLength'><tt>httpSetLength()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
972 <li><a href='#httpStatus'><tt>httpStatus()</tt></a> </li>
973 <li><a href='#httpTrace'><tt>httpTrace()</tt></a> </li>
974 <li><a href='#httpUpdate'><tt>httpUpdate()</tt></a> </li>
975 <li><a href='#httpWait'><tt>httpWait()</tt></a> <span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span></li>
976 <li><a href='#httpWrite'><tt>httpWrite()</tt></a> <span class='info'>&nbsp;DEPRECATED&nbsp;</span></li>
977 <li><a href='#httpWrite2'><tt>httpWrite2()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
978 <li><a href='#ippAddBoolean'><tt>ippAddBoolean()</tt></a> </li>
979 <li><a href='#ippAddBooleans'><tt>ippAddBooleans()</tt></a> </li>
980 <li><a href='#ippAddCollection'><tt>ippAddCollection()</tt></a> <span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span></li>
981 <li><a href='#ippAddCollections'><tt>ippAddCollections()</tt></a> <span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span></li>
982 <li><a href='#ippAddDate'><tt>ippAddDate()</tt></a> </li>
983 <li><a href='#ippAddInteger'><tt>ippAddInteger()</tt></a> </li>
984 <li><a href='#ippAddIntegers'><tt>ippAddIntegers()</tt></a> </li>
985 <li><a href='#ippAddOctetString'><tt>ippAddOctetString()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
986 <li><a href='#ippAddRange'><tt>ippAddRange()</tt></a> </li>
987 <li><a href='#ippAddRanges'><tt>ippAddRanges()</tt></a> </li>
988 <li><a href='#ippAddResolution'><tt>ippAddResolution()</tt></a> </li>
989 <li><a href='#ippAddResolutions'><tt>ippAddResolutions()</tt></a> </li>
990 <li><a href='#ippAddSeparator'><tt>ippAddSeparator()</tt></a> </li>
991 <li><a href='#ippAddString'><tt>ippAddString()</tt></a> </li>
992 <li><a href='#ippAddStrings'><tt>ippAddStrings()</tt></a> </li>
993 <li><a href='#ippDateToTime'><tt>ippDateToTime()</tt></a> </li>
994 <li><a href='#ippDelete'><tt>ippDelete()</tt></a> </li>
995 <li><a href='#ippDeleteAttribute'><tt>ippDeleteAttribute()</tt></a> <span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span></li>
996 <li><a href='#ippErrorString'><tt>ippErrorString()</tt></a> </li>
997 <li><a href='#ippErrorValue'><tt>ippErrorValue()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
998 <li><a href='#ippFindAttribute'><tt>ippFindAttribute()</tt></a> </li>
999 <li><a href='#ippFindNextAttribute'><tt>ippFindNextAttribute()</tt></a> </li>
1000 <li><a href='#ippLength'><tt>ippLength()</tt></a> </li>
1001 <li><a href='#ippNew'><tt>ippNew()</tt></a> </li>
1002 <li><a href='#ippNewRequest'><tt>ippNewRequest()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
1003 <li><a href='#ippOpString'><tt>ippOpString()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
1004 <li><a href='#ippOpValue'><tt>ippOpValue()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
1005 <li><a href='#ippPort'><tt>ippPort()</tt></a> </li>
1006 <li><a href='#ippRead'><tt>ippRead()</tt></a> </li>
1007 <li><a href='#ippReadFile'><tt>ippReadFile()</tt></a> <span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span></li>
1008 <li><a href='#ippReadIO'><tt>ippReadIO()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
1009 <li><a href='#ippSetPort'><tt>ippSetPort()</tt></a> </li>
1010 <li><a href='#ippTimeToDate'><tt>ippTimeToDate()</tt></a> </li>
1011 <li><a href='#ippWrite'><tt>ippWrite()</tt></a> </li>
1012 <li><a href='#ippWriteFile'><tt>ippWriteFile()</tt></a> <span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span></li>
1013 <li><a href='#ippWriteIO'><tt>ippWriteIO()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
1014 </ul>
1015 <!-- NEW PAGE -->
1016 <h3 class='title'><span class='info'>&nbsp;CUPS 1.1.20&nbsp;</span><a name='cupsDoAuthentication'>cupsDoAuthentication()</a></h3>
1017 <h4>Description</h4>
1018 <p>Authenticate a request.
1019 <p>This function should be called in response to a HTTP_UNAUTHORIZED
1020 status, prior to resubmitting your request.
1021
1022
1023 <h4>Syntax</h4>
1024 <p><tt>
1025 int<br>
1026 cupsDoAuthentication(
1027 <a href='#http_t'>http_t</a> * http,
1028 const char * method,
1029 const char * resource);
1030 </tt></p>
1031 <h4>Arguments</h4>
1032 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
1033 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1034 <tbody>
1035 <tr><td><tt>http</tt></td><td>HTTP connection to server</td></tr>
1036 <tr><td><tt>method</tt></td><td>Request method (GET, POST, PUT)</td></tr>
1037 <tr><td><tt>resource</tt></td><td>Resource path</td></tr>
1038 </tbody></table></div>
1039 <h4>Returns</h4>
1040 <p>0 on success, -1 on error</p>
1041 <!-- NEW PAGE -->
1042 <h3 class='title'><a name='cupsDoFileRequest'>cupsDoFileRequest()</a></h3>
1043 <h4>Description</h4>
1044 <p>Do an IPP request with a file.
1045 <p>This function sends the IPP request to the specified server, retrying
1046 and authenticating as necessary. The request is freed with ippDelete()
1047 after receiving a valid IPP response.
1048 <h4>Syntax</h4>
1049 <p><tt>
1050 <a href='#ipp_t'>ipp_t</a> *<br>
1051 cupsDoFileRequest(
1052 <a href='#http_t'>http_t</a> * http,
1053 <a href='#ipp_t'>ipp_t</a> * request,
1054 const char * resource,
1055 const char * filename);
1056 </tt></p>
1057 <h4>Arguments</h4>
1058 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
1059 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1060 <tbody>
1061 <tr><td><tt>http</tt></td><td>HTTP connection to server</td></tr>
1062 <tr><td><tt>request</tt></td><td>IPP request</td></tr>
1063 <tr><td><tt>resource</tt></td><td>HTTP resource for POST</td></tr>
1064 <tr><td><tt>filename</tt></td><td>File to send or NULL for none</td></tr>
1065 </tbody></table></div>
1066 <h4>Returns</h4>
1067 <p>Response data</p>
1068 <!-- NEW PAGE -->
1069 <h3 class='title'><span class='info'>&nbsp;CUPS 1.3&nbsp;</span><a name='cupsDoIORequest'>cupsDoIORequest()</a></h3>
1070 <h4>Description</h4>
1071 <p>Do an IPP request with file descriptors.
1072 <p>This function sends the IPP request to the specified server, retrying
1073 and authenticating as necessary. The request is freed with ippDelete()
1074 after receiving a valid IPP response.
1075 <p>If &quot;infile&quot; is a valid file descriptor, cupsDoIORequest() copies
1076 all of the data from the file after the IPP request message.
1077 <p>If &quot;outfile&quot; is a valid file descriptor, cupsDoIORequest() copies
1078 all of the data after the IPP response message to the file.
1079
1080
1081 <h4>Syntax</h4>
1082 <p><tt>
1083 <a href='#ipp_t'>ipp_t</a> *<br>
1084 cupsDoIORequest(
1085 <a href='#http_t'>http_t</a> * http,
1086 <a href='#ipp_t'>ipp_t</a> * request,
1087 const char * resource,
1088 int infile,
1089 int outfile);
1090 </tt></p>
1091 <h4>Arguments</h4>
1092 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
1093 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1094 <tbody>
1095 <tr><td><tt>http</tt></td><td>HTTP connection to server</td></tr>
1096 <tr><td><tt>request</tt></td><td>IPP request</td></tr>
1097 <tr><td><tt>resource</tt></td><td>HTTP resource for POST</td></tr>
1098 <tr><td><tt>infile</tt></td><td>File to read from or -1 for none</td></tr>
1099 <tr><td><tt>outfile</tt></td><td>File to write to or -1 for none</td></tr>
1100 </tbody></table></div>
1101 <h4>Returns</h4>
1102 <p>Response data</p>
1103 <!-- NEW PAGE -->
1104 <h3 class='title'><a name='cupsDoRequest'>cupsDoRequest()</a></h3>
1105 <h4>Description</h4>
1106 <p>Do an IPP request.
1107 <p>This function sends the IPP request to the specified server, retrying
1108 and authenticating as necessary. The request is freed with ippDelete()
1109 after receiving a valid IPP response.
1110 <h4>Syntax</h4>
1111 <p><tt>
1112 <a href='#ipp_t'>ipp_t</a> *<br>
1113 cupsDoRequest(
1114 <a href='#http_t'>http_t</a> * http,
1115 <a href='#ipp_t'>ipp_t</a> * request,
1116 const char * resource);
1117 </tt></p>
1118 <h4>Arguments</h4>
1119 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
1120 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1121 <tbody>
1122 <tr><td><tt>http</tt></td><td>HTTP connection to server</td></tr>
1123 <tr><td><tt>request</tt></td><td>IPP request</td></tr>
1124 <tr><td><tt>resource</tt></td><td>HTTP resource for POST</td></tr>
1125 </tbody></table></div>
1126 <h4>Returns</h4>
1127 <p>Response data</p>
1128 <!-- NEW PAGE -->
1129 <h3 class='title'><a name='cupsEncodeOptions'>cupsEncodeOptions()</a></h3>
1130 <h4>Description</h4>
1131 <p>Encode printer options into IPP attributes.
1132 <p>This function adds operation, job, and then subscription attributes,
1133 in that order. Use the cupsEncodeOptions2() function to add attributes
1134 for a single group.
1135 <h4>Syntax</h4>
1136 <p><tt>
1137 void<br>
1138 cupsEncodeOptions(
1139 <a href='#ipp_t'>ipp_t</a> * ipp,
1140 int num_options,
1141 cups_option_t * options);
1142 </tt></p>
1143 <h4>Arguments</h4>
1144 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
1145 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1146 <tbody>
1147 <tr><td><tt>ipp</tt></td><td>Request to add to</td></tr>
1148 <tr><td><tt>num_options</tt></td><td>Number of options</td></tr>
1149 <tr><td><tt>options</tt></td><td>Options</td></tr>
1150 </tbody></table></div>
1151 <h4>Returns</h4>
1152 <p>Nothing.</p>
1153 <!-- NEW PAGE -->
1154 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='cupsEncodeOptions2'>cupsEncodeOptions2()</a></h3>
1155 <h4>Description</h4>
1156 <p>Encode printer options into IPP attributes for a group.
1157 <p>This function only adds attributes for a single group. Call this
1158 function multiple times for each group, or use cupsEncodeOptions()
1159 to add the standard groups.
1160
1161
1162 <h4>Syntax</h4>
1163 <p><tt>
1164 void<br>
1165 cupsEncodeOptions2(
1166 <a href='#ipp_t'>ipp_t</a> * ipp,
1167 int num_options,
1168 cups_option_t * options,
1169 ipp_tag_t group_tag);
1170 </tt></p>
1171 <h4>Arguments</h4>
1172 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
1173 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1174 <tbody>
1175 <tr><td><tt>ipp</tt></td><td>Request to add to</td></tr>
1176 <tr><td><tt>num_options</tt></td><td>Number of options</td></tr>
1177 <tr><td><tt>options</tt></td><td>Options</td></tr>
1178 <tr><td><tt>group_tag</tt></td><td>Group to encode</td></tr>
1179 </tbody></table></div>
1180 <h4>Returns</h4>
1181 <p>Nothing.</p>
1182 <!-- NEW PAGE -->
1183 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='httpAddrAny'>httpAddrAny()</a></h3>
1184 <h4>Description</h4>
1185 <p>Check for the &quot;any&quot; address.
1186
1187
1188 <h4>Syntax</h4>
1189 <p><tt>
1190 int<br>
1191 httpAddrAny(
1192 const <a href='#http_addr_t'>http_addr_t</a> * addr);
1193 </tt></p>
1194 <h4>Arguments</h4>
1195 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
1196 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1197 <tbody>
1198 <tr><td><tt>addr</tt></td><td>Address to check</td></tr>
1199 </tbody></table></div>
1200 <h4>Returns</h4>
1201 <p>1 if &quot;any&quot;, 0 otherwise</p>
1202 <!-- NEW PAGE -->
1203 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='httpAddrEqual'>httpAddrEqual()</a></h3>
1204 <h4>Description</h4>
1205 <p>Compare two addresses.
1206
1207
1208 <h4>Syntax</h4>
1209 <p><tt>
1210 int<br>
1211 httpAddrEqual(
1212 const <a href='#http_addr_t'>http_addr_t</a> * addr1,
1213 const <a href='#http_addr_t'>http_addr_t</a> * addr2);
1214 </tt></p>
1215 <h4>Arguments</h4>
1216 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
1217 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1218 <tbody>
1219 <tr><td><tt>addr1</tt></td><td>First address</td></tr>
1220 <tr><td><tt>addr2</tt></td><td>Second address</td></tr>
1221 </tbody></table></div>
1222 <h4>Returns</h4>
1223 <p>1 if equal, 0 if not</p>
1224 <!-- NEW PAGE -->
1225 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='httpAddrLength'>httpAddrLength()</a></h3>
1226 <h4>Description</h4>
1227 <p>Return the length of the address in bytes.
1228
1229
1230 <h4>Syntax</h4>
1231 <p><tt>
1232 int<br>
1233 httpAddrLength(
1234 const <a href='#http_addr_t'>http_addr_t</a> * addr);
1235 </tt></p>
1236 <h4>Arguments</h4>
1237 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
1238 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1239 <tbody>
1240 <tr><td><tt>addr</tt></td><td>Address</td></tr>
1241 </tbody></table></div>
1242 <h4>Returns</h4>
1243 <p>Length in bytes</p>
1244 <!-- NEW PAGE -->
1245 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='httpAddrLocalhost'>httpAddrLocalhost()</a></h3>
1246 <h4>Description</h4>
1247 <p>Check for the local loopback address.
1248
1249
1250 <h4>Syntax</h4>
1251 <p><tt>
1252 int<br>
1253 httpAddrLocalhost(
1254 const <a href='#http_addr_t'>http_addr_t</a> * addr);
1255 </tt></p>
1256 <h4>Arguments</h4>
1257 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
1258 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1259 <tbody>
1260 <tr><td><tt>addr</tt></td><td>Address to check</td></tr>
1261 </tbody></table></div>
1262 <h4>Returns</h4>
1263 <p>1 if local host, 0 otherwise</p>
1264 <!-- NEW PAGE -->
1265 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='httpAddrLookup'>httpAddrLookup()</a></h3>
1266 <h4>Description</h4>
1267 <p>Lookup the hostname associated with the address.
1268
1269
1270 <h4>Syntax</h4>
1271 <p><tt>
1272 char *<br>
1273 httpAddrLookup(
1274 const <a href='#http_addr_t'>http_addr_t</a> * addr,
1275 char * name,
1276 int namelen);
1277 </tt></p>
1278 <h4>Arguments</h4>
1279 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
1280 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1281 <tbody>
1282 <tr><td><tt>addr</tt></td><td>Address to lookup</td></tr>
1283 <tr><td><tt>name</tt></td><td>Host name buffer</td></tr>
1284 <tr><td><tt>namelen</tt></td><td>Size of name buffer</td></tr>
1285 </tbody></table></div>
1286 <h4>Returns</h4>
1287 <p>Host name</p>
1288 <!-- NEW PAGE -->
1289 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='httpAddrString'>httpAddrString()</a></h3>
1290 <h4>Description</h4>
1291 <p>Convert an address to a numeric string.
1292
1293
1294 <h4>Syntax</h4>
1295 <p><tt>
1296 char *<br>
1297 httpAddrString(
1298 const <a href='#http_addr_t'>http_addr_t</a> * addr,
1299 char * s,
1300 int slen);
1301 </tt></p>
1302 <h4>Arguments</h4>
1303 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
1304 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1305 <tbody>
1306 <tr><td><tt>addr</tt></td><td>Address to convert</td></tr>
1307 <tr><td><tt>s</tt></td><td>String buffer</td></tr>
1308 <tr><td><tt>slen</tt></td><td>Length of string</td></tr>
1309 </tbody></table></div>
1310 <h4>Returns</h4>
1311 <p>Numeric address string</p>
1312 <!-- NEW PAGE -->
1313 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='httpAssembleURI'>httpAssembleURI()</a></h3>
1314 <h4>Description</h4>
1315 <p>Assemble a uniform resource identifier from its
1316 components.
1317 <p>This function escapes reserved characters in the URI depending on the
1318 value of the &quot;encoding&quot; argument. You should use this function in
1319 place of traditional string functions whenever you need to create a
1320 URI string.
1321
1322
1323 <h4>Syntax</h4>
1324 <p><tt>
1325 http_uri_status_t<br>
1326 httpAssembleURI(
1327 http_uri_coding_t encoding,
1328 char * uri,
1329 int urilen,
1330 const char * scheme,
1331 const char * username,
1332 const char * host,
1333 int port,
1334 const char * resource);
1335 </tt></p>
1336 <h4>Arguments</h4>
1337 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
1338 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1339 <tbody>
1340 <tr><td><tt>encoding</tt></td><td>Encoding flags</td></tr>
1341 <tr><td><tt>uri</tt></td><td>URI buffer</td></tr>
1342 <tr><td><tt>urilen</tt></td><td>Size of URI buffer</td></tr>
1343 <tr><td><tt>scheme</tt></td><td>Scheme name</td></tr>
1344 <tr><td><tt>username</tt></td><td>Username</td></tr>
1345 <tr><td><tt>host</tt></td><td>Hostname or address</td></tr>
1346 <tr><td><tt>port</tt></td><td>Port number</td></tr>
1347 <tr><td><tt>resource</tt></td><td>Resource</td></tr>
1348 </tbody></table></div>
1349 <h4>Returns</h4>
1350 <p>URI status</p>
1351 <!-- NEW PAGE -->
1352 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='httpAssembleURIf'>httpAssembleURIf()</a></h3>
1353 <h4>Description</h4>
1354 <p>Assemble a uniform resource identifier from its
1355 components with a formatted resource.
1356 <p>This function creates a formatted version of the resource string
1357 argument &quot;resourcef&quot; and escapes reserved characters in the URI
1358 depending on the value of the &quot;encoding&quot; argument. You should use
1359 this function in place of traditional string functions whenever
1360 you need to create a URI string.
1361
1362
1363 <h4>Syntax</h4>
1364 <p><tt>
1365 http_uri_status_t<br>
1366 httpAssembleURIf(
1367 http_uri_coding_t encoding,
1368 char * uri,
1369 int urilen,
1370 const char * scheme,
1371 const char * username,
1372 const char * host,
1373 int port,
1374 const char * resourcef,
1375 ...);
1376 </tt></p>
1377 <h4>Arguments</h4>
1378 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
1379 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1380 <tbody>
1381 <tr><td><tt>encoding</tt></td><td>Encoding flags</td></tr>
1382 <tr><td><tt>uri</tt></td><td>URI buffer</td></tr>
1383 <tr><td><tt>urilen</tt></td><td>Size of URI buffer</td></tr>
1384 <tr><td><tt>scheme</tt></td><td>Scheme name</td></tr>
1385 <tr><td><tt>username</tt></td><td>Username</td></tr>
1386 <tr><td><tt>host</tt></td><td>Hostname or address</td></tr>
1387 <tr><td><tt>port</tt></td><td>Port number</td></tr>
1388 <tr><td><tt>resourcef</tt></td><td>Printf-style resource</td></tr>
1389 <tr><td><tt>...</tt></td><td>Additional arguments as needed</td></tr>
1390 </tbody></table></div>
1391 <h4>Returns</h4>
1392 <p>URI status</p>
1393 <!-- NEW PAGE -->
1394 <h3 class='title'><a name='httpBlocking'>httpBlocking()</a></h3>
1395 <h4>Description</h4>
1396 <p>Set blocking/non-blocking behavior on a connection.
1397 <h4>Syntax</h4>
1398 <p><tt>
1399 void<br>
1400 httpBlocking(
1401 <a href='#http_t'>http_t</a> * http,
1402 int b);
1403 </tt></p>
1404 <h4>Arguments</h4>
1405 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
1406 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1407 <tbody>
1408 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
1409 <tr><td><tt>b</tt></td><td>1 = blocking, 0 = non-blocking</td></tr>
1410 </tbody></table></div>
1411 <h4>Returns</h4>
1412 <p>Nothing.</p>
1413 <!-- NEW PAGE -->
1414 <h3 class='title'><a name='httpCheck'>httpCheck()</a></h3>
1415 <h4>Description</h4>
1416 <p>Check to see if there is a pending response from the server.
1417 <h4>Syntax</h4>
1418 <p><tt>
1419 int<br>
1420 httpCheck(
1421 <a href='#http_t'>http_t</a> * http);
1422 </tt></p>
1423 <h4>Arguments</h4>
1424 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
1425 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1426 <tbody>
1427 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
1428 </tbody></table></div>
1429 <h4>Returns</h4>
1430 <p>0 = no data, 1 = data available</p>
1431 <!-- NEW PAGE -->
1432 <h3 class='title'><span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span><a name='httpClearCookie'>httpClearCookie()</a></h3>
1433 <h4>Description</h4>
1434 <p>Clear the cookie value(s).
1435
1436
1437 <h4>Syntax</h4>
1438 <p><tt>
1439 void<br>
1440 httpClearCookie(
1441 <a href='#http_t'>http_t</a> * http);
1442 </tt></p>
1443 <h4>Arguments</h4>
1444 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
1445 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1446 <tbody>
1447 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
1448 </tbody></table></div>
1449 <h4>Returns</h4>
1450 <p>Nothing.</p>
1451 <!-- NEW PAGE -->
1452 <h3 class='title'><a name='httpClearFields'>httpClearFields()</a></h3>
1453 <h4>Description</h4>
1454 <p>Clear HTTP request fields.
1455 <h4>Syntax</h4>
1456 <p><tt>
1457 void<br>
1458 httpClearFields(
1459 <a href='#http_t'>http_t</a> * http);
1460 </tt></p>
1461 <h4>Arguments</h4>
1462 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
1463 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1464 <tbody>
1465 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
1466 </tbody></table></div>
1467 <h4>Returns</h4>
1468 <p>Nothing.</p>
1469 <!-- NEW PAGE -->
1470 <h3 class='title'><a name='httpClose'>httpClose()</a></h3>
1471 <h4>Description</h4>
1472 <p>Close an HTTP connection...
1473 <h4>Syntax</h4>
1474 <p><tt>
1475 void<br>
1476 httpClose(
1477 <a href='#http_t'>http_t</a> * http);
1478 </tt></p>
1479 <h4>Arguments</h4>
1480 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
1481 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1482 <tbody>
1483 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
1484 </tbody></table></div>
1485 <h4>Returns</h4>
1486 <p>Nothing.</p>
1487 <!-- NEW PAGE -->
1488 <h3 class='title'><a name='httpConnect'>httpConnect()</a></h3>
1489 <h4>Description</h4>
1490 <p>Connect to a HTTP server.
1491 <h4>Syntax</h4>
1492 <p><tt>
1493 <a href='#http_t'>http_t</a> *<br>
1494 httpConnect(
1495 const char * host,
1496 int port);
1497 </tt></p>
1498 <h4>Arguments</h4>
1499 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
1500 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1501 <tbody>
1502 <tr><td><tt>host</tt></td><td>Host to connect to</td></tr>
1503 <tr><td><tt>port</tt></td><td>Port number</td></tr>
1504 </tbody></table></div>
1505 <h4>Returns</h4>
1506 <p>New HTTP connection</p>
1507 <!-- NEW PAGE -->
1508 <h3 class='title'><a name='httpConnectEncrypt'>httpConnectEncrypt()</a></h3>
1509 <h4>Description</h4>
1510 <p>Connect to a HTTP server using encryption.
1511 <h4>Syntax</h4>
1512 <p><tt>
1513 <a href='#http_t'>http_t</a> *<br>
1514 httpConnectEncrypt(
1515 const char * host,
1516 int port,
1517 <a href='#http_encryption_t'>http_encryption_t</a> encryption);
1518 </tt></p>
1519 <h4>Arguments</h4>
1520 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
1521 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1522 <tbody>
1523 <tr><td><tt>host</tt></td><td>Host to connect to</td></tr>
1524 <tr><td><tt>port</tt></td><td>Port number</td></tr>
1525 <tr><td><tt>encryption</tt></td><td>Type of encryption to use</td></tr>
1526 </tbody></table></div>
1527 <h4>Returns</h4>
1528 <p>New HTTP connection</p>
1529 <!-- NEW PAGE -->
1530 <h3 class='title'><span class='info'>&nbsp;DEPRECATED&nbsp;</span><a name='httpDecode64'>httpDecode64()</a></h3>
1531 <h4>Description</h4>
1532 <p>Base64-decode a string.
1533 <p>This function is deprecated. Use the httpDecode64_2() function instead
1534 which provides buffer length arguments.
1535
1536
1537 <h4>Syntax</h4>
1538 <p><tt>
1539 char *<br>
1540 httpDecode64(
1541 char * out,
1542 const char * in);
1543 </tt></p>
1544 <h4>Arguments</h4>
1545 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
1546 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1547 <tbody>
1548 <tr><td><tt>out</tt></td><td>String to write to</td></tr>
1549 <tr><td><tt>in</tt></td><td>String to read from</td></tr>
1550 </tbody></table></div>
1551 <h4>Returns</h4>
1552 <p>Decoded string</p>
1553 <!-- NEW PAGE -->
1554 <h3 class='title'><span class='info'>&nbsp;CUPS 1.1.21&nbsp;</span><a name='httpDecode64_2'>httpDecode64_2()</a></h3>
1555 <h4>Description</h4>
1556 <p>Base64-decode a string.
1557
1558
1559 <h4>Syntax</h4>
1560 <p><tt>
1561 char *<br>
1562 httpDecode64_2(
1563 char * out,
1564 int * outlen,
1565 const char * in);
1566 </tt></p>
1567 <h4>Arguments</h4>
1568 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
1569 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1570 <tbody>
1571 <tr><td><tt>out</tt></td><td>String to write to</td></tr>
1572 <tr><td><tt>outlen</tt></td><td>Size of output string</td></tr>
1573 <tr><td><tt>in</tt></td><td>String to read from</td></tr>
1574 </tbody></table></div>
1575 <h4>Returns</h4>
1576 <p>Decoded string</p>
1577 <!-- NEW PAGE -->
1578 <h3 class='title'><a name='httpDelete'>httpDelete()</a></h3>
1579 <h4>Description</h4>
1580 <p>Send a DELETE request to the server.
1581 <h4>Syntax</h4>
1582 <p><tt>
1583 int<br>
1584 httpDelete(
1585 <a href='#http_t'>http_t</a> * http,
1586 const char * uri);
1587 </tt></p>
1588 <h4>Arguments</h4>
1589 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
1590 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1591 <tbody>
1592 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
1593 <tr><td><tt>uri</tt></td><td>URI to delete</td></tr>
1594 </tbody></table></div>
1595 <h4>Returns</h4>
1596 <p>Status of call (0 = success)</p>
1597 <!-- NEW PAGE -->
1598 <h3 class='title'><span class='info'>&nbsp;DEPRECATED&nbsp;</span><a name='httpEncode64'>httpEncode64()</a></h3>
1599 <h4>Description</h4>
1600 <p>Base64-encode a string.
1601 <p>This function is deprecated. Use the httpEncode64_2() function instead
1602 which provides buffer length arguments.
1603
1604
1605 <h4>Syntax</h4>
1606 <p><tt>
1607 char *<br>
1608 httpEncode64(
1609 char * out,
1610 const char * in);
1611 </tt></p>
1612 <h4>Arguments</h4>
1613 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
1614 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1615 <tbody>
1616 <tr><td><tt>out</tt></td><td>String to write to</td></tr>
1617 <tr><td><tt>in</tt></td><td>String to read from</td></tr>
1618 </tbody></table></div>
1619 <h4>Returns</h4>
1620 <p>Encoded string</p>
1621 <!-- NEW PAGE -->
1622 <h3 class='title'><span class='info'>&nbsp;CUPS 1.1.21&nbsp;</span><a name='httpEncode64_2'>httpEncode64_2()</a></h3>
1623 <h4>Description</h4>
1624 <p>Base64-encode a string.
1625
1626
1627 <h4>Syntax</h4>
1628 <p><tt>
1629 char *<br>
1630 httpEncode64_2(
1631 char * out,
1632 int outlen,
1633 const char * in,
1634 int inlen);
1635 </tt></p>
1636 <h4>Arguments</h4>
1637 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
1638 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1639 <tbody>
1640 <tr><td><tt>out</tt></td><td>String to write to</td></tr>
1641 <tr><td><tt>outlen</tt></td><td>Size of output string</td></tr>
1642 <tr><td><tt>in</tt></td><td>String to read from</td></tr>
1643 <tr><td><tt>inlen</tt></td><td>Size of input string</td></tr>
1644 </tbody></table></div>
1645 <h4>Returns</h4>
1646 <p>Encoded string</p>
1647 <!-- NEW PAGE -->
1648 <h3 class='title'><a name='httpEncryption'>httpEncryption()</a></h3>
1649 <h4>Description</h4>
1650 <p>Set the required encryption on the link.
1651 <h4>Syntax</h4>
1652 <p><tt>
1653 int<br>
1654 httpEncryption(
1655 <a href='#http_t'>http_t</a> * http,
1656 <a href='#http_encryption_t'>http_encryption_t</a> e);
1657 </tt></p>
1658 <h4>Arguments</h4>
1659 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
1660 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1661 <tbody>
1662 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
1663 <tr><td><tt>e</tt></td><td>New encryption preference</td></tr>
1664 </tbody></table></div>
1665 <h4>Returns</h4>
1666 <p>-1 on error, 0 on success</p>
1667 <!-- NEW PAGE -->
1668 <h3 class='title'><a name='httpError'>httpError()</a></h3>
1669 <h4>Description</h4>
1670 <p>Get the last error on a connection.
1671 <h4>Syntax</h4>
1672 <p><tt>
1673 int<br>
1674 httpError(
1675 <a href='#http_t'>http_t</a> * http);
1676 </tt></p>
1677 <h4>Arguments</h4>
1678 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
1679 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1680 <tbody>
1681 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
1682 </tbody></table></div>
1683 <h4>Returns</h4>
1684 <p>Error code (errno) value</p>
1685 <!-- NEW PAGE -->
1686 <h3 class='title'><a name='httpFlush'>httpFlush()</a></h3>
1687 <h4>Description</h4>
1688 <p>Flush data from a HTTP connection.
1689 <h4>Syntax</h4>
1690 <p><tt>
1691 void<br>
1692 httpFlush(
1693 <a href='#http_t'>http_t</a> * http);
1694 </tt></p>
1695 <h4>Arguments</h4>
1696 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
1697 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1698 <tbody>
1699 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
1700 </tbody></table></div>
1701 <h4>Returns</h4>
1702 <p>Nothing.</p>
1703 <!-- NEW PAGE -->
1704 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='httpFlushWrite'>httpFlushWrite()</a></h3>
1705 <h4>Description</h4>
1706 <p>Flush data in write buffer.
1707
1708
1709 <h4>Syntax</h4>
1710 <p><tt>
1711 int<br>
1712 httpFlushWrite(
1713 <a href='#http_t'>http_t</a> * http);
1714 </tt></p>
1715 <h4>Arguments</h4>
1716 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
1717 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1718 <tbody>
1719 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
1720 </tbody></table></div>
1721 <h4>Returns</h4>
1722 <p>Bytes written or -1 on error</p>
1723 <!-- NEW PAGE -->
1724 <h3 class='title'><a name='httpGet'>httpGet()</a></h3>
1725 <h4>Description</h4>
1726 <p>Send a GET request to the server.
1727 <h4>Syntax</h4>
1728 <p><tt>
1729 int<br>
1730 httpGet(
1731 <a href='#http_t'>http_t</a> * http,
1732 const char * uri);
1733 </tt></p>
1734 <h4>Arguments</h4>
1735 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
1736 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1737 <tbody>
1738 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
1739 <tr><td><tt>uri</tt></td><td>URI to get</td></tr>
1740 </tbody></table></div>
1741 <h4>Returns</h4>
1742 <p>Status of call (0 = success)</p>
1743 <!-- NEW PAGE -->
1744 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='httpGetBlocking'>httpGetBlocking()</a></h3>
1745 <h4>Description</h4>
1746 <p>Get the blocking/non-block state of a connection.
1747
1748
1749 <h4>Syntax</h4>
1750 <p><tt>
1751 int<br>
1752 httpGetBlocking(
1753 <a href='#http_t'>http_t</a> * http);
1754 </tt></p>
1755 <h4>Arguments</h4>
1756 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
1757 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1758 <tbody>
1759 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
1760 </tbody></table></div>
1761 <h4>Returns</h4>
1762 <p>1 if blocking, 0 if non-blocking</p>
1763 <!-- NEW PAGE -->
1764 <h3 class='title'><span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span><a name='httpGetCookie'>httpGetCookie()</a></h3>
1765 <h4>Description</h4>
1766 <p>Get any cookie data from the response.
1767
1768
1769 <h4>Syntax</h4>
1770 <p><tt>
1771 const char *<br>
1772 httpGetCookie(
1773 <a href='#http_t'>http_t</a> * http);
1774 </tt></p>
1775 <h4>Arguments</h4>
1776 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
1777 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1778 <tbody>
1779 <tr><td><tt>http</tt></td><td>HTTP connecion</td></tr>
1780 </tbody></table></div>
1781 <h4>Returns</h4>
1782 <p>Cookie data or NULL</p>
1783 <!-- NEW PAGE -->
1784 <h3 class='title'><span class='info'>&nbsp;DEPRECATED&nbsp;</span><a name='httpGetDateString'>httpGetDateString()</a></h3>
1785 <h4>Description</h4>
1786 <p>Get a formatted date/time string from a time value.
1787
1788
1789 <h4>Syntax</h4>
1790 <p><tt>
1791 const char *<br>
1792 httpGetDateString(
1793 time_t t);
1794 </tt></p>
1795 <h4>Arguments</h4>
1796 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
1797 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1798 <tbody>
1799 <tr><td><tt>t</tt></td><td>UNIX time</td></tr>
1800 </tbody></table></div>
1801 <h4>Returns</h4>
1802 <p>Date/time string</p>
1803 <!-- NEW PAGE -->
1804 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='httpGetDateString2'>httpGetDateString2()</a></h3>
1805 <h4>Description</h4>
1806 <p>Get a formatted date/time string from a time value.
1807
1808
1809 <h4>Syntax</h4>
1810 <p><tt>
1811 const char *<br>
1812 httpGetDateString2(
1813 time_t t,
1814 char * s,
1815 int slen);
1816 </tt></p>
1817 <h4>Arguments</h4>
1818 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
1819 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1820 <tbody>
1821 <tr><td><tt>t</tt></td><td>UNIX time</td></tr>
1822 <tr><td><tt>s</tt></td><td>String buffer</td></tr>
1823 <tr><td><tt>slen</tt></td><td>Size of string buffer</td></tr>
1824 </tbody></table></div>
1825 <h4>Returns</h4>
1826 <p>Date/time string</p>
1827 <!-- NEW PAGE -->
1828 <h3 class='title'><a name='httpGetDateTime'>httpGetDateTime()</a></h3>
1829 <h4>Description</h4>
1830 <p>Get a time value from a formatted date/time string.
1831 <h4>Syntax</h4>
1832 <p><tt>
1833 time_t<br>
1834 httpGetDateTime(
1835 const char * s);
1836 </tt></p>
1837 <h4>Arguments</h4>
1838 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
1839 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1840 <tbody>
1841 <tr><td><tt>s</tt></td><td>Date/time string</td></tr>
1842 </tbody></table></div>
1843 <h4>Returns</h4>
1844 <p>UNIX time</p>
1845 <!-- NEW PAGE -->
1846 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='httpGetFd'>httpGetFd()</a></h3>
1847 <h4>Description</h4>
1848 <p>Get the file descriptor associated with a connection.
1849
1850
1851 <h4>Syntax</h4>
1852 <p><tt>
1853 int<br>
1854 httpGetFd(
1855 <a href='#http_t'>http_t</a> * http);
1856 </tt></p>
1857 <h4>Arguments</h4>
1858 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
1859 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1860 <tbody>
1861 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
1862 </tbody></table></div>
1863 <h4>Returns</h4>
1864 <p>File descriptor or -1 if none</p>
1865 <!-- NEW PAGE -->
1866 <h3 class='title'><a name='httpGetField'>httpGetField()</a></h3>
1867 <h4>Description</h4>
1868 <p>Get a field value from a request/response.
1869 <h4>Syntax</h4>
1870 <p><tt>
1871 const char *<br>
1872 httpGetField(
1873 <a href='#http_t'>http_t</a> * http,
1874 http_field_t field);
1875 </tt></p>
1876 <h4>Arguments</h4>
1877 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
1878 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1879 <tbody>
1880 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
1881 <tr><td><tt>field</tt></td><td>Field to get</td></tr>
1882 </tbody></table></div>
1883 <h4>Returns</h4>
1884 <p>Field value</p>
1885 <!-- NEW PAGE -->
1886 <h3 class='title'><span class='info'>&nbsp;DEPRECATED&nbsp;</span><a name='httpGetHostByName'>httpGetHostByName()</a></h3>
1887 <h4>Description</h4>
1888 <p>Lookup a hostname or IPv4 address, and return
1889 address records for the specified name.
1890
1891
1892 <h4>Syntax</h4>
1893 <p><tt>
1894 struct hostent *<br>
1895 httpGetHostByName(
1896 const char * name);
1897 </tt></p>
1898 <h4>Arguments</h4>
1899 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
1900 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1901 <tbody>
1902 <tr><td><tt>name</tt></td><td>Hostname or IP address</td></tr>
1903 </tbody></table></div>
1904 <h4>Returns</h4>
1905 <p>Host entry</p>
1906 <!-- NEW PAGE -->
1907 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='httpGetHostname'>httpGetHostname()</a></h3>
1908 <h4>Description</h4>
1909 <p>Get the FQDN for the connection or local system.
1910 <p>When &quot;http&quot; points to a connected socket, return the hostname or
1911 address that was used in the call to httpConnect() or httpConnectEncrypt().
1912 Otherwise, return the FQDN for the local system using both gethostname()
1913 and gethostbyname() to get the local hostname with domain.
1914
1915
1916 <h4>Syntax</h4>
1917 <p><tt>
1918 const char *<br>
1919 httpGetHostname(
1920 <a href='#http_t'>http_t</a> * http,
1921 char * s,
1922 int slen);
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>http</tt></td><td>HTTP connection or NULL</td></tr>
1929 <tr><td><tt>s</tt></td><td>String buffer for name</td></tr>
1930 <tr><td><tt>slen</tt></td><td>Size of buffer</td></tr>
1931 </tbody></table></div>
1932 <h4>Returns</h4>
1933 <p>FQDN for connection or system</p>
1934 <!-- NEW PAGE -->
1935 <h3 class='title'><span class='info'>&nbsp;DEPRECATED&nbsp;</span><a name='httpGetLength'>httpGetLength()</a></h3>
1936 <h4>Description</h4>
1937 <p>Get the amount of data remaining from the
1938 content-length or transfer-encoding fields.
1939 <p>This function is deprecated and will not return lengths larger than
1940 2^31 - 1; use httpGetLength2() instead.
1941
1942
1943 <h4>Syntax</h4>
1944 <p><tt>
1945 int<br>
1946 httpGetLength(
1947 <a href='#http_t'>http_t</a> * http);
1948 </tt></p>
1949 <h4>Arguments</h4>
1950 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
1951 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1952 <tbody>
1953 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
1954 </tbody></table></div>
1955 <h4>Returns</h4>
1956 <p>Content length</p>
1957 <!-- NEW PAGE -->
1958 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='httpGetLength2'>httpGetLength2()</a></h3>
1959 <h4>Description</h4>
1960 <p>Get the amount of data remaining from the
1961 content-length or transfer-encoding fields.
1962 <p>This function returns the complete content length, even for
1963 content larger than 2^31 - 1.
1964
1965
1966 <h4>Syntax</h4>
1967 <p><tt>
1968 off_t<br>
1969 httpGetLength2(
1970 <a href='#http_t'>http_t</a> * http);
1971 </tt></p>
1972 <h4>Arguments</h4>
1973 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
1974 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1975 <tbody>
1976 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
1977 </tbody></table></div>
1978 <h4>Returns</h4>
1979 <p>Content length</p>
1980 <!-- NEW PAGE -->
1981 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='httpGetStatus'>httpGetStatus()</a></h3>
1982 <h4>Description</h4>
1983 <p>Get the status of the last HTTP request.
1984
1985
1986 <h4>Syntax</h4>
1987 <p><tt>
1988 http_status_t<br>
1989 httpGetStatus(
1990 <a href='#http_t'>http_t</a> * http);
1991 </tt></p>
1992 <h4>Arguments</h4>
1993 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
1994 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1995 <tbody>
1996 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
1997 </tbody></table></div>
1998 <h4>Returns</h4>
1999 <p>HTTP status</p>
2000 <!-- NEW PAGE -->
2001 <h3 class='title'><span class='info'>&nbsp;DEPRECATED&nbsp;</span><a name='httpGetSubField'>httpGetSubField()</a></h3>
2002 <h4>Description</h4>
2003 <p>Get a sub-field value.
2004
2005
2006 <h4>Syntax</h4>
2007 <p><tt>
2008 char *<br>
2009 httpGetSubField(
2010 <a href='#http_t'>http_t</a> * http,
2011 http_field_t field,
2012 const char * name,
2013 char * value);
2014 </tt></p>
2015 <h4>Arguments</h4>
2016 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
2017 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2018 <tbody>
2019 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
2020 <tr><td><tt>field</tt></td><td>Field index</td></tr>
2021 <tr><td><tt>name</tt></td><td>Name of sub-field</td></tr>
2022 <tr><td><tt>value</tt></td><td>Value string</td></tr>
2023 </tbody></table></div>
2024 <h4>Returns</h4>
2025 <p>Value or NULL</p>
2026 <!-- NEW PAGE -->
2027 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='httpGetSubField2'>httpGetSubField2()</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 httpGetSubField2(
2036 <a href='#http_t'>http_t</a> * http,
2037 http_field_t field,
2038 const char * name,
2039 char * value,
2040 int valuelen);
2041 </tt></p>
2042 <h4>Arguments</h4>
2043 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
2044 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2045 <tbody>
2046 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
2047 <tr><td><tt>field</tt></td><td>Field index</td></tr>
2048 <tr><td><tt>name</tt></td><td>Name of sub-field</td></tr>
2049 <tr><td><tt>value</tt></td><td>Value string</td></tr>
2050 <tr><td><tt>valuelen</tt></td><td>Size of value buffer</td></tr>
2051 </tbody></table></div>
2052 <h4>Returns</h4>
2053 <p>Value or NULL</p>
2054 <!-- NEW PAGE -->
2055 <h3 class='title'><a name='httpGets'>httpGets()</a></h3>
2056 <h4>Description</h4>
2057 <p>Get a line of text from a HTTP connection.
2058 <h4>Syntax</h4>
2059 <p><tt>
2060 char *<br>
2061 httpGets(
2062 char * line,
2063 int length,
2064 <a href='#http_t'>http_t</a> * http);
2065 </tt></p>
2066 <h4>Arguments</h4>
2067 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
2068 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2069 <tbody>
2070 <tr><td><tt>line</tt></td><td>Line to read into</td></tr>
2071 <tr><td><tt>length</tt></td><td>Max length of buffer</td></tr>
2072 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
2073 </tbody></table></div>
2074 <h4>Returns</h4>
2075 <p>Line or NULL</p>
2076 <!-- NEW PAGE -->
2077 <h3 class='title'><a name='httpHead'>httpHead()</a></h3>
2078 <h4>Description</h4>
2079 <p>Send a HEAD request to the server.
2080 <h4>Syntax</h4>
2081 <p><tt>
2082 int<br>
2083 httpHead(
2084 <a href='#http_t'>http_t</a> * http,
2085 const char * uri);
2086 </tt></p>
2087 <h4>Arguments</h4>
2088 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
2089 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2090 <tbody>
2091 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
2092 <tr><td><tt>uri</tt></td><td>URI for head</td></tr>
2093 </tbody></table></div>
2094 <h4>Returns</h4>
2095 <p>Status of call (0 = success)</p>
2096 <!-- NEW PAGE -->
2097 <h3 class='title'><a name='httpInitialize'>httpInitialize()</a></h3>
2098 <h4>Description</h4>
2099 <p>Initialize the HTTP interface library and set the
2100 default HTTP proxy (if any).
2101 <h4>Syntax</h4>
2102 <p><tt>
2103 void<br>
2104 httpInitialize(void);
2105 </tt></p>
2106 <h4>Arguments</h4>
2107 <p>None.</p>
2108 <h4>Returns</h4>
2109 <p>Nothing.</p>
2110 <!-- NEW PAGE -->
2111 <h3 class='title'><a name='httpMD5'>httpMD5()</a></h3>
2112 <h4>Description</h4>
2113 <p>Compute the MD5 sum of the username:group:password.
2114 <h4>Syntax</h4>
2115 <p><tt>
2116 char *<br>
2117 httpMD5(
2118 const char * username,
2119 const char * realm,
2120 const char * passwd,
2121 char md5[33]);
2122 </tt></p>
2123 <h4>Arguments</h4>
2124 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
2125 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2126 <tbody>
2127 <tr><td><tt>username</tt></td><td>User name</td></tr>
2128 <tr><td><tt>realm</tt></td><td>Realm name</td></tr>
2129 <tr><td><tt>passwd</tt></td><td>Password string</td></tr>
2130 <tr><td><tt>md5[33]</tt></td><td>MD5 string</td></tr>
2131 </tbody></table></div>
2132 <h4>Returns</h4>
2133 <p>MD5 sum</p>
2134 <!-- NEW PAGE -->
2135 <h3 class='title'><a name='httpMD5Final'>httpMD5Final()</a></h3>
2136 <h4>Description</h4>
2137 <p>Combine the MD5 sum of the username, group, and password
2138 with the server-supplied nonce value, method, and
2139 request-uri.
2140 <h4>Syntax</h4>
2141 <p><tt>
2142 char *<br>
2143 httpMD5Final(
2144 const char * nonce,
2145 const char * method,
2146 const char * resource,
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>nonce</tt></td><td>Server nonce value</td></tr>
2154 <tr><td><tt>method</tt></td><td>METHOD (GET, POST, etc.)</td></tr>
2155 <tr><td><tt>resource</tt></td><td>Resource path</td></tr>
2156 <tr><td><tt>md5[33]</tt></td><td>MD5 sum</td></tr>
2157 </tbody></table></div>
2158 <h4>Returns</h4>
2159 <p>New sum</p>
2160 <!-- NEW PAGE -->
2161 <h3 class='title'><a name='httpMD5String'>httpMD5String()</a></h3>
2162 <h4>Description</h4>
2163 <p>Convert an MD5 sum to a character string.
2164 <h4>Syntax</h4>
2165 <p><tt>
2166 char *<br>
2167 httpMD5String(
2168 const unsigned char * sum,
2169 char md5[33]);
2170 </tt></p>
2171 <h4>Arguments</h4>
2172 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
2173 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2174 <tbody>
2175 <tr><td><tt>sum</tt></td><td>MD5 sum data</td></tr>
2176 <tr><td><tt>md5[33]</tt></td><td>MD5 sum in hex</td></tr>
2177 </tbody></table></div>
2178 <h4>Returns</h4>
2179 <p>MD5 sum in hex</p>
2180 <!-- NEW PAGE -->
2181 <h3 class='title'><a name='httpOptions'>httpOptions()</a></h3>
2182 <h4>Description</h4>
2183 <p>Send an OPTIONS request to the server.
2184 <h4>Syntax</h4>
2185 <p><tt>
2186 int<br>
2187 httpOptions(
2188 <a href='#http_t'>http_t</a> * http,
2189 const char * uri);
2190 </tt></p>
2191 <h4>Arguments</h4>
2192 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
2193 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2194 <tbody>
2195 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
2196 <tr><td><tt>uri</tt></td><td>URI for options</td></tr>
2197 </tbody></table></div>
2198 <h4>Returns</h4>
2199 <p>Status of call (0 = success)</p>
2200 <!-- NEW PAGE -->
2201 <h3 class='title'><a name='httpPost'>httpPost()</a></h3>
2202 <h4>Description</h4>
2203 <p>Send a POST request to the server.
2204 <h4>Syntax</h4>
2205 <p><tt>
2206 int<br>
2207 httpPost(
2208 <a href='#http_t'>http_t</a> * http,
2209 const char * uri);
2210 </tt></p>
2211 <h4>Arguments</h4>
2212 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
2213 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2214 <tbody>
2215 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
2216 <tr><td><tt>uri</tt></td><td>URI for post</td></tr>
2217 </tbody></table></div>
2218 <h4>Returns</h4>
2219 <p>Status of call (0 = success)</p>
2220 <!-- NEW PAGE -->
2221 <h3 class='title'><a name='httpPut'>httpPut()</a></h3>
2222 <h4>Description</h4>
2223 <p>Send a PUT request to the server.
2224 <h4>Syntax</h4>
2225 <p><tt>
2226 int<br>
2227 httpPut(
2228 <a href='#http_t'>http_t</a> * http,
2229 const char * uri);
2230 </tt></p>
2231 <h4>Arguments</h4>
2232 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
2233 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2234 <tbody>
2235 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
2236 <tr><td><tt>uri</tt></td><td>URI to put</td></tr>
2237 </tbody></table></div>
2238 <h4>Returns</h4>
2239 <p>Status of call (0 = success)</p>
2240 <!-- NEW PAGE -->
2241 <h3 class='title'><span class='info'>&nbsp;DEPRECATED&nbsp;</span><a name='httpRead'>httpRead()</a></h3>
2242 <h4>Description</h4>
2243 <p>Read data from a HTTP connection.
2244 <p>This function is deprecated. Use the httpRead2() function which can
2245 read more than 2GB of data.
2246
2247
2248 <h4>Syntax</h4>
2249 <p><tt>
2250 int<br>
2251 httpRead(
2252 <a href='#http_t'>http_t</a> * http,
2253 char * buffer,
2254 int length);
2255 </tt></p>
2256 <h4>Arguments</h4>
2257 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
2258 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2259 <tbody>
2260 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
2261 <tr><td><tt>buffer</tt></td><td>Buffer for data</td></tr>
2262 <tr><td><tt>length</tt></td><td>Maximum number of bytes</td></tr>
2263 </tbody></table></div>
2264 <h4>Returns</h4>
2265 <p>Number of bytes read</p>
2266 <!-- NEW PAGE -->
2267 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='httpRead2'>httpRead2()</a></h3>
2268 <h4>Description</h4>
2269 <p>Read data from a HTTP connection.
2270
2271
2272 <h4>Syntax</h4>
2273 <p><tt>
2274 <a href='#ssize_t'>ssize_t</a><br>
2275 httpRead2(
2276 <a href='#http_t'>http_t</a> * http,
2277 char * buffer,
2278 size_t length);
2279 </tt></p>
2280 <h4>Arguments</h4>
2281 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
2282 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2283 <tbody>
2284 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
2285 <tr><td><tt>buffer</tt></td><td>Buffer for data</td></tr>
2286 <tr><td><tt>length</tt></td><td>Maximum number of bytes</td></tr>
2287 </tbody></table></div>
2288 <h4>Returns</h4>
2289 <p>Number of bytes read</p>
2290 <!-- NEW PAGE -->
2291 <h3 class='title'><a name='httpReconnect'>httpReconnect()</a></h3>
2292 <h4>Description</h4>
2293 <p>Reconnect to a HTTP server.
2294 <h4>Syntax</h4>
2295 <p><tt>
2296 int<br>
2297 httpReconnect(
2298 <a href='#http_t'>http_t</a> * http);
2299 </tt></p>
2300 <h4>Arguments</h4>
2301 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
2302 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2303 <tbody>
2304 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
2305 </tbody></table></div>
2306 <h4>Returns</h4>
2307 <p>0 on success, non-zero on failure</p>
2308 <!-- NEW PAGE -->
2309 <h3 class='title'><span class='info'>&nbsp;DEPRECATED&nbsp;</span><a name='httpSeparate'>httpSeparate()</a></h3>
2310 <h4>Description</h4>
2311 <p>Separate a Universal Resource Identifier into its
2312 components.
2313 <p>This function is deprecated; use the httpSeparateURI() function instead.
2314
2315
2316 <h4>Syntax</h4>
2317 <p><tt>
2318 void<br>
2319 httpSeparate(
2320 const char * uri,
2321 char * scheme,
2322 char * username,
2323 char * host,
2324 int * port,
2325 char * resource);
2326 </tt></p>
2327 <h4>Arguments</h4>
2328 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
2329 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2330 <tbody>
2331 <tr><td><tt>uri</tt></td><td>Universal Resource Identifier</td></tr>
2332 <tr><td><tt>scheme</tt></td><td>Scheme [32] (http, https, etc.)</td></tr>
2333 <tr><td><tt>username</tt></td><td>Username [1024]</td></tr>
2334 <tr><td><tt>host</tt></td><td>Hostname [1024]</td></tr>
2335 <tr><td><tt>port</tt></td><td>Port number to use</td></tr>
2336 <tr><td><tt>resource</tt></td><td>Resource/filename [1024]</td></tr>
2337 </tbody></table></div>
2338 <h4>Returns</h4>
2339 <p>Nothing.</p>
2340 <!-- NEW PAGE -->
2341 <h3 class='title'><span class='info'>&nbsp;CUPS 1.1.21&nbsp;</span><a name='httpSeparate2'>httpSeparate2()</a></h3>
2342 <h4>Description</h4>
2343 <p>Separate a Universal Resource Identifier into its
2344 components.
2345 <p>This function is deprecated; use the httpSeparateURI() function instead.
2346
2347
2348
2349 <h4>Syntax</h4>
2350 <p><tt>
2351 void<br>
2352 httpSeparate2(
2353 const char * uri,
2354 char * scheme,
2355 int schemelen,
2356 char * username,
2357 int usernamelen,
2358 char * host,
2359 int hostlen,
2360 int * port,
2361 char * resource,
2362 int resourcelen);
2363 </tt></p>
2364 <h4>Arguments</h4>
2365 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
2366 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2367 <tbody>
2368 <tr><td><tt>uri</tt></td><td>Universal Resource Identifier</td></tr>
2369 <tr><td><tt>scheme</tt></td><td>Scheme (http, https, etc.)</td></tr>
2370 <tr><td><tt>schemelen</tt></td><td>Size of scheme buffer</td></tr>
2371 <tr><td><tt>username</tt></td><td>Username</td></tr>
2372 <tr><td><tt>usernamelen</tt></td><td>Size of username buffer</td></tr>
2373 <tr><td><tt>host</tt></td><td>Hostname</td></tr>
2374 <tr><td><tt>hostlen</tt></td><td>Size of hostname buffer</td></tr>
2375 <tr><td><tt>port</tt></td><td>Port number to use</td></tr>
2376 <tr><td><tt>resource</tt></td><td>Resource/filename</td></tr>
2377 <tr><td><tt>resourcelen</tt></td><td>Size of resource buffer</td></tr>
2378 </tbody></table></div>
2379 <h4>Returns</h4>
2380 <p>Nothing.</p>
2381 <!-- NEW PAGE -->
2382 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='httpSeparateURI'>httpSeparateURI()</a></h3>
2383 <h4>Description</h4>
2384 <p>Separate a Universal Resource Identifier into its
2385 components.
2386
2387
2388 <h4>Syntax</h4>
2389 <p><tt>
2390 http_uri_status_t<br>
2391 httpSeparateURI(
2392 http_uri_coding_t decoding,
2393 const char * uri,
2394 char * scheme,
2395 int schemelen,
2396 char * username,
2397 int usernamelen,
2398 char * host,
2399 int hostlen,
2400 int * port,
2401 char * resource,
2402 int resourcelen);
2403 </tt></p>
2404 <h4>Arguments</h4>
2405 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
2406 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2407 <tbody>
2408 <tr><td><tt>decoding</tt></td><td>Decoding flags</td></tr>
2409 <tr><td><tt>uri</tt></td><td>Universal Resource Identifier</td></tr>
2410 <tr><td><tt>scheme</tt></td><td>Scheme (http, https, etc.)</td></tr>
2411 <tr><td><tt>schemelen</tt></td><td>Size of scheme buffer</td></tr>
2412 <tr><td><tt>username</tt></td><td>Username</td></tr>
2413 <tr><td><tt>usernamelen</tt></td><td>Size of username buffer</td></tr>
2414 <tr><td><tt>host</tt></td><td>Hostname</td></tr>
2415 <tr><td><tt>hostlen</tt></td><td>Size of hostname buffer</td></tr>
2416 <tr><td><tt>port</tt></td><td>Port number to use</td></tr>
2417 <tr><td><tt>resource</tt></td><td>Resource/filename</td></tr>
2418 <tr><td><tt>resourcelen</tt></td><td>Size of resource buffer</td></tr>
2419 </tbody></table></div>
2420 <h4>Returns</h4>
2421 <p>Result of separation</p>
2422 <!-- NEW PAGE -->
2423 <h3 class='title'><span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span><a name='httpSetCookie'>httpSetCookie()</a></h3>
2424 <h4>Description</h4>
2425 <p>Set the cookie value(s)...
2426
2427
2428 <h4>Syntax</h4>
2429 <p><tt>
2430 void<br>
2431 httpSetCookie(
2432 <a href='#http_t'>http_t</a> * http,
2433 const char * cookie);
2434 </tt></p>
2435 <h4>Arguments</h4>
2436 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
2437 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2438 <tbody>
2439 <tr><td><tt>http</tt></td><td>Connection</td></tr>
2440 <tr><td><tt>cookie</tt></td><td>Cookie string</td></tr>
2441 </tbody></table></div>
2442 <h4>Returns</h4>
2443 <p>Nothing.</p>
2444 <!-- NEW PAGE -->
2445 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='httpSetExpect'>httpSetExpect()</a></h3>
2446 <h4>Description</h4>
2447 <p>Set the Expect: header in a request.
2448 <p>Currently only HTTP_CONTINUE is supported for the &quot;expect&quot; argument.
2449
2450
2451 <h4>Syntax</h4>
2452 <p><tt>
2453 void<br>
2454 httpSetExpect(
2455 <a href='#http_t'>http_t</a> * http,
2456 http_status_t expect);
2457 </tt></p>
2458 <h4>Arguments</h4>
2459 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
2460 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2461 <tbody>
2462 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
2463 <tr><td><tt>expect</tt></td><td>HTTP status to expect (HTTP_CONTINUE)</td></tr>
2464 </tbody></table></div>
2465 <h4>Returns</h4>
2466 <p>Nothing.</p>
2467 <!-- NEW PAGE -->
2468 <h3 class='title'><a name='httpSetField'>httpSetField()</a></h3>
2469 <h4>Description</h4>
2470 <p>Set the value of an HTTP header.
2471 <h4>Syntax</h4>
2472 <p><tt>
2473 void<br>
2474 httpSetField(
2475 <a href='#http_t'>http_t</a> * http,
2476 http_field_t field,
2477 const char * value);
2478 </tt></p>
2479 <h4>Arguments</h4>
2480 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
2481 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2482 <tbody>
2483 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
2484 <tr><td><tt>field</tt></td><td>Field index</td></tr>
2485 <tr><td><tt>value</tt></td><td>Value</td></tr>
2486 </tbody></table></div>
2487 <h4>Returns</h4>
2488 <p>Nothing.</p>
2489 <!-- NEW PAGE -->
2490 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='httpSetLength'>httpSetLength()</a></h3>
2491 <h4>Description</h4>
2492 <p>Set the content-length and content-encoding.
2493
2494
2495 <h4>Syntax</h4>
2496 <p><tt>
2497 void<br>
2498 httpSetLength(
2499 <a href='#http_t'>http_t</a> * http,
2500 size_t length);
2501 </tt></p>
2502 <h4>Arguments</h4>
2503 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
2504 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2505 <tbody>
2506 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
2507 <tr><td><tt>length</tt></td><td>Length (0 for chunked)</td></tr>
2508 </tbody></table></div>
2509 <h4>Returns</h4>
2510 <p>Nothing.</p>
2511 <!-- NEW PAGE -->
2512 <h3 class='title'><a name='httpStatus'>httpStatus()</a></h3>
2513 <h4>Description</h4>
2514 <p>Return a short string describing a HTTP status code.
2515 <h4>Syntax</h4>
2516 <p><tt>
2517 const char *<br>
2518 httpStatus(
2519 http_status_t status);
2520 </tt></p>
2521 <h4>Arguments</h4>
2522 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
2523 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2524 <tbody>
2525 <tr><td><tt>status</tt></td><td>HTTP status code</td></tr>
2526 </tbody></table></div>
2527 <h4>Returns</h4>
2528 <p>String or NULL</p>
2529 <!-- NEW PAGE -->
2530 <h3 class='title'><a name='httpTrace'>httpTrace()</a></h3>
2531 <h4>Description</h4>
2532 <p>Send an TRACE request to the server.
2533 <h4>Syntax</h4>
2534 <p><tt>
2535 int<br>
2536 httpTrace(
2537 <a href='#http_t'>http_t</a> * http,
2538 const char * uri);
2539 </tt></p>
2540 <h4>Arguments</h4>
2541 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
2542 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2543 <tbody>
2544 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
2545 <tr><td><tt>uri</tt></td><td>URI for trace</td></tr>
2546 </tbody></table></div>
2547 <h4>Returns</h4>
2548 <p>Status of call (0 = success)</p>
2549 <!-- NEW PAGE -->
2550 <h3 class='title'><a name='httpUpdate'>httpUpdate()</a></h3>
2551 <h4>Description</h4>
2552 <p>Update the current HTTP state for incoming data.
2553 <h4>Syntax</h4>
2554 <p><tt>
2555 http_status_t<br>
2556 httpUpdate(
2557 <a href='#http_t'>http_t</a> * http);
2558 </tt></p>
2559 <h4>Arguments</h4>
2560 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
2561 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2562 <tbody>
2563 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
2564 </tbody></table></div>
2565 <h4>Returns</h4>
2566 <p>HTTP status</p>
2567 <!-- NEW PAGE -->
2568 <h3 class='title'><span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span><a name='httpWait'>httpWait()</a></h3>
2569 <h4>Description</h4>
2570 <p>Wait for data available on a connection.
2571
2572
2573 <h4>Syntax</h4>
2574 <p><tt>
2575 int<br>
2576 httpWait(
2577 <a href='#http_t'>http_t</a> * http,
2578 int msec);
2579 </tt></p>
2580 <h4>Arguments</h4>
2581 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
2582 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2583 <tbody>
2584 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
2585 <tr><td><tt>msec</tt></td><td>Milliseconds to wait</td></tr>
2586 </tbody></table></div>
2587 <h4>Returns</h4>
2588 <p>1 if data is available, 0 otherwise</p>
2589 <!-- NEW PAGE -->
2590 <h3 class='title'><span class='info'>&nbsp;DEPRECATED&nbsp;</span><a name='httpWrite'>httpWrite()</a></h3>
2591 <h4>Description</h4>
2592 <p>Write data to a HTTP connection.
2593 <p>This function is deprecated. Use the httpWrite2() function which can
2594 write more than 2GB of data.
2595
2596
2597 <h4>Syntax</h4>
2598 <p><tt>
2599 int<br>
2600 httpWrite(
2601 <a href='#http_t'>http_t</a> * http,
2602 const char * buffer,
2603 int length);
2604 </tt></p>
2605 <h4>Arguments</h4>
2606 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
2607 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2608 <tbody>
2609 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
2610 <tr><td><tt>buffer</tt></td><td>Buffer for data</td></tr>
2611 <tr><td><tt>length</tt></td><td>Number of bytes to write</td></tr>
2612 </tbody></table></div>
2613 <h4>Returns</h4>
2614 <p>Number of bytes written</p>
2615 <!-- NEW PAGE -->
2616 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='httpWrite2'>httpWrite2()</a></h3>
2617 <h4>Description</h4>
2618 <p>Write data to a HTTP connection.
2619
2620
2621 <h4>Syntax</h4>
2622 <p><tt>
2623 <a href='#ssize_t'>ssize_t</a><br>
2624 httpWrite2(
2625 <a href='#http_t'>http_t</a> * http,
2626 const char * buffer,
2627 size_t length);
2628 </tt></p>
2629 <h4>Arguments</h4>
2630 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
2631 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2632 <tbody>
2633 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
2634 <tr><td><tt>buffer</tt></td><td>Buffer for data</td></tr>
2635 <tr><td><tt>length</tt></td><td>Number of bytes to write</td></tr>
2636 </tbody></table></div>
2637 <h4>Returns</h4>
2638 <p>Number of bytes written</p>
2639 <!-- NEW PAGE -->
2640 <h3 class='title'><a name='ippAddBoolean'>ippAddBoolean()</a></h3>
2641 <h4>Description</h4>
2642 <p>Add a boolean attribute to an IPP message.
2643 <h4>Syntax</h4>
2644 <p><tt>
2645 <a href='#ipp_attribute_t'>ipp_attribute_t</a> *<br>
2646 ippAddBoolean(
2647 <a href='#ipp_t'>ipp_t</a> * ipp,
2648 ipp_tag_t group,
2649 const char * name,
2650 char value);
2651 </tt></p>
2652 <h4>Arguments</h4>
2653 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
2654 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2655 <tbody>
2656 <tr><td><tt>ipp</tt></td><td>IPP message</td></tr>
2657 <tr><td><tt>group</tt></td><td>IPP group</td></tr>
2658 <tr><td><tt>name</tt></td><td>Name of attribute</td></tr>
2659 <tr><td><tt>value</tt></td><td>Value of attribute</td></tr>
2660 </tbody></table></div>
2661 <h4>Returns</h4>
2662 <p>New attribute</p>
2663 <!-- NEW PAGE -->
2664 <h3 class='title'><a name='ippAddBooleans'>ippAddBooleans()</a></h3>
2665 <h4>Description</h4>
2666 <p>Add an array of boolean values.
2667 <h4>Syntax</h4>
2668 <p><tt>
2669 <a href='#ipp_attribute_t'>ipp_attribute_t</a> *<br>
2670 ippAddBooleans(
2671 <a href='#ipp_t'>ipp_t</a> * ipp,
2672 ipp_tag_t group,
2673 const char * name,
2674 int num_values,
2675 const char * values);
2676 </tt></p>
2677 <h4>Arguments</h4>
2678 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
2679 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2680 <tbody>
2681 <tr><td><tt>ipp</tt></td><td>IPP message</td></tr>
2682 <tr><td><tt>group</tt></td><td>IPP group</td></tr>
2683 <tr><td><tt>name</tt></td><td>Name of attribute</td></tr>
2684 <tr><td><tt>num_values</tt></td><td>Number of values</td></tr>
2685 <tr><td><tt>values</tt></td><td>Values</td></tr>
2686 </tbody></table></div>
2687 <h4>Returns</h4>
2688 <p>New attribute</p>
2689 <!-- NEW PAGE -->
2690 <h3 class='title'><span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span><a name='ippAddCollection'>ippAddCollection()</a></h3>
2691 <h4>Description</h4>
2692 <p>Add a collection value.
2693
2694
2695 <h4>Syntax</h4>
2696 <p><tt>
2697 <a href='#ipp_attribute_t'>ipp_attribute_t</a> *<br>
2698 ippAddCollection(
2699 <a href='#ipp_t'>ipp_t</a> * ipp,
2700 ipp_tag_t group,
2701 const char * name,
2702 <a href='#ipp_t'>ipp_t</a> * value);
2703 </tt></p>
2704 <h4>Arguments</h4>
2705 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
2706 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2707 <tbody>
2708 <tr><td><tt>ipp</tt></td><td>IPP message</td></tr>
2709 <tr><td><tt>group</tt></td><td>IPP group</td></tr>
2710 <tr><td><tt>name</tt></td><td>Name of attribute</td></tr>
2711 <tr><td><tt>value</tt></td><td>Value</td></tr>
2712 </tbody></table></div>
2713 <h4>Returns</h4>
2714 <p>New attribute</p>
2715 <!-- NEW PAGE -->
2716 <h3 class='title'><span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span><a name='ippAddCollections'>ippAddCollections()</a></h3>
2717 <h4>Description</h4>
2718 <p>Add an array of collection values.
2719
2720
2721 <h4>Syntax</h4>
2722 <p><tt>
2723 <a href='#ipp_attribute_t'>ipp_attribute_t</a> *<br>
2724 ippAddCollections(
2725 <a href='#ipp_t'>ipp_t</a> * ipp,
2726 ipp_tag_t group,
2727 const char * name,
2728 int num_values,
2729 const <a href='#ipp_t'>ipp_t</a> ** 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'><a name='ippAddDate'>ippAddDate()</a></h3>
2745 <h4>Description</h4>
2746 <p>Add a date attribute to an IPP message.
2747 <h4>Syntax</h4>
2748 <p><tt>
2749 <a href='#ipp_attribute_t'>ipp_attribute_t</a> *<br>
2750 ippAddDate(
2751 <a href='#ipp_t'>ipp_t</a> * ipp,
2752 ipp_tag_t group,
2753 const char * name,
2754 const <a href='#ipp_uchar_t'>ipp_uchar_t</a> * value);
2755 </tt></p>
2756 <h4>Arguments</h4>
2757 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
2758 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2759 <tbody>
2760 <tr><td><tt>ipp</tt></td><td>IPP message</td></tr>
2761 <tr><td><tt>group</tt></td><td>IPP group</td></tr>
2762 <tr><td><tt>name</tt></td><td>Name of attribute</td></tr>
2763 <tr><td><tt>value</tt></td><td>Value</td></tr>
2764 </tbody></table></div>
2765 <h4>Returns</h4>
2766 <p>New attribute</p>
2767 <!-- NEW PAGE -->
2768 <h3 class='title'><a name='ippAddInteger'>ippAddInteger()</a></h3>
2769 <h4>Description</h4>
2770 <p>Add a integer attribute to an IPP message.
2771 <h4>Syntax</h4>
2772 <p><tt>
2773 <a href='#ipp_attribute_t'>ipp_attribute_t</a> *<br>
2774 ippAddInteger(
2775 <a href='#ipp_t'>ipp_t</a> * ipp,
2776 ipp_tag_t group,
2777 ipp_tag_t type,
2778 const char * name,
2779 int value);
2780 </tt></p>
2781 <h4>Arguments</h4>
2782 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
2783 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2784 <tbody>
2785 <tr><td><tt>ipp</tt></td><td>IPP message</td></tr>
2786 <tr><td><tt>group</tt></td><td>IPP group</td></tr>
2787 <tr><td><tt>type</tt></td><td>Type of attribute</td></tr>
2788 <tr><td><tt>name</tt></td><td>Name of attribute</td></tr>
2789 <tr><td><tt>value</tt></td><td>Value of attribute</td></tr>
2790 </tbody></table></div>
2791 <h4>Returns</h4>
2792 <p>New attribute</p>
2793 <!-- NEW PAGE -->
2794 <h3 class='title'><a name='ippAddIntegers'>ippAddIntegers()</a></h3>
2795 <h4>Description</h4>
2796 <p>Add an array of integer values.
2797 <h4>Syntax</h4>
2798 <p><tt>
2799 <a href='#ipp_attribute_t'>ipp_attribute_t</a> *<br>
2800 ippAddIntegers(
2801 <a href='#ipp_t'>ipp_t</a> * ipp,
2802 ipp_tag_t group,
2803 ipp_tag_t type,
2804 const char * name,
2805 int num_values,
2806 const int * values);
2807 </tt></p>
2808 <h4>Arguments</h4>
2809 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
2810 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2811 <tbody>
2812 <tr><td><tt>ipp</tt></td><td>IPP message</td></tr>
2813 <tr><td><tt>group</tt></td><td>IPP group</td></tr>
2814 <tr><td><tt>type</tt></td><td>Type of attribute</td></tr>
2815 <tr><td><tt>name</tt></td><td>Name of attribute</td></tr>
2816 <tr><td><tt>num_values</tt></td><td>Number of values</td></tr>
2817 <tr><td><tt>values</tt></td><td>Values</td></tr>
2818 </tbody></table></div>
2819 <h4>Returns</h4>
2820 <p>New attribute</p>
2821 <!-- NEW PAGE -->
2822 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='ippAddOctetString'>ippAddOctetString()</a></h3>
2823 <h4>Description</h4>
2824 <p>Add an octetString value to an IPP message.
2825
2826
2827 <h4>Syntax</h4>
2828 <p><tt>
2829 <a href='#ipp_attribute_t'>ipp_attribute_t</a> *<br>
2830 ippAddOctetString(
2831 <a href='#ipp_t'>ipp_t</a> * ipp,
2832 ipp_tag_t group,
2833 const char * name,
2834 const void * data,
2835 int datalen);
2836 </tt></p>
2837 <h4>Arguments</h4>
2838 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
2839 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2840 <tbody>
2841 <tr><td><tt>ipp</tt></td><td>IPP message</td></tr>
2842 <tr><td><tt>group</tt></td><td>IPP group</td></tr>
2843 <tr><td><tt>name</tt></td><td>Name of attribute</td></tr>
2844 <tr><td><tt>data</tt></td><td>octetString data</td></tr>
2845 <tr><td><tt>datalen</tt></td><td>Length of data in bytes</td></tr>
2846 </tbody></table></div>
2847 <h4>Returns</h4>
2848 <p>New attribute</p>
2849 <!-- NEW PAGE -->
2850 <h3 class='title'><a name='ippAddRange'>ippAddRange()</a></h3>
2851 <h4>Description</h4>
2852 <p>Add a range of values to an IPP message.
2853 <h4>Syntax</h4>
2854 <p><tt>
2855 <a href='#ipp_attribute_t'>ipp_attribute_t</a> *<br>
2856 ippAddRange(
2857 <a href='#ipp_t'>ipp_t</a> * ipp,
2858 ipp_tag_t group,
2859 const char * name,
2860 int lower,
2861 int upper);
2862 </tt></p>
2863 <h4>Arguments</h4>
2864 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
2865 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2866 <tbody>
2867 <tr><td><tt>ipp</tt></td><td>IPP message</td></tr>
2868 <tr><td><tt>group</tt></td><td>IPP group</td></tr>
2869 <tr><td><tt>name</tt></td><td>Name of attribute</td></tr>
2870 <tr><td><tt>lower</tt></td><td>Lower value</td></tr>
2871 <tr><td><tt>upper</tt></td><td>Upper value</td></tr>
2872 </tbody></table></div>
2873 <h4>Returns</h4>
2874 <p>New attribute</p>
2875 <!-- NEW PAGE -->
2876 <h3 class='title'><a name='ippAddRanges'>ippAddRanges()</a></h3>
2877 <h4>Description</h4>
2878 <p>Add ranges of values to an IPP message.
2879 <h4>Syntax</h4>
2880 <p><tt>
2881 <a href='#ipp_attribute_t'>ipp_attribute_t</a> *<br>
2882 ippAddRanges(
2883 <a href='#ipp_t'>ipp_t</a> * ipp,
2884 ipp_tag_t group,
2885 const char * name,
2886 int num_values,
2887 const int * lower,
2888 const int * upper);
2889 </tt></p>
2890 <h4>Arguments</h4>
2891 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
2892 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2893 <tbody>
2894 <tr><td><tt>ipp</tt></td><td>IPP message</td></tr>
2895 <tr><td><tt>group</tt></td><td>IPP group</td></tr>
2896 <tr><td><tt>name</tt></td><td>Name of attribute</td></tr>
2897 <tr><td><tt>num_values</tt></td><td>Number of values</td></tr>
2898 <tr><td><tt>lower</tt></td><td>Lower values</td></tr>
2899 <tr><td><tt>upper</tt></td><td>Upper values</td></tr>
2900 </tbody></table></div>
2901 <h4>Returns</h4>
2902 <p>New attribute</p>
2903 <!-- NEW PAGE -->
2904 <h3 class='title'><a name='ippAddResolution'>ippAddResolution()</a></h3>
2905 <h4>Description</h4>
2906 <p>Add a resolution value to an IPP message.
2907 <h4>Syntax</h4>
2908 <p><tt>
2909 <a href='#ipp_attribute_t'>ipp_attribute_t</a> *<br>
2910 ippAddResolution(
2911 <a href='#ipp_t'>ipp_t</a> * ipp,
2912 ipp_tag_t group,
2913 const char * name,
2914 ipp_res_t units,
2915 int xres,
2916 int yres);
2917 </tt></p>
2918 <h4>Arguments</h4>
2919 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
2920 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2921 <tbody>
2922 <tr><td><tt>ipp</tt></td><td>IPP message</td></tr>
2923 <tr><td><tt>group</tt></td><td>IPP group</td></tr>
2924 <tr><td><tt>name</tt></td><td>Name of attribute</td></tr>
2925 <tr><td><tt>units</tt></td><td>Units for resolution</td></tr>
2926 <tr><td><tt>xres</tt></td><td>X resolution</td></tr>
2927 <tr><td><tt>yres</tt></td><td>Y resolution</td></tr>
2928 </tbody></table></div>
2929 <h4>Returns</h4>
2930 <p>New attribute</p>
2931 <!-- NEW PAGE -->
2932 <h3 class='title'><a name='ippAddResolutions'>ippAddResolutions()</a></h3>
2933 <h4>Description</h4>
2934 <p>Add resolution values to an IPP message.
2935 <h4>Syntax</h4>
2936 <p><tt>
2937 <a href='#ipp_attribute_t'>ipp_attribute_t</a> *<br>
2938 ippAddResolutions(
2939 <a href='#ipp_t'>ipp_t</a> * ipp,
2940 ipp_tag_t group,
2941 const char * name,
2942 int num_values,
2943 ipp_res_t units,
2944 const int * xres,
2945 const int * yres);
2946 </tt></p>
2947 <h4>Arguments</h4>
2948 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
2949 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2950 <tbody>
2951 <tr><td><tt>ipp</tt></td><td>IPP message</td></tr>
2952 <tr><td><tt>group</tt></td><td>IPP group</td></tr>
2953 <tr><td><tt>name</tt></td><td>Name of attribute</td></tr>
2954 <tr><td><tt>num_values</tt></td><td>Number of values</td></tr>
2955 <tr><td><tt>units</tt></td><td>Units for resolution</td></tr>
2956 <tr><td><tt>xres</tt></td><td>X resolutions</td></tr>
2957 <tr><td><tt>yres</tt></td><td>Y resolutions</td></tr>
2958 </tbody></table></div>
2959 <h4>Returns</h4>
2960 <p>New attribute</p>
2961 <!-- NEW PAGE -->
2962 <h3 class='title'><a name='ippAddSeparator'>ippAddSeparator()</a></h3>
2963 <h4>Description</h4>
2964 <p>Add a group separator to an IPP message.
2965 <h4>Syntax</h4>
2966 <p><tt>
2967 <a href='#ipp_attribute_t'>ipp_attribute_t</a> *<br>
2968 ippAddSeparator(
2969 <a href='#ipp_t'>ipp_t</a> * ipp);
2970 </tt></p>
2971 <h4>Arguments</h4>
2972 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
2973 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2974 <tbody>
2975 <tr><td><tt>ipp</tt></td><td>IPP message</td></tr>
2976 </tbody></table></div>
2977 <h4>Returns</h4>
2978 <p>New attribute</p>
2979 <!-- NEW PAGE -->
2980 <h3 class='title'><a name='ippAddString'>ippAddString()</a></h3>
2981 <h4>Description</h4>
2982 <p>Add a language-encoded string to an IPP message.
2983 <h4>Syntax</h4>
2984 <p><tt>
2985 <a href='#ipp_attribute_t'>ipp_attribute_t</a> *<br>
2986 ippAddString(
2987 <a href='#ipp_t'>ipp_t</a> * ipp,
2988 ipp_tag_t group,
2989 ipp_tag_t type,
2990 const char * name,
2991 const char * charset,
2992 const char * value);
2993 </tt></p>
2994 <h4>Arguments</h4>
2995 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
2996 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2997 <tbody>
2998 <tr><td><tt>ipp</tt></td><td>IPP message</td></tr>
2999 <tr><td><tt>group</tt></td><td>IPP group</td></tr>
3000 <tr><td><tt>type</tt></td><td>Type of attribute</td></tr>
3001 <tr><td><tt>name</tt></td><td>Name of attribute</td></tr>
3002 <tr><td><tt>charset</tt></td><td>Character set</td></tr>
3003 <tr><td><tt>value</tt></td><td>Value</td></tr>
3004 </tbody></table></div>
3005 <h4>Returns</h4>
3006 <p>New attribute</p>
3007 <!-- NEW PAGE -->
3008 <h3 class='title'><a name='ippAddStrings'>ippAddStrings()</a></h3>
3009 <h4>Description</h4>
3010 <p>Add language-encoded strings to an IPP message.
3011 <h4>Syntax</h4>
3012 <p><tt>
3013 <a href='#ipp_attribute_t'>ipp_attribute_t</a> *<br>
3014 ippAddStrings(
3015 <a href='#ipp_t'>ipp_t</a> * ipp,
3016 ipp_tag_t group,
3017 ipp_tag_t type,
3018 const char * name,
3019 int num_values,
3020 const char * charset,
3021 const char *const * values);
3022 </tt></p>
3023 <h4>Arguments</h4>
3024 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
3025 <thead><tr><th>Name</th><th>Description</th></tr></thead>
3026 <tbody>
3027 <tr><td><tt>ipp</tt></td><td>IPP message</td></tr>
3028 <tr><td><tt>group</tt></td><td>IPP group</td></tr>
3029 <tr><td><tt>type</tt></td><td>Type of attribute</td></tr>
3030 <tr><td><tt>name</tt></td><td>Name of attribute</td></tr>
3031 <tr><td><tt>num_values</tt></td><td>Number of values</td></tr>
3032 <tr><td><tt>charset</tt></td><td>Character set</td></tr>
3033 <tr><td><tt>values</tt></td><td>Values</td></tr>
3034 </tbody></table></div>
3035 <h4>Returns</h4>
3036 <p>New attribute</p>
3037 <!-- NEW PAGE -->
3038 <h3 class='title'><a name='ippDateToTime'>ippDateToTime()</a></h3>
3039 <h4>Description</h4>
3040 <p>Convert from RFC 1903 Date/Time format to UNIX time
3041 in seconds.
3042 <h4>Syntax</h4>
3043 <p><tt>
3044 time_t<br>
3045 ippDateToTime(
3046 const <a href='#ipp_uchar_t'>ipp_uchar_t</a> * date);
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>date</tt></td><td>RFC 1903 date info</td></tr>
3053 </tbody></table></div>
3054 <h4>Returns</h4>
3055 <p>UNIX time value</p>
3056 <!-- NEW PAGE -->
3057 <h3 class='title'><a name='ippDelete'>ippDelete()</a></h3>
3058 <h4>Description</h4>
3059 <p>Delete an IPP message.
3060 <h4>Syntax</h4>
3061 <p><tt>
3062 void<br>
3063 ippDelete(
3064 <a href='#ipp_t'>ipp_t</a> * ipp);
3065 </tt></p>
3066 <h4>Arguments</h4>
3067 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
3068 <thead><tr><th>Name</th><th>Description</th></tr></thead>
3069 <tbody>
3070 <tr><td><tt>ipp</tt></td><td>IPP message</td></tr>
3071 </tbody></table></div>
3072 <h4>Returns</h4>
3073 <p>Nothing.</p>
3074 <!-- NEW PAGE -->
3075 <h3 class='title'><span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span><a name='ippDeleteAttribute'>ippDeleteAttribute()</a></h3>
3076 <h4>Description</h4>
3077 <p>Delete a single attribute in an IPP message.
3078
3079
3080 <h4>Syntax</h4>
3081 <p><tt>
3082 void<br>
3083 ippDeleteAttribute(
3084 <a href='#ipp_t'>ipp_t</a> * ipp,
3085 <a href='#ipp_attribute_t'>ipp_attribute_t</a> * attr);
3086 </tt></p>
3087 <h4>Arguments</h4>
3088 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
3089 <thead><tr><th>Name</th><th>Description</th></tr></thead>
3090 <tbody>
3091 <tr><td><tt>ipp</tt></td><td>IPP message</td></tr>
3092 <tr><td><tt>attr</tt></td><td>Attribute to delete</td></tr>
3093 </tbody></table></div>
3094 <h4>Returns</h4>
3095 <p>Nothing.</p>
3096 <!-- NEW PAGE -->
3097 <h3 class='title'><a name='ippErrorString'>ippErrorString()</a></h3>
3098 <h4>Description</h4>
3099 <p>Return a name for the given status code.
3100 <h4>Syntax</h4>
3101 <p><tt>
3102 const char *<br>
3103 ippErrorString(
3104 ipp_status_t error);
3105 </tt></p>
3106 <h4>Arguments</h4>
3107 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
3108 <thead><tr><th>Name</th><th>Description</th></tr></thead>
3109 <tbody>
3110 <tr><td><tt>error</tt></td><td>Error status</td></tr>
3111 </tbody></table></div>
3112 <h4>Returns</h4>
3113 <p>Text string</p>
3114 <!-- NEW PAGE -->
3115 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='ippErrorValue'>ippErrorValue()</a></h3>
3116 <h4>Description</h4>
3117 <p>Return a status code for the given name.
3118
3119
3120 <h4>Syntax</h4>
3121 <p><tt>
3122 ipp_status_t<br>
3123 ippErrorValue(
3124 const char * name);
3125 </tt></p>
3126 <h4>Arguments</h4>
3127 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
3128 <thead><tr><th>Name</th><th>Description</th></tr></thead>
3129 <tbody>
3130 <tr><td><tt>name</tt></td><td>Name</td></tr>
3131 </tbody></table></div>
3132 <h4>Returns</h4>
3133 <p>IPP status code</p>
3134 <!-- NEW PAGE -->
3135 <h3 class='title'><a name='ippFindAttribute'>ippFindAttribute()</a></h3>
3136 <h4>Description</h4>
3137 <p>Find a named attribute in a request...
3138 <h4>Syntax</h4>
3139 <p><tt>
3140 <a href='#ipp_attribute_t'>ipp_attribute_t</a> *<br>
3141 ippFindAttribute(
3142 <a href='#ipp_t'>ipp_t</a> * ipp,
3143 const char * name,
3144 ipp_tag_t type);
3145 </tt></p>
3146 <h4>Arguments</h4>
3147 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
3148 <thead><tr><th>Name</th><th>Description</th></tr></thead>
3149 <tbody>
3150 <tr><td><tt>ipp</tt></td><td>IPP message</td></tr>
3151 <tr><td><tt>name</tt></td><td>Name of attribute</td></tr>
3152 <tr><td><tt>type</tt></td><td>Type of attribute</td></tr>
3153 </tbody></table></div>
3154 <h4>Returns</h4>
3155 <p>Matching attribute</p>
3156 <!-- NEW PAGE -->
3157 <h3 class='title'><a name='ippFindNextAttribute'>ippFindNextAttribute()</a></h3>
3158 <h4>Description</h4>
3159 <p>Find the next named attribute in a request...
3160 <h4>Syntax</h4>
3161 <p><tt>
3162 <a href='#ipp_attribute_t'>ipp_attribute_t</a> *<br>
3163 ippFindNextAttribute(
3164 <a href='#ipp_t'>ipp_t</a> * ipp,
3165 const char * name,
3166 ipp_tag_t type);
3167 </tt></p>
3168 <h4>Arguments</h4>
3169 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
3170 <thead><tr><th>Name</th><th>Description</th></tr></thead>
3171 <tbody>
3172 <tr><td><tt>ipp</tt></td><td>IPP message</td></tr>
3173 <tr><td><tt>name</tt></td><td>Name of attribute</td></tr>
3174 <tr><td><tt>type</tt></td><td>Type of attribute</td></tr>
3175 </tbody></table></div>
3176 <h4>Returns</h4>
3177 <p>Matching attribute</p>
3178 <!-- NEW PAGE -->
3179 <h3 class='title'><a name='ippLength'>ippLength()</a></h3>
3180 <h4>Description</h4>
3181 <p>Compute the length of an IPP message.
3182 <h4>Syntax</h4>
3183 <p><tt>
3184 size_t<br>
3185 ippLength(
3186 <a href='#ipp_t'>ipp_t</a> * ipp);
3187 </tt></p>
3188 <h4>Arguments</h4>
3189 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
3190 <thead><tr><th>Name</th><th>Description</th></tr></thead>
3191 <tbody>
3192 <tr><td><tt>ipp</tt></td><td>IPP message</td></tr>
3193 </tbody></table></div>
3194 <h4>Returns</h4>
3195 <p>Size of IPP message</p>
3196 <!-- NEW PAGE -->
3197 <h3 class='title'><a name='ippNew'>ippNew()</a></h3>
3198 <h4>Description</h4>
3199 <p>Allocate a new IPP message.
3200 <h4>Syntax</h4>
3201 <p><tt>
3202 <a href='#ipp_t'>ipp_t</a> *<br>
3203 ippNew(void);
3204 </tt></p>
3205 <h4>Arguments</h4>
3206 <p>None.</p>
3207 <h4>Returns</h4>
3208 <p>New IPP message</p>
3209 <!-- NEW PAGE -->
3210 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='ippNewRequest'>ippNewRequest()</a></h3>
3211 <h4>Description</h4>
3212 <p>Allocate a new IPP request message.
3213 <p>The new request message is initialized with the attributes-charset and
3214 attributes-natural-language attributes added. The
3215 attributes-natural-language value is derived from the current locale.
3216
3217
3218 <h4>Syntax</h4>
3219 <p><tt>
3220 <a href='#ipp_t'>ipp_t</a> *<br>
3221 ippNewRequest(
3222 ipp_op_t op);
3223 </tt></p>
3224 <h4>Arguments</h4>
3225 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
3226 <thead><tr><th>Name</th><th>Description</th></tr></thead>
3227 <tbody>
3228 <tr><td><tt>op</tt></td><td>Operation code</td></tr>
3229 </tbody></table></div>
3230 <h4>Returns</h4>
3231 <p>IPP request message</p>
3232 <!-- NEW PAGE -->
3233 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='ippOpString'>ippOpString()</a></h3>
3234 <h4>Description</h4>
3235 <p>Return a name for the given operation id.
3236
3237
3238 <h4>Syntax</h4>
3239 <p><tt>
3240 const char *<br>
3241 ippOpString(
3242 ipp_op_t op);
3243 </tt></p>
3244 <h4>Arguments</h4>
3245 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
3246 <thead><tr><th>Name</th><th>Description</th></tr></thead>
3247 <tbody>
3248 <tr><td><tt>op</tt></td><td>Operation ID</td></tr>
3249 </tbody></table></div>
3250 <h4>Returns</h4>
3251 <p>Name</p>
3252 <!-- NEW PAGE -->
3253 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='ippOpValue'>ippOpValue()</a></h3>
3254 <h4>Description</h4>
3255 <p>Return an operation id for the given name.
3256
3257
3258 <h4>Syntax</h4>
3259 <p><tt>
3260 ipp_op_t<br>
3261 ippOpValue(
3262 const char * name);
3263 </tt></p>
3264 <h4>Arguments</h4>
3265 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
3266 <thead><tr><th>Name</th><th>Description</th></tr></thead>
3267 <tbody>
3268 <tr><td><tt>name</tt></td><td>Textual name</td></tr>
3269 </tbody></table></div>
3270 <h4>Returns</h4>
3271 <p>Operation ID</p>
3272 <!-- NEW PAGE -->
3273 <h3 class='title'><a name='ippPort'>ippPort()</a></h3>
3274 <h4>Description</h4>
3275 <p>Return the default IPP port number.
3276 <h4>Syntax</h4>
3277 <p><tt>
3278 int<br>
3279 ippPort(void);
3280 </tt></p>
3281 <h4>Arguments</h4>
3282 <p>None.</p>
3283 <h4>Returns</h4>
3284 <p>Port number</p>
3285 <!-- NEW PAGE -->
3286 <h3 class='title'><a name='ippRead'>ippRead()</a></h3>
3287 <h4>Description</h4>
3288 <p>Read data for an IPP message from a HTTP connection.
3289 <h4>Syntax</h4>
3290 <p><tt>
3291 ipp_state_t<br>
3292 ippRead(
3293 <a href='#http_t'>http_t</a> * http,
3294 <a href='#ipp_t'>ipp_t</a> * ipp);
3295 </tt></p>
3296 <h4>Arguments</h4>
3297 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
3298 <thead><tr><th>Name</th><th>Description</th></tr></thead>
3299 <tbody>
3300 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
3301 <tr><td><tt>ipp</tt></td><td>IPP data</td></tr>
3302 </tbody></table></div>
3303 <h4>Returns</h4>
3304 <p>Current state</p>
3305 <!-- NEW PAGE -->
3306 <h3 class='title'><span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span><a name='ippReadFile'>ippReadFile()</a></h3>
3307 <h4>Description</h4>
3308 <p>Read data for an IPP message from a file.
3309
3310
3311 <h4>Syntax</h4>
3312 <p><tt>
3313 ipp_state_t<br>
3314 ippReadFile(
3315 int fd,
3316 <a href='#ipp_t'>ipp_t</a> * ipp);
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>fd</tt></td><td>HTTP data</td></tr>
3323 <tr><td><tt>ipp</tt></td><td>IPP data</td></tr>
3324 </tbody></table></div>
3325 <h4>Returns</h4>
3326 <p>Current state</p>
3327 <!-- NEW PAGE -->
3328 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='ippReadIO'>ippReadIO()</a></h3>
3329 <h4>Description</h4>
3330 <p>Read data for an IPP message.
3331
3332
3333 <h4>Syntax</h4>
3334 <p><tt>
3335 ipp_state_t<br>
3336 ippReadIO(
3337 void * src,
3338 <a href='#ipp_iocb_t'>ipp_iocb_t</a> cb,
3339 int blocking,
3340 <a href='#ipp_t'>ipp_t</a> * parent,
3341 <a href='#ipp_t'>ipp_t</a> * ipp);
3342 </tt></p>
3343 <h4>Arguments</h4>
3344 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
3345 <thead><tr><th>Name</th><th>Description</th></tr></thead>
3346 <tbody>
3347 <tr><td><tt>src</tt></td><td>Data source</td></tr>
3348 <tr><td><tt>cb</tt></td><td>Read callback function</td></tr>
3349 <tr><td><tt>blocking</tt></td><td>Use blocking IO?</td></tr>
3350 <tr><td><tt>parent</tt></td><td>Parent request, if any</td></tr>
3351 <tr><td><tt>ipp</tt></td><td>IPP data</td></tr>
3352 </tbody></table></div>
3353 <h4>Returns</h4>
3354 <p>Current state</p>
3355 <!-- NEW PAGE -->
3356 <h3 class='title'><a name='ippSetPort'>ippSetPort()</a></h3>
3357 <h4>Description</h4>
3358 <p>Set the default port number.
3359 <h4>Syntax</h4>
3360 <p><tt>
3361 void<br>
3362 ippSetPort(
3363 int p);
3364 </tt></p>
3365 <h4>Arguments</h4>
3366 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
3367 <thead><tr><th>Name</th><th>Description</th></tr></thead>
3368 <tbody>
3369 <tr><td><tt>p</tt></td><td>Port number to use</td></tr>
3370 </tbody></table></div>
3371 <h4>Returns</h4>
3372 <p>Nothing.</p>
3373 <!-- NEW PAGE -->
3374 <h3 class='title'><a name='ippTimeToDate'>ippTimeToDate()</a></h3>
3375 <h4>Description</h4>
3376 <p>Convert from UNIX time to RFC 1903 format.
3377 <h4>Syntax</h4>
3378 <p><tt>
3379 const <a href='#ipp_uchar_t'>ipp_uchar_t</a> *<br>
3380 ippTimeToDate(
3381 time_t t);
3382 </tt></p>
3383 <h4>Arguments</h4>
3384 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
3385 <thead><tr><th>Name</th><th>Description</th></tr></thead>
3386 <tbody>
3387 <tr><td><tt>t</tt></td><td>UNIX time value</td></tr>
3388 </tbody></table></div>
3389 <h4>Returns</h4>
3390 <p>RFC-1903 date/time data</p>
3391 <!-- NEW PAGE -->
3392 <h3 class='title'><a name='ippWrite'>ippWrite()</a></h3>
3393 <h4>Description</h4>
3394 <p>Write data for an IPP message to a HTTP connection.
3395 <h4>Syntax</h4>
3396 <p><tt>
3397 ipp_state_t<br>
3398 ippWrite(
3399 <a href='#http_t'>http_t</a> * http,
3400 <a href='#ipp_t'>ipp_t</a> * ipp);
3401 </tt></p>
3402 <h4>Arguments</h4>
3403 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
3404 <thead><tr><th>Name</th><th>Description</th></tr></thead>
3405 <tbody>
3406 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
3407 <tr><td><tt>ipp</tt></td><td>IPP data</td></tr>
3408 </tbody></table></div>
3409 <h4>Returns</h4>
3410 <p>Current state</p>
3411 <!-- NEW PAGE -->
3412 <h3 class='title'><span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span><a name='ippWriteFile'>ippWriteFile()</a></h3>
3413 <h4>Description</h4>
3414 <p>Write data for an IPP message to a file.
3415
3416
3417 <h4>Syntax</h4>
3418 <p><tt>
3419 ipp_state_t<br>
3420 ippWriteFile(
3421 int fd,
3422 <a href='#ipp_t'>ipp_t</a> * ipp);
3423 </tt></p>
3424 <h4>Arguments</h4>
3425 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
3426 <thead><tr><th>Name</th><th>Description</th></tr></thead>
3427 <tbody>
3428 <tr><td><tt>fd</tt></td><td>HTTP data</td></tr>
3429 <tr><td><tt>ipp</tt></td><td>IPP data</td></tr>
3430 </tbody></table></div>
3431 <h4>Returns</h4>
3432 <p>Current state</p>
3433 <!-- NEW PAGE -->
3434 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='ippWriteIO'>ippWriteIO()</a></h3>
3435 <h4>Description</h4>
3436 <p>Write data for an IPP message.
3437
3438
3439 <h4>Syntax</h4>
3440 <p><tt>
3441 ipp_state_t<br>
3442 ippWriteIO(
3443 void * dst,
3444 <a href='#ipp_iocb_t'>ipp_iocb_t</a> cb,
3445 int blocking,
3446 <a href='#ipp_t'>ipp_t</a> * parent,
3447 <a href='#ipp_t'>ipp_t</a> * ipp);
3448 </tt></p>
3449 <h4>Arguments</h4>
3450 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0' summary='Arguments'>
3451 <thead><tr><th>Name</th><th>Description</th></tr></thead>
3452 <tbody>
3453 <tr><td><tt>dst</tt></td><td>Destination</td></tr>
3454 <tr><td><tt>cb</tt></td><td>Write callback function</td></tr>
3455 <tr><td><tt>blocking</tt></td><td>Use blocking IO?</td></tr>
3456 <tr><td><tt>parent</tt></td><td>Parent IPP message</td></tr>
3457 <tr><td><tt>ipp</tt></td><td>IPP data</td></tr>
3458 </tbody></table></div>
3459 <h4>Returns</h4>
3460 <p>Current state</p>
3461 <!-- NEW PAGE -->
3462 <h2 class='title'><a name='STRUCTURES'>Structures</a></h2>
3463 <ul>
3464 <li><a href='#http_addrlist_s'><tt>http_addrlist_s</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
3465 <li><a href='#ipp_attribute_s'><tt>ipp_attribute_s</tt></a> </li>
3466 <li><a href='#ipp_s'><tt>ipp_s</tt></a> </li>
3467 </ul>
3468 <!-- NEW PAGE -->
3469 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='http_addrlist_s'>http_addrlist_s</a></h3>
3470 <h4>Description</h4>
3471 <p>Socket address list, which is
3472 used to enumerate all of the
3473 addresses that are associated
3474 with a hostname.
3475 <h4>Definition</h4>
3476 <p><tt>
3477 struct http_addrlist_s<br>
3478 {<br>
3479 &nbsp;&nbsp;<a href='#http_addr_t'>http_addr_t</a> addr;<br>
3480 &nbsp;&nbsp;struct <a href='#http_addrlist_s'>http_addrlist_s</a> * next;<br>
3481 };</tt></p>
3482 <h4>Members</h4>
3483 <div class='table'><table align='center' border='1' width='80%' summary='Members'>
3484 <thead><tr><th>Name</th><th>Description</th></tr></thead>
3485 <tbody>
3486 <tr><td><tt>addr</tt> </td><td>Address
3487 </td></tr>
3488 <tr><td><tt>next</tt> </td><td>Pointer to next address in list
3489 </td></tr>
3490 </tbody></table></div>
3491 <!-- NEW PAGE -->
3492 <h3 class='title'><a name='ipp_attribute_s'>ipp_attribute_s</a></h3>
3493 <h4>Description</h4>
3494 <p>Attribute
3495 <h4>Definition</h4>
3496 <p><tt>
3497 struct ipp_attribute_s<br>
3498 {<br>
3499 &nbsp;&nbsp;char * name;<br>
3500 &nbsp;&nbsp;struct <a href='#ipp_attribute_s'>ipp_attribute_s</a> * next;<br>
3501 &nbsp;&nbsp;int num_values;<br>
3502 &nbsp;&nbsp;ipp_tag_t group_tag, value_tag;<br>
3503 &nbsp;&nbsp;<a href='#ipp_value_t'>ipp_value_t</a> values[1];<br>
3504 };</tt></p>
3505 <h4>Members</h4>
3506 <div class='table'><table align='center' border='1' width='80%' summary='Members'>
3507 <thead><tr><th>Name</th><th>Description</th></tr></thead>
3508 <tbody>
3509 <tr><td><tt>name</tt> </td><td>Name of attribute
3510 </td></tr>
3511 <tr><td><tt>next</tt> </td><td>Next attribute in list
3512 </td></tr>
3513 <tr><td><tt>num_values</tt> </td><td>Number of values
3514 </td></tr>
3515 <tr><td><tt>value_tag</tt> </td><td>What type of value is it?
3516 </td></tr>
3517 <tr><td><tt>values[1]</tt> </td><td>Values
3518 </td></tr>
3519 </tbody></table></div>
3520 <!-- NEW PAGE -->
3521 <h3 class='title'><a name='ipp_s'>ipp_s</a></h3>
3522 <h4>Description</h4>
3523 <p>IPP Request/Response/Notification
3524 <h4>Definition</h4>
3525 <p><tt>
3526 struct ipp_s<br>
3527 {<br>
3528 &nbsp;&nbsp;<a href='#ipp_attribute_t'>ipp_attribute_t</a> * attrs;<br>
3529 &nbsp;&nbsp;<a href='#ipp_attribute_t'>ipp_attribute_t</a> * current;<br>
3530 &nbsp;&nbsp;ipp_tag_t curtag;<br>
3531 &nbsp;&nbsp;<a href='#ipp_attribute_t'>ipp_attribute_t</a> * last;<br>
3532 &nbsp;&nbsp;<a href='#ipp_attribute_t'>ipp_attribute_t</a> * prev;<br>
3533 &nbsp;&nbsp;<a href='#ipp_request_t'>ipp_request_t</a> request;<br>
3534 &nbsp;&nbsp;ipp_state_t state;<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>attrs</tt> </td><td>Attributes
3541 </td></tr>
3542 <tr><td><tt>current</tt> </td><td>Current attribute (for read/write)
3543 </td></tr>
3544 <tr><td><tt>curtag</tt> </td><td>Current attribute group tag
3545 </td></tr>
3546 <tr><td><tt>last</tt> </td><td>Last attribute in list
3547 </td></tr>
3548 <tr><td><tt>prev</tt> </td><td>Previous attribute (for read)
3549 </td></tr>
3550 <tr><td><tt>request</tt> </td><td>Request header
3551 </td></tr>
3552 <tr><td><tt>state</tt> </td><td>State of request
3553 </td></tr>
3554 </tbody></table></div>
3555 <!-- NEW PAGE -->
3556 <h2 class='title'><a name='TYPES'>Types</a></h2>
3557 <ul>
3558 <li><a href='#http_addrlist_t'><tt>http_addrlist_t</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
3559 <li><a href='#http_auth_t'><tt>http_auth_t</tt></a> </li>
3560 <li><a href='#http_encoding_t'><tt>http_encoding_t</tt></a> </li>
3561 <li><a href='#http_encryption_t'><tt>http_encryption_t</tt></a> </li>
3562 <li><a href='#http_t'><tt>http_t</tt></a> </li>
3563 <li><a href='#ipp_attribute_t'><tt>ipp_attribute_t</tt></a> </li>
3564 <li><a href='#ipp_iocb_t'><tt>ipp_iocb_t</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
3565 <li><a href='#ipp_request_t'><tt>ipp_request_t</tt></a> </li>
3566 <li><a href='#ipp_t'><tt>ipp_t</tt></a> </li>
3567 <li><a href='#ipp_uchar_t'><tt>ipp_uchar_t</tt></a> </li>
3568 <li><a href='#ipp_value_t'><tt>ipp_value_t</tt></a> </li>
3569 </ul>
3570 <!-- NEW PAGE -->
3571 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='http_addrlist_t'>http_addrlist_t</a></h3>
3572 <h4>Description</h4>
3573 <p>Socket address list, which is
3574 used to enumerate all of the
3575 addresses that are associated
3576 with a hostname.
3577 <h4>Definition</h4>
3578 <p><tt>
3579 typedef struct <a href='#http_addrlist_s'>http_addrlist_s</a> / http_addrlist_t;
3580 </tt></p>
3581 <!-- NEW PAGE -->
3582 <h3 class='title'><a name='http_auth_t'>http_auth_t</a></h3>
3583 <h4>Description</h4>
3584 <p>HTTP authentication types
3585 <h4>Definition</h4>
3586 <p><tt>
3587 typedef enum <a href='#http_auth_e'>http_auth_e</a> http_auth_t;
3588 </tt></p>
3589 <!-- NEW PAGE -->
3590 <h3 class='title'><a name='http_encoding_t'>http_encoding_t</a></h3>
3591 <h4>Description</h4>
3592 <p>HTTP transfer encoding values
3593 <h4>Definition</h4>
3594 <p><tt>
3595 typedef enum <a href='#http_encoding_e'>http_encoding_e</a> http_encoding_t;
3596 </tt></p>
3597 <!-- NEW PAGE -->
3598 <h3 class='title'><a name='http_encryption_t'>http_encryption_t</a></h3>
3599 <h4>Description</h4>
3600 <p>HTTP encryption values
3601 <h4>Definition</h4>
3602 <p><tt>
3603 typedef enum <a href='#http_encryption_e'>http_encryption_e</a> http_encryption_t;
3604 </tt></p>
3605 <!-- NEW PAGE -->
3606 <h3 class='title'><a name='http_t'>http_t</a></h3>
3607 <h4>Description</h4>
3608 <p>HTTP connection type
3609 <h4>Definition</h4>
3610 <p><tt>
3611 typedef struct _http_s http_t;
3612 </tt></p>
3613 <!-- NEW PAGE -->
3614 <h3 class='title'><a name='ipp_attribute_t'>ipp_attribute_t</a></h3>
3615 <h4>Description</h4>
3616 <p>Attribute
3617 <h4>Definition</h4>
3618 <p><tt>
3619 typedef struct <a href='#ipp_attribute_s'>ipp_attribute_s</a> ipp_attribute_t;
3620 </tt></p>
3621 <!-- NEW PAGE -->
3622 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='ipp_iocb_t'>ipp_iocb_t</a></h3>
3623 <h4>Description</h4>
3624 <p>IPP IO Callback Function
3625 <h4>Definition</h4>
3626 <p><tt>
3627 typedef <a href='#ssize_t'>ssize_t</a> (*ipp_iocb_t)(void *, <a href='#ipp_uchar_t'>ipp_uchar_t</a> *, size_t);
3628 </tt></p>
3629 <!-- NEW PAGE -->
3630 <h3 class='title'><a name='ipp_request_t'>ipp_request_t</a></h3>
3631 <h4>Description</h4>
3632 <p>Request Header
3633 <h4>Definition</h4>
3634 <p><tt>
3635 typedef union <a href='#ipp_request_u'>ipp_request_u</a> ipp_request_t;
3636 </tt></p>
3637 <!-- NEW PAGE -->
3638 <h3 class='title'><a name='ipp_t'>ipp_t</a></h3>
3639 <h4>Description</h4>
3640 <p>Attribute Value
3641 <h4>Definition</h4>
3642 <p><tt>
3643 typedef struct <a href='#ipp_s'>ipp_s</a> ipp_t;
3644 </tt></p>
3645 <!-- NEW PAGE -->
3646 <h3 class='title'><a name='ipp_uchar_t'>ipp_uchar_t</a></h3>
3647 <h4>Description</h4>
3648 <p>IPP status codes...
3649 <h4>Definition</h4>
3650 <p><tt>
3651 typedef typedef unsigned char ipp_uchar_t;
3652 </tt></p>
3653 <!-- NEW PAGE -->
3654 <h3 class='title'><a name='ipp_value_t'>ipp_value_t</a></h3>
3655 <h4>Description</h4>
3656 <p>New in CUPS 1.1.19
3657 <h4>Definition</h4>
3658 <p><tt>
3659 typedef union <a href='#ipp_value_u'>ipp_value_u</a> ipp_value_t;
3660 </tt></p>
3661 <!-- NEW PAGE -->
3662 <h2 class='title'><a name='UNIONS'>Unions</a></h2>
3663 <ul>
3664 <li><a href='#ipp_request_u'><tt>ipp_request_u</tt></a> </li>
3665 <li><a href='#ipp_value_u'><tt>ipp_value_u</tt></a> </li>
3666 </ul>
3667 <!-- NEW PAGE -->
3668 <h3 class='title'><a name='ipp_request_u'>ipp_request_u</a></h3>
3669 <h4>Description</h4>
3670 <p>Request Header
3671 <h4>Definition</h4>
3672 <p><tt>
3673 union ipp_request_u<br>
3674 {<br>
3675 };</tt></p>
3676 <h4>Members</h4>
3677 <div class='table'><table align='center' border='1' width='80%' summary='Members'>
3678 <thead><tr><th>Name</th><th>Description</th></tr></thead>
3679 <tbody>
3680 </tbody></table></div>
3681 <!-- NEW PAGE -->
3682 <h3 class='title'><a name='ipp_value_u'>ipp_value_u</a></h3>
3683 <h4>Description</h4>
3684 <p>New in CUPS 1.1.19
3685 <h4>Definition</h4>
3686 <p><tt>
3687 union ipp_value_u<br>
3688 {<br>
3689 &nbsp;&nbsp;char boolean;<br>
3690 &nbsp;&nbsp;<a href='#ipp_t'>ipp_t</a> * collection;<br>
3691 &nbsp;&nbsp;<a href='#ipp_uchar_t'>ipp_uchar_t</a> date[11];<br>
3692 &nbsp;&nbsp;int integer;<br>
3693 };</tt></p>
3694 <h4>Members</h4>
3695 <div class='table'><table align='center' border='1' width='80%' summary='Members'>
3696 <thead><tr><th>Name</th><th>Description</th></tr></thead>
3697 <tbody>
3698 <tr><td><tt>boolean</tt> </td><td>Boolean value
3699 </td></tr>
3700 <tr><td><tt>collection</tt> </td><td>Collection value
3701 </td></tr>
3702 <tr><td><tt>date[11]</tt> </td><td>Date/time value
3703 </td></tr>
3704 <tr><td><tt>integer</tt> </td><td>Integer/enumerated value
3705 </td></tr>
3706 </tbody></table></div>
3707 </body>
3708 </html>