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