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