1 <!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
3 <!-- SECTION: Programming -->
5 <title>HTTP and IPP APIs
</title>
6 <meta name='keywords' content='Programming'
>
7 <meta name='creator' content='Mini-XML v2.3'
>
8 <style type='text/css'
><!--
9 h1, h2, h3, p { font-family: sans-serif; text-align: justify; }
10 tt, pre a:link, pre a:visited, tt a:link, tt a:visited { font-weight: bold; color: #7f0000; }
11 pre { font-weight: bold; color: #7f0000; margin-left: 2em; }
12 span.info { background: #000000; border: solid thin #000000; color: #ffffff; font-size: 80%; font-style: italic; font-weight: bold; white-space: nowrap; }
13 h3 span.info { float: right; font-size: 100%; }
14 h1.title, h2.title, h3.title { border-bottom: solid 2px #000000; }
19 "$Id: api-httpipp.shtml 6649 2007-07-11 21:46:42Z mike $"
21 HTTP and IPP API introduction for the Common UNIX Printing System (CUPS).
23 Copyright 2007 by Apple Inc.
24 Copyright 1997-2006 by Easy Software Products, all rights reserved.
26 These coded instructions, statements, and computer programs are the
27 property of Apple Inc. and are protected by Federal copyright
28 law. Distribution and use rights are outlined in the file "LICENSE.txt"
29 which should have been included with this file. If this file is
30 file is missing or damaged, see the license at "http://www.cups.org/".
33 <h2 class='title'
>Introduction
</h2>
35 <p>The CUPS HTTP and IPP APIs provide low-level access to the
36 HTTP and IPP protocols and CUPS scheduler. They are typically
37 used by monitoring and administration programs to perform
38 specific functions not supported by the high-level CUPS API
41 <h2 class='title'
>General Usage
</h2>
43 <p>The
<var><cups/cups.h
></var> header file must be included to
44 use the HTTP and IPP functions.
</p>
46 <p>Programs using these functions must be linked to the CUPS
47 library:
<var>libcups.a
</var>,
<var>libcups.so
.2</var>,
48 <var>libcups
.2.dylib
</var>,
<var>libcups_s.a
</var>, or
49 <var>libcups2.lib
</var> depending on the platform. The following
50 command compiles
<var>myprogram.c
</var> using GCC and the CUPS
54 <kbd>gcc -o myprogram myprogram.c -lcups
</kbd>
57 <h2 class='title'
>Compatibility
</h2>
59 <p>Unless otherwise specified, the HTTP and IPP API functions
60 require CUPS
1.1 or higher.
</p>
61 <h2 class='title'
>Contents
</h2>
63 <li><a href='#ENUMERATIONS'
>Enumerations
</a></li>
64 <li><a href='#FUNCTIONS'
>Functions
</a></li>
65 <li><a href='#STRUCTURES'
>Structures
</a></li>
66 <li><a href='#TYPES'
>Types
</a></li>
67 <li><a href='#UNIONS'
>Unions
</a></li>
70 <h2 class='title'
><a name='ENUMERATIONS'
>Enumerations
</a></h2>
72 <li><a href='#http_auth_e'
><tt>http_auth_e
</tt></a> </li>
73 <li><a href='#http_encoding_e'
><tt>http_encoding_e
</tt></a> </li>
74 <li><a href='#http_encryption_e'
><tt>http_encryption_e
</tt></a> </li>
75 <li><a href='#http_field_e'
><tt>http_field_e
</tt></a> </li>
76 <li><a href='#http_keepalive_e'
><tt>http_keepalive_e
</tt></a> </li>
77 <li><a href='#http_state_e'
><tt>http_state_e
</tt></a> </li>
78 <li><a href='#http_status_e'
><tt>http_status_e
</tt></a> </li>
79 <li><a href='#http_uri_coding_e'
><tt>http_uri_coding_e
</tt></a> </li>
80 <li><a href='#http_uri_status_e'
><tt>http_uri_status_e
</tt></a> </li>
81 <li><a href='#http_version_e'
><tt>http_version_e
</tt></a> </li>
82 <li><a href='#ipp_finish_e'
><tt>ipp_finish_e
</tt></a> </li>
83 <li><a href='#ipp_jstate_e'
><tt>ipp_jstate_e
</tt></a> </li>
84 <li><a href='#ipp_op_e'
><tt>ipp_op_e
</tt></a> </li>
85 <li><a href='#ipp_orient_e'
><tt>ipp_orient_e
</tt></a> </li>
86 <li><a href='#ipp_pstate_e'
><tt>ipp_pstate_e
</tt></a> </li>
87 <li><a href='#ipp_quality_e'
><tt>ipp_quality_e
</tt></a> </li>
88 <li><a href='#ipp_res_e'
><tt>ipp_res_e
</tt></a> </li>
89 <li><a href='#ipp_state_e'
><tt>ipp_state_e
</tt></a> </li>
90 <li><a href='#ipp_status_e'
><tt>ipp_status_e
</tt></a> </li>
91 <li><a href='#ipp_tag_e'
><tt>ipp_tag_e
</tt></a> </li>
94 <h3 class='title'
><a name='http_auth_e'
>http_auth_e
</a></h3>
96 <p>HTTP authentication types
98 <div class='table'
><table align='center' border='
1' width='
80%' summary='Values'
>
99 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
101 <tr><td><tt>HTTP_AUTH_BASIC
</tt> </td><td>Basic authentication in use
103 <tr><td><tt>HTTP_AUTH_MD5
</tt> </td><td>Digest authentication in use
105 <tr><td><tt>HTTP_AUTH_MD5_INT
</tt> </td><td>Digest authentication in use for body
107 <tr><td><tt>HTTP_AUTH_MD5_SESS
</tt> </td><td>MD5-session authentication in use
109 <tr><td><tt>HTTP_AUTH_MD5_SESS_INT
</tt> </td><td>MD5-session authentication in use for body
111 <tr><td><tt>HTTP_AUTH_NEGOTIATE
</tt> <span class='info'
> CUPS
1.3 </span></td><td>GSSAPI authentication in use
113 <tr><td><tt>HTTP_AUTH_NONE
</tt> </td><td>No authentication in use
115 </tbody></table></div>
117 <h3 class='title'
><a name='http_encoding_e'
>http_encoding_e
</a></h3>
119 <p>HTTP transfer encoding values
121 <div class='table'
><table align='center' border='
1' width='
80%' summary='Values'
>
122 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
124 <tr><td><tt>HTTP_ENCODE_CHUNKED
</tt> </td><td>Data is chunked
126 <tr><td><tt>HTTP_ENCODE_FIELDS
</tt> </td><td>Sending HTTP fields
128 <tr><td><tt>HTTP_ENCODE_LENGTH
</tt> </td><td>Data is sent with Content-Length
130 </tbody></table></div>
132 <h3 class='title'
><a name='http_encryption_e'
>http_encryption_e
</a></h3>
134 <p>HTTP encryption values
136 <div class='table'
><table align='center' border='
1' width='
80%' summary='Values'
>
137 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
139 <tr><td><tt>HTTP_ENCRYPT_ALWAYS
</tt> </td><td>Always encrypt (SSL)
141 <tr><td><tt>HTTP_ENCRYPT_IF_REQUESTED
</tt> </td><td>Encrypt if requested (TLS upgrade)
143 <tr><td><tt>HTTP_ENCRYPT_NEVER
</tt> </td><td>Never encrypt
145 <tr><td><tt>HTTP_ENCRYPT_REQUIRED
</tt> </td><td>Encryption is required (TLS upgrade)
147 </tbody></table></div>
149 <h3 class='title'
><a name='http_field_e'
>http_field_e
</a></h3>
153 <div class='table'
><table align='center' border='
1' width='
80%' summary='Values'
>
154 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
156 <tr><td><tt>HTTP_FIELD_ACCEPT_LANGUAGE
</tt> </td><td>Accept-Language field
158 <tr><td><tt>HTTP_FIELD_ACCEPT_RANGES
</tt> </td><td>Accept-Ranges field
160 <tr><td><tt>HTTP_FIELD_AUTHORIZATION
</tt> </td><td>Authorization field
162 <tr><td><tt>HTTP_FIELD_CONNECTION
</tt> </td><td>Connection field
164 <tr><td><tt>HTTP_FIELD_CONTENT_ENCODING
</tt> </td><td>Content-Encoding field
166 <tr><td><tt>HTTP_FIELD_CONTENT_LANGUAGE
</tt> </td><td>Content-Language field
168 <tr><td><tt>HTTP_FIELD_CONTENT_LENGTH
</tt> </td><td>Content-Length field
170 <tr><td><tt>HTTP_FIELD_CONTENT_LOCATION
</tt> </td><td>Content-Location field
172 <tr><td><tt>HTTP_FIELD_CONTENT_MD5
</tt> </td><td>Content-MD5 field
174 <tr><td><tt>HTTP_FIELD_CONTENT_RANGE
</tt> </td><td>Content-Range field
176 <tr><td><tt>HTTP_FIELD_CONTENT_TYPE
</tt> </td><td>Content-Type field
178 <tr><td><tt>HTTP_FIELD_CONTENT_VERSION
</tt> </td><td>Content-Version field
180 <tr><td><tt>HTTP_FIELD_DATE
</tt> </td><td>Date field
182 <tr><td><tt>HTTP_FIELD_HOST
</tt> </td><td>Host field
184 <tr><td><tt>HTTP_FIELD_IF_MODIFIED_SINCE
</tt> </td><td>If-Modified-Since field
186 <tr><td><tt>HTTP_FIELD_IF_UNMODIFIED_SINCE
</tt> </td><td>If-Unmodified-Since field
188 <tr><td><tt>HTTP_FIELD_KEEP_ALIVE
</tt> </td><td>Keep-Alive field
190 <tr><td><tt>HTTP_FIELD_LAST_MODIFIED
</tt> </td><td>Last-Modified field
192 <tr><td><tt>HTTP_FIELD_LINK
</tt> </td><td>Link field
194 <tr><td><tt>HTTP_FIELD_LOCATION
</tt> </td><td>Location field
196 <tr><td><tt>HTTP_FIELD_MAX
</tt> </td><td>Maximum field index
198 <tr><td><tt>HTTP_FIELD_RANGE
</tt> </td><td>Range field
200 <tr><td><tt>HTTP_FIELD_REFERER
</tt> </td><td>Referer field
202 <tr><td><tt>HTTP_FIELD_RETRY_AFTER
</tt> </td><td>Retry-After field
204 <tr><td><tt>HTTP_FIELD_TRANSFER_ENCODING
</tt> </td><td>Transfer-Encoding field
206 <tr><td><tt>HTTP_FIELD_UNKNOWN
</tt> </td><td>Unknown field
208 <tr><td><tt>HTTP_FIELD_UPGRADE
</tt> </td><td>Upgrade field
210 <tr><td><tt>HTTP_FIELD_USER_AGENT
</tt> </td><td>User-Agent field
212 <tr><td><tt>HTTP_FIELD_WWW_AUTHENTICATE
</tt> </td><td>WWW-Authenticate field
214 </tbody></table></div>
216 <h3 class='title'
><a name='http_keepalive_e'
>http_keepalive_e
</a></h3>
218 <p>Types and structures...
220 <div class='table'
><table align='center' border='
1' width='
80%' summary='Values'
>
221 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
223 <tr><td><tt>HTTP_KEEPALIVE_OFF
</tt> </td><td>No keep alive support
225 <tr><td><tt>HTTP_KEEPALIVE_ON
</tt> </td><td>Use keep alive
227 </tbody></table></div>
229 <h3 class='title'
><a name='http_state_e'
>http_state_e
</a></h3>
233 <div class='table'
><table align='center' border='
1' width='
80%' summary='Values'
>
234 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
236 <tr><td><tt>HTTP_CLOSE
</tt> </td><td>CLOSE command, waiting for blank line
238 <tr><td><tt>HTTP_DELETE
</tt> </td><td>DELETE command, waiting for blank line
240 <tr><td><tt>HTTP_GET
</tt> </td><td>GET command, waiting for blank line
242 <tr><td><tt>HTTP_GET_SEND
</tt> </td><td>GET command, sending data
244 <tr><td><tt>HTTP_HEAD
</tt> </td><td>HEAD command, waiting for blank line
246 <tr><td><tt>HTTP_OPTIONS
</tt> </td><td>OPTIONS command, waiting for blank line
248 <tr><td><tt>HTTP_POST
</tt> </td><td>POST command, waiting for blank line
250 <tr><td><tt>HTTP_POST_RECV
</tt> </td><td>POST command, receiving data
252 <tr><td><tt>HTTP_POST_SEND
</tt> </td><td>POST command, sending data
254 <tr><td><tt>HTTP_PUT
</tt> </td><td>PUT command, waiting for blank line
256 <tr><td><tt>HTTP_PUT_RECV
</tt> </td><td>PUT command, receiving data
258 <tr><td><tt>HTTP_STATUS
</tt> </td><td>Command complete, sending status
260 <tr><td><tt>HTTP_TRACE
</tt> </td><td>TRACE command, waiting for blank line
262 <tr><td><tt>HTTP_WAITING
</tt> </td><td>Waiting for command
264 </tbody></table></div>
266 <h3 class='title'
><a name='http_status_e'
>http_status_e
</a></h3>
270 <div class='table'
><table align='center' border='
1' width='
80%' summary='Values'
>
271 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
273 <tr><td><tt>HTTP_ACCEPTED
</tt> </td><td>DELETE command was successful
275 <tr><td><tt>HTTP_BAD_GATEWAY
</tt> </td><td>Bad gateway
277 <tr><td><tt>HTTP_BAD_REQUEST
</tt> </td><td>Bad request
279 <tr><td><tt>HTTP_CONFLICT
</tt> </td><td>Request is self-conflicting
281 <tr><td><tt>HTTP_CONTINUE
</tt> </td><td>Everything OK, keep going...
283 <tr><td><tt>HTTP_CREATED
</tt> </td><td>PUT command was successful
285 <tr><td><tt>HTTP_ERROR
</tt> </td><td>An error response from httpXxxx()
287 <tr><td><tt>HTTP_EXPECTATION_FAILED
</tt> </td><td>The expectation given in an Expect header field was not met
289 <tr><td><tt>HTTP_FORBIDDEN
</tt> </td><td>Forbidden to access this URI
291 <tr><td><tt>HTTP_GATEWAY_TIMEOUT
</tt> </td><td>Gateway connection timed out
293 <tr><td><tt>HTTP_GONE
</tt> </td><td>Server has gone away
295 <tr><td><tt>HTTP_LENGTH_REQUIRED
</tt> </td><td>A content length or encoding is required
297 <tr><td><tt>HTTP_METHOD_NOT_ALLOWED
</tt> </td><td>Method is not allowed
299 <tr><td><tt>HTTP_MOVED_PERMANENTLY
</tt> </td><td>Document has moved permanently
301 <tr><td><tt>HTTP_MOVED_TEMPORARILY
</tt> </td><td>Document has moved temporarily
303 <tr><td><tt>HTTP_MULTIPLE_CHOICES
</tt> </td><td>Multiple files match request
305 <tr><td><tt>HTTP_NOT_ACCEPTABLE
</tt> </td><td>Not Acceptable
307 <tr><td><tt>HTTP_NOT_AUTHORITATIVE
</tt> </td><td>Information isn't authoritative
309 <tr><td><tt>HTTP_NOT_FOUND
</tt> </td><td>URI was not found
311 <tr><td><tt>HTTP_NOT_IMPLEMENTED
</tt> </td><td>Feature not implemented
313 <tr><td><tt>HTTP_NOT_MODIFIED
</tt> </td><td>File not modified
315 <tr><td><tt>HTTP_NOT_SUPPORTED
</tt> </td><td>HTTP version not supported
317 <tr><td><tt>HTTP_NO_CONTENT
</tt> </td><td>Successful command, no new data
319 <tr><td><tt>HTTP_OK
</tt> </td><td>OPTIONS/GET/HEAD/POST/TRACE command was successful
321 <tr><td><tt>HTTP_PARTIAL_CONTENT
</tt> </td><td>Only a partial file was recieved/sent
323 <tr><td><tt>HTTP_PAYMENT_REQUIRED
</tt> </td><td>Payment required
325 <tr><td><tt>HTTP_PRECONDITION
</tt> </td><td>Precondition failed
327 <tr><td><tt>HTTP_PROXY_AUTHENTICATION
</tt> </td><td>Proxy Authentication is Required
329 <tr><td><tt>HTTP_REQUESTED_RANGE
</tt> </td><td>The requested range is not satisfiable
331 <tr><td><tt>HTTP_REQUEST_TIMEOUT
</tt> </td><td>Request timed out
333 <tr><td><tt>HTTP_REQUEST_TOO_LARGE
</tt> </td><td>Request entity too large
335 <tr><td><tt>HTTP_RESET_CONTENT
</tt> </td><td>Content was reset/recreated
337 <tr><td><tt>HTTP_SEE_OTHER
</tt> </td><td>See this other link...
339 <tr><td><tt>HTTP_SERVER_ERROR
</tt> </td><td>Internal server error
341 <tr><td><tt>HTTP_SERVICE_UNAVAILABLE
</tt> </td><td>Service is unavailable
343 <tr><td><tt>HTTP_SWITCHING_PROTOCOLS
</tt> </td><td>HTTP upgrade to TLS/SSL
345 <tr><td><tt>HTTP_UNAUTHORIZED
</tt> </td><td>Unauthorized to access host
347 <tr><td><tt>HTTP_UNSUPPORTED_MEDIATYPE
</tt> </td><td>The requested media type is unsupported
349 <tr><td><tt>HTTP_UPGRADE_REQUIRED
</tt> </td><td>Upgrade to SSL/TLS required
351 <tr><td><tt>HTTP_URI_TOO_LONG
</tt> </td><td>URI too long
353 <tr><td><tt>HTTP_USE_PROXY
</tt> </td><td>Must use a proxy to access this URI
355 </tbody></table></div>
357 <h3 class='title'
><a name='http_uri_coding_e'
>http_uri_coding_e
</a></h3>
361 <div class='table'
><table align='center' border='
1' width='
80%' summary='Values'
>
362 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
364 <tr><td><tt>HTTP_URI_CODING_ALL
</tt> </td><td>En/decode everything
366 <tr><td><tt>HTTP_URI_CODING_HOSTNAME
</tt> </td><td>En/decode the hostname portion
368 <tr><td><tt>HTTP_URI_CODING_MOST
</tt> </td><td>En/decode all but the query
370 <tr><td><tt>HTTP_URI_CODING_NONE
</tt> </td><td>Don't en/decode anything
372 <tr><td><tt>HTTP_URI_CODING_QUERY
</tt> </td><td>En/decode the query portion
374 <tr><td><tt>HTTP_URI_CODING_RESOURCE
</tt> </td><td>En/decode the resource portion
376 <tr><td><tt>HTTP_URI_CODING_USERNAME
</tt> </td><td>En/decode the username portion
378 </tbody></table></div>
380 <h3 class='title'
><a name='http_uri_status_e'
>http_uri_status_e
</a></h3>
384 <div class='table'
><table align='center' border='
1' width='
80%' summary='Values'
>
385 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
387 <tr><td><tt>HTTP_URI_BAD_ARGUMENTS
</tt> </td><td>Bad arguments to function (error)
389 <tr><td><tt>HTTP_URI_BAD_HOSTNAME
</tt> </td><td>Bad hostname in URI (error)
391 <tr><td><tt>HTTP_URI_BAD_PORT
</tt> </td><td>Bad port number in URI (error)
393 <tr><td><tt>HTTP_URI_BAD_RESOURCE
</tt> </td><td>Bad resource in URI (error)
395 <tr><td><tt>HTTP_URI_BAD_SCHEME
</tt> </td><td>Bad scheme in URI (error)
397 <tr><td><tt>HTTP_URI_BAD_URI
</tt> </td><td>Bad/empty URI (error)
399 <tr><td><tt>HTTP_URI_BAD_USERNAME
</tt> </td><td>Bad username in URI (error)
401 <tr><td><tt>HTTP_URI_MISSING_RESOURCE
</tt> </td><td>Missing resource in URI (warning)
403 <tr><td><tt>HTTP_URI_MISSING_SCHEME
</tt> </td><td>Missing scheme in URI (warning)
405 <tr><td><tt>HTTP_URI_OK
</tt> </td><td>URI decoded OK
407 <tr><td><tt>HTTP_URI_OVERFLOW
</tt> </td><td>URI buffer for httpAssembleURI is too small
409 <tr><td><tt>HTTP_URI_UNKNOWN_SCHEME
</tt> </td><td>Unknown scheme in URI (warning)
411 </tbody></table></div>
413 <h3 class='title'
><a name='http_version_e'
>http_version_e
</a></h3>
417 <div class='table'
><table align='center' border='
1' width='
80%' summary='Values'
>
418 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
420 <tr><td><tt>HTTP_0_9
</tt> </td><td>HTTP/
0.9
422 <tr><td><tt>HTTP_1_0
</tt> </td><td>HTTP/
1.0
424 <tr><td><tt>HTTP_1_1
</tt> </td><td>HTTP/
1.1
426 </tbody></table></div>
428 <h3 class='title'
><a name='ipp_finish_e'
>ipp_finish_e
</a></h3>
432 <div class='table'
><table align='center' border='
1' width='
80%' summary='Values'
>
433 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
435 <tr><td><tt>IPP_FINISHINGS_BALE
</tt> </td><td>Bale (any type)
437 <tr><td><tt>IPP_FINISHINGS_BIND
</tt> </td><td>Bind
439 <tr><td><tt>IPP_FINISHINGS_BIND_BOTTOM
</tt> </td><td>Bind on bottom
441 <tr><td><tt>IPP_FINISHINGS_BIND_LEFT
</tt> </td><td>Bind on left
443 <tr><td><tt>IPP_FINISHINGS_BIND_RIGHT
</tt> </td><td>Bind on right
445 <tr><td><tt>IPP_FINISHINGS_BIND_TOP
</tt> </td><td>Bind on top
447 <tr><td><tt>IPP_FINISHINGS_BOOKLET_MAKER
</tt> </td><td>Fold to make booklet
449 <tr><td><tt>IPP_FINISHINGS_COVER
</tt> </td><td>Add cover
451 <tr><td><tt>IPP_FINISHINGS_EDGE_STITCH
</tt> </td><td>Stitch along any side
453 <tr><td><tt>IPP_FINISHINGS_EDGE_STITCH_BOTTOM
</tt> </td><td>Stitch along bottom edge
455 <tr><td><tt>IPP_FINISHINGS_EDGE_STITCH_LEFT
</tt> </td><td>Stitch along left side
457 <tr><td><tt>IPP_FINISHINGS_EDGE_STITCH_RIGHT
</tt> </td><td>Stitch along right side
459 <tr><td><tt>IPP_FINISHINGS_EDGE_STITCH_TOP
</tt> </td><td>Stitch along top edge
461 <tr><td><tt>IPP_FINISHINGS_FOLD
</tt> </td><td>Fold (any type)
463 <tr><td><tt>IPP_FINISHINGS_JOB_OFFSET
</tt> </td><td>Offset for binding (any type)
465 <tr><td><tt>IPP_FINISHINGS_NONE
</tt> </td><td>No finishing
467 <tr><td><tt>IPP_FINISHINGS_PUNCH
</tt> </td><td>Punch (any location/count)
469 <tr><td><tt>IPP_FINISHINGS_SADDLE_STITCH
</tt> </td><td>Staple interior
471 <tr><td><tt>IPP_FINISHINGS_STAPLE
</tt> </td><td>Staple (any location)
473 <tr><td><tt>IPP_FINISHINGS_STAPLE_BOTTOM_LEFT
</tt> </td><td>Staple bottom left corner
475 <tr><td><tt>IPP_FINISHINGS_STAPLE_BOTTOM_RIGHT
</tt> </td><td>Staple bottom right corner
477 <tr><td><tt>IPP_FINISHINGS_STAPLE_DUAL_BOTTOM
</tt> </td><td>Two staples on bottom
479 <tr><td><tt>IPP_FINISHINGS_STAPLE_DUAL_LEFT
</tt> </td><td>Two staples on left
481 <tr><td><tt>IPP_FINISHINGS_STAPLE_DUAL_RIGHT
</tt> </td><td>Two staples on right
483 <tr><td><tt>IPP_FINISHINGS_STAPLE_DUAL_TOP
</tt> </td><td>Two staples on top
485 <tr><td><tt>IPP_FINISHINGS_STAPLE_TOP_LEFT
</tt> </td><td>Staple top left corner
487 <tr><td><tt>IPP_FINISHINGS_STAPLE_TOP_RIGHT
</tt> </td><td>Staple top right corner
489 <tr><td><tt>IPP_FINISHINGS_TRIM
</tt> </td><td>Trim (any type)
491 </tbody></table></div>
493 <h3 class='title'
><a name='ipp_jstate_e'
>ipp_jstate_e
</a></h3>
497 <div class='table'
><table align='center' border='
1' width='
80%' summary='Values'
>
498 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
500 <tr><td><tt>IPP_JOB_ABORTED
</tt> </td><td>Job has aborted due to error
502 <tr><td><tt>IPP_JOB_CANCELED
</tt> </td><td>Job has been canceled
504 <tr><td><tt>IPP_JOB_COMPLETED
</tt> </td><td>Job has completed successfully
506 <tr><td><tt>IPP_JOB_HELD
</tt> </td><td>Job is held for printing
508 <tr><td><tt>IPP_JOB_PENDING
</tt> </td><td>Job is waiting to be printed
510 <tr><td><tt>IPP_JOB_PROCESSING
</tt> </td><td>Job is currently printing
512 <tr><td><tt>IPP_JOB_STOPPED
</tt> </td><td>Job has been stopped
514 </tbody></table></div>
516 <h3 class='title'
><a name='ipp_op_e'
>ipp_op_e
</a></h3>
520 <div class='table'
><table align='center' border='
1' width='
80%' summary='Values'
>
521 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
523 <tr><td><tt>CUPS_ACCEPT_JOBS
</tt> </td><td>Accept new jobs on a printer
525 <tr><td><tt>CUPS_ADD_MODIFY_CLASS
</tt> </td><td>Add or modify a class
527 <tr><td><tt>CUPS_ADD_MODIFY_PRINTER
</tt> </td><td>Add or modify a printer
529 <tr><td><tt>CUPS_AUTHENTICATE_JOB
</tt> <span class='info'
> CUPS
1.2 </span></td><td>Authenticate a job
531 <tr><td><tt>CUPS_DELETE_CLASS
</tt> </td><td>Delete a class
533 <tr><td><tt>CUPS_DELETE_PRINTER
</tt> </td><td>Delete a printer
535 <tr><td><tt>CUPS_GET_CLASSES
</tt> <span class='info'
> DEPRECATED
</span></td><td>Get a list of classes
537 <tr><td><tt>CUPS_GET_DEFAULT
</tt> </td><td>Get the default printer
539 <tr><td><tt>CUPS_GET_DEVICES
</tt> </td><td>Get a list of supported devices
541 <tr><td><tt>CUPS_GET_PPD
</tt> <span class='info'
> CUPS
1.3 </span></td><td>Get a PPD file
543 <tr><td><tt>CUPS_GET_PPDS
</tt> </td><td>Get a list of supported drivers
545 <tr><td><tt>CUPS_GET_PRINTERS
</tt> </td><td>Get a list of printers and/or classes
547 <tr><td><tt>CUPS_MOVE_JOB
</tt> </td><td>Move a job to a different printer
549 <tr><td><tt>CUPS_REJECT_JOBS
</tt> </td><td>Reject new jobs on a printer
551 <tr><td><tt>CUPS_SET_DEFAULT
</tt> </td><td>Set the default printer
553 <tr><td><tt>IPP_ACTIVATE_PRINTER
</tt> </td><td>Start a printer @private@
555 <tr><td><tt>IPP_CANCEL_CURRENT_JOB
</tt> </td><td>Cancel the current job @private@
557 <tr><td><tt>IPP_CANCEL_JOB
</tt> </td><td>Cancel a job
559 <tr><td><tt>IPP_CANCEL_SUBSCRIPTION
</tt> <span class='info'
> CUPS
1.2 </span></td><td>Cancel a subscription
561 <tr><td><tt>IPP_CREATE_JOB
</tt> </td><td>Create an empty print job
563 <tr><td><tt>IPP_CREATE_JOB_SUBSCRIPTION
</tt> <span class='info'
> CUPS
1.2 </span></td><td>Create a job subscription
565 <tr><td><tt>IPP_CREATE_PRINTER_SUBSCRIPTION
</tt> <span class='info'
> CUPS
1.2 </span></td><td>Create a printer subscription
567 <tr><td><tt>IPP_DEACTIVATE_PRINTER
</tt> </td><td>Stop a printer @private@
569 <tr><td><tt>IPP_DISABLE_PRINTER
</tt> </td><td>Stop a printer
571 <tr><td><tt>IPP_ENABLE_PRINTER
</tt> </td><td>Start a printer
573 <tr><td><tt>IPP_GET_JOBS
</tt> </td><td>Get a list of jobs
575 <tr><td><tt>IPP_GET_JOB_ATTRIBUTES
</tt> </td><td>Get job attributes
577 <tr><td><tt>IPP_GET_NOTIFICATIONS
</tt> <span class='info'
> CUPS
1.2 </span></td><td>Get notification events
579 <tr><td><tt>IPP_GET_PRINTER_ATTRIBUTES
</tt> </td><td>Get printer attributes
581 <tr><td><tt>IPP_GET_PRINTER_SUPPORTED_VALUES
</tt> </td><td>Get supported attribute values
583 <tr><td><tt>IPP_GET_PRINT_SUPPORT_FILES
</tt> </td><td>Get printer support files @private@
585 <tr><td><tt>IPP_GET_SUBSCRIPTIONS
</tt> <span class='info'
> CUPS
1.2 </span></td><td>Get list of subscriptions
587 <tr><td><tt>IPP_GET_SUBSCRIPTION_ATTRIBUTES
</tt> <span class='info'
> CUPS
1.2 </span></td><td>Get subscription attributes
589 <tr><td><tt>IPP_HOLD_JOB
</tt> </td><td>Hold a job for printing
591 <tr><td><tt>IPP_HOLD_NEW_JOBS
</tt> </td><td>Hold new jobs @private@
593 <tr><td><tt>IPP_PAUSE_PRINTER
</tt> </td><td>Stop a printer
595 <tr><td><tt>IPP_PAUSE_PRINTER_AFTER_CURRENT_JOB
</tt> </td><td>Stop printer after the current job @private@
597 <tr><td><tt>IPP_PRINT_JOB
</tt> </td><td>Print a single file
599 <tr><td><tt>IPP_PRINT_URI
</tt> </td><td>Print a single URL @private@
601 <tr><td><tt>IPP_PRIVATE
</tt> </td><td>Reserved @private@
603 <tr><td><tt>IPP_PROMOTE_JOB
</tt> </td><td>Promote a job to print sooner @private@
605 <tr><td><tt>IPP_PURGE_JOBS
</tt> </td><td>Cancel all jobs
607 <tr><td><tt>IPP_RELEASE_HELD_NEW_JOBS
</tt> </td><td>Release new jobs @private@
609 <tr><td><tt>IPP_RELEASE_JOB
</tt> </td><td>Release a job for printing
611 <tr><td><tt>IPP_RENEW_SUBSCRIPTION
</tt> <span class='info'
> CUPS
1.2 </span></td><td>Renew a printer subscription
613 <tr><td><tt>IPP_REPROCESS_JOB
</tt> </td><td>Reprint a job @private@
615 <tr><td><tt>IPP_RESTART_JOB
</tt> </td><td>Reprint a job
617 <tr><td><tt>IPP_RESTART_PRINTER
</tt> </td><td>Restart a printer @private@
619 <tr><td><tt>IPP_RESUME_JOB
</tt> </td><td>Resume the current job @private@
621 <tr><td><tt>IPP_RESUME_PRINTER
</tt> </td><td>Start a printer
623 <tr><td><tt>IPP_SCHEDULE_JOB_AFTER
</tt> </td><td>Schedule a job to print after another @private@
625 <tr><td><tt>IPP_SEND_DOCUMENT
</tt> </td><td>Add a file to a job
627 <tr><td><tt>IPP_SEND_NOTIFICATIONS
</tt> </td><td>Send notification events @private@
629 <tr><td><tt>IPP_SEND_URI
</tt> </td><td>Add a URL to a job @private@
631 <tr><td><tt>IPP_SET_JOB_ATTRIBUTES
</tt> </td><td>Set job attributes
633 <tr><td><tt>IPP_SET_PRINTER_ATTRIBUTES
</tt> </td><td>Set printer attributes @private@
635 <tr><td><tt>IPP_SHUTDOWN_PRINTER
</tt> </td><td>Turn a printer off @private@
637 <tr><td><tt>IPP_STARTUP_PRINTER
</tt> </td><td>Turn a printer on @private@
639 <tr><td><tt>IPP_SUSPEND_CURRENT_JOB
</tt> </td><td>Suspend the current job @private@
641 <tr><td><tt>IPP_VALIDATE_JOB
</tt> </td><td>Validate job options
643 </tbody></table></div>
645 <h3 class='title'
><a name='ipp_orient_e'
>ipp_orient_e
</a></h3>
649 <div class='table'
><table align='center' border='
1' width='
80%' summary='Values'
>
650 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
652 <tr><td><tt>IPP_LANDSCAPE
</tt> </td><td>90 degrees counter-clockwise
654 <tr><td><tt>IPP_PORTRAIT
</tt> </td><td>No rotation
656 <tr><td><tt>IPP_REVERSE_LANDSCAPE
</tt> </td><td>90 degrees clockwise
658 <tr><td><tt>IPP_REVERSE_PORTRAIT
</tt> </td><td>180 degrees
660 </tbody></table></div>
662 <h3 class='title'
><a name='ipp_pstate_e'
>ipp_pstate_e
</a></h3>
666 <div class='table'
><table align='center' border='
1' width='
80%' summary='Values'
>
667 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
669 <tr><td><tt>IPP_PRINTER_IDLE
</tt> </td><td>Printer is idle
671 <tr><td><tt>IPP_PRINTER_PROCESSING
</tt> </td><td>Printer is working
673 <tr><td><tt>IPP_PRINTER_STOPPED
</tt> </td><td>Printer is stopped
675 </tbody></table></div>
677 <h3 class='title'
><a name='ipp_quality_e'
>ipp_quality_e
</a></h3>
681 <div class='table'
><table align='center' border='
1' width='
80%' summary='Values'
>
682 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
684 <tr><td><tt>IPP_QUALITY_DRAFT
</tt> </td><td>Draft quality
686 <tr><td><tt>IPP_QUALITY_HIGH
</tt> </td><td>High quality
688 <tr><td><tt>IPP_QUALITY_NORMAL
</tt> </td><td>Normal quality
690 </tbody></table></div>
692 <h3 class='title'
><a name='ipp_res_e'
>ipp_res_e
</a></h3>
694 <p>Types and structures...
696 <div class='table'
><table align='center' border='
1' width='
80%' summary='Values'
>
697 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
699 <tr><td><tt>IPP_RES_PER_CM
</tt> </td><td>Pixels per centimeter
701 <tr><td><tt>IPP_RES_PER_INCH
</tt> </td><td>Pixels per inch
703 </tbody></table></div>
705 <h3 class='title'
><a name='ipp_state_e'
>ipp_state_e
</a></h3>
709 <div class='table'
><table align='center' border='
1' width='
80%' summary='Values'
>
710 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
712 <tr><td><tt>IPP_ATTRIBUTE
</tt> </td><td>One or more attributes need to be sent/received
714 <tr><td><tt>IPP_DATA
</tt> </td><td>IPP request data needs to be sent/received
716 <tr><td><tt>IPP_ERROR
</tt> </td><td>An error occurred
718 <tr><td><tt>IPP_HEADER
</tt> </td><td>The request header needs to be sent/received
720 <tr><td><tt>IPP_IDLE
</tt> </td><td>Nothing is happening/request completed
722 </tbody></table></div>
724 <h3 class='title'
><a name='ipp_status_e'
>ipp_status_e
</a></h3>
726 <p>IPP status codes...
728 <div class='table'
><table align='center' border='
1' width='
80%' summary='Values'
>
729 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
731 <tr><td><tt>CUPS_SEE_OTHER
</tt> </td><td>cups-see-other
733 <tr><td><tt>IPP_ATTRIBUTES
</tt> </td><td>client-error-attributes-or-values-not-supported
735 <tr><td><tt>IPP_ATTRIBUTES_NOT_SETTABLE
</tt> </td><td>client-error-attributes-not-settable
737 <tr><td><tt>IPP_BAD_REQUEST
</tt> </td><td>client-error-bad-request
739 <tr><td><tt>IPP_CHARSET
</tt> </td><td>client-error-charset-not-supported
741 <tr><td><tt>IPP_COMPRESSION_ERROR
</tt> </td><td>client-error-compression-error
743 <tr><td><tt>IPP_COMPRESSION_NOT_SUPPORTED
</tt> </td><td>client-error-compression-not-supported
745 <tr><td><tt>IPP_CONFLICT
</tt> </td><td>client-error-conflicting-attributes
747 <tr><td><tt>IPP_DEVICE_ERROR
</tt> </td><td>server-error-device-error
749 <tr><td><tt>IPP_DOCUMENT_ACCESS_ERROR
</tt> </td><td>client-error-document-access-error
751 <tr><td><tt>IPP_DOCUMENT_FORMAT
</tt> </td><td>client-error-document-format-not-supported
753 <tr><td><tt>IPP_DOCUMENT_FORMAT_ERROR
</tt> </td><td>client-error-document-format-error
755 <tr><td><tt>IPP_ERROR_JOB_CANCELED
</tt> </td><td>server-error-job-canceled
757 <tr><td><tt>IPP_FORBIDDEN
</tt> </td><td>client-error-forbidden
759 <tr><td><tt>IPP_GONE
</tt> </td><td>client-error-gone
761 <tr><td><tt>IPP_IGNORED_ALL_NOTIFICATIONS
</tt> </td><td>client-error-ignored-all-notifications
763 <tr><td><tt>IPP_IGNORED_ALL_SUBSCRIPTIONS
</tt> </td><td>client-error-ignored-all-subscriptions
765 <tr><td><tt>IPP_INTERNAL_ERROR
</tt> </td><td>server-error-internal-error
767 <tr><td><tt>IPP_MULTIPLE_JOBS_NOT_SUPPORTED
</tt> </td><td>server-error-multiple-document-jobs-not-supported
769 <tr><td><tt>IPP_NOT_ACCEPTING
</tt> </td><td>server-error-not-accepting-jobs
771 <tr><td><tt>IPP_NOT_AUTHENTICATED
</tt> </td><td>client-error-not-authenticated
773 <tr><td><tt>IPP_NOT_AUTHORIZED
</tt> </td><td>client-error-not-authorized
775 <tr><td><tt>IPP_NOT_FOUND
</tt> </td><td>client-error-not-found
777 <tr><td><tt>IPP_NOT_POSSIBLE
</tt> </td><td>client-error-not-possible
779 <tr><td><tt>IPP_OK
</tt> </td><td>successful-ok
781 <tr><td><tt>IPP_OK_BUT_CANCEL_SUBSCRIPTION
</tt> </td><td>successful-ok-but-cancel-subscription
783 <tr><td><tt>IPP_OK_CONFLICT
</tt> </td><td>successful-ok-conflicting-attributes
785 <tr><td><tt>IPP_OK_EVENTS_COMPLETE
</tt> </td><td>successful-ok-events-complete
787 <tr><td><tt>IPP_OK_IGNORED_NOTIFICATIONS
</tt> </td><td>successful-ok-ignored-notifications
789 <tr><td><tt>IPP_OK_IGNORED_SUBSCRIPTIONS
</tt> </td><td>successful-ok-ignored-subscriptions
791 <tr><td><tt>IPP_OK_SUBST
</tt> </td><td>successful-ok-ignored-or-substituted-attributes
793 <tr><td><tt>IPP_OK_TOO_MANY_EVENTS
</tt> </td><td>successful-ok-too-many-events
795 <tr><td><tt>IPP_OPERATION_NOT_SUPPORTED
</tt> </td><td>server-error-operation-not-supported
797 <tr><td><tt>IPP_PRINTER_BUSY
</tt> </td><td>server-error-busy
799 <tr><td><tt>IPP_PRINTER_IS_DEACTIVATED
</tt> </td><td>server-error-printer-is-deactivated
801 <tr><td><tt>IPP_PRINT_SUPPORT_FILE_NOT_FOUND
</tt> </td><td>client-error-print-support-file-not-found
803 <tr><td><tt>IPP_REDIRECTION_OTHER_SITE
</tt> </td><td>
805 <tr><td><tt>IPP_REQUEST_ENTITY
</tt> </td><td>client-error-request-entity-too-large
807 <tr><td><tt>IPP_REQUEST_VALUE
</tt> </td><td>client-error-request-value-too-long
809 <tr><td><tt>IPP_SERVICE_UNAVAILABLE
</tt> </td><td>server-error-service-unavailable
811 <tr><td><tt>IPP_TEMPORARY_ERROR
</tt> </td><td>server-error-temporary-error
813 <tr><td><tt>IPP_TIMEOUT
</tt> </td><td>client-error-timeout
815 <tr><td><tt>IPP_TOO_MANY_SUBSCRIPTIONS
</tt> </td><td>client-error-too-many-subscriptions
817 <tr><td><tt>IPP_URI_SCHEME
</tt> </td><td>client-error-uri-scheme-not-supported
819 <tr><td><tt>IPP_VERSION_NOT_SUPPORTED
</tt> </td><td>server-error-version-not-supported
821 </tbody></table></div>
823 <h3 class='title'
><a name='ipp_tag_e'
>ipp_tag_e
</a></h3>
825 <p>Format tags for attributes...
827 <div class='table'
><table align='center' border='
1' width='
80%' summary='Values'
>
828 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
830 <tr><td><tt>IPP_TAG_ADMINDEFINE
</tt> </td><td>Admin-defined value
832 <tr><td><tt>IPP_TAG_BEGIN_COLLECTION
</tt> </td><td>Beginning of collection value
834 <tr><td><tt>IPP_TAG_BOOLEAN
</tt> </td><td>Boolean value
836 <tr><td><tt>IPP_TAG_CHARSET
</tt> </td><td>Character set value
838 <tr><td><tt>IPP_TAG_COPY
</tt> </td><td>Bitflag for copied attribute values
840 <tr><td><tt>IPP_TAG_DATE
</tt> </td><td>Date/time value
842 <tr><td><tt>IPP_TAG_DEFAULT
</tt> </td><td>Default value
844 <tr><td><tt>IPP_TAG_DELETEATTR
</tt> </td><td>Delete-attribute value
846 <tr><td><tt>IPP_TAG_END
</tt> </td><td>End-of-attributes
848 <tr><td><tt>IPP_TAG_END_COLLECTION
</tt> </td><td>End of collection value
850 <tr><td><tt>IPP_TAG_ENUM
</tt> </td><td>Enumeration value
852 <tr><td><tt>IPP_TAG_EVENT_NOTIFICATION
</tt> </td><td>Event group
854 <tr><td><tt>IPP_TAG_INTEGER
</tt> </td><td>Integer value
856 <tr><td><tt>IPP_TAG_JOB
</tt> </td><td>Job group
858 <tr><td><tt>IPP_TAG_KEYWORD
</tt> </td><td>Keyword value
860 <tr><td><tt>IPP_TAG_LANGUAGE
</tt> </td><td>Language value
862 <tr><td><tt>IPP_TAG_MASK
</tt> </td><td>Mask for copied attribute values
864 <tr><td><tt>IPP_TAG_MEMBERNAME
</tt> </td><td>Collection member name value
866 <tr><td><tt>IPP_TAG_MIMETYPE
</tt> </td><td>MIME media type value
868 <tr><td><tt>IPP_TAG_NAME
</tt> </td><td>Name value
870 <tr><td><tt>IPP_TAG_NAMELANG
</tt> </td><td>Name-with-language value
872 <tr><td><tt>IPP_TAG_NOTSETTABLE
</tt> </td><td>Not-settable value
874 <tr><td><tt>IPP_TAG_NOVALUE
</tt> </td><td>No-value value
876 <tr><td><tt>IPP_TAG_OPERATION
</tt> </td><td>Operation group
878 <tr><td><tt>IPP_TAG_PRINTER
</tt> </td><td>Printer group
880 <tr><td><tt>IPP_TAG_RANGE
</tt> </td><td>Range value
882 <tr><td><tt>IPP_TAG_RESOLUTION
</tt> </td><td>Resolution value
884 <tr><td><tt>IPP_TAG_STRING
</tt> </td><td>Octet string value
886 <tr><td><tt>IPP_TAG_SUBSCRIPTION
</tt> </td><td>Subscription group
888 <tr><td><tt>IPP_TAG_TEXT
</tt> </td><td>Text value
890 <tr><td><tt>IPP_TAG_TEXTLANG
</tt> </td><td>Text-with-language value
892 <tr><td><tt>IPP_TAG_UNKNOWN
</tt> </td><td>Unknown value
894 <tr><td><tt>IPP_TAG_UNSUPPORTED_GROUP
</tt> </td><td>Unsupported attributes group
896 <tr><td><tt>IPP_TAG_UNSUPPORTED_VALUE
</tt> </td><td>Unsupported value
898 <tr><td><tt>IPP_TAG_URI
</tt> </td><td>URI value
900 <tr><td><tt>IPP_TAG_URISCHEME
</tt> </td><td>URI scheme value
902 <tr><td><tt>IPP_TAG_ZERO
</tt> </td><td>Zero tag - used for separators
904 </tbody></table></div>
906 <h2 class='title'
><a name='FUNCTIONS'
>Functions
</a></h2>
908 <li><a href='#cupsDoAuthentication'
><tt>cupsDoAuthentication()
</tt></a> <span class='info'
> CUPS
1.1.20 </span></li>
909 <li><a href='#cupsDoFileRequest'
><tt>cupsDoFileRequest()
</tt></a> </li>
910 <li><a href='#cupsDoIORequest'
><tt>cupsDoIORequest()
</tt></a> <span class='info'
> CUPS
1.3 </span></li>
911 <li><a href='#cupsDoRequest'
><tt>cupsDoRequest()
</tt></a> </li>
912 <li><a href='#cupsEncodeOptions'
><tt>cupsEncodeOptions()
</tt></a> </li>
913 <li><a href='#cupsEncodeOptions2'
><tt>cupsEncodeOptions2()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
914 <li><a href='#httpAddrAny'
><tt>httpAddrAny()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
915 <li><a href='#httpAddrEqual'
><tt>httpAddrEqual()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
916 <li><a href='#httpAddrLength'
><tt>httpAddrLength()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
917 <li><a href='#httpAddrLocalhost'
><tt>httpAddrLocalhost()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
918 <li><a href='#httpAddrLookup'
><tt>httpAddrLookup()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
919 <li><a href='#httpAddrString'
><tt>httpAddrString()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
920 <li><a href='#httpAssembleURI'
><tt>httpAssembleURI()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
921 <li><a href='#httpAssembleURIf'
><tt>httpAssembleURIf()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
922 <li><a href='#httpBlocking'
><tt>httpBlocking()
</tt></a> </li>
923 <li><a href='#httpCheck'
><tt>httpCheck()
</tt></a> </li>
924 <li><a href='#httpClearCookie'
><tt>httpClearCookie()
</tt></a> <span class='info'
> CUPS
1.1.19 </span></li>
925 <li><a href='#httpClearFields'
><tt>httpClearFields()
</tt></a> </li>
926 <li><a href='#httpClose'
><tt>httpClose()
</tt></a> </li>
927 <li><a href='#httpConnect'
><tt>httpConnect()
</tt></a> </li>
928 <li><a href='#httpConnectEncrypt'
><tt>httpConnectEncrypt()
</tt></a> </li>
929 <li><a href='#httpDecode64'
><tt>httpDecode64()
</tt></a> <span class='info'
> DEPRECATED
</span></li>
930 <li><a href='#httpDecode64_2'
><tt>httpDecode64_2()
</tt></a> <span class='info'
> CUPS
1.1.21 </span></li>
931 <li><a href='#httpDelete'
><tt>httpDelete()
</tt></a> </li>
932 <li><a href='#httpEncode64'
><tt>httpEncode64()
</tt></a> <span class='info'
> DEPRECATED
</span></li>
933 <li><a href='#httpEncode64_2'
><tt>httpEncode64_2()
</tt></a> <span class='info'
> CUPS
1.1.21 </span></li>
934 <li><a href='#httpEncryption'
><tt>httpEncryption()
</tt></a> </li>
935 <li><a href='#httpError'
><tt>httpError()
</tt></a> </li>
936 <li><a href='#httpFlush'
><tt>httpFlush()
</tt></a> </li>
937 <li><a href='#httpFlushWrite'
><tt>httpFlushWrite()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
938 <li><a href='#httpGet'
><tt>httpGet()
</tt></a> </li>
939 <li><a href='#httpGetBlocking'
><tt>httpGetBlocking()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
940 <li><a href='#httpGetCookie'
><tt>httpGetCookie()
</tt></a> <span class='info'
> CUPS
1.1.19 </span></li>
941 <li><a href='#httpGetDateString'
><tt>httpGetDateString()
</tt></a> <span class='info'
> DEPRECATED
</span></li>
942 <li><a href='#httpGetDateString2'
><tt>httpGetDateString2()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
943 <li><a href='#httpGetDateTime'
><tt>httpGetDateTime()
</tt></a> </li>
944 <li><a href='#httpGetFd'
><tt>httpGetFd()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
945 <li><a href='#httpGetField'
><tt>httpGetField()
</tt></a> </li>
946 <li><a href='#httpGetHostByName'
><tt>httpGetHostByName()
</tt></a> <span class='info'
> DEPRECATED
</span></li>
947 <li><a href='#httpGetHostname'
><tt>httpGetHostname()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
948 <li><a href='#httpGetLength'
><tt>httpGetLength()
</tt></a> <span class='info'
> DEPRECATED
</span></li>
949 <li><a href='#httpGetLength2'
><tt>httpGetLength2()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
950 <li><a href='#httpGetStatus'
><tt>httpGetStatus()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
951 <li><a href='#httpGetSubField'
><tt>httpGetSubField()
</tt></a> <span class='info'
> DEPRECATED
</span></li>
952 <li><a href='#httpGetSubField2'
><tt>httpGetSubField2()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
953 <li><a href='#httpGets'
><tt>httpGets()
</tt></a> </li>
954 <li><a href='#httpHead'
><tt>httpHead()
</tt></a> </li>
955 <li><a href='#httpInitialize'
><tt>httpInitialize()
</tt></a> </li>
956 <li><a href='#httpMD5'
><tt>httpMD5()
</tt></a> </li>
957 <li><a href='#httpMD5Final'
><tt>httpMD5Final()
</tt></a> </li>
958 <li><a href='#httpMD5String'
><tt>httpMD5String()
</tt></a> </li>
959 <li><a href='#httpOptions'
><tt>httpOptions()
</tt></a> </li>
960 <li><a href='#httpPost'
><tt>httpPost()
</tt></a> </li>
961 <li><a href='#httpPut'
><tt>httpPut()
</tt></a> </li>
962 <li><a href='#httpRead'
><tt>httpRead()
</tt></a> <span class='info'
> DEPRECATED
</span></li>
963 <li><a href='#httpRead2'
><tt>httpRead2()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
964 <li><a href='#httpReconnect'
><tt>httpReconnect()
</tt></a> </li>
965 <li><a href='#httpSeparate'
><tt>httpSeparate()
</tt></a> <span class='info'
> DEPRECATED
</span></li>
966 <li><a href='#httpSeparate2'
><tt>httpSeparate2()
</tt></a> <span class='info'
> CUPS
1.1.21 </span></li>
967 <li><a href='#httpSeparateURI'
><tt>httpSeparateURI()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
968 <li><a href='#httpSetCookie'
><tt>httpSetCookie()
</tt></a> <span class='info'
> CUPS
1.1.19 </span></li>
969 <li><a href='#httpSetExpect'
><tt>httpSetExpect()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
970 <li><a href='#httpSetField'
><tt>httpSetField()
</tt></a> </li>
971 <li><a href='#httpSetLength'
><tt>httpSetLength()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
972 <li><a href='#httpStatus'
><tt>httpStatus()
</tt></a> </li>
973 <li><a href='#httpTrace'
><tt>httpTrace()
</tt></a> </li>
974 <li><a href='#httpUpdate'
><tt>httpUpdate()
</tt></a> </li>
975 <li><a href='#httpWait'
><tt>httpWait()
</tt></a> <span class='info'
> CUPS
1.1.19 </span></li>
976 <li><a href='#httpWrite'
><tt>httpWrite()
</tt></a> <span class='info'
> DEPRECATED
</span></li>
977 <li><a href='#httpWrite2'
><tt>httpWrite2()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
978 <li><a href='#ippAddBoolean'
><tt>ippAddBoolean()
</tt></a> </li>
979 <li><a href='#ippAddBooleans'
><tt>ippAddBooleans()
</tt></a> </li>
980 <li><a href='#ippAddCollection'
><tt>ippAddCollection()
</tt></a> <span class='info'
> CUPS
1.1.19 </span></li>
981 <li><a href='#ippAddCollections'
><tt>ippAddCollections()
</tt></a> <span class='info'
> CUPS
1.1.19 </span></li>
982 <li><a href='#ippAddDate'
><tt>ippAddDate()
</tt></a> </li>
983 <li><a href='#ippAddInteger'
><tt>ippAddInteger()
</tt></a> </li>
984 <li><a href='#ippAddIntegers'
><tt>ippAddIntegers()
</tt></a> </li>
985 <li><a href='#ippAddOctetString'
><tt>ippAddOctetString()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
986 <li><a href='#ippAddRange'
><tt>ippAddRange()
</tt></a> </li>
987 <li><a href='#ippAddRanges'
><tt>ippAddRanges()
</tt></a> </li>
988 <li><a href='#ippAddResolution'
><tt>ippAddResolution()
</tt></a> </li>
989 <li><a href='#ippAddResolutions'
><tt>ippAddResolutions()
</tt></a> </li>
990 <li><a href='#ippAddSeparator'
><tt>ippAddSeparator()
</tt></a> </li>
991 <li><a href='#ippAddString'
><tt>ippAddString()
</tt></a> </li>
992 <li><a href='#ippAddStrings'
><tt>ippAddStrings()
</tt></a> </li>
993 <li><a href='#ippDateToTime'
><tt>ippDateToTime()
</tt></a> </li>
994 <li><a href='#ippDelete'
><tt>ippDelete()
</tt></a> </li>
995 <li><a href='#ippDeleteAttribute'
><tt>ippDeleteAttribute()
</tt></a> <span class='info'
> CUPS
1.1.19 </span></li>
996 <li><a href='#ippErrorString'
><tt>ippErrorString()
</tt></a> </li>
997 <li><a href='#ippErrorValue'
><tt>ippErrorValue()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
998 <li><a href='#ippFindAttribute'
><tt>ippFindAttribute()
</tt></a> </li>
999 <li><a href='#ippFindNextAttribute'
><tt>ippFindNextAttribute()
</tt></a> </li>
1000 <li><a href='#ippLength'
><tt>ippLength()
</tt></a> </li>
1001 <li><a href='#ippNew'
><tt>ippNew()
</tt></a> </li>
1002 <li><a href='#ippNewRequest'
><tt>ippNewRequest()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
1003 <li><a href='#ippOpString'
><tt>ippOpString()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
1004 <li><a href='#ippOpValue'
><tt>ippOpValue()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
1005 <li><a href='#ippPort'
><tt>ippPort()
</tt></a> </li>
1006 <li><a href='#ippRead'
><tt>ippRead()
</tt></a> </li>
1007 <li><a href='#ippReadFile'
><tt>ippReadFile()
</tt></a> <span class='info'
> CUPS
1.1.19 </span></li>
1008 <li><a href='#ippReadIO'
><tt>ippReadIO()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
1009 <li><a href='#ippSetPort'
><tt>ippSetPort()
</tt></a> </li>
1010 <li><a href='#ippTimeToDate'
><tt>ippTimeToDate()
</tt></a> </li>
1011 <li><a href='#ippWrite'
><tt>ippWrite()
</tt></a> </li>
1012 <li><a href='#ippWriteFile'
><tt>ippWriteFile()
</tt></a> <span class='info'
> CUPS
1.1.19 </span></li>
1013 <li><a href='#ippWriteIO'
><tt>ippWriteIO()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
1016 <h3 class='title'
><span class='info'
> CUPS
1.1.20 </span><a name='cupsDoAuthentication'
>cupsDoAuthentication()
</a></h3>
1017 <h4>Description
</h4>
1018 <p>Authenticate a request.
1019 <p>This function should be called in response to a HTTP_UNAUTHORIZED
1020 status, prior to resubmitting your request.
1026 cupsDoAuthentication(
1027 <a href='#http_t'
>http_t
</a> * http,
1028 const char * method,
1029 const char * resource);
1032 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1033 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1035 <tr><td><tt>http
</tt></td><td>HTTP connection to server
</td></tr>
1036 <tr><td><tt>method
</tt></td><td>Request method (GET, POST, PUT)
</td></tr>
1037 <tr><td><tt>resource
</tt></td><td>Resource path
</td></tr>
1038 </tbody></table></div>
1040 <p>0 on success, -
1 on error
</p>
1042 <h3 class='title'
><a name='cupsDoFileRequest'
>cupsDoFileRequest()
</a></h3>
1043 <h4>Description
</h4>
1044 <p>Do an IPP request with a file.
1045 <p>This function sends the IPP request to the specified server, retrying
1046 and authenticating as necessary. The request is freed with ippDelete()
1047 after receiving a valid IPP response.
1050 <a href='#ipp_t'
>ipp_t
</a> *
<br>
1052 <a href='#http_t'
>http_t
</a> * http,
1053 <a href='#ipp_t'
>ipp_t
</a> * request,
1054 const char * resource,
1055 const char * filename);
1058 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1059 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1061 <tr><td><tt>http
</tt></td><td>HTTP connection to server
</td></tr>
1062 <tr><td><tt>request
</tt></td><td>IPP request
</td></tr>
1063 <tr><td><tt>resource
</tt></td><td>HTTP resource for POST
</td></tr>
1064 <tr><td><tt>filename
</tt></td><td>File to send or NULL for none
</td></tr>
1065 </tbody></table></div>
1067 <p>Response data
</p>
1069 <h3 class='title'
><span class='info'
> CUPS
1.3 </span><a name='cupsDoIORequest'
>cupsDoIORequest()
</a></h3>
1070 <h4>Description
</h4>
1071 <p>Do an IPP request with file descriptors.
1072 <p>This function sends the IPP request to the specified server, retrying
1073 and authenticating as necessary. The request is freed with ippDelete()
1074 after receiving a valid IPP response.
1075 <p>If
"infile
" is a valid file descriptor, cupsDoIORequest() copies
1076 all of the data from the file after the IPP request message.
1077 <p>If
"outfile
" is a valid file descriptor, cupsDoIORequest() copies
1078 all of the data after the IPP response message to the file.
1083 <a href='#ipp_t'
>ipp_t
</a> *
<br>
1085 <a href='#http_t'
>http_t
</a> * http,
1086 <a href='#ipp_t'
>ipp_t
</a> * request,
1087 const char * resource,
1092 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1093 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1095 <tr><td><tt>http
</tt></td><td>HTTP connection to server
</td></tr>
1096 <tr><td><tt>request
</tt></td><td>IPP request
</td></tr>
1097 <tr><td><tt>resource
</tt></td><td>HTTP resource for POST
</td></tr>
1098 <tr><td><tt>infile
</tt></td><td>File to read from or -
1 for none
</td></tr>
1099 <tr><td><tt>outfile
</tt></td><td>File to write to or -
1 for none
</td></tr>
1100 </tbody></table></div>
1102 <p>Response data
</p>
1104 <h3 class='title'
><a name='cupsDoRequest'
>cupsDoRequest()
</a></h3>
1105 <h4>Description
</h4>
1106 <p>Do an IPP request.
1107 <p>This function sends the IPP request to the specified server, retrying
1108 and authenticating as necessary. The request is freed with ippDelete()
1109 after receiving a valid IPP response.
1112 <a href='#ipp_t'
>ipp_t
</a> *
<br>
1114 <a href='#http_t'
>http_t
</a> * http,
1115 <a href='#ipp_t'
>ipp_t
</a> * request,
1116 const char * resource);
1119 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1120 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1122 <tr><td><tt>http
</tt></td><td>HTTP connection to server
</td></tr>
1123 <tr><td><tt>request
</tt></td><td>IPP request
</td></tr>
1124 <tr><td><tt>resource
</tt></td><td>HTTP resource for POST
</td></tr>
1125 </tbody></table></div>
1127 <p>Response data
</p>
1129 <h3 class='title'
><a name='cupsEncodeOptions'
>cupsEncodeOptions()
</a></h3>
1130 <h4>Description
</h4>
1131 <p>Encode printer options into IPP attributes.
1132 <p>This function adds operation, job, and then subscription attributes,
1133 in that order. Use the cupsEncodeOptions2() function to add attributes
1139 <a href='#ipp_t'
>ipp_t
</a> * ipp,
1141 cups_option_t * options);
1144 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1145 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1147 <tr><td><tt>ipp
</tt></td><td>Request to add to
</td></tr>
1148 <tr><td><tt>num_options
</tt></td><td>Number of options
</td></tr>
1149 <tr><td><tt>options
</tt></td><td>Options
</td></tr>
1150 </tbody></table></div>
1154 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='cupsEncodeOptions2'
>cupsEncodeOptions2()
</a></h3>
1155 <h4>Description
</h4>
1156 <p>Encode printer options into IPP attributes for a group.
1157 <p>This function only adds attributes for a single group. Call this
1158 function multiple times for each group, or use cupsEncodeOptions()
1159 to add the standard groups.
1166 <a href='#ipp_t'
>ipp_t
</a> * ipp,
1168 cups_option_t * options,
1169 ipp_tag_t group_tag);
1172 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1173 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1175 <tr><td><tt>ipp
</tt></td><td>Request to add to
</td></tr>
1176 <tr><td><tt>num_options
</tt></td><td>Number of options
</td></tr>
1177 <tr><td><tt>options
</tt></td><td>Options
</td></tr>
1178 <tr><td><tt>group_tag
</tt></td><td>Group to encode
</td></tr>
1179 </tbody></table></div>
1183 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpAddrAny'
>httpAddrAny()
</a></h3>
1184 <h4>Description
</h4>
1185 <p>Check for the
"any
" address.
1192 const
<a href='#http_addr_t'
>http_addr_t
</a> * addr);
1195 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1196 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1198 <tr><td><tt>addr
</tt></td><td>Address to check
</td></tr>
1199 </tbody></table></div>
1201 <p>1 if
"any
",
0 otherwise
</p>
1203 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpAddrEqual'
>httpAddrEqual()
</a></h3>
1204 <h4>Description
</h4>
1205 <p>Compare two addresses.
1212 const
<a href='#http_addr_t'
>http_addr_t
</a> * addr1,
1213 const
<a href='#http_addr_t'
>http_addr_t
</a> * addr2);
1216 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1217 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1219 <tr><td><tt>addr1
</tt></td><td>First address
</td></tr>
1220 <tr><td><tt>addr2
</tt></td><td>Second address
</td></tr>
1221 </tbody></table></div>
1223 <p>1 if equal,
0 if not
</p>
1225 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpAddrLength'
>httpAddrLength()
</a></h3>
1226 <h4>Description
</h4>
1227 <p>Return the length of the address in bytes.
1234 const
<a href='#http_addr_t'
>http_addr_t
</a> * addr);
1237 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1238 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1240 <tr><td><tt>addr
</tt></td><td>Address
</td></tr>
1241 </tbody></table></div>
1243 <p>Length in bytes
</p>
1245 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpAddrLocalhost'
>httpAddrLocalhost()
</a></h3>
1246 <h4>Description
</h4>
1247 <p>Check for the local loopback address.
1254 const
<a href='#http_addr_t'
>http_addr_t
</a> * addr);
1257 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1258 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1260 <tr><td><tt>addr
</tt></td><td>Address to check
</td></tr>
1261 </tbody></table></div>
1263 <p>1 if local host,
0 otherwise
</p>
1265 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpAddrLookup'
>httpAddrLookup()
</a></h3>
1266 <h4>Description
</h4>
1267 <p>Lookup the hostname associated with the address.
1274 const
<a href='#http_addr_t'
>http_addr_t
</a> * addr,
1279 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1280 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1282 <tr><td><tt>addr
</tt></td><td>Address to lookup
</td></tr>
1283 <tr><td><tt>name
</tt></td><td>Host name buffer
</td></tr>
1284 <tr><td><tt>namelen
</tt></td><td>Size of name buffer
</td></tr>
1285 </tbody></table></div>
1289 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpAddrString'
>httpAddrString()
</a></h3>
1290 <h4>Description
</h4>
1291 <p>Convert an address to a numeric string.
1298 const
<a href='#http_addr_t'
>http_addr_t
</a> * addr,
1303 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1304 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1306 <tr><td><tt>addr
</tt></td><td>Address to convert
</td></tr>
1307 <tr><td><tt>s
</tt></td><td>String buffer
</td></tr>
1308 <tr><td><tt>slen
</tt></td><td>Length of string
</td></tr>
1309 </tbody></table></div>
1311 <p>Numeric address string
</p>
1313 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpAssembleURI'
>httpAssembleURI()
</a></h3>
1314 <h4>Description
</h4>
1315 <p>Assemble a uniform resource identifier from its
1317 <p>This function escapes reserved characters in the URI depending on the
1318 value of the
"encoding
" argument. You should use this function in
1319 place of traditional string functions whenever you need to create a
1325 http_uri_status_t
<br>
1327 http_uri_coding_t encoding,
1330 const char * scheme,
1331 const char * username,
1334 const char * resource);
1337 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1338 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1340 <tr><td><tt>encoding
</tt></td><td>Encoding flags
</td></tr>
1341 <tr><td><tt>uri
</tt></td><td>URI buffer
</td></tr>
1342 <tr><td><tt>urilen
</tt></td><td>Size of URI buffer
</td></tr>
1343 <tr><td><tt>scheme
</tt></td><td>Scheme name
</td></tr>
1344 <tr><td><tt>username
</tt></td><td>Username
</td></tr>
1345 <tr><td><tt>host
</tt></td><td>Hostname or address
</td></tr>
1346 <tr><td><tt>port
</tt></td><td>Port number
</td></tr>
1347 <tr><td><tt>resource
</tt></td><td>Resource
</td></tr>
1348 </tbody></table></div>
1352 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpAssembleURIf'
>httpAssembleURIf()
</a></h3>
1353 <h4>Description
</h4>
1354 <p>Assemble a uniform resource identifier from its
1355 components with a formatted resource.
1356 <p>This function creates a formatted version of the resource string
1357 argument
"resourcef
" and escapes reserved characters in the URI
1358 depending on the value of the
"encoding
" argument. You should use
1359 this function in place of traditional string functions whenever
1360 you need to create a URI string.
1365 http_uri_status_t
<br>
1367 http_uri_coding_t encoding,
1370 const char * scheme,
1371 const char * username,
1374 const char * resourcef,
1378 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1379 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1381 <tr><td><tt>encoding
</tt></td><td>Encoding flags
</td></tr>
1382 <tr><td><tt>uri
</tt></td><td>URI buffer
</td></tr>
1383 <tr><td><tt>urilen
</tt></td><td>Size of URI buffer
</td></tr>
1384 <tr><td><tt>scheme
</tt></td><td>Scheme name
</td></tr>
1385 <tr><td><tt>username
</tt></td><td>Username
</td></tr>
1386 <tr><td><tt>host
</tt></td><td>Hostname or address
</td></tr>
1387 <tr><td><tt>port
</tt></td><td>Port number
</td></tr>
1388 <tr><td><tt>resourcef
</tt></td><td>Printf-style resource
</td></tr>
1389 <tr><td><tt>...
</tt></td><td>Additional arguments as needed
</td></tr>
1390 </tbody></table></div>
1394 <h3 class='title'
><a name='httpBlocking'
>httpBlocking()
</a></h3>
1395 <h4>Description
</h4>
1396 <p>Set blocking/non-blocking behavior on a connection.
1401 <a href='#http_t'
>http_t
</a> * http,
1405 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1406 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1408 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1409 <tr><td><tt>b
</tt></td><td>1 = blocking,
0 = non-blocking
</td></tr>
1410 </tbody></table></div>
1414 <h3 class='title'
><a name='httpCheck'
>httpCheck()
</a></h3>
1415 <h4>Description
</h4>
1416 <p>Check to see if there is a pending response from the server.
1421 <a href='#http_t'
>http_t
</a> * http);
1424 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1425 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1427 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1428 </tbody></table></div>
1430 <p>0 = no data,
1 = data available
</p>
1432 <h3 class='title'
><span class='info'
> CUPS
1.1.19 </span><a name='httpClearCookie'
>httpClearCookie()
</a></h3>
1433 <h4>Description
</h4>
1434 <p>Clear the cookie value(s).
1441 <a href='#http_t'
>http_t
</a> * http);
1444 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1445 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1447 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1448 </tbody></table></div>
1452 <h3 class='title'
><a name='httpClearFields'
>httpClearFields()
</a></h3>
1453 <h4>Description
</h4>
1454 <p>Clear HTTP request fields.
1459 <a href='#http_t'
>http_t
</a> * http);
1462 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1463 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1465 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1466 </tbody></table></div>
1470 <h3 class='title'
><a name='httpClose'
>httpClose()
</a></h3>
1471 <h4>Description
</h4>
1472 <p>Close an HTTP connection...
1477 <a href='#http_t'
>http_t
</a> * http);
1480 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1481 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1483 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1484 </tbody></table></div>
1488 <h3 class='title'
><a name='httpConnect'
>httpConnect()
</a></h3>
1489 <h4>Description
</h4>
1490 <p>Connect to a HTTP server.
1493 <a href='#http_t'
>http_t
</a> *
<br>
1499 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1500 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1502 <tr><td><tt>host
</tt></td><td>Host to connect to
</td></tr>
1503 <tr><td><tt>port
</tt></td><td>Port number
</td></tr>
1504 </tbody></table></div>
1506 <p>New HTTP connection
</p>
1508 <h3 class='title'
><a name='httpConnectEncrypt'
>httpConnectEncrypt()
</a></h3>
1509 <h4>Description
</h4>
1510 <p>Connect to a HTTP server using encryption.
1513 <a href='#http_t'
>http_t
</a> *
<br>
1517 <a href='#http_encryption_t'
>http_encryption_t
</a> encryption);
1520 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1521 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1523 <tr><td><tt>host
</tt></td><td>Host to connect to
</td></tr>
1524 <tr><td><tt>port
</tt></td><td>Port number
</td></tr>
1525 <tr><td><tt>encryption
</tt></td><td>Type of encryption to use
</td></tr>
1526 </tbody></table></div>
1528 <p>New HTTP connection
</p>
1530 <h3 class='title'
><span class='info'
> DEPRECATED
</span><a name='httpDecode64'
>httpDecode64()
</a></h3>
1531 <h4>Description
</h4>
1532 <p>Base64-decode a string.
1533 <p>This function is deprecated. Use the httpDecode64_2() function instead
1534 which provides buffer length arguments.
1545 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1546 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1548 <tr><td><tt>out
</tt></td><td>String to write to
</td></tr>
1549 <tr><td><tt>in
</tt></td><td>String to read from
</td></tr>
1550 </tbody></table></div>
1552 <p>Decoded string
</p>
1554 <h3 class='title'
><span class='info'
> CUPS
1.1.21 </span><a name='httpDecode64_2'
>httpDecode64_2()
</a></h3>
1555 <h4>Description
</h4>
1556 <p>Base64-decode a string.
1568 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1569 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1571 <tr><td><tt>out
</tt></td><td>String to write to
</td></tr>
1572 <tr><td><tt>outlen
</tt></td><td>Size of output string
</td></tr>
1573 <tr><td><tt>in
</tt></td><td>String to read from
</td></tr>
1574 </tbody></table></div>
1576 <p>Decoded string
</p>
1578 <h3 class='title'
><a name='httpDelete'
>httpDelete()
</a></h3>
1579 <h4>Description
</h4>
1580 <p>Send a DELETE request to the server.
1585 <a href='#http_t'
>http_t
</a> * http,
1589 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1590 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1592 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1593 <tr><td><tt>uri
</tt></td><td>URI to delete
</td></tr>
1594 </tbody></table></div>
1596 <p>Status of call (
0 = success)
</p>
1598 <h3 class='title'
><span class='info'
> DEPRECATED
</span><a name='httpEncode64'
>httpEncode64()
</a></h3>
1599 <h4>Description
</h4>
1600 <p>Base64-encode a string.
1601 <p>This function is deprecated. Use the httpEncode64_2() function instead
1602 which provides buffer length arguments.
1613 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1614 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1616 <tr><td><tt>out
</tt></td><td>String to write to
</td></tr>
1617 <tr><td><tt>in
</tt></td><td>String to read from
</td></tr>
1618 </tbody></table></div>
1620 <p>Encoded string
</p>
1622 <h3 class='title'
><span class='info'
> CUPS
1.1.21 </span><a name='httpEncode64_2'
>httpEncode64_2()
</a></h3>
1623 <h4>Description
</h4>
1624 <p>Base64-encode a string.
1637 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1638 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1640 <tr><td><tt>out
</tt></td><td>String to write to
</td></tr>
1641 <tr><td><tt>outlen
</tt></td><td>Size of output string
</td></tr>
1642 <tr><td><tt>in
</tt></td><td>String to read from
</td></tr>
1643 <tr><td><tt>inlen
</tt></td><td>Size of input string
</td></tr>
1644 </tbody></table></div>
1646 <p>Encoded string
</p>
1648 <h3 class='title'
><a name='httpEncryption'
>httpEncryption()
</a></h3>
1649 <h4>Description
</h4>
1650 <p>Set the required encryption on the link.
1655 <a href='#http_t'
>http_t
</a> * http,
1656 <a href='#http_encryption_t'
>http_encryption_t
</a> e);
1659 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1660 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1662 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1663 <tr><td><tt>e
</tt></td><td>New encryption preference
</td></tr>
1664 </tbody></table></div>
1666 <p>-
1 on error,
0 on success
</p>
1668 <h3 class='title'
><a name='httpError'
>httpError()
</a></h3>
1669 <h4>Description
</h4>
1670 <p>Get the last error on a connection.
1675 <a href='#http_t'
>http_t
</a> * http);
1678 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1679 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1681 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1682 </tbody></table></div>
1684 <p>Error code (errno) value
</p>
1686 <h3 class='title'
><a name='httpFlush'
>httpFlush()
</a></h3>
1687 <h4>Description
</h4>
1688 <p>Flush data from a HTTP connection.
1693 <a href='#http_t'
>http_t
</a> * http);
1696 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1697 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1699 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1700 </tbody></table></div>
1704 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpFlushWrite'
>httpFlushWrite()
</a></h3>
1705 <h4>Description
</h4>
1706 <p>Flush data in write buffer.
1713 <a href='#http_t'
>http_t
</a> * http);
1716 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1717 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1719 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1720 </tbody></table></div>
1722 <p>Bytes written or -
1 on error
</p>
1724 <h3 class='title'
><a name='httpGet'
>httpGet()
</a></h3>
1725 <h4>Description
</h4>
1726 <p>Send a GET request to the server.
1731 <a href='#http_t'
>http_t
</a> * http,
1735 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1736 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1738 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1739 <tr><td><tt>uri
</tt></td><td>URI to get
</td></tr>
1740 </tbody></table></div>
1742 <p>Status of call (
0 = success)
</p>
1744 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpGetBlocking'
>httpGetBlocking()
</a></h3>
1745 <h4>Description
</h4>
1746 <p>Get the blocking/non-block state of a connection.
1753 <a href='#http_t'
>http_t
</a> * http);
1756 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1757 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1759 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1760 </tbody></table></div>
1762 <p>1 if blocking,
0 if non-blocking
</p>
1764 <h3 class='title'
><span class='info'
> CUPS
1.1.19 </span><a name='httpGetCookie'
>httpGetCookie()
</a></h3>
1765 <h4>Description
</h4>
1766 <p>Get any cookie data from the response.
1773 <a href='#http_t'
>http_t
</a> * http);
1776 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1777 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1779 <tr><td><tt>http
</tt></td><td>HTTP connecion
</td></tr>
1780 </tbody></table></div>
1782 <p>Cookie data or NULL
</p>
1784 <h3 class='title'
><span class='info'
> DEPRECATED
</span><a name='httpGetDateString'
>httpGetDateString()
</a></h3>
1785 <h4>Description
</h4>
1786 <p>Get a formatted date/time string from a time value.
1796 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1797 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1799 <tr><td><tt>t
</tt></td><td>UNIX time
</td></tr>
1800 </tbody></table></div>
1802 <p>Date/time string
</p>
1804 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpGetDateString2'
>httpGetDateString2()
</a></h3>
1805 <h4>Description
</h4>
1806 <p>Get a formatted date/time string from a time value.
1818 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1819 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1821 <tr><td><tt>t
</tt></td><td>UNIX time
</td></tr>
1822 <tr><td><tt>s
</tt></td><td>String buffer
</td></tr>
1823 <tr><td><tt>slen
</tt></td><td>Size of string buffer
</td></tr>
1824 </tbody></table></div>
1826 <p>Date/time string
</p>
1828 <h3 class='title'
><a name='httpGetDateTime'
>httpGetDateTime()
</a></h3>
1829 <h4>Description
</h4>
1830 <p>Get a time value from a formatted date/time string.
1838 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1839 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1841 <tr><td><tt>s
</tt></td><td>Date/time string
</td></tr>
1842 </tbody></table></div>
1846 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpGetFd'
>httpGetFd()
</a></h3>
1847 <h4>Description
</h4>
1848 <p>Get the file descriptor associated with a connection.
1855 <a href='#http_t'
>http_t
</a> * http);
1858 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1859 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1861 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1862 </tbody></table></div>
1864 <p>File descriptor or -
1 if none
</p>
1866 <h3 class='title'
><a name='httpGetField'
>httpGetField()
</a></h3>
1867 <h4>Description
</h4>
1868 <p>Get a field value from a request/response.
1873 <a href='#http_t'
>http_t
</a> * http,
1874 http_field_t field);
1877 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1878 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1880 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1881 <tr><td><tt>field
</tt></td><td>Field to get
</td></tr>
1882 </tbody></table></div>
1886 <h3 class='title'
><span class='info'
> DEPRECATED
</span><a name='httpGetHostByName'
>httpGetHostByName()
</a></h3>
1887 <h4>Description
</h4>
1888 <p>Lookup a hostname or IPv4 address, and return
1889 address records for the specified name.
1894 struct hostent *
<br>
1899 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1900 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1902 <tr><td><tt>name
</tt></td><td>Hostname or IP address
</td></tr>
1903 </tbody></table></div>
1907 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpGetHostname'
>httpGetHostname()
</a></h3>
1908 <h4>Description
</h4>
1909 <p>Get the FQDN for the connection or local system.
1910 <p>When
"http
" points to a connected socket, return the hostname or
1911 address that was used in the call to httpConnect() or httpConnectEncrypt().
1912 Otherwise, return the FQDN for the local system using both gethostname()
1913 and gethostbyname() to get the local hostname with domain.
1920 <a href='#http_t'
>http_t
</a> * http,
1925 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1926 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1928 <tr><td><tt>http
</tt></td><td>HTTP connection or NULL
</td></tr>
1929 <tr><td><tt>s
</tt></td><td>String buffer for name
</td></tr>
1930 <tr><td><tt>slen
</tt></td><td>Size of buffer
</td></tr>
1931 </tbody></table></div>
1933 <p>FQDN for connection or system
</p>
1935 <h3 class='title'
><span class='info'
> DEPRECATED
</span><a name='httpGetLength'
>httpGetLength()
</a></h3>
1936 <h4>Description
</h4>
1937 <p>Get the amount of data remaining from the
1938 content-length or transfer-encoding fields.
1939 <p>This function is deprecated and will not return lengths larger than
1940 2^
31 -
1; use httpGetLength2() instead.
1947 <a href='#http_t'
>http_t
</a> * http);
1950 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1951 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1953 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1954 </tbody></table></div>
1956 <p>Content length
</p>
1958 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpGetLength2'
>httpGetLength2()
</a></h3>
1959 <h4>Description
</h4>
1960 <p>Get the amount of data remaining from the
1961 content-length or transfer-encoding fields.
1962 <p>This function returns the complete content length, even for
1963 content larger than
2^
31 -
1.
1970 <a href='#http_t'
>http_t
</a> * http);
1973 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1974 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1976 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1977 </tbody></table></div>
1979 <p>Content length
</p>
1981 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpGetStatus'
>httpGetStatus()
</a></h3>
1982 <h4>Description
</h4>
1983 <p>Get the status of the last HTTP request.
1990 <a href='#http_t'
>http_t
</a> * http);
1993 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1994 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1996 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1997 </tbody></table></div>
2001 <h3 class='title'
><span class='info'
> DEPRECATED
</span><a name='httpGetSubField'
>httpGetSubField()
</a></h3>
2002 <h4>Description
</h4>
2003 <p>Get a sub-field value.
2010 <a href='#http_t'
>http_t
</a> * http,
2016 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2017 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2019 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
2020 <tr><td><tt>field
</tt></td><td>Field index
</td></tr>
2021 <tr><td><tt>name
</tt></td><td>Name of sub-field
</td></tr>
2022 <tr><td><tt>value
</tt></td><td>Value string
</td></tr>
2023 </tbody></table></div>
2025 <p>Value or NULL
</p>
2027 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpGetSubField2'
>httpGetSubField2()
</a></h3>
2028 <h4>Description
</h4>
2029 <p>Get a sub-field value.
2036 <a href='#http_t'
>http_t
</a> * http,
2043 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2044 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2046 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
2047 <tr><td><tt>field
</tt></td><td>Field index
</td></tr>
2048 <tr><td><tt>name
</tt></td><td>Name of sub-field
</td></tr>
2049 <tr><td><tt>value
</tt></td><td>Value string
</td></tr>
2050 <tr><td><tt>valuelen
</tt></td><td>Size of value buffer
</td></tr>
2051 </tbody></table></div>
2053 <p>Value or NULL
</p>
2055 <h3 class='title'
><a name='httpGets'
>httpGets()
</a></h3>
2056 <h4>Description
</h4>
2057 <p>Get a line of text from a HTTP connection.
2064 <a href='#http_t'
>http_t
</a> * http);
2067 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2068 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2070 <tr><td><tt>line
</tt></td><td>Line to read into
</td></tr>
2071 <tr><td><tt>length
</tt></td><td>Max length of buffer
</td></tr>
2072 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
2073 </tbody></table></div>
2077 <h3 class='title'
><a name='httpHead'
>httpHead()
</a></h3>
2078 <h4>Description
</h4>
2079 <p>Send a HEAD request to the server.
2084 <a href='#http_t'
>http_t
</a> * http,
2088 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2089 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2091 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
2092 <tr><td><tt>uri
</tt></td><td>URI for head
</td></tr>
2093 </tbody></table></div>
2095 <p>Status of call (
0 = success)
</p>
2097 <h3 class='title'
><a name='httpInitialize'
>httpInitialize()
</a></h3>
2098 <h4>Description
</h4>
2099 <p>Initialize the HTTP interface library and set the
2100 default HTTP proxy (if any).
2104 httpInitialize(void);
2111 <h3 class='title'
><a name='httpMD5'
>httpMD5()
</a></h3>
2112 <h4>Description
</h4>
2113 <p>Compute the MD5 sum of the username:group:password.
2118 const char * username,
2120 const char * passwd,
2124 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2125 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2127 <tr><td><tt>username
</tt></td><td>User name
</td></tr>
2128 <tr><td><tt>realm
</tt></td><td>Realm name
</td></tr>
2129 <tr><td><tt>passwd
</tt></td><td>Password string
</td></tr>
2130 <tr><td><tt>md5[
33]
</tt></td><td>MD5 string
</td></tr>
2131 </tbody></table></div>
2135 <h3 class='title'
><a name='httpMD5Final'
>httpMD5Final()
</a></h3>
2136 <h4>Description
</h4>
2137 <p>Combine the MD5 sum of the username, group, and password
2138 with the server-supplied nonce value, method, and
2145 const char * method,
2146 const char * resource,
2150 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2151 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2153 <tr><td><tt>nonce
</tt></td><td>Server nonce value
</td></tr>
2154 <tr><td><tt>method
</tt></td><td>METHOD (GET, POST, etc.)
</td></tr>
2155 <tr><td><tt>resource
</tt></td><td>Resource path
</td></tr>
2156 <tr><td><tt>md5[
33]
</tt></td><td>MD5 sum
</td></tr>
2157 </tbody></table></div>
2161 <h3 class='title'
><a name='httpMD5String'
>httpMD5String()
</a></h3>
2162 <h4>Description
</h4>
2163 <p>Convert an MD5 sum to a character string.
2168 const unsigned char * sum,
2172 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2173 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2175 <tr><td><tt>sum
</tt></td><td>MD5 sum data
</td></tr>
2176 <tr><td><tt>md5[
33]
</tt></td><td>MD5 sum in hex
</td></tr>
2177 </tbody></table></div>
2179 <p>MD5 sum in hex
</p>
2181 <h3 class='title'
><a name='httpOptions'
>httpOptions()
</a></h3>
2182 <h4>Description
</h4>
2183 <p>Send an OPTIONS request to the server.
2188 <a href='#http_t'
>http_t
</a> * http,
2192 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2193 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2195 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
2196 <tr><td><tt>uri
</tt></td><td>URI for options
</td></tr>
2197 </tbody></table></div>
2199 <p>Status of call (
0 = success)
</p>
2201 <h3 class='title'
><a name='httpPost'
>httpPost()
</a></h3>
2202 <h4>Description
</h4>
2203 <p>Send a POST request to the server.
2208 <a href='#http_t'
>http_t
</a> * http,
2212 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2213 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2215 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
2216 <tr><td><tt>uri
</tt></td><td>URI for post
</td></tr>
2217 </tbody></table></div>
2219 <p>Status of call (
0 = success)
</p>
2221 <h3 class='title'
><a name='httpPut'
>httpPut()
</a></h3>
2222 <h4>Description
</h4>
2223 <p>Send a PUT request to the server.
2228 <a href='#http_t'
>http_t
</a> * http,
2232 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2233 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2235 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
2236 <tr><td><tt>uri
</tt></td><td>URI to put
</td></tr>
2237 </tbody></table></div>
2239 <p>Status of call (
0 = success)
</p>
2241 <h3 class='title'
><span class='info'
> DEPRECATED
</span><a name='httpRead'
>httpRead()
</a></h3>
2242 <h4>Description
</h4>
2243 <p>Read data from a HTTP connection.
2244 <p>This function is deprecated. Use the httpRead2() function which can
2245 read more than
2GB of data.
2252 <a href='#http_t'
>http_t
</a> * http,
2257 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2258 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2260 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
2261 <tr><td><tt>buffer
</tt></td><td>Buffer for data
</td></tr>
2262 <tr><td><tt>length
</tt></td><td>Maximum number of bytes
</td></tr>
2263 </tbody></table></div>
2265 <p>Number of bytes read
</p>
2267 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpRead2'
>httpRead2()
</a></h3>
2268 <h4>Description
</h4>
2269 <p>Read data from a HTTP connection.
2274 <a href='#ssize_t'
>ssize_t
</a><br>
2276 <a href='#http_t'
>http_t
</a> * http,
2281 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2282 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2284 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
2285 <tr><td><tt>buffer
</tt></td><td>Buffer for data
</td></tr>
2286 <tr><td><tt>length
</tt></td><td>Maximum number of bytes
</td></tr>
2287 </tbody></table></div>
2289 <p>Number of bytes read
</p>
2291 <h3 class='title'
><a name='httpReconnect'
>httpReconnect()
</a></h3>
2292 <h4>Description
</h4>
2293 <p>Reconnect to a HTTP server.
2298 <a href='#http_t'
>http_t
</a> * http);
2301 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2302 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2304 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
2305 </tbody></table></div>
2307 <p>0 on success, non-zero on failure
</p>
2309 <h3 class='title'
><span class='info'
> DEPRECATED
</span><a name='httpSeparate'
>httpSeparate()
</a></h3>
2310 <h4>Description
</h4>
2311 <p>Separate a Universal Resource Identifier into its
2313 <p>This function is deprecated; use the httpSeparateURI() function instead.
2328 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2329 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2331 <tr><td><tt>uri
</tt></td><td>Universal Resource Identifier
</td></tr>
2332 <tr><td><tt>scheme
</tt></td><td>Scheme [
32] (http, https, etc.)
</td></tr>
2333 <tr><td><tt>username
</tt></td><td>Username [
1024]
</td></tr>
2334 <tr><td><tt>host
</tt></td><td>Hostname [
1024]
</td></tr>
2335 <tr><td><tt>port
</tt></td><td>Port number to use
</td></tr>
2336 <tr><td><tt>resource
</tt></td><td>Resource/filename [
1024]
</td></tr>
2337 </tbody></table></div>
2341 <h3 class='title'
><span class='info'
> CUPS
1.1.21 </span><a name='httpSeparate2'
>httpSeparate2()
</a></h3>
2342 <h4>Description
</h4>
2343 <p>Separate a Universal Resource Identifier into its
2345 <p>This function is deprecated; use the httpSeparateURI() function instead.
2365 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2366 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2368 <tr><td><tt>uri
</tt></td><td>Universal Resource Identifier
</td></tr>
2369 <tr><td><tt>scheme
</tt></td><td>Scheme (http, https, etc.)
</td></tr>
2370 <tr><td><tt>schemelen
</tt></td><td>Size of scheme buffer
</td></tr>
2371 <tr><td><tt>username
</tt></td><td>Username
</td></tr>
2372 <tr><td><tt>usernamelen
</tt></td><td>Size of username buffer
</td></tr>
2373 <tr><td><tt>host
</tt></td><td>Hostname
</td></tr>
2374 <tr><td><tt>hostlen
</tt></td><td>Size of hostname buffer
</td></tr>
2375 <tr><td><tt>port
</tt></td><td>Port number to use
</td></tr>
2376 <tr><td><tt>resource
</tt></td><td>Resource/filename
</td></tr>
2377 <tr><td><tt>resourcelen
</tt></td><td>Size of resource buffer
</td></tr>
2378 </tbody></table></div>
2382 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpSeparateURI'
>httpSeparateURI()
</a></h3>
2383 <h4>Description
</h4>
2384 <p>Separate a Universal Resource Identifier into its
2390 http_uri_status_t
<br>
2392 http_uri_coding_t decoding,
2405 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2406 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2408 <tr><td><tt>decoding
</tt></td><td>Decoding flags
</td></tr>
2409 <tr><td><tt>uri
</tt></td><td>Universal Resource Identifier
</td></tr>
2410 <tr><td><tt>scheme
</tt></td><td>Scheme (http, https, etc.)
</td></tr>
2411 <tr><td><tt>schemelen
</tt></td><td>Size of scheme buffer
</td></tr>
2412 <tr><td><tt>username
</tt></td><td>Username
</td></tr>
2413 <tr><td><tt>usernamelen
</tt></td><td>Size of username buffer
</td></tr>
2414 <tr><td><tt>host
</tt></td><td>Hostname
</td></tr>
2415 <tr><td><tt>hostlen
</tt></td><td>Size of hostname buffer
</td></tr>
2416 <tr><td><tt>port
</tt></td><td>Port number to use
</td></tr>
2417 <tr><td><tt>resource
</tt></td><td>Resource/filename
</td></tr>
2418 <tr><td><tt>resourcelen
</tt></td><td>Size of resource buffer
</td></tr>
2419 </tbody></table></div>
2421 <p>Result of separation
</p>
2423 <h3 class='title'
><span class='info'
> CUPS
1.1.19 </span><a name='httpSetCookie'
>httpSetCookie()
</a></h3>
2424 <h4>Description
</h4>
2425 <p>Set the cookie value(s)...
2432 <a href='#http_t'
>http_t
</a> * http,
2433 const char * cookie);
2436 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2437 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2439 <tr><td><tt>http
</tt></td><td>Connection
</td></tr>
2440 <tr><td><tt>cookie
</tt></td><td>Cookie string
</td></tr>
2441 </tbody></table></div>
2445 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpSetExpect'
>httpSetExpect()
</a></h3>
2446 <h4>Description
</h4>
2447 <p>Set the Expect: header in a request.
2448 <p>Currently only HTTP_CONTINUE is supported for the
"expect
" argument.
2455 <a href='#http_t'
>http_t
</a> * http,
2456 http_status_t expect);
2459 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2460 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2462 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
2463 <tr><td><tt>expect
</tt></td><td>HTTP status to expect (HTTP_CONTINUE)
</td></tr>
2464 </tbody></table></div>
2468 <h3 class='title'
><a name='httpSetField'
>httpSetField()
</a></h3>
2469 <h4>Description
</h4>
2470 <p>Set the value of an HTTP header.
2475 <a href='#http_t'
>http_t
</a> * http,
2477 const char * value);
2480 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2481 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2483 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
2484 <tr><td><tt>field
</tt></td><td>Field index
</td></tr>
2485 <tr><td><tt>value
</tt></td><td>Value
</td></tr>
2486 </tbody></table></div>
2490 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpSetLength'
>httpSetLength()
</a></h3>
2491 <h4>Description
</h4>
2492 <p>Set the content-length and content-encoding.
2499 <a href='#http_t'
>http_t
</a> * http,
2503 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2504 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2506 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
2507 <tr><td><tt>length
</tt></td><td>Length (
0 for chunked)
</td></tr>
2508 </tbody></table></div>
2512 <h3 class='title'
><a name='httpStatus'
>httpStatus()
</a></h3>
2513 <h4>Description
</h4>
2514 <p>Return a short string describing a HTTP status code.
2519 http_status_t status);
2522 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2523 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2525 <tr><td><tt>status
</tt></td><td>HTTP status code
</td></tr>
2526 </tbody></table></div>
2528 <p>String or NULL
</p>
2530 <h3 class='title'
><a name='httpTrace'
>httpTrace()
</a></h3>
2531 <h4>Description
</h4>
2532 <p>Send an TRACE request to the server.
2537 <a href='#http_t'
>http_t
</a> * http,
2541 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2542 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2544 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
2545 <tr><td><tt>uri
</tt></td><td>URI for trace
</td></tr>
2546 </tbody></table></div>
2548 <p>Status of call (
0 = success)
</p>
2550 <h3 class='title'
><a name='httpUpdate'
>httpUpdate()
</a></h3>
2551 <h4>Description
</h4>
2552 <p>Update the current HTTP state for incoming data.
2557 <a href='#http_t'
>http_t
</a> * http);
2560 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2561 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2563 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
2564 </tbody></table></div>
2568 <h3 class='title'
><span class='info'
> CUPS
1.1.19 </span><a name='httpWait'
>httpWait()
</a></h3>
2569 <h4>Description
</h4>
2570 <p>Wait for data available on a connection.
2577 <a href='#http_t'
>http_t
</a> * http,
2581 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2582 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2584 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
2585 <tr><td><tt>msec
</tt></td><td>Milliseconds to wait
</td></tr>
2586 </tbody></table></div>
2588 <p>1 if data is available,
0 otherwise
</p>
2590 <h3 class='title'
><span class='info'
> DEPRECATED
</span><a name='httpWrite'
>httpWrite()
</a></h3>
2591 <h4>Description
</h4>
2592 <p>Write data to a HTTP connection.
2593 <p>This function is deprecated. Use the httpWrite2() function which can
2594 write more than
2GB of data.
2601 <a href='#http_t'
>http_t
</a> * http,
2602 const char * buffer,
2606 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2607 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2609 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
2610 <tr><td><tt>buffer
</tt></td><td>Buffer for data
</td></tr>
2611 <tr><td><tt>length
</tt></td><td>Number of bytes to write
</td></tr>
2612 </tbody></table></div>
2614 <p>Number of bytes written
</p>
2616 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpWrite2'
>httpWrite2()
</a></h3>
2617 <h4>Description
</h4>
2618 <p>Write data to a HTTP connection.
2623 <a href='#ssize_t'
>ssize_t
</a><br>
2625 <a href='#http_t'
>http_t
</a> * http,
2626 const char * buffer,
2630 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2631 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2633 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
2634 <tr><td><tt>buffer
</tt></td><td>Buffer for data
</td></tr>
2635 <tr><td><tt>length
</tt></td><td>Number of bytes to write
</td></tr>
2636 </tbody></table></div>
2638 <p>Number of bytes written
</p>
2640 <h3 class='title'
><a name='ippAddBoolean'
>ippAddBoolean()
</a></h3>
2641 <h4>Description
</h4>
2642 <p>Add a boolean attribute to an IPP message.
2645 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
<br>
2647 <a href='#ipp_t'
>ipp_t
</a> * ipp,
2653 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2654 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2656 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
2657 <tr><td><tt>group
</tt></td><td>IPP group
</td></tr>
2658 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
2659 <tr><td><tt>value
</tt></td><td>Value of attribute
</td></tr>
2660 </tbody></table></div>
2662 <p>New attribute
</p>
2664 <h3 class='title'
><a name='ippAddBooleans'
>ippAddBooleans()
</a></h3>
2665 <h4>Description
</h4>
2666 <p>Add an array of boolean values.
2669 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
<br>
2671 <a href='#ipp_t'
>ipp_t
</a> * ipp,
2675 const char * values);
2678 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2679 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2681 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
2682 <tr><td><tt>group
</tt></td><td>IPP group
</td></tr>
2683 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
2684 <tr><td><tt>num_values
</tt></td><td>Number of values
</td></tr>
2685 <tr><td><tt>values
</tt></td><td>Values
</td></tr>
2686 </tbody></table></div>
2688 <p>New attribute
</p>
2690 <h3 class='title'
><span class='info'
> CUPS
1.1.19 </span><a name='ippAddCollection'
>ippAddCollection()
</a></h3>
2691 <h4>Description
</h4>
2692 <p>Add a collection value.
2697 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
<br>
2699 <a href='#ipp_t'
>ipp_t
</a> * ipp,
2702 <a href='#ipp_t'
>ipp_t
</a> * value);
2705 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2706 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2708 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
2709 <tr><td><tt>group
</tt></td><td>IPP group
</td></tr>
2710 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
2711 <tr><td><tt>value
</tt></td><td>Value
</td></tr>
2712 </tbody></table></div>
2714 <p>New attribute
</p>
2716 <h3 class='title'
><span class='info'
> CUPS
1.1.19 </span><a name='ippAddCollections'
>ippAddCollections()
</a></h3>
2717 <h4>Description
</h4>
2718 <p>Add an array of collection values.
2723 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
<br>
2725 <a href='#ipp_t'
>ipp_t
</a> * ipp,
2729 const
<a href='#ipp_t'
>ipp_t
</a> ** values);
2732 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2733 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2735 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
2736 <tr><td><tt>group
</tt></td><td>IPP group
</td></tr>
2737 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
2738 <tr><td><tt>num_values
</tt></td><td>Number of values
</td></tr>
2739 <tr><td><tt>values
</tt></td><td>Values
</td></tr>
2740 </tbody></table></div>
2742 <p>New attribute
</p>
2744 <h3 class='title'
><a name='ippAddDate'
>ippAddDate()
</a></h3>
2745 <h4>Description
</h4>
2746 <p>Add a date attribute to an IPP message.
2749 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
<br>
2751 <a href='#ipp_t'
>ipp_t
</a> * ipp,
2754 const
<a href='#ipp_uchar_t'
>ipp_uchar_t
</a> * value);
2757 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2758 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2760 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
2761 <tr><td><tt>group
</tt></td><td>IPP group
</td></tr>
2762 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
2763 <tr><td><tt>value
</tt></td><td>Value
</td></tr>
2764 </tbody></table></div>
2766 <p>New attribute
</p>
2768 <h3 class='title'
><a name='ippAddInteger'
>ippAddInteger()
</a></h3>
2769 <h4>Description
</h4>
2770 <p>Add a integer attribute to an IPP message.
2773 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
<br>
2775 <a href='#ipp_t'
>ipp_t
</a> * ipp,
2782 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2783 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2785 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
2786 <tr><td><tt>group
</tt></td><td>IPP group
</td></tr>
2787 <tr><td><tt>type
</tt></td><td>Type of attribute
</td></tr>
2788 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
2789 <tr><td><tt>value
</tt></td><td>Value of attribute
</td></tr>
2790 </tbody></table></div>
2792 <p>New attribute
</p>
2794 <h3 class='title'
><a name='ippAddIntegers'
>ippAddIntegers()
</a></h3>
2795 <h4>Description
</h4>
2796 <p>Add an array of integer values.
2799 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
<br>
2801 <a href='#ipp_t'
>ipp_t
</a> * ipp,
2806 const int * values);
2809 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2810 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2812 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
2813 <tr><td><tt>group
</tt></td><td>IPP group
</td></tr>
2814 <tr><td><tt>type
</tt></td><td>Type of attribute
</td></tr>
2815 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
2816 <tr><td><tt>num_values
</tt></td><td>Number of values
</td></tr>
2817 <tr><td><tt>values
</tt></td><td>Values
</td></tr>
2818 </tbody></table></div>
2820 <p>New attribute
</p>
2822 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='ippAddOctetString'
>ippAddOctetString()
</a></h3>
2823 <h4>Description
</h4>
2824 <p>Add an octetString value to an IPP message.
2829 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
<br>
2831 <a href='#ipp_t'
>ipp_t
</a> * ipp,
2838 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2839 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2841 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
2842 <tr><td><tt>group
</tt></td><td>IPP group
</td></tr>
2843 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
2844 <tr><td><tt>data
</tt></td><td>octetString data
</td></tr>
2845 <tr><td><tt>datalen
</tt></td><td>Length of data in bytes
</td></tr>
2846 </tbody></table></div>
2848 <p>New attribute
</p>
2850 <h3 class='title'
><a name='ippAddRange'
>ippAddRange()
</a></h3>
2851 <h4>Description
</h4>
2852 <p>Add a range of values to an IPP message.
2855 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
<br>
2857 <a href='#ipp_t'
>ipp_t
</a> * ipp,
2864 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2865 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2867 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
2868 <tr><td><tt>group
</tt></td><td>IPP group
</td></tr>
2869 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
2870 <tr><td><tt>lower
</tt></td><td>Lower value
</td></tr>
2871 <tr><td><tt>upper
</tt></td><td>Upper value
</td></tr>
2872 </tbody></table></div>
2874 <p>New attribute
</p>
2876 <h3 class='title'
><a name='ippAddRanges'
>ippAddRanges()
</a></h3>
2877 <h4>Description
</h4>
2878 <p>Add ranges of values to an IPP message.
2881 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
<br>
2883 <a href='#ipp_t'
>ipp_t
</a> * ipp,
2891 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2892 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2894 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
2895 <tr><td><tt>group
</tt></td><td>IPP group
</td></tr>
2896 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
2897 <tr><td><tt>num_values
</tt></td><td>Number of values
</td></tr>
2898 <tr><td><tt>lower
</tt></td><td>Lower values
</td></tr>
2899 <tr><td><tt>upper
</tt></td><td>Upper values
</td></tr>
2900 </tbody></table></div>
2902 <p>New attribute
</p>
2904 <h3 class='title'
><a name='ippAddResolution'
>ippAddResolution()
</a></h3>
2905 <h4>Description
</h4>
2906 <p>Add a resolution value to an IPP message.
2909 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
<br>
2911 <a href='#ipp_t'
>ipp_t
</a> * ipp,
2919 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2920 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2922 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
2923 <tr><td><tt>group
</tt></td><td>IPP group
</td></tr>
2924 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
2925 <tr><td><tt>units
</tt></td><td>Units for resolution
</td></tr>
2926 <tr><td><tt>xres
</tt></td><td>X resolution
</td></tr>
2927 <tr><td><tt>yres
</tt></td><td>Y resolution
</td></tr>
2928 </tbody></table></div>
2930 <p>New attribute
</p>
2932 <h3 class='title'
><a name='ippAddResolutions'
>ippAddResolutions()
</a></h3>
2933 <h4>Description
</h4>
2934 <p>Add resolution values to an IPP message.
2937 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
<br>
2939 <a href='#ipp_t'
>ipp_t
</a> * ipp,
2948 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2949 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2951 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
2952 <tr><td><tt>group
</tt></td><td>IPP group
</td></tr>
2953 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
2954 <tr><td><tt>num_values
</tt></td><td>Number of values
</td></tr>
2955 <tr><td><tt>units
</tt></td><td>Units for resolution
</td></tr>
2956 <tr><td><tt>xres
</tt></td><td>X resolutions
</td></tr>
2957 <tr><td><tt>yres
</tt></td><td>Y resolutions
</td></tr>
2958 </tbody></table></div>
2960 <p>New attribute
</p>
2962 <h3 class='title'
><a name='ippAddSeparator'
>ippAddSeparator()
</a></h3>
2963 <h4>Description
</h4>
2964 <p>Add a group separator to an IPP message.
2967 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
<br>
2969 <a href='#ipp_t'
>ipp_t
</a> * ipp);
2972 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2973 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2975 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
2976 </tbody></table></div>
2978 <p>New attribute
</p>
2980 <h3 class='title'
><a name='ippAddString'
>ippAddString()
</a></h3>
2981 <h4>Description
</h4>
2982 <p>Add a language-encoded string to an IPP message.
2985 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
<br>
2987 <a href='#ipp_t'
>ipp_t
</a> * ipp,
2991 const char * charset,
2992 const char * value);
2995 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2996 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2998 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
2999 <tr><td><tt>group
</tt></td><td>IPP group
</td></tr>
3000 <tr><td><tt>type
</tt></td><td>Type of attribute
</td></tr>
3001 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
3002 <tr><td><tt>charset
</tt></td><td>Character set
</td></tr>
3003 <tr><td><tt>value
</tt></td><td>Value
</td></tr>
3004 </tbody></table></div>
3006 <p>New attribute
</p>
3008 <h3 class='title'
><a name='ippAddStrings'
>ippAddStrings()
</a></h3>
3009 <h4>Description
</h4>
3010 <p>Add language-encoded strings to an IPP message.
3013 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
<br>
3015 <a href='#ipp_t'
>ipp_t
</a> * ipp,
3020 const char * charset,
3021 const char *const * values);
3024 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
3025 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3027 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
3028 <tr><td><tt>group
</tt></td><td>IPP group
</td></tr>
3029 <tr><td><tt>type
</tt></td><td>Type of attribute
</td></tr>
3030 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
3031 <tr><td><tt>num_values
</tt></td><td>Number of values
</td></tr>
3032 <tr><td><tt>charset
</tt></td><td>Character set
</td></tr>
3033 <tr><td><tt>values
</tt></td><td>Values
</td></tr>
3034 </tbody></table></div>
3036 <p>New attribute
</p>
3038 <h3 class='title'
><a name='ippDateToTime'
>ippDateToTime()
</a></h3>
3039 <h4>Description
</h4>
3040 <p>Convert from RFC
1903 Date/Time format to UNIX time
3046 const
<a href='#ipp_uchar_t'
>ipp_uchar_t
</a> * date);
3049 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
3050 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3052 <tr><td><tt>date
</tt></td><td>RFC
1903 date info
</td></tr>
3053 </tbody></table></div>
3055 <p>UNIX time value
</p>
3057 <h3 class='title'
><a name='ippDelete'
>ippDelete()
</a></h3>
3058 <h4>Description
</h4>
3059 <p>Delete an IPP message.
3064 <a href='#ipp_t'
>ipp_t
</a> * ipp);
3067 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
3068 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3070 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
3071 </tbody></table></div>
3075 <h3 class='title'
><span class='info'
> CUPS
1.1.19 </span><a name='ippDeleteAttribute'
>ippDeleteAttribute()
</a></h3>
3076 <h4>Description
</h4>
3077 <p>Delete a single attribute in an IPP message.
3084 <a href='#ipp_t'
>ipp_t
</a> * ipp,
3085 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> * attr);
3088 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
3089 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3091 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
3092 <tr><td><tt>attr
</tt></td><td>Attribute to delete
</td></tr>
3093 </tbody></table></div>
3097 <h3 class='title'
><a name='ippErrorString'
>ippErrorString()
</a></h3>
3098 <h4>Description
</h4>
3099 <p>Return a name for the given status code.
3104 ipp_status_t error);
3107 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
3108 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3110 <tr><td><tt>error
</tt></td><td>Error status
</td></tr>
3111 </tbody></table></div>
3115 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='ippErrorValue'
>ippErrorValue()
</a></h3>
3116 <h4>Description
</h4>
3117 <p>Return a status code for the given name.
3127 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
3128 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3130 <tr><td><tt>name
</tt></td><td>Name
</td></tr>
3131 </tbody></table></div>
3133 <p>IPP status code
</p>
3135 <h3 class='title'
><a name='ippFindAttribute'
>ippFindAttribute()
</a></h3>
3136 <h4>Description
</h4>
3137 <p>Find a named attribute in a request...
3140 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
<br>
3142 <a href='#ipp_t'
>ipp_t
</a> * ipp,
3147 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
3148 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3150 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
3151 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
3152 <tr><td><tt>type
</tt></td><td>Type of attribute
</td></tr>
3153 </tbody></table></div>
3155 <p>Matching attribute
</p>
3157 <h3 class='title'
><a name='ippFindNextAttribute'
>ippFindNextAttribute()
</a></h3>
3158 <h4>Description
</h4>
3159 <p>Find the next named attribute in a request...
3162 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
<br>
3163 ippFindNextAttribute(
3164 <a href='#ipp_t'
>ipp_t
</a> * ipp,
3169 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
3170 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3172 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
3173 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
3174 <tr><td><tt>type
</tt></td><td>Type of attribute
</td></tr>
3175 </tbody></table></div>
3177 <p>Matching attribute
</p>
3179 <h3 class='title'
><a name='ippLength'
>ippLength()
</a></h3>
3180 <h4>Description
</h4>
3181 <p>Compute the length of an IPP message.
3186 <a href='#ipp_t'
>ipp_t
</a> * ipp);
3189 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
3190 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3192 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
3193 </tbody></table></div>
3195 <p>Size of IPP message
</p>
3197 <h3 class='title'
><a name='ippNew'
>ippNew()
</a></h3>
3198 <h4>Description
</h4>
3199 <p>Allocate a new IPP message.
3202 <a href='#ipp_t'
>ipp_t
</a> *
<br>
3208 <p>New IPP message
</p>
3210 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='ippNewRequest'
>ippNewRequest()
</a></h3>
3211 <h4>Description
</h4>
3212 <p>Allocate a new IPP request message.
3213 <p>The new request message is initialized with the attributes-charset and
3214 attributes-natural-language attributes added. The
3215 attributes-natural-language value is derived from the current locale.
3220 <a href='#ipp_t'
>ipp_t
</a> *
<br>
3225 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
3226 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3228 <tr><td><tt>op
</tt></td><td>Operation code
</td></tr>
3229 </tbody></table></div>
3231 <p>IPP request message
</p>
3233 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='ippOpString'
>ippOpString()
</a></h3>
3234 <h4>Description
</h4>
3235 <p>Return a name for the given operation id.
3245 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
3246 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3248 <tr><td><tt>op
</tt></td><td>Operation ID
</td></tr>
3249 </tbody></table></div>
3253 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='ippOpValue'
>ippOpValue()
</a></h3>
3254 <h4>Description
</h4>
3255 <p>Return an operation id for the given name.
3265 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
3266 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3268 <tr><td><tt>name
</tt></td><td>Textual name
</td></tr>
3269 </tbody></table></div>
3273 <h3 class='title'
><a name='ippPort'
>ippPort()
</a></h3>
3274 <h4>Description
</h4>
3275 <p>Return the default IPP port number.
3286 <h3 class='title'
><a name='ippRead'
>ippRead()
</a></h3>
3287 <h4>Description
</h4>
3288 <p>Read data for an IPP message from a HTTP connection.
3293 <a href='#http_t'
>http_t
</a> * http,
3294 <a href='#ipp_t'
>ipp_t
</a> * ipp);
3297 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
3298 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3300 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
3301 <tr><td><tt>ipp
</tt></td><td>IPP data
</td></tr>
3302 </tbody></table></div>
3304 <p>Current state
</p>
3306 <h3 class='title'
><span class='info'
> CUPS
1.1.19 </span><a name='ippReadFile'
>ippReadFile()
</a></h3>
3307 <h4>Description
</h4>
3308 <p>Read data for an IPP message from a file.
3316 <a href='#ipp_t'
>ipp_t
</a> * ipp);
3319 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
3320 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3322 <tr><td><tt>fd
</tt></td><td>HTTP data
</td></tr>
3323 <tr><td><tt>ipp
</tt></td><td>IPP data
</td></tr>
3324 </tbody></table></div>
3326 <p>Current state
</p>
3328 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='ippReadIO'
>ippReadIO()
</a></h3>
3329 <h4>Description
</h4>
3330 <p>Read data for an IPP message.
3338 <a href='#ipp_iocb_t'
>ipp_iocb_t
</a> cb,
3340 <a href='#ipp_t'
>ipp_t
</a> * parent,
3341 <a href='#ipp_t'
>ipp_t
</a> * ipp);
3344 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
3345 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3347 <tr><td><tt>src
</tt></td><td>Data source
</td></tr>
3348 <tr><td><tt>cb
</tt></td><td>Read callback function
</td></tr>
3349 <tr><td><tt>blocking
</tt></td><td>Use blocking IO?
</td></tr>
3350 <tr><td><tt>parent
</tt></td><td>Parent request, if any
</td></tr>
3351 <tr><td><tt>ipp
</tt></td><td>IPP data
</td></tr>
3352 </tbody></table></div>
3354 <p>Current state
</p>
3356 <h3 class='title'
><a name='ippSetPort'
>ippSetPort()
</a></h3>
3357 <h4>Description
</h4>
3358 <p>Set the default port number.
3366 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
3367 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3369 <tr><td><tt>p
</tt></td><td>Port number to use
</td></tr>
3370 </tbody></table></div>
3374 <h3 class='title'
><a name='ippTimeToDate'
>ippTimeToDate()
</a></h3>
3375 <h4>Description
</h4>
3376 <p>Convert from UNIX time to RFC
1903 format.
3379 const
<a href='#ipp_uchar_t'
>ipp_uchar_t
</a> *
<br>
3384 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
3385 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3387 <tr><td><tt>t
</tt></td><td>UNIX time value
</td></tr>
3388 </tbody></table></div>
3390 <p>RFC-
1903 date/time data
</p>
3392 <h3 class='title'
><a name='ippWrite'
>ippWrite()
</a></h3>
3393 <h4>Description
</h4>
3394 <p>Write data for an IPP message to a HTTP connection.
3399 <a href='#http_t'
>http_t
</a> * http,
3400 <a href='#ipp_t'
>ipp_t
</a> * ipp);
3403 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
3404 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3406 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
3407 <tr><td><tt>ipp
</tt></td><td>IPP data
</td></tr>
3408 </tbody></table></div>
3410 <p>Current state
</p>
3412 <h3 class='title'
><span class='info'
> CUPS
1.1.19 </span><a name='ippWriteFile'
>ippWriteFile()
</a></h3>
3413 <h4>Description
</h4>
3414 <p>Write data for an IPP message to a file.
3422 <a href='#ipp_t'
>ipp_t
</a> * ipp);
3425 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
3426 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3428 <tr><td><tt>fd
</tt></td><td>HTTP data
</td></tr>
3429 <tr><td><tt>ipp
</tt></td><td>IPP data
</td></tr>
3430 </tbody></table></div>
3432 <p>Current state
</p>
3434 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='ippWriteIO'
>ippWriteIO()
</a></h3>
3435 <h4>Description
</h4>
3436 <p>Write data for an IPP message.
3444 <a href='#ipp_iocb_t'
>ipp_iocb_t
</a> cb,
3446 <a href='#ipp_t'
>ipp_t
</a> * parent,
3447 <a href='#ipp_t'
>ipp_t
</a> * ipp);
3450 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
3451 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3453 <tr><td><tt>dst
</tt></td><td>Destination
</td></tr>
3454 <tr><td><tt>cb
</tt></td><td>Write callback function
</td></tr>
3455 <tr><td><tt>blocking
</tt></td><td>Use blocking IO?
</td></tr>
3456 <tr><td><tt>parent
</tt></td><td>Parent IPP message
</td></tr>
3457 <tr><td><tt>ipp
</tt></td><td>IPP data
</td></tr>
3458 </tbody></table></div>
3460 <p>Current state
</p>
3462 <h2 class='title'
><a name='STRUCTURES'
>Structures
</a></h2>
3464 <li><a href='#http_addrlist_s'
><tt>http_addrlist_s
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
3465 <li><a href='#ipp_attribute_s'
><tt>ipp_attribute_s
</tt></a> </li>
3466 <li><a href='#ipp_s'
><tt>ipp_s
</tt></a> </li>
3469 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='http_addrlist_s'
>http_addrlist_s
</a></h3>
3470 <h4>Description
</h4>
3471 <p>Socket address list, which is
3472 used to enumerate all of the
3473 addresses that are associated
3477 struct http_addrlist_s
<br>
3479 <a href='#http_addr_t'
>http_addr_t
</a> addr;
<br>
3480 struct
<a href='#http_addrlist_s'
>http_addrlist_s
</a> * next;
<br>
3483 <div class='table'
><table align='center' border='
1' width='
80%' summary='Members'
>
3484 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3486 <tr><td><tt>addr
</tt> </td><td>Address
3488 <tr><td><tt>next
</tt> </td><td>Pointer to next address in list
3490 </tbody></table></div>
3492 <h3 class='title'
><a name='ipp_attribute_s'
>ipp_attribute_s
</a></h3>
3493 <h4>Description
</h4>
3497 struct ipp_attribute_s
<br>
3499 char * name;
<br>
3500 struct
<a href='#ipp_attribute_s'
>ipp_attribute_s
</a> * next;
<br>
3501 int num_values;
<br>
3502 ipp_tag_t group_tag, value_tag;
<br>
3503 <a href='#ipp_value_t'
>ipp_value_t
</a> values[
1];
<br>
3506 <div class='table'
><table align='center' border='
1' width='
80%' summary='Members'
>
3507 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3509 <tr><td><tt>name
</tt> </td><td>Name of attribute
3511 <tr><td><tt>next
</tt> </td><td>Next attribute in list
3513 <tr><td><tt>num_values
</tt> </td><td>Number of values
3515 <tr><td><tt>value_tag
</tt> </td><td>What type of value is it?
3517 <tr><td><tt>values[
1]
</tt> </td><td>Values
3519 </tbody></table></div>
3521 <h3 class='title'
><a name='ipp_s'
>ipp_s
</a></h3>
3522 <h4>Description
</h4>
3523 <p>IPP Request/Response/Notification
3528 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> * attrs;
<br>
3529 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> * current;
<br>
3530 ipp_tag_t curtag;
<br>
3531 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> * last;
<br>
3532 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> * prev;
<br>
3533 <a href='#ipp_request_t'
>ipp_request_t
</a> request;
<br>
3534 ipp_state_t state;
<br>
3537 <div class='table'
><table align='center' border='
1' width='
80%' summary='Members'
>
3538 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3540 <tr><td><tt>attrs
</tt> </td><td>Attributes
3542 <tr><td><tt>current
</tt> </td><td>Current attribute (for read/write)
3544 <tr><td><tt>curtag
</tt> </td><td>Current attribute group tag
3546 <tr><td><tt>last
</tt> </td><td>Last attribute in list
3548 <tr><td><tt>prev
</tt> </td><td>Previous attribute (for read)
3550 <tr><td><tt>request
</tt> </td><td>Request header
3552 <tr><td><tt>state
</tt> </td><td>State of request
3554 </tbody></table></div>
3556 <h2 class='title'
><a name='TYPES'
>Types
</a></h2>
3558 <li><a href='#http_addrlist_t'
><tt>http_addrlist_t
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
3559 <li><a href='#http_auth_t'
><tt>http_auth_t
</tt></a> </li>
3560 <li><a href='#http_encoding_t'
><tt>http_encoding_t
</tt></a> </li>
3561 <li><a href='#http_encryption_t'
><tt>http_encryption_t
</tt></a> </li>
3562 <li><a href='#http_t'
><tt>http_t
</tt></a> </li>
3563 <li><a href='#ipp_attribute_t'
><tt>ipp_attribute_t
</tt></a> </li>
3564 <li><a href='#ipp_iocb_t'
><tt>ipp_iocb_t
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
3565 <li><a href='#ipp_request_t'
><tt>ipp_request_t
</tt></a> </li>
3566 <li><a href='#ipp_t'
><tt>ipp_t
</tt></a> </li>
3567 <li><a href='#ipp_uchar_t'
><tt>ipp_uchar_t
</tt></a> </li>
3568 <li><a href='#ipp_value_t'
><tt>ipp_value_t
</tt></a> </li>
3571 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='http_addrlist_t'
>http_addrlist_t
</a></h3>
3572 <h4>Description
</h4>
3573 <p>Socket address list, which is
3574 used to enumerate all of the
3575 addresses that are associated
3579 typedef struct
<a href='#http_addrlist_s'
>http_addrlist_s
</a> / http_addrlist_t;
3582 <h3 class='title'
><a name='http_auth_t'
>http_auth_t
</a></h3>
3583 <h4>Description
</h4>
3584 <p>HTTP authentication types
3587 typedef enum
<a href='#http_auth_e'
>http_auth_e
</a> http_auth_t;
3590 <h3 class='title'
><a name='http_encoding_t'
>http_encoding_t
</a></h3>
3591 <h4>Description
</h4>
3592 <p>HTTP transfer encoding values
3595 typedef enum
<a href='#http_encoding_e'
>http_encoding_e
</a> http_encoding_t;
3598 <h3 class='title'
><a name='http_encryption_t'
>http_encryption_t
</a></h3>
3599 <h4>Description
</h4>
3600 <p>HTTP encryption values
3603 typedef enum
<a href='#http_encryption_e'
>http_encryption_e
</a> http_encryption_t;
3606 <h3 class='title'
><a name='http_t'
>http_t
</a></h3>
3607 <h4>Description
</h4>
3608 <p>HTTP connection type
3611 typedef struct _http_s http_t;
3614 <h3 class='title'
><a name='ipp_attribute_t'
>ipp_attribute_t
</a></h3>
3615 <h4>Description
</h4>
3619 typedef struct
<a href='#ipp_attribute_s'
>ipp_attribute_s
</a> ipp_attribute_t;
3622 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='ipp_iocb_t'
>ipp_iocb_t
</a></h3>
3623 <h4>Description
</h4>
3624 <p>IPP IO Callback Function
3627 typedef
<a href='#ssize_t'
>ssize_t
</a> (*ipp_iocb_t)(void *,
<a href='#ipp_uchar_t'
>ipp_uchar_t
</a> *, size_t);
3630 <h3 class='title'
><a name='ipp_request_t'
>ipp_request_t
</a></h3>
3631 <h4>Description
</h4>
3635 typedef union
<a href='#ipp_request_u'
>ipp_request_u
</a> ipp_request_t;
3638 <h3 class='title'
><a name='ipp_t'
>ipp_t
</a></h3>
3639 <h4>Description
</h4>
3643 typedef struct
<a href='#ipp_s'
>ipp_s
</a> ipp_t;
3646 <h3 class='title'
><a name='ipp_uchar_t'
>ipp_uchar_t
</a></h3>
3647 <h4>Description
</h4>
3648 <p>IPP status codes...
3651 typedef typedef unsigned char ipp_uchar_t;
3654 <h3 class='title'
><a name='ipp_value_t'
>ipp_value_t
</a></h3>
3655 <h4>Description
</h4>
3656 <p>New in CUPS
1.1.19
3659 typedef union
<a href='#ipp_value_u'
>ipp_value_u
</a> ipp_value_t;
3662 <h2 class='title'
><a name='UNIONS'
>Unions
</a></h2>
3664 <li><a href='#ipp_request_u'
><tt>ipp_request_u
</tt></a> </li>
3665 <li><a href='#ipp_value_u'
><tt>ipp_value_u
</tt></a> </li>
3668 <h3 class='title'
><a name='ipp_request_u'
>ipp_request_u
</a></h3>
3669 <h4>Description
</h4>
3673 union ipp_request_u
<br>
3677 <div class='table'
><table align='center' border='
1' width='
80%' summary='Members'
>
3678 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3680 </tbody></table></div>
3682 <h3 class='title'
><a name='ipp_value_u'
>ipp_value_u
</a></h3>
3683 <h4>Description
</h4>
3684 <p>New in CUPS
1.1.19
3687 union ipp_value_u
<br>
3689 char boolean;
<br>
3690 <a href='#ipp_t'
>ipp_t
</a> * collection;
<br>
3691 <a href='#ipp_uchar_t'
>ipp_uchar_t
</a> date[
11];
<br>
3692 int integer;
<br>
3695 <div class='table'
><table align='center' border='
1' width='
80%' summary='Members'
>
3696 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3698 <tr><td><tt>boolean
</tt> </td><td>Boolean value
3700 <tr><td><tt>collection
</tt> </td><td>Collection value
3702 <tr><td><tt>date[
11]
</tt> </td><td>Date/time value
3704 <tr><td><tt>integer
</tt> </td><td>Integer/enumerated value
3706 </tbody></table></div>