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