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