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.4'
>
8 <style type='text/css'
><!--
9 h1, h2, h3, p { font-family: sans-serif; text-align: justify; }
10 tt, pre a:link, pre a:visited, tt a:link, tt a:visited { font-weight: bold; color: #7f0000; }
11 pre { font-weight: bold; color: #7f0000; margin-left: 2em; }
12 span.info { background: #000000; border: solid thin #000000; color: #ffffff; font-size: 80%; font-style: italic; font-weight: bold; white-space: nowrap; }
13 h3 span.info { float: right; font-size: 100%; }
14 h1.title, h2.title, h3.title { border-bottom: solid 2px #000000; }
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_DOCUMENT
</tt> <span class='info'
> CUPS
1.4 </span></td><td>Get a document file
543 <tr><td><tt>CUPS_GET_PPD
</tt> <span class='info'
> CUPS
1.3 </span></td><td>Get a PPD file
545 <tr><td><tt>CUPS_GET_PPDS
</tt> </td><td>Get a list of supported drivers
547 <tr><td><tt>CUPS_GET_PRINTERS
</tt> </td><td>Get a list of printers and/or classes
549 <tr><td><tt>CUPS_MOVE_JOB
</tt> </td><td>Move a job to a different printer
551 <tr><td><tt>CUPS_REJECT_JOBS
</tt> </td><td>Reject new jobs on a printer
553 <tr><td><tt>CUPS_SET_DEFAULT
</tt> </td><td>Set the default printer
555 <tr><td><tt>IPP_ACTIVATE_PRINTER
</tt> </td><td>Start a printer @private@
557 <tr><td><tt>IPP_CANCEL_CURRENT_JOB
</tt> </td><td>Cancel the current job @private@
559 <tr><td><tt>IPP_CANCEL_JOB
</tt> </td><td>Cancel a job
561 <tr><td><tt>IPP_CANCEL_SUBSCRIPTION
</tt> <span class='info'
> CUPS
1.2 </span></td><td>Cancel a subscription
563 <tr><td><tt>IPP_CREATE_JOB
</tt> </td><td>Create an empty print job
565 <tr><td><tt>IPP_CREATE_JOB_SUBSCRIPTION
</tt> <span class='info'
> CUPS
1.2 </span></td><td>Create a job subscription
567 <tr><td><tt>IPP_CREATE_PRINTER_SUBSCRIPTION
</tt> <span class='info'
> CUPS
1.2 </span></td><td>Create a printer subscription
569 <tr><td><tt>IPP_DEACTIVATE_PRINTER
</tt> </td><td>Stop a printer @private@
571 <tr><td><tt>IPP_DISABLE_PRINTER
</tt> </td><td>Stop a printer
573 <tr><td><tt>IPP_ENABLE_PRINTER
</tt> </td><td>Start a printer
575 <tr><td><tt>IPP_GET_JOBS
</tt> </td><td>Get a list of jobs
577 <tr><td><tt>IPP_GET_JOB_ATTRIBUTES
</tt> </td><td>Get job attributes
579 <tr><td><tt>IPP_GET_NOTIFICATIONS
</tt> <span class='info'
> CUPS
1.2 </span></td><td>Get notification events
581 <tr><td><tt>IPP_GET_PRINTER_ATTRIBUTES
</tt> </td><td>Get printer attributes
583 <tr><td><tt>IPP_GET_PRINTER_SUPPORTED_VALUES
</tt> </td><td>Get supported attribute values
585 <tr><td><tt>IPP_GET_PRINT_SUPPORT_FILES
</tt> </td><td>Get printer support files @private@
587 <tr><td><tt>IPP_GET_SUBSCRIPTIONS
</tt> <span class='info'
> CUPS
1.2 </span></td><td>Get list of subscriptions
589 <tr><td><tt>IPP_GET_SUBSCRIPTION_ATTRIBUTES
</tt> <span class='info'
> CUPS
1.2 </span></td><td>Get subscription attributes
591 <tr><td><tt>IPP_HOLD_JOB
</tt> </td><td>Hold a job for printing
593 <tr><td><tt>IPP_HOLD_NEW_JOBS
</tt> </td><td>Hold new jobs @private@
595 <tr><td><tt>IPP_PAUSE_PRINTER
</tt> </td><td>Stop a printer
597 <tr><td><tt>IPP_PAUSE_PRINTER_AFTER_CURRENT_JOB
</tt> </td><td>Stop printer after the current job @private@
599 <tr><td><tt>IPP_PRINT_JOB
</tt> </td><td>Print a single file
601 <tr><td><tt>IPP_PRINT_URI
</tt> </td><td>Print a single URL @private@
603 <tr><td><tt>IPP_PRIVATE
</tt> </td><td>Reserved @private@
605 <tr><td><tt>IPP_PROMOTE_JOB
</tt> </td><td>Promote a job to print sooner @private@
607 <tr><td><tt>IPP_PURGE_JOBS
</tt> </td><td>Cancel all jobs
609 <tr><td><tt>IPP_RELEASE_HELD_NEW_JOBS
</tt> </td><td>Release new jobs @private@
611 <tr><td><tt>IPP_RELEASE_JOB
</tt> </td><td>Release a job for printing
613 <tr><td><tt>IPP_RENEW_SUBSCRIPTION
</tt> <span class='info'
> CUPS
1.2 </span></td><td>Renew a printer subscription
615 <tr><td><tt>IPP_REPROCESS_JOB
</tt> </td><td>Reprint a job @private@
617 <tr><td><tt>IPP_RESTART_JOB
</tt> </td><td>Reprint a job
619 <tr><td><tt>IPP_RESTART_PRINTER
</tt> </td><td>Restart a printer @private@
621 <tr><td><tt>IPP_RESUME_JOB
</tt> </td><td>Resume the current job @private@
623 <tr><td><tt>IPP_RESUME_PRINTER
</tt> </td><td>Start a printer
625 <tr><td><tt>IPP_SCHEDULE_JOB_AFTER
</tt> </td><td>Schedule a job to print after another @private@
627 <tr><td><tt>IPP_SEND_DOCUMENT
</tt> </td><td>Add a file to a job
629 <tr><td><tt>IPP_SEND_NOTIFICATIONS
</tt> </td><td>Send notification events @private@
631 <tr><td><tt>IPP_SEND_URI
</tt> </td><td>Add a URL to a job @private@
633 <tr><td><tt>IPP_SET_JOB_ATTRIBUTES
</tt> </td><td>Set job attributes
635 <tr><td><tt>IPP_SET_PRINTER_ATTRIBUTES
</tt> </td><td>Set printer attributes @private@
637 <tr><td><tt>IPP_SHUTDOWN_PRINTER
</tt> </td><td>Turn a printer off @private@
639 <tr><td><tt>IPP_STARTUP_PRINTER
</tt> </td><td>Turn a printer on @private@
641 <tr><td><tt>IPP_SUSPEND_CURRENT_JOB
</tt> </td><td>Suspend the current job @private@
643 <tr><td><tt>IPP_VALIDATE_JOB
</tt> </td><td>Validate job options
645 </tbody></table></div>
647 <h3 class='title'
><a name='ipp_orient_e'
>ipp_orient_e
</a></h3>
651 <div class='table'
><table align='center' border='
1' width='
80%' summary='Values'
>
652 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
654 <tr><td><tt>IPP_LANDSCAPE
</tt> </td><td>90 degrees counter-clockwise
656 <tr><td><tt>IPP_PORTRAIT
</tt> </td><td>No rotation
658 <tr><td><tt>IPP_REVERSE_LANDSCAPE
</tt> </td><td>90 degrees clockwise
660 <tr><td><tt>IPP_REVERSE_PORTRAIT
</tt> </td><td>180 degrees
662 </tbody></table></div>
664 <h3 class='title'
><a name='ipp_pstate_e'
>ipp_pstate_e
</a></h3>
668 <div class='table'
><table align='center' border='
1' width='
80%' summary='Values'
>
669 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
671 <tr><td><tt>IPP_PRINTER_IDLE
</tt> </td><td>Printer is idle
673 <tr><td><tt>IPP_PRINTER_PROCESSING
</tt> </td><td>Printer is working
675 <tr><td><tt>IPP_PRINTER_STOPPED
</tt> </td><td>Printer is stopped
677 </tbody></table></div>
679 <h3 class='title'
><a name='ipp_quality_e'
>ipp_quality_e
</a></h3>
683 <div class='table'
><table align='center' border='
1' width='
80%' summary='Values'
>
684 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
686 <tr><td><tt>IPP_QUALITY_DRAFT
</tt> </td><td>Draft quality
688 <tr><td><tt>IPP_QUALITY_HIGH
</tt> </td><td>High quality
690 <tr><td><tt>IPP_QUALITY_NORMAL
</tt> </td><td>Normal quality
692 </tbody></table></div>
694 <h3 class='title'
><a name='ipp_res_e'
>ipp_res_e
</a></h3>
696 <p>Types and structures...
698 <div class='table'
><table align='center' border='
1' width='
80%' summary='Values'
>
699 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
701 <tr><td><tt>IPP_RES_PER_CM
</tt> </td><td>Pixels per centimeter
703 <tr><td><tt>IPP_RES_PER_INCH
</tt> </td><td>Pixels per inch
705 </tbody></table></div>
707 <h3 class='title'
><a name='ipp_state_e'
>ipp_state_e
</a></h3>
711 <div class='table'
><table align='center' border='
1' width='
80%' summary='Values'
>
712 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
714 <tr><td><tt>IPP_ATTRIBUTE
</tt> </td><td>One or more attributes need to be sent/received
716 <tr><td><tt>IPP_DATA
</tt> </td><td>IPP request data needs to be sent/received
718 <tr><td><tt>IPP_ERROR
</tt> </td><td>An error occurred
720 <tr><td><tt>IPP_HEADER
</tt> </td><td>The request header needs to be sent/received
722 <tr><td><tt>IPP_IDLE
</tt> </td><td>Nothing is happening/request completed
724 </tbody></table></div>
726 <h3 class='title'
><a name='ipp_status_e'
>ipp_status_e
</a></h3>
728 <p>IPP status codes...
730 <div class='table'
><table align='center' border='
1' width='
80%' summary='Values'
>
731 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
733 <tr><td><tt>CUPS_SEE_OTHER
</tt> </td><td>cups-see-other
735 <tr><td><tt>IPP_ATTRIBUTES
</tt> </td><td>client-error-attributes-or-values-not-supported
737 <tr><td><tt>IPP_ATTRIBUTES_NOT_SETTABLE
</tt> </td><td>client-error-attributes-not-settable
739 <tr><td><tt>IPP_BAD_REQUEST
</tt> </td><td>client-error-bad-request
741 <tr><td><tt>IPP_CHARSET
</tt> </td><td>client-error-charset-not-supported
743 <tr><td><tt>IPP_COMPRESSION_ERROR
</tt> </td><td>client-error-compression-error
745 <tr><td><tt>IPP_COMPRESSION_NOT_SUPPORTED
</tt> </td><td>client-error-compression-not-supported
747 <tr><td><tt>IPP_CONFLICT
</tt> </td><td>client-error-conflicting-attributes
749 <tr><td><tt>IPP_DEVICE_ERROR
</tt> </td><td>server-error-device-error
751 <tr><td><tt>IPP_DOCUMENT_ACCESS_ERROR
</tt> </td><td>client-error-document-access-error
753 <tr><td><tt>IPP_DOCUMENT_FORMAT
</tt> </td><td>client-error-document-format-not-supported
755 <tr><td><tt>IPP_DOCUMENT_FORMAT_ERROR
</tt> </td><td>client-error-document-format-error
757 <tr><td><tt>IPP_ERROR_JOB_CANCELED
</tt> </td><td>server-error-job-canceled
759 <tr><td><tt>IPP_FORBIDDEN
</tt> </td><td>client-error-forbidden
761 <tr><td><tt>IPP_GONE
</tt> </td><td>client-error-gone
763 <tr><td><tt>IPP_IGNORED_ALL_NOTIFICATIONS
</tt> </td><td>client-error-ignored-all-notifications
765 <tr><td><tt>IPP_IGNORED_ALL_SUBSCRIPTIONS
</tt> </td><td>client-error-ignored-all-subscriptions
767 <tr><td><tt>IPP_INTERNAL_ERROR
</tt> </td><td>server-error-internal-error
769 <tr><td><tt>IPP_MULTIPLE_JOBS_NOT_SUPPORTED
</tt> </td><td>server-error-multiple-document-jobs-not-supported
771 <tr><td><tt>IPP_NOT_ACCEPTING
</tt> </td><td>server-error-not-accepting-jobs
773 <tr><td><tt>IPP_NOT_AUTHENTICATED
</tt> </td><td>client-error-not-authenticated
775 <tr><td><tt>IPP_NOT_AUTHORIZED
</tt> </td><td>client-error-not-authorized
777 <tr><td><tt>IPP_NOT_FOUND
</tt> </td><td>client-error-not-found
779 <tr><td><tt>IPP_NOT_POSSIBLE
</tt> </td><td>client-error-not-possible
781 <tr><td><tt>IPP_OK
</tt> </td><td>successful-ok
783 <tr><td><tt>IPP_OK_BUT_CANCEL_SUBSCRIPTION
</tt> </td><td>successful-ok-but-cancel-subscription
785 <tr><td><tt>IPP_OK_CONFLICT
</tt> </td><td>successful-ok-conflicting-attributes
787 <tr><td><tt>IPP_OK_EVENTS_COMPLETE
</tt> </td><td>successful-ok-events-complete
789 <tr><td><tt>IPP_OK_IGNORED_NOTIFICATIONS
</tt> </td><td>successful-ok-ignored-notifications
791 <tr><td><tt>IPP_OK_IGNORED_SUBSCRIPTIONS
</tt> </td><td>successful-ok-ignored-subscriptions
793 <tr><td><tt>IPP_OK_SUBST
</tt> </td><td>successful-ok-ignored-or-substituted-attributes
795 <tr><td><tt>IPP_OK_TOO_MANY_EVENTS
</tt> </td><td>successful-ok-too-many-events
797 <tr><td><tt>IPP_OPERATION_NOT_SUPPORTED
</tt> </td><td>server-error-operation-not-supported
799 <tr><td><tt>IPP_PRINTER_BUSY
</tt> </td><td>server-error-busy
801 <tr><td><tt>IPP_PRINTER_IS_DEACTIVATED
</tt> </td><td>server-error-printer-is-deactivated
803 <tr><td><tt>IPP_PRINT_SUPPORT_FILE_NOT_FOUND
</tt> </td><td>client-error-print-support-file-not-found
805 <tr><td><tt>IPP_REDIRECTION_OTHER_SITE
</tt> </td><td>
807 <tr><td><tt>IPP_REQUEST_ENTITY
</tt> </td><td>client-error-request-entity-too-large
809 <tr><td><tt>IPP_REQUEST_VALUE
</tt> </td><td>client-error-request-value-too-long
811 <tr><td><tt>IPP_SERVICE_UNAVAILABLE
</tt> </td><td>server-error-service-unavailable
813 <tr><td><tt>IPP_TEMPORARY_ERROR
</tt> </td><td>server-error-temporary-error
815 <tr><td><tt>IPP_TIMEOUT
</tt> </td><td>client-error-timeout
817 <tr><td><tt>IPP_TOO_MANY_SUBSCRIPTIONS
</tt> </td><td>client-error-too-many-subscriptions
819 <tr><td><tt>IPP_URI_SCHEME
</tt> </td><td>client-error-uri-scheme-not-supported
821 <tr><td><tt>IPP_VERSION_NOT_SUPPORTED
</tt> </td><td>server-error-version-not-supported
823 </tbody></table></div>
825 <h3 class='title'
><a name='ipp_tag_e'
>ipp_tag_e
</a></h3>
827 <p>Format tags for attributes...
829 <div class='table'
><table align='center' border='
1' width='
80%' summary='Values'
>
830 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
832 <tr><td><tt>IPP_TAG_ADMINDEFINE
</tt> </td><td>Admin-defined value
834 <tr><td><tt>IPP_TAG_BEGIN_COLLECTION
</tt> </td><td>Beginning of collection value
836 <tr><td><tt>IPP_TAG_BOOLEAN
</tt> </td><td>Boolean value
838 <tr><td><tt>IPP_TAG_CHARSET
</tt> </td><td>Character set value
840 <tr><td><tt>IPP_TAG_COPY
</tt> </td><td>Bitflag for copied attribute values
842 <tr><td><tt>IPP_TAG_DATE
</tt> </td><td>Date/time value
844 <tr><td><tt>IPP_TAG_DEFAULT
</tt> </td><td>Default value
846 <tr><td><tt>IPP_TAG_DELETEATTR
</tt> </td><td>Delete-attribute value
848 <tr><td><tt>IPP_TAG_END
</tt> </td><td>End-of-attributes
850 <tr><td><tt>IPP_TAG_END_COLLECTION
</tt> </td><td>End of collection value
852 <tr><td><tt>IPP_TAG_ENUM
</tt> </td><td>Enumeration value
854 <tr><td><tt>IPP_TAG_EVENT_NOTIFICATION
</tt> </td><td>Event group
856 <tr><td><tt>IPP_TAG_INTEGER
</tt> </td><td>Integer value
858 <tr><td><tt>IPP_TAG_JOB
</tt> </td><td>Job group
860 <tr><td><tt>IPP_TAG_KEYWORD
</tt> </td><td>Keyword value
862 <tr><td><tt>IPP_TAG_LANGUAGE
</tt> </td><td>Language value
864 <tr><td><tt>IPP_TAG_MASK
</tt> </td><td>Mask for copied attribute values
866 <tr><td><tt>IPP_TAG_MEMBERNAME
</tt> </td><td>Collection member name value
868 <tr><td><tt>IPP_TAG_MIMETYPE
</tt> </td><td>MIME media type value
870 <tr><td><tt>IPP_TAG_NAME
</tt> </td><td>Name value
872 <tr><td><tt>IPP_TAG_NAMELANG
</tt> </td><td>Name-with-language value
874 <tr><td><tt>IPP_TAG_NOTSETTABLE
</tt> </td><td>Not-settable value
876 <tr><td><tt>IPP_TAG_NOVALUE
</tt> </td><td>No-value value
878 <tr><td><tt>IPP_TAG_OPERATION
</tt> </td><td>Operation group
880 <tr><td><tt>IPP_TAG_PRINTER
</tt> </td><td>Printer group
882 <tr><td><tt>IPP_TAG_RANGE
</tt> </td><td>Range value
884 <tr><td><tt>IPP_TAG_RESOLUTION
</tt> </td><td>Resolution value
886 <tr><td><tt>IPP_TAG_STRING
</tt> </td><td>Octet string value
888 <tr><td><tt>IPP_TAG_SUBSCRIPTION
</tt> </td><td>Subscription group
890 <tr><td><tt>IPP_TAG_TEXT
</tt> </td><td>Text value
892 <tr><td><tt>IPP_TAG_TEXTLANG
</tt> </td><td>Text-with-language value
894 <tr><td><tt>IPP_TAG_UNKNOWN
</tt> </td><td>Unknown value
896 <tr><td><tt>IPP_TAG_UNSUPPORTED_GROUP
</tt> </td><td>Unsupported attributes group
898 <tr><td><tt>IPP_TAG_UNSUPPORTED_VALUE
</tt> </td><td>Unsupported value
900 <tr><td><tt>IPP_TAG_URI
</tt> </td><td>URI value
902 <tr><td><tt>IPP_TAG_URISCHEME
</tt> </td><td>URI scheme value
904 <tr><td><tt>IPP_TAG_ZERO
</tt> </td><td>Zero tag - used for separators
906 </tbody></table></div>
908 <h2 class='title'
><a name='FUNCTIONS'
>Functions
</a></h2>
910 <li><a href='#cupsDoAuthentication'
><tt>cupsDoAuthentication()
</tt></a> <span class='info'
> CUPS
1.1.20 </span></li>
911 <li><a href='#cupsDoFileRequest'
><tt>cupsDoFileRequest()
</tt></a> </li>
912 <li><a href='#cupsDoIORequest'
><tt>cupsDoIORequest()
</tt></a> <span class='info'
> CUPS
1.3 </span></li>
913 <li><a href='#cupsDoRequest'
><tt>cupsDoRequest()
</tt></a> </li>
914 <li><a href='#cupsEncodeOptions'
><tt>cupsEncodeOptions()
</tt></a> </li>
915 <li><a href='#cupsEncodeOptions2'
><tt>cupsEncodeOptions2()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
916 <li><a href='#httpAddrAny'
><tt>httpAddrAny()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
917 <li><a href='#httpAddrEqual'
><tt>httpAddrEqual()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
918 <li><a href='#httpAddrLength'
><tt>httpAddrLength()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
919 <li><a href='#httpAddrLocalhost'
><tt>httpAddrLocalhost()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
920 <li><a href='#httpAddrLookup'
><tt>httpAddrLookup()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
921 <li><a href='#httpAddrString'
><tt>httpAddrString()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
922 <li><a href='#httpAssembleURI'
><tt>httpAssembleURI()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
923 <li><a href='#httpAssembleURIf'
><tt>httpAssembleURIf()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
924 <li><a href='#httpBlocking'
><tt>httpBlocking()
</tt></a> </li>
925 <li><a href='#httpCheck'
><tt>httpCheck()
</tt></a> </li>
926 <li><a href='#httpClearCookie'
><tt>httpClearCookie()
</tt></a> <span class='info'
> CUPS
1.1.19 </span></li>
927 <li><a href='#httpClearFields'
><tt>httpClearFields()
</tt></a> </li>
928 <li><a href='#httpClose'
><tt>httpClose()
</tt></a> </li>
929 <li><a href='#httpConnect'
><tt>httpConnect()
</tt></a> </li>
930 <li><a href='#httpConnectEncrypt'
><tt>httpConnectEncrypt()
</tt></a> </li>
931 <li><a href='#httpDecode64'
><tt>httpDecode64()
</tt></a> <span class='info'
> DEPRECATED
</span></li>
932 <li><a href='#httpDecode64_2'
><tt>httpDecode64_2()
</tt></a> <span class='info'
> CUPS
1.1.21 </span></li>
933 <li><a href='#httpDelete'
><tt>httpDelete()
</tt></a> </li>
934 <li><a href='#httpEncode64'
><tt>httpEncode64()
</tt></a> <span class='info'
> DEPRECATED
</span></li>
935 <li><a href='#httpEncode64_2'
><tt>httpEncode64_2()
</tt></a> <span class='info'
> CUPS
1.1.21 </span></li>
936 <li><a href='#httpEncryption'
><tt>httpEncryption()
</tt></a> </li>
937 <li><a href='#httpError'
><tt>httpError()
</tt></a> </li>
938 <li><a href='#httpFlush'
><tt>httpFlush()
</tt></a> </li>
939 <li><a href='#httpFlushWrite'
><tt>httpFlushWrite()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
940 <li><a href='#httpGet'
><tt>httpGet()
</tt></a> </li>
941 <li><a href='#httpGetAuthString'
><tt>httpGetAuthString()
</tt></a> <span class='info'
> CUPS
1.3 </span></li>
942 <li><a href='#httpGetBlocking'
><tt>httpGetBlocking()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
943 <li><a href='#httpGetCookie'
><tt>httpGetCookie()
</tt></a> <span class='info'
> CUPS
1.1.19 </span></li>
944 <li><a href='#httpGetDateString'
><tt>httpGetDateString()
</tt></a> <span class='info'
> DEPRECATED
</span></li>
945 <li><a href='#httpGetDateString2'
><tt>httpGetDateString2()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
946 <li><a href='#httpGetDateTime'
><tt>httpGetDateTime()
</tt></a> </li>
947 <li><a href='#httpGetFd'
><tt>httpGetFd()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
948 <li><a href='#httpGetField'
><tt>httpGetField()
</tt></a> </li>
949 <li><a href='#httpGetHostByName'
><tt>httpGetHostByName()
</tt></a> <span class='info'
> DEPRECATED
</span></li>
950 <li><a href='#httpGetHostname'
><tt>httpGetHostname()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
951 <li><a href='#httpGetLength'
><tt>httpGetLength()
</tt></a> <span class='info'
> DEPRECATED
</span></li>
952 <li><a href='#httpGetLength2'
><tt>httpGetLength2()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
953 <li><a href='#httpGetStatus'
><tt>httpGetStatus()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
954 <li><a href='#httpGetSubField'
><tt>httpGetSubField()
</tt></a> <span class='info'
> DEPRECATED
</span></li>
955 <li><a href='#httpGetSubField2'
><tt>httpGetSubField2()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
956 <li><a href='#httpGets'
><tt>httpGets()
</tt></a> </li>
957 <li><a href='#httpHead'
><tt>httpHead()
</tt></a> </li>
958 <li><a href='#httpInitialize'
><tt>httpInitialize()
</tt></a> </li>
959 <li><a href='#httpMD5'
><tt>httpMD5()
</tt></a> </li>
960 <li><a href='#httpMD5Final'
><tt>httpMD5Final()
</tt></a> </li>
961 <li><a href='#httpMD5String'
><tt>httpMD5String()
</tt></a> </li>
962 <li><a href='#httpOptions'
><tt>httpOptions()
</tt></a> </li>
963 <li><a href='#httpPost'
><tt>httpPost()
</tt></a> </li>
964 <li><a href='#httpPut'
><tt>httpPut()
</tt></a> </li>
965 <li><a href='#httpRead'
><tt>httpRead()
</tt></a> <span class='info'
> DEPRECATED
</span></li>
966 <li><a href='#httpRead2'
><tt>httpRead2()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
967 <li><a href='#httpReconnect'
><tt>httpReconnect()
</tt></a> </li>
968 <li><a href='#httpSeparate'
><tt>httpSeparate()
</tt></a> <span class='info'
> DEPRECATED
</span></li>
969 <li><a href='#httpSeparate2'
><tt>httpSeparate2()
</tt></a> <span class='info'
> CUPS
1.1.21 </span></li>
970 <li><a href='#httpSeparateURI'
><tt>httpSeparateURI()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
971 <li><a href='#httpSetAuthString'
><tt>httpSetAuthString()
</tt></a> <span class='info'
> CUPS
1.3 </span></li>
972 <li><a href='#httpSetCookie'
><tt>httpSetCookie()
</tt></a> <span class='info'
> CUPS
1.1.19 </span></li>
973 <li><a href='#httpSetExpect'
><tt>httpSetExpect()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
974 <li><a href='#httpSetField'
><tt>httpSetField()
</tt></a> </li>
975 <li><a href='#httpSetLength'
><tt>httpSetLength()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
976 <li><a href='#httpStatus'
><tt>httpStatus()
</tt></a> </li>
977 <li><a href='#httpTrace'
><tt>httpTrace()
</tt></a> </li>
978 <li><a href='#httpUpdate'
><tt>httpUpdate()
</tt></a> </li>
979 <li><a href='#httpWait'
><tt>httpWait()
</tt></a> <span class='info'
> CUPS
1.1.19 </span></li>
980 <li><a href='#httpWrite'
><tt>httpWrite()
</tt></a> <span class='info'
> DEPRECATED
</span></li>
981 <li><a href='#httpWrite2'
><tt>httpWrite2()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
982 <li><a href='#ippAddBoolean'
><tt>ippAddBoolean()
</tt></a> </li>
983 <li><a href='#ippAddBooleans'
><tt>ippAddBooleans()
</tt></a> </li>
984 <li><a href='#ippAddCollection'
><tt>ippAddCollection()
</tt></a> <span class='info'
> CUPS
1.1.19 </span></li>
985 <li><a href='#ippAddCollections'
><tt>ippAddCollections()
</tt></a> <span class='info'
> CUPS
1.1.19 </span></li>
986 <li><a href='#ippAddDate'
><tt>ippAddDate()
</tt></a> </li>
987 <li><a href='#ippAddInteger'
><tt>ippAddInteger()
</tt></a> </li>
988 <li><a href='#ippAddIntegers'
><tt>ippAddIntegers()
</tt></a> </li>
989 <li><a href='#ippAddOctetString'
><tt>ippAddOctetString()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
990 <li><a href='#ippAddRange'
><tt>ippAddRange()
</tt></a> </li>
991 <li><a href='#ippAddRanges'
><tt>ippAddRanges()
</tt></a> </li>
992 <li><a href='#ippAddResolution'
><tt>ippAddResolution()
</tt></a> </li>
993 <li><a href='#ippAddResolutions'
><tt>ippAddResolutions()
</tt></a> </li>
994 <li><a href='#ippAddSeparator'
><tt>ippAddSeparator()
</tt></a> </li>
995 <li><a href='#ippAddString'
><tt>ippAddString()
</tt></a> </li>
996 <li><a href='#ippAddStrings'
><tt>ippAddStrings()
</tt></a> </li>
997 <li><a href='#ippDateToTime'
><tt>ippDateToTime()
</tt></a> </li>
998 <li><a href='#ippDelete'
><tt>ippDelete()
</tt></a> </li>
999 <li><a href='#ippDeleteAttribute'
><tt>ippDeleteAttribute()
</tt></a> <span class='info'
> CUPS
1.1.19 </span></li>
1000 <li><a href='#ippErrorString'
><tt>ippErrorString()
</tt></a> </li>
1001 <li><a href='#ippErrorValue'
><tt>ippErrorValue()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
1002 <li><a href='#ippFindAttribute'
><tt>ippFindAttribute()
</tt></a> </li>
1003 <li><a href='#ippFindNextAttribute'
><tt>ippFindNextAttribute()
</tt></a> </li>
1004 <li><a href='#ippLength'
><tt>ippLength()
</tt></a> </li>
1005 <li><a href='#ippNew'
><tt>ippNew()
</tt></a> </li>
1006 <li><a href='#ippNewRequest'
><tt>ippNewRequest()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
1007 <li><a href='#ippOpString'
><tt>ippOpString()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
1008 <li><a href='#ippOpValue'
><tt>ippOpValue()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
1009 <li><a href='#ippPort'
><tt>ippPort()
</tt></a> </li>
1010 <li><a href='#ippRead'
><tt>ippRead()
</tt></a> </li>
1011 <li><a href='#ippReadFile'
><tt>ippReadFile()
</tt></a> <span class='info'
> CUPS
1.1.19 </span></li>
1012 <li><a href='#ippReadIO'
><tt>ippReadIO()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
1013 <li><a href='#ippSetPort'
><tt>ippSetPort()
</tt></a> </li>
1014 <li><a href='#ippTimeToDate'
><tt>ippTimeToDate()
</tt></a> </li>
1015 <li><a href='#ippWrite'
><tt>ippWrite()
</tt></a> </li>
1016 <li><a href='#ippWriteFile'
><tt>ippWriteFile()
</tt></a> <span class='info'
> CUPS
1.1.19 </span></li>
1017 <li><a href='#ippWriteIO'
><tt>ippWriteIO()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
1020 <h3 class='title'
><span class='info'
> CUPS
1.1.20 </span><a name='cupsDoAuthentication'
>cupsDoAuthentication()
</a></h3>
1021 <h4>Description
</h4>
1022 <p>Authenticate a request.
1023 <p>This function should be called in response to a HTTP_UNAUTHORIZED
1024 status, prior to resubmitting your request.
1030 cupsDoAuthentication(
1031 <a href='#http_t'
>http_t
</a> * http,
1032 const char * method,
1033 const char * resource);
1036 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1037 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1039 <tr><td><tt>http
</tt></td><td>HTTP connection to server
</td></tr>
1040 <tr><td><tt>method
</tt></td><td>Request method (GET, POST, PUT)
</td></tr>
1041 <tr><td><tt>resource
</tt></td><td>Resource path
</td></tr>
1042 </tbody></table></div>
1044 <p>0 on success, -
1 on error
</p>
1046 <h3 class='title'
><a name='cupsDoFileRequest'
>cupsDoFileRequest()
</a></h3>
1047 <h4>Description
</h4>
1048 <p>Do an IPP request with a file.
1049 <p>This function sends the IPP request to the specified server, retrying
1050 and authenticating as necessary. The request is freed with ippDelete()
1051 after receiving a valid IPP response.
1054 <a href='#ipp_t'
>ipp_t
</a> *
<br>
1056 <a href='#http_t'
>http_t
</a> * http,
1057 <a href='#ipp_t'
>ipp_t
</a> * request,
1058 const char * resource,
1059 const char * filename);
1062 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1063 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1065 <tr><td><tt>http
</tt></td><td>HTTP connection to server
</td></tr>
1066 <tr><td><tt>request
</tt></td><td>IPP request
</td></tr>
1067 <tr><td><tt>resource
</tt></td><td>HTTP resource for POST
</td></tr>
1068 <tr><td><tt>filename
</tt></td><td>File to send or NULL for none
</td></tr>
1069 </tbody></table></div>
1071 <p>Response data
</p>
1073 <h3 class='title'
><span class='info'
> CUPS
1.3 </span><a name='cupsDoIORequest'
>cupsDoIORequest()
</a></h3>
1074 <h4>Description
</h4>
1075 <p>Do an IPP request with file descriptors.
1076 <p>This function sends the IPP request to the specified server, retrying
1077 and authenticating as necessary. The request is freed with ippDelete()
1078 after receiving a valid IPP response.
1079 <p>If
"infile
" is a valid file descriptor, cupsDoIORequest() copies
1080 all of the data from the file after the IPP request message.
1081 <p>If
"outfile
" is a valid file descriptor, cupsDoIORequest() copies
1082 all of the data after the IPP response message to the file.
1087 <a href='#ipp_t'
>ipp_t
</a> *
<br>
1089 <a href='#http_t'
>http_t
</a> * http,
1090 <a href='#ipp_t'
>ipp_t
</a> * request,
1091 const char * resource,
1096 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1097 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1099 <tr><td><tt>http
</tt></td><td>HTTP connection to server
</td></tr>
1100 <tr><td><tt>request
</tt></td><td>IPP request
</td></tr>
1101 <tr><td><tt>resource
</tt></td><td>HTTP resource for POST
</td></tr>
1102 <tr><td><tt>infile
</tt></td><td>File to read from or -
1 for none
</td></tr>
1103 <tr><td><tt>outfile
</tt></td><td>File to write to or -
1 for none
</td></tr>
1104 </tbody></table></div>
1106 <p>Response data
</p>
1108 <h3 class='title'
><a name='cupsDoRequest'
>cupsDoRequest()
</a></h3>
1109 <h4>Description
</h4>
1110 <p>Do an IPP request.
1111 <p>This function sends the IPP request to the specified server, retrying
1112 and authenticating as necessary. The request is freed with ippDelete()
1113 after receiving a valid IPP response.
1116 <a href='#ipp_t'
>ipp_t
</a> *
<br>
1118 <a href='#http_t'
>http_t
</a> * http,
1119 <a href='#ipp_t'
>ipp_t
</a> * request,
1120 const char * resource);
1123 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1124 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1126 <tr><td><tt>http
</tt></td><td>HTTP connection to server
</td></tr>
1127 <tr><td><tt>request
</tt></td><td>IPP request
</td></tr>
1128 <tr><td><tt>resource
</tt></td><td>HTTP resource for POST
</td></tr>
1129 </tbody></table></div>
1131 <p>Response data
</p>
1133 <h3 class='title'
><a name='cupsEncodeOptions'
>cupsEncodeOptions()
</a></h3>
1134 <h4>Description
</h4>
1135 <p>Encode printer options into IPP attributes.
1136 <p>This function adds operation, job, and then subscription attributes,
1137 in that order. Use the cupsEncodeOptions2() function to add attributes
1143 <a href='#ipp_t'
>ipp_t
</a> * ipp,
1145 cups_option_t * options);
1148 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1149 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1151 <tr><td><tt>ipp
</tt></td><td>Request to add to
</td></tr>
1152 <tr><td><tt>num_options
</tt></td><td>Number of options
</td></tr>
1153 <tr><td><tt>options
</tt></td><td>Options
</td></tr>
1154 </tbody></table></div>
1158 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='cupsEncodeOptions2'
>cupsEncodeOptions2()
</a></h3>
1159 <h4>Description
</h4>
1160 <p>Encode printer options into IPP attributes for a group.
1161 <p>This function only adds attributes for a single group. Call this
1162 function multiple times for each group, or use cupsEncodeOptions()
1163 to add the standard groups.
1170 <a href='#ipp_t'
>ipp_t
</a> * ipp,
1172 cups_option_t * options,
1173 ipp_tag_t group_tag);
1176 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1177 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1179 <tr><td><tt>ipp
</tt></td><td>Request to add to
</td></tr>
1180 <tr><td><tt>num_options
</tt></td><td>Number of options
</td></tr>
1181 <tr><td><tt>options
</tt></td><td>Options
</td></tr>
1182 <tr><td><tt>group_tag
</tt></td><td>Group to encode
</td></tr>
1183 </tbody></table></div>
1187 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpAddrAny'
>httpAddrAny()
</a></h3>
1188 <h4>Description
</h4>
1189 <p>Check for the
"any
" address.
1196 const
<a href='#http_addr_t'
>http_addr_t
</a> * addr);
1199 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1200 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1202 <tr><td><tt>addr
</tt></td><td>Address to check
</td></tr>
1203 </tbody></table></div>
1205 <p>1 if
"any
",
0 otherwise
</p>
1207 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpAddrEqual'
>httpAddrEqual()
</a></h3>
1208 <h4>Description
</h4>
1209 <p>Compare two addresses.
1216 const
<a href='#http_addr_t'
>http_addr_t
</a> * addr1,
1217 const
<a href='#http_addr_t'
>http_addr_t
</a> * addr2);
1220 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1221 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1223 <tr><td><tt>addr1
</tt></td><td>First address
</td></tr>
1224 <tr><td><tt>addr2
</tt></td><td>Second address
</td></tr>
1225 </tbody></table></div>
1227 <p>1 if equal,
0 if not
</p>
1229 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpAddrLength'
>httpAddrLength()
</a></h3>
1230 <h4>Description
</h4>
1231 <p>Return the length of the address in bytes.
1238 const
<a href='#http_addr_t'
>http_addr_t
</a> * addr);
1241 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1242 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1244 <tr><td><tt>addr
</tt></td><td>Address
</td></tr>
1245 </tbody></table></div>
1247 <p>Length in bytes
</p>
1249 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpAddrLocalhost'
>httpAddrLocalhost()
</a></h3>
1250 <h4>Description
</h4>
1251 <p>Check for the local loopback address.
1258 const
<a href='#http_addr_t'
>http_addr_t
</a> * addr);
1261 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1262 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1264 <tr><td><tt>addr
</tt></td><td>Address to check
</td></tr>
1265 </tbody></table></div>
1267 <p>1 if local host,
0 otherwise
</p>
1269 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpAddrLookup'
>httpAddrLookup()
</a></h3>
1270 <h4>Description
</h4>
1271 <p>Lookup the hostname associated with the address.
1278 const
<a href='#http_addr_t'
>http_addr_t
</a> * addr,
1283 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1284 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1286 <tr><td><tt>addr
</tt></td><td>Address to lookup
</td></tr>
1287 <tr><td><tt>name
</tt></td><td>Host name buffer
</td></tr>
1288 <tr><td><tt>namelen
</tt></td><td>Size of name buffer
</td></tr>
1289 </tbody></table></div>
1293 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpAddrString'
>httpAddrString()
</a></h3>
1294 <h4>Description
</h4>
1295 <p>Convert an address to a numeric string.
1302 const
<a href='#http_addr_t'
>http_addr_t
</a> * addr,
1307 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1308 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1310 <tr><td><tt>addr
</tt></td><td>Address to convert
</td></tr>
1311 <tr><td><tt>s
</tt></td><td>String buffer
</td></tr>
1312 <tr><td><tt>slen
</tt></td><td>Length of string
</td></tr>
1313 </tbody></table></div>
1315 <p>Numeric address string
</p>
1317 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpAssembleURI'
>httpAssembleURI()
</a></h3>
1318 <h4>Description
</h4>
1319 <p>Assemble a uniform resource identifier from its
1321 <p>This function escapes reserved characters in the URI depending on the
1322 value of the
"encoding
" argument. You should use this function in
1323 place of traditional string functions whenever you need to create a
1329 http_uri_status_t
<br>
1331 http_uri_coding_t encoding,
1334 const char * scheme,
1335 const char * username,
1338 const char * resource);
1341 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1342 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1344 <tr><td><tt>encoding
</tt></td><td>Encoding flags
</td></tr>
1345 <tr><td><tt>uri
</tt></td><td>URI buffer
</td></tr>
1346 <tr><td><tt>urilen
</tt></td><td>Size of URI buffer
</td></tr>
1347 <tr><td><tt>scheme
</tt></td><td>Scheme name
</td></tr>
1348 <tr><td><tt>username
</tt></td><td>Username
</td></tr>
1349 <tr><td><tt>host
</tt></td><td>Hostname or address
</td></tr>
1350 <tr><td><tt>port
</tt></td><td>Port number
</td></tr>
1351 <tr><td><tt>resource
</tt></td><td>Resource
</td></tr>
1352 </tbody></table></div>
1356 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpAssembleURIf'
>httpAssembleURIf()
</a></h3>
1357 <h4>Description
</h4>
1358 <p>Assemble a uniform resource identifier from its
1359 components with a formatted resource.
1360 <p>This function creates a formatted version of the resource string
1361 argument
"resourcef
" and escapes reserved characters in the URI
1362 depending on the value of the
"encoding
" argument. You should use
1363 this function in place of traditional string functions whenever
1364 you need to create a URI string.
1369 http_uri_status_t
<br>
1371 http_uri_coding_t encoding,
1374 const char * scheme,
1375 const char * username,
1378 const char * resourcef,
1382 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1383 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1385 <tr><td><tt>encoding
</tt></td><td>Encoding flags
</td></tr>
1386 <tr><td><tt>uri
</tt></td><td>URI buffer
</td></tr>
1387 <tr><td><tt>urilen
</tt></td><td>Size of URI buffer
</td></tr>
1388 <tr><td><tt>scheme
</tt></td><td>Scheme name
</td></tr>
1389 <tr><td><tt>username
</tt></td><td>Username
</td></tr>
1390 <tr><td><tt>host
</tt></td><td>Hostname or address
</td></tr>
1391 <tr><td><tt>port
</tt></td><td>Port number
</td></tr>
1392 <tr><td><tt>resourcef
</tt></td><td>Printf-style resource
</td></tr>
1393 <tr><td><tt>...
</tt></td><td>Additional arguments as needed
</td></tr>
1394 </tbody></table></div>
1398 <h3 class='title'
><a name='httpBlocking'
>httpBlocking()
</a></h3>
1399 <h4>Description
</h4>
1400 <p>Set blocking/non-blocking behavior on a connection.
1405 <a href='#http_t'
>http_t
</a> * http,
1409 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1410 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1412 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1413 <tr><td><tt>b
</tt></td><td>1 = blocking,
0 = non-blocking
</td></tr>
1414 </tbody></table></div>
1418 <h3 class='title'
><a name='httpCheck'
>httpCheck()
</a></h3>
1419 <h4>Description
</h4>
1420 <p>Check to see if there is a pending response from the server.
1425 <a href='#http_t'
>http_t
</a> * http);
1428 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1429 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1431 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1432 </tbody></table></div>
1434 <p>0 = no data,
1 = data available
</p>
1436 <h3 class='title'
><span class='info'
> CUPS
1.1.19 </span><a name='httpClearCookie'
>httpClearCookie()
</a></h3>
1437 <h4>Description
</h4>
1438 <p>Clear the cookie value(s).
1445 <a href='#http_t'
>http_t
</a> * http);
1448 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1449 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1451 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1452 </tbody></table></div>
1456 <h3 class='title'
><a name='httpClearFields'
>httpClearFields()
</a></h3>
1457 <h4>Description
</h4>
1458 <p>Clear HTTP request fields.
1463 <a href='#http_t'
>http_t
</a> * http);
1466 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1467 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1469 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1470 </tbody></table></div>
1474 <h3 class='title'
><a name='httpClose'
>httpClose()
</a></h3>
1475 <h4>Description
</h4>
1476 <p>Close an HTTP connection...
1481 <a href='#http_t'
>http_t
</a> * http);
1484 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1485 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1487 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1488 </tbody></table></div>
1492 <h3 class='title'
><a name='httpConnect'
>httpConnect()
</a></h3>
1493 <h4>Description
</h4>
1494 <p>Connect to a HTTP server.
1497 <a href='#http_t'
>http_t
</a> *
<br>
1503 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1504 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1506 <tr><td><tt>host
</tt></td><td>Host to connect to
</td></tr>
1507 <tr><td><tt>port
</tt></td><td>Port number
</td></tr>
1508 </tbody></table></div>
1510 <p>New HTTP connection
</p>
1512 <h3 class='title'
><a name='httpConnectEncrypt'
>httpConnectEncrypt()
</a></h3>
1513 <h4>Description
</h4>
1514 <p>Connect to a HTTP server using encryption.
1517 <a href='#http_t'
>http_t
</a> *
<br>
1521 <a href='#http_encryption_t'
>http_encryption_t
</a> encryption);
1524 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1525 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1527 <tr><td><tt>host
</tt></td><td>Host to connect to
</td></tr>
1528 <tr><td><tt>port
</tt></td><td>Port number
</td></tr>
1529 <tr><td><tt>encryption
</tt></td><td>Type of encryption to use
</td></tr>
1530 </tbody></table></div>
1532 <p>New HTTP connection
</p>
1534 <h3 class='title'
><span class='info'
> DEPRECATED
</span><a name='httpDecode64'
>httpDecode64()
</a></h3>
1535 <h4>Description
</h4>
1536 <p>Base64-decode a string.
1537 <p>This function is deprecated. Use the httpDecode64_2() function instead
1538 which provides buffer length arguments.
1549 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1550 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1552 <tr><td><tt>out
</tt></td><td>String to write to
</td></tr>
1553 <tr><td><tt>in
</tt></td><td>String to read from
</td></tr>
1554 </tbody></table></div>
1556 <p>Decoded string
</p>
1558 <h3 class='title'
><span class='info'
> CUPS
1.1.21 </span><a name='httpDecode64_2'
>httpDecode64_2()
</a></h3>
1559 <h4>Description
</h4>
1560 <p>Base64-decode a string.
1572 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1573 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1575 <tr><td><tt>out
</tt></td><td>String to write to
</td></tr>
1576 <tr><td><tt>outlen
</tt></td><td>Size of output string
</td></tr>
1577 <tr><td><tt>in
</tt></td><td>String to read from
</td></tr>
1578 </tbody></table></div>
1580 <p>Decoded string
</p>
1582 <h3 class='title'
><a name='httpDelete'
>httpDelete()
</a></h3>
1583 <h4>Description
</h4>
1584 <p>Send a DELETE request to the server.
1589 <a href='#http_t'
>http_t
</a> * http,
1593 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1594 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1596 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1597 <tr><td><tt>uri
</tt></td><td>URI to delete
</td></tr>
1598 </tbody></table></div>
1600 <p>Status of call (
0 = success)
</p>
1602 <h3 class='title'
><span class='info'
> DEPRECATED
</span><a name='httpEncode64'
>httpEncode64()
</a></h3>
1603 <h4>Description
</h4>
1604 <p>Base64-encode a string.
1605 <p>This function is deprecated. Use the httpEncode64_2() function instead
1606 which provides buffer length arguments.
1617 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1618 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1620 <tr><td><tt>out
</tt></td><td>String to write to
</td></tr>
1621 <tr><td><tt>in
</tt></td><td>String to read from
</td></tr>
1622 </tbody></table></div>
1624 <p>Encoded string
</p>
1626 <h3 class='title'
><span class='info'
> CUPS
1.1.21 </span><a name='httpEncode64_2'
>httpEncode64_2()
</a></h3>
1627 <h4>Description
</h4>
1628 <p>Base64-encode a string.
1641 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1642 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1644 <tr><td><tt>out
</tt></td><td>String to write to
</td></tr>
1645 <tr><td><tt>outlen
</tt></td><td>Size of output string
</td></tr>
1646 <tr><td><tt>in
</tt></td><td>String to read from
</td></tr>
1647 <tr><td><tt>inlen
</tt></td><td>Size of input string
</td></tr>
1648 </tbody></table></div>
1650 <p>Encoded string
</p>
1652 <h3 class='title'
><a name='httpEncryption'
>httpEncryption()
</a></h3>
1653 <h4>Description
</h4>
1654 <p>Set the required encryption on the link.
1659 <a href='#http_t'
>http_t
</a> * http,
1660 <a href='#http_encryption_t'
>http_encryption_t
</a> e);
1663 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1664 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1666 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1667 <tr><td><tt>e
</tt></td><td>New encryption preference
</td></tr>
1668 </tbody></table></div>
1670 <p>-
1 on error,
0 on success
</p>
1672 <h3 class='title'
><a name='httpError'
>httpError()
</a></h3>
1673 <h4>Description
</h4>
1674 <p>Get the last error on a connection.
1679 <a href='#http_t'
>http_t
</a> * http);
1682 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1683 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1685 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1686 </tbody></table></div>
1688 <p>Error code (errno) value
</p>
1690 <h3 class='title'
><a name='httpFlush'
>httpFlush()
</a></h3>
1691 <h4>Description
</h4>
1692 <p>Flush data from a HTTP connection.
1697 <a href='#http_t'
>http_t
</a> * http);
1700 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1701 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1703 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1704 </tbody></table></div>
1708 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpFlushWrite'
>httpFlushWrite()
</a></h3>
1709 <h4>Description
</h4>
1710 <p>Flush data in write buffer.
1717 <a href='#http_t'
>http_t
</a> * http);
1720 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1721 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1723 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1724 </tbody></table></div>
1726 <p>Bytes written or -
1 on error
</p>
1728 <h3 class='title'
><a name='httpGet'
>httpGet()
</a></h3>
1729 <h4>Description
</h4>
1730 <p>Send a GET request to the server.
1735 <a href='#http_t'
>http_t
</a> * http,
1739 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1740 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1742 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1743 <tr><td><tt>uri
</tt></td><td>URI to get
</td></tr>
1744 </tbody></table></div>
1746 <p>Status of call (
0 = success)
</p>
1748 <h3 class='title'
><span class='info'
> CUPS
1.3 </span><a name='httpGetAuthString'
>httpGetAuthString()
</a></h3>
1749 <h4>Description
</h4>
1750 <p>Get the current authorization string.
1751 <p>The authorization string is set by cupsDoAuthentication() and
1752 httpSetAuthString(). Use httpGetAuthString() to retrieve the
1753 string to use with httpSetField() for the HTTP_FIELD_AUTHORIZATION
1761 <a href='#http_t'
>http_t
</a> * http);
1764 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1765 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1767 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1768 </tbody></table></div>
1770 <p>Authorization string
</p>
1772 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpGetBlocking'
>httpGetBlocking()
</a></h3>
1773 <h4>Description
</h4>
1774 <p>Get the blocking/non-block state of a connection.
1781 <a href='#http_t'
>http_t
</a> * http);
1784 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1785 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1787 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1788 </tbody></table></div>
1790 <p>1 if blocking,
0 if non-blocking
</p>
1792 <h3 class='title'
><span class='info'
> CUPS
1.1.19 </span><a name='httpGetCookie'
>httpGetCookie()
</a></h3>
1793 <h4>Description
</h4>
1794 <p>Get any cookie data from the response.
1801 <a href='#http_t'
>http_t
</a> * http);
1804 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1805 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1807 <tr><td><tt>http
</tt></td><td>HTTP connecion
</td></tr>
1808 </tbody></table></div>
1810 <p>Cookie data or NULL
</p>
1812 <h3 class='title'
><span class='info'
> DEPRECATED
</span><a name='httpGetDateString'
>httpGetDateString()
</a></h3>
1813 <h4>Description
</h4>
1814 <p>Get a formatted date/time string from a time value.
1824 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1825 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1827 <tr><td><tt>t
</tt></td><td>UNIX time
</td></tr>
1828 </tbody></table></div>
1830 <p>Date/time string
</p>
1832 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpGetDateString2'
>httpGetDateString2()
</a></h3>
1833 <h4>Description
</h4>
1834 <p>Get a formatted date/time string from a time value.
1846 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1847 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1849 <tr><td><tt>t
</tt></td><td>UNIX time
</td></tr>
1850 <tr><td><tt>s
</tt></td><td>String buffer
</td></tr>
1851 <tr><td><tt>slen
</tt></td><td>Size of string buffer
</td></tr>
1852 </tbody></table></div>
1854 <p>Date/time string
</p>
1856 <h3 class='title'
><a name='httpGetDateTime'
>httpGetDateTime()
</a></h3>
1857 <h4>Description
</h4>
1858 <p>Get a time value from a formatted date/time string.
1866 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1867 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1869 <tr><td><tt>s
</tt></td><td>Date/time string
</td></tr>
1870 </tbody></table></div>
1874 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpGetFd'
>httpGetFd()
</a></h3>
1875 <h4>Description
</h4>
1876 <p>Get the file descriptor associated with a connection.
1883 <a href='#http_t'
>http_t
</a> * http);
1886 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1887 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1889 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1890 </tbody></table></div>
1892 <p>File descriptor or -
1 if none
</p>
1894 <h3 class='title'
><a name='httpGetField'
>httpGetField()
</a></h3>
1895 <h4>Description
</h4>
1896 <p>Get a field value from a request/response.
1901 <a href='#http_t'
>http_t
</a> * http,
1902 http_field_t field);
1905 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1906 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1908 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1909 <tr><td><tt>field
</tt></td><td>Field to get
</td></tr>
1910 </tbody></table></div>
1914 <h3 class='title'
><span class='info'
> DEPRECATED
</span><a name='httpGetHostByName'
>httpGetHostByName()
</a></h3>
1915 <h4>Description
</h4>
1916 <p>Lookup a hostname or IPv4 address, and return
1917 address records for the specified name.
1922 struct hostent *
<br>
1927 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1928 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1930 <tr><td><tt>name
</tt></td><td>Hostname or IP address
</td></tr>
1931 </tbody></table></div>
1935 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpGetHostname'
>httpGetHostname()
</a></h3>
1936 <h4>Description
</h4>
1937 <p>Get the FQDN for the connection or local system.
1938 <p>When
"http
" points to a connected socket, return the hostname or
1939 address that was used in the call to httpConnect() or httpConnectEncrypt().
1940 Otherwise, return the FQDN for the local system using both gethostname()
1941 and gethostbyname() to get the local hostname with domain.
1948 <a href='#http_t'
>http_t
</a> * http,
1953 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1954 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1956 <tr><td><tt>http
</tt></td><td>HTTP connection or NULL
</td></tr>
1957 <tr><td><tt>s
</tt></td><td>String buffer for name
</td></tr>
1958 <tr><td><tt>slen
</tt></td><td>Size of buffer
</td></tr>
1959 </tbody></table></div>
1961 <p>FQDN for connection or system
</p>
1963 <h3 class='title'
><span class='info'
> DEPRECATED
</span><a name='httpGetLength'
>httpGetLength()
</a></h3>
1964 <h4>Description
</h4>
1965 <p>Get the amount of data remaining from the
1966 content-length or transfer-encoding fields.
1967 <p>This function is deprecated and will not return lengths larger than
1968 2^
31 -
1; use httpGetLength2() instead.
1975 <a href='#http_t'
>http_t
</a> * http);
1978 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
1979 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1981 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1982 </tbody></table></div>
1984 <p>Content length
</p>
1986 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpGetLength2'
>httpGetLength2()
</a></h3>
1987 <h4>Description
</h4>
1988 <p>Get the amount of data remaining from the
1989 content-length or transfer-encoding fields.
1990 <p>This function returns the complete content length, even for
1991 content larger than
2^
31 -
1.
1998 <a href='#http_t'
>http_t
</a> * http);
2001 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2002 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2004 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
2005 </tbody></table></div>
2007 <p>Content length
</p>
2009 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpGetStatus'
>httpGetStatus()
</a></h3>
2010 <h4>Description
</h4>
2011 <p>Get the status of the last HTTP request.
2018 <a href='#http_t'
>http_t
</a> * http);
2021 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2022 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2024 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
2025 </tbody></table></div>
2029 <h3 class='title'
><span class='info'
> DEPRECATED
</span><a name='httpGetSubField'
>httpGetSubField()
</a></h3>
2030 <h4>Description
</h4>
2031 <p>Get a sub-field value.
2038 <a href='#http_t'
>http_t
</a> * http,
2044 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2045 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2047 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
2048 <tr><td><tt>field
</tt></td><td>Field index
</td></tr>
2049 <tr><td><tt>name
</tt></td><td>Name of sub-field
</td></tr>
2050 <tr><td><tt>value
</tt></td><td>Value string
</td></tr>
2051 </tbody></table></div>
2053 <p>Value or NULL
</p>
2055 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpGetSubField2'
>httpGetSubField2()
</a></h3>
2056 <h4>Description
</h4>
2057 <p>Get a sub-field value.
2064 <a href='#http_t'
>http_t
</a> * http,
2071 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2072 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2074 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
2075 <tr><td><tt>field
</tt></td><td>Field index
</td></tr>
2076 <tr><td><tt>name
</tt></td><td>Name of sub-field
</td></tr>
2077 <tr><td><tt>value
</tt></td><td>Value string
</td></tr>
2078 <tr><td><tt>valuelen
</tt></td><td>Size of value buffer
</td></tr>
2079 </tbody></table></div>
2081 <p>Value or NULL
</p>
2083 <h3 class='title'
><a name='httpGets'
>httpGets()
</a></h3>
2084 <h4>Description
</h4>
2085 <p>Get a line of text from a HTTP connection.
2092 <a href='#http_t'
>http_t
</a> * http);
2095 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2096 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2098 <tr><td><tt>line
</tt></td><td>Line to read into
</td></tr>
2099 <tr><td><tt>length
</tt></td><td>Max length of buffer
</td></tr>
2100 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
2101 </tbody></table></div>
2105 <h3 class='title'
><a name='httpHead'
>httpHead()
</a></h3>
2106 <h4>Description
</h4>
2107 <p>Send a HEAD request to the server.
2112 <a href='#http_t'
>http_t
</a> * http,
2116 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2117 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2119 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
2120 <tr><td><tt>uri
</tt></td><td>URI for head
</td></tr>
2121 </tbody></table></div>
2123 <p>Status of call (
0 = success)
</p>
2125 <h3 class='title'
><a name='httpInitialize'
>httpInitialize()
</a></h3>
2126 <h4>Description
</h4>
2127 <p>Initialize the HTTP interface library and set the
2128 default HTTP proxy (if any).
2132 httpInitialize(void);
2139 <h3 class='title'
><a name='httpMD5'
>httpMD5()
</a></h3>
2140 <h4>Description
</h4>
2141 <p>Compute the MD5 sum of the username:group:password.
2146 const char * username,
2148 const char * passwd,
2152 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2153 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2155 <tr><td><tt>username
</tt></td><td>User name
</td></tr>
2156 <tr><td><tt>realm
</tt></td><td>Realm name
</td></tr>
2157 <tr><td><tt>passwd
</tt></td><td>Password string
</td></tr>
2158 <tr><td><tt>md5[
33]
</tt></td><td>MD5 string
</td></tr>
2159 </tbody></table></div>
2163 <h3 class='title'
><a name='httpMD5Final'
>httpMD5Final()
</a></h3>
2164 <h4>Description
</h4>
2165 <p>Combine the MD5 sum of the username, group, and password
2166 with the server-supplied nonce value, method, and
2173 const char * method,
2174 const char * resource,
2178 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2179 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2181 <tr><td><tt>nonce
</tt></td><td>Server nonce value
</td></tr>
2182 <tr><td><tt>method
</tt></td><td>METHOD (GET, POST, etc.)
</td></tr>
2183 <tr><td><tt>resource
</tt></td><td>Resource path
</td></tr>
2184 <tr><td><tt>md5[
33]
</tt></td><td>MD5 sum
</td></tr>
2185 </tbody></table></div>
2189 <h3 class='title'
><a name='httpMD5String'
>httpMD5String()
</a></h3>
2190 <h4>Description
</h4>
2191 <p>Convert an MD5 sum to a character string.
2196 const unsigned char * sum,
2200 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2201 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2203 <tr><td><tt>sum
</tt></td><td>MD5 sum data
</td></tr>
2204 <tr><td><tt>md5[
33]
</tt></td><td>MD5 sum in hex
</td></tr>
2205 </tbody></table></div>
2207 <p>MD5 sum in hex
</p>
2209 <h3 class='title'
><a name='httpOptions'
>httpOptions()
</a></h3>
2210 <h4>Description
</h4>
2211 <p>Send an OPTIONS request to the server.
2216 <a href='#http_t'
>http_t
</a> * http,
2220 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2221 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2223 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
2224 <tr><td><tt>uri
</tt></td><td>URI for options
</td></tr>
2225 </tbody></table></div>
2227 <p>Status of call (
0 = success)
</p>
2229 <h3 class='title'
><a name='httpPost'
>httpPost()
</a></h3>
2230 <h4>Description
</h4>
2231 <p>Send a POST request to the server.
2236 <a href='#http_t'
>http_t
</a> * http,
2240 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2241 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2243 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
2244 <tr><td><tt>uri
</tt></td><td>URI for post
</td></tr>
2245 </tbody></table></div>
2247 <p>Status of call (
0 = success)
</p>
2249 <h3 class='title'
><a name='httpPut'
>httpPut()
</a></h3>
2250 <h4>Description
</h4>
2251 <p>Send a PUT request to the server.
2256 <a href='#http_t'
>http_t
</a> * http,
2260 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2261 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2263 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
2264 <tr><td><tt>uri
</tt></td><td>URI to put
</td></tr>
2265 </tbody></table></div>
2267 <p>Status of call (
0 = success)
</p>
2269 <h3 class='title'
><span class='info'
> DEPRECATED
</span><a name='httpRead'
>httpRead()
</a></h3>
2270 <h4>Description
</h4>
2271 <p>Read data from a HTTP connection.
2272 <p>This function is deprecated. Use the httpRead2() function which can
2273 read more than
2GB of data.
2280 <a href='#http_t'
>http_t
</a> * http,
2285 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2286 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2288 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
2289 <tr><td><tt>buffer
</tt></td><td>Buffer for data
</td></tr>
2290 <tr><td><tt>length
</tt></td><td>Maximum number of bytes
</td></tr>
2291 </tbody></table></div>
2293 <p>Number of bytes read
</p>
2295 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpRead2'
>httpRead2()
</a></h3>
2296 <h4>Description
</h4>
2297 <p>Read data from a HTTP connection.
2302 <a href='#ssize_t'
>ssize_t
</a><br>
2304 <a href='#http_t'
>http_t
</a> * http,
2309 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2310 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2312 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
2313 <tr><td><tt>buffer
</tt></td><td>Buffer for data
</td></tr>
2314 <tr><td><tt>length
</tt></td><td>Maximum number of bytes
</td></tr>
2315 </tbody></table></div>
2317 <p>Number of bytes read
</p>
2319 <h3 class='title'
><a name='httpReconnect'
>httpReconnect()
</a></h3>
2320 <h4>Description
</h4>
2321 <p>Reconnect to a HTTP server.
2326 <a href='#http_t'
>http_t
</a> * http);
2329 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2330 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2332 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
2333 </tbody></table></div>
2335 <p>0 on success, non-zero on failure
</p>
2337 <h3 class='title'
><span class='info'
> DEPRECATED
</span><a name='httpSeparate'
>httpSeparate()
</a></h3>
2338 <h4>Description
</h4>
2339 <p>Separate a Universal Resource Identifier into its
2341 <p>This function is deprecated; use the httpSeparateURI() function instead.
2356 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2357 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2359 <tr><td><tt>uri
</tt></td><td>Universal Resource Identifier
</td></tr>
2360 <tr><td><tt>scheme
</tt></td><td>Scheme [
32] (http, https, etc.)
</td></tr>
2361 <tr><td><tt>username
</tt></td><td>Username [
1024]
</td></tr>
2362 <tr><td><tt>host
</tt></td><td>Hostname [
1024]
</td></tr>
2363 <tr><td><tt>port
</tt></td><td>Port number to use
</td></tr>
2364 <tr><td><tt>resource
</tt></td><td>Resource/filename [
1024]
</td></tr>
2365 </tbody></table></div>
2369 <h3 class='title'
><span class='info'
> CUPS
1.1.21 </span><a name='httpSeparate2'
>httpSeparate2()
</a></h3>
2370 <h4>Description
</h4>
2371 <p>Separate a Universal Resource Identifier into its
2373 <p>This function is deprecated; use the httpSeparateURI() function instead.
2393 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2394 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2396 <tr><td><tt>uri
</tt></td><td>Universal Resource Identifier
</td></tr>
2397 <tr><td><tt>scheme
</tt></td><td>Scheme (http, https, etc.)
</td></tr>
2398 <tr><td><tt>schemelen
</tt></td><td>Size of scheme buffer
</td></tr>
2399 <tr><td><tt>username
</tt></td><td>Username
</td></tr>
2400 <tr><td><tt>usernamelen
</tt></td><td>Size of username buffer
</td></tr>
2401 <tr><td><tt>host
</tt></td><td>Hostname
</td></tr>
2402 <tr><td><tt>hostlen
</tt></td><td>Size of hostname buffer
</td></tr>
2403 <tr><td><tt>port
</tt></td><td>Port number to use
</td></tr>
2404 <tr><td><tt>resource
</tt></td><td>Resource/filename
</td></tr>
2405 <tr><td><tt>resourcelen
</tt></td><td>Size of resource buffer
</td></tr>
2406 </tbody></table></div>
2410 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpSeparateURI'
>httpSeparateURI()
</a></h3>
2411 <h4>Description
</h4>
2412 <p>Separate a Universal Resource Identifier into its
2418 http_uri_status_t
<br>
2420 http_uri_coding_t decoding,
2433 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2434 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2436 <tr><td><tt>decoding
</tt></td><td>Decoding flags
</td></tr>
2437 <tr><td><tt>uri
</tt></td><td>Universal Resource Identifier
</td></tr>
2438 <tr><td><tt>scheme
</tt></td><td>Scheme (http, https, etc.)
</td></tr>
2439 <tr><td><tt>schemelen
</tt></td><td>Size of scheme buffer
</td></tr>
2440 <tr><td><tt>username
</tt></td><td>Username
</td></tr>
2441 <tr><td><tt>usernamelen
</tt></td><td>Size of username buffer
</td></tr>
2442 <tr><td><tt>host
</tt></td><td>Hostname
</td></tr>
2443 <tr><td><tt>hostlen
</tt></td><td>Size of hostname buffer
</td></tr>
2444 <tr><td><tt>port
</tt></td><td>Port number to use
</td></tr>
2445 <tr><td><tt>resource
</tt></td><td>Resource/filename
</td></tr>
2446 <tr><td><tt>resourcelen
</tt></td><td>Size of resource buffer
</td></tr>
2447 </tbody></table></div>
2449 <p>Result of separation
</p>
2451 <h3 class='title'
><span class='info'
> CUPS
1.3 </span><a name='httpSetAuthString'
>httpSetAuthString()
</a></h3>
2452 <h4>Description
</h4>
2453 <p>Set the current authorization string.
2454 <p>This function just stores a copy of the current authorization string in
2455 the HTTP connection object. You must still call httpSetField() to set
2456 HTTP_FIELD_AUTHORIZATION prior to issuing a HTTP request using httpGet(),
2457 httpHead(), httpOptions(), httpPost, or httpPut().
2464 <a href='#http_t'
>http_t
</a> * http,
2465 const char * scheme,
2469 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2470 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2472 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
2473 <tr><td><tt>scheme
</tt></td><td>Auth scheme (NULL to clear it)
</td></tr>
2474 <tr><td><tt>data
</tt></td><td>Auth data (NULL for none)
</td></tr>
2475 </tbody></table></div>
2479 <h3 class='title'
><span class='info'
> CUPS
1.1.19 </span><a name='httpSetCookie'
>httpSetCookie()
</a></h3>
2480 <h4>Description
</h4>
2481 <p>Set the cookie value(s)...
2488 <a href='#http_t'
>http_t
</a> * http,
2489 const char * cookie);
2492 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2493 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2495 <tr><td><tt>http
</tt></td><td>Connection
</td></tr>
2496 <tr><td><tt>cookie
</tt></td><td>Cookie string
</td></tr>
2497 </tbody></table></div>
2501 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpSetExpect'
>httpSetExpect()
</a></h3>
2502 <h4>Description
</h4>
2503 <p>Set the Expect: header in a request.
2504 <p>Currently only HTTP_CONTINUE is supported for the
"expect
" argument.
2511 <a href='#http_t'
>http_t
</a> * http,
2512 http_status_t expect);
2515 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2516 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2518 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
2519 <tr><td><tt>expect
</tt></td><td>HTTP status to expect (HTTP_CONTINUE)
</td></tr>
2520 </tbody></table></div>
2524 <h3 class='title'
><a name='httpSetField'
>httpSetField()
</a></h3>
2525 <h4>Description
</h4>
2526 <p>Set the value of an HTTP header.
2531 <a href='#http_t'
>http_t
</a> * http,
2533 const char * value);
2536 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2537 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2539 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
2540 <tr><td><tt>field
</tt></td><td>Field index
</td></tr>
2541 <tr><td><tt>value
</tt></td><td>Value
</td></tr>
2542 </tbody></table></div>
2546 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpSetLength'
>httpSetLength()
</a></h3>
2547 <h4>Description
</h4>
2548 <p>Set the content-length and content-encoding.
2555 <a href='#http_t'
>http_t
</a> * http,
2559 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2560 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2562 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
2563 <tr><td><tt>length
</tt></td><td>Length (
0 for chunked)
</td></tr>
2564 </tbody></table></div>
2568 <h3 class='title'
><a name='httpStatus'
>httpStatus()
</a></h3>
2569 <h4>Description
</h4>
2570 <p>Return a short string describing a HTTP status code.
2575 http_status_t status);
2578 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2579 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2581 <tr><td><tt>status
</tt></td><td>HTTP status code
</td></tr>
2582 </tbody></table></div>
2584 <p>String or NULL
</p>
2586 <h3 class='title'
><a name='httpTrace'
>httpTrace()
</a></h3>
2587 <h4>Description
</h4>
2588 <p>Send an TRACE request to the server.
2593 <a href='#http_t'
>http_t
</a> * http,
2597 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2598 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2600 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
2601 <tr><td><tt>uri
</tt></td><td>URI for trace
</td></tr>
2602 </tbody></table></div>
2604 <p>Status of call (
0 = success)
</p>
2606 <h3 class='title'
><a name='httpUpdate'
>httpUpdate()
</a></h3>
2607 <h4>Description
</h4>
2608 <p>Update the current HTTP state for incoming data.
2613 <a href='#http_t'
>http_t
</a> * http);
2616 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2617 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2619 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
2620 </tbody></table></div>
2624 <h3 class='title'
><span class='info'
> CUPS
1.1.19 </span><a name='httpWait'
>httpWait()
</a></h3>
2625 <h4>Description
</h4>
2626 <p>Wait for data available on a connection.
2633 <a href='#http_t'
>http_t
</a> * http,
2637 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2638 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2640 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
2641 <tr><td><tt>msec
</tt></td><td>Milliseconds to wait
</td></tr>
2642 </tbody></table></div>
2644 <p>1 if data is available,
0 otherwise
</p>
2646 <h3 class='title'
><span class='info'
> DEPRECATED
</span><a name='httpWrite'
>httpWrite()
</a></h3>
2647 <h4>Description
</h4>
2648 <p>Write data to a HTTP connection.
2649 <p>This function is deprecated. Use the httpWrite2() function which can
2650 write more than
2GB of data.
2657 <a href='#http_t'
>http_t
</a> * http,
2658 const char * buffer,
2662 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2663 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2665 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
2666 <tr><td><tt>buffer
</tt></td><td>Buffer for data
</td></tr>
2667 <tr><td><tt>length
</tt></td><td>Number of bytes to write
</td></tr>
2668 </tbody></table></div>
2670 <p>Number of bytes written
</p>
2672 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpWrite2'
>httpWrite2()
</a></h3>
2673 <h4>Description
</h4>
2674 <p>Write data to a HTTP connection.
2679 <a href='#ssize_t'
>ssize_t
</a><br>
2681 <a href='#http_t'
>http_t
</a> * http,
2682 const char * buffer,
2686 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2687 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2689 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
2690 <tr><td><tt>buffer
</tt></td><td>Buffer for data
</td></tr>
2691 <tr><td><tt>length
</tt></td><td>Number of bytes to write
</td></tr>
2692 </tbody></table></div>
2694 <p>Number of bytes written
</p>
2696 <h3 class='title'
><a name='ippAddBoolean'
>ippAddBoolean()
</a></h3>
2697 <h4>Description
</h4>
2698 <p>Add a boolean attribute to an IPP message.
2701 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
<br>
2703 <a href='#ipp_t'
>ipp_t
</a> * ipp,
2709 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2710 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2712 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
2713 <tr><td><tt>group
</tt></td><td>IPP group
</td></tr>
2714 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
2715 <tr><td><tt>value
</tt></td><td>Value of attribute
</td></tr>
2716 </tbody></table></div>
2718 <p>New attribute
</p>
2720 <h3 class='title'
><a name='ippAddBooleans'
>ippAddBooleans()
</a></h3>
2721 <h4>Description
</h4>
2722 <p>Add an array of boolean values.
2725 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
<br>
2727 <a href='#ipp_t'
>ipp_t
</a> * ipp,
2731 const char * values);
2734 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2735 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2737 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
2738 <tr><td><tt>group
</tt></td><td>IPP group
</td></tr>
2739 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
2740 <tr><td><tt>num_values
</tt></td><td>Number of values
</td></tr>
2741 <tr><td><tt>values
</tt></td><td>Values
</td></tr>
2742 </tbody></table></div>
2744 <p>New attribute
</p>
2746 <h3 class='title'
><span class='info'
> CUPS
1.1.19 </span><a name='ippAddCollection'
>ippAddCollection()
</a></h3>
2747 <h4>Description
</h4>
2748 <p>Add a collection value.
2753 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
<br>
2755 <a href='#ipp_t'
>ipp_t
</a> * ipp,
2758 <a href='#ipp_t'
>ipp_t
</a> * value);
2761 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2762 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2764 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
2765 <tr><td><tt>group
</tt></td><td>IPP group
</td></tr>
2766 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
2767 <tr><td><tt>value
</tt></td><td>Value
</td></tr>
2768 </tbody></table></div>
2770 <p>New attribute
</p>
2772 <h3 class='title'
><span class='info'
> CUPS
1.1.19 </span><a name='ippAddCollections'
>ippAddCollections()
</a></h3>
2773 <h4>Description
</h4>
2774 <p>Add an array of collection values.
2779 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
<br>
2781 <a href='#ipp_t'
>ipp_t
</a> * ipp,
2785 const
<a href='#ipp_t'
>ipp_t
</a> ** values);
2788 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2789 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2791 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
2792 <tr><td><tt>group
</tt></td><td>IPP group
</td></tr>
2793 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
2794 <tr><td><tt>num_values
</tt></td><td>Number of values
</td></tr>
2795 <tr><td><tt>values
</tt></td><td>Values
</td></tr>
2796 </tbody></table></div>
2798 <p>New attribute
</p>
2800 <h3 class='title'
><a name='ippAddDate'
>ippAddDate()
</a></h3>
2801 <h4>Description
</h4>
2802 <p>Add a date attribute to an IPP message.
2805 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
<br>
2807 <a href='#ipp_t'
>ipp_t
</a> * ipp,
2810 const
<a href='#ipp_uchar_t'
>ipp_uchar_t
</a> * value);
2813 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2814 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2816 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
2817 <tr><td><tt>group
</tt></td><td>IPP group
</td></tr>
2818 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
2819 <tr><td><tt>value
</tt></td><td>Value
</td></tr>
2820 </tbody></table></div>
2822 <p>New attribute
</p>
2824 <h3 class='title'
><a name='ippAddInteger'
>ippAddInteger()
</a></h3>
2825 <h4>Description
</h4>
2826 <p>Add a integer attribute 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>type
</tt></td><td>Type of attribute
</td></tr>
2844 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
2845 <tr><td><tt>value
</tt></td><td>Value of attribute
</td></tr>
2846 </tbody></table></div>
2848 <p>New attribute
</p>
2850 <h3 class='title'
><a name='ippAddIntegers'
>ippAddIntegers()
</a></h3>
2851 <h4>Description
</h4>
2852 <p>Add an array of integer values.
2855 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
<br>
2857 <a href='#ipp_t'
>ipp_t
</a> * ipp,
2862 const int * values);
2865 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2866 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2868 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
2869 <tr><td><tt>group
</tt></td><td>IPP group
</td></tr>
2870 <tr><td><tt>type
</tt></td><td>Type of attribute
</td></tr>
2871 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
2872 <tr><td><tt>num_values
</tt></td><td>Number of values
</td></tr>
2873 <tr><td><tt>values
</tt></td><td>Values
</td></tr>
2874 </tbody></table></div>
2876 <p>New attribute
</p>
2878 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='ippAddOctetString'
>ippAddOctetString()
</a></h3>
2879 <h4>Description
</h4>
2880 <p>Add an octetString value to an IPP message.
2885 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
<br>
2887 <a href='#ipp_t'
>ipp_t
</a> * ipp,
2894 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2895 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2897 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
2898 <tr><td><tt>group
</tt></td><td>IPP group
</td></tr>
2899 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
2900 <tr><td><tt>data
</tt></td><td>octetString data
</td></tr>
2901 <tr><td><tt>datalen
</tt></td><td>Length of data in bytes
</td></tr>
2902 </tbody></table></div>
2904 <p>New attribute
</p>
2906 <h3 class='title'
><a name='ippAddRange'
>ippAddRange()
</a></h3>
2907 <h4>Description
</h4>
2908 <p>Add a range of values to an IPP message.
2911 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
<br>
2913 <a href='#ipp_t'
>ipp_t
</a> * ipp,
2920 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2921 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2923 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
2924 <tr><td><tt>group
</tt></td><td>IPP group
</td></tr>
2925 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
2926 <tr><td><tt>lower
</tt></td><td>Lower value
</td></tr>
2927 <tr><td><tt>upper
</tt></td><td>Upper value
</td></tr>
2928 </tbody></table></div>
2930 <p>New attribute
</p>
2932 <h3 class='title'
><a name='ippAddRanges'
>ippAddRanges()
</a></h3>
2933 <h4>Description
</h4>
2934 <p>Add ranges of 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,
2947 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2948 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2950 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
2951 <tr><td><tt>group
</tt></td><td>IPP group
</td></tr>
2952 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
2953 <tr><td><tt>num_values
</tt></td><td>Number of values
</td></tr>
2954 <tr><td><tt>lower
</tt></td><td>Lower values
</td></tr>
2955 <tr><td><tt>upper
</tt></td><td>Upper values
</td></tr>
2956 </tbody></table></div>
2958 <p>New attribute
</p>
2960 <h3 class='title'
><a name='ippAddResolution'
>ippAddResolution()
</a></h3>
2961 <h4>Description
</h4>
2962 <p>Add a resolution value to an IPP message.
2965 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
<br>
2967 <a href='#ipp_t'
>ipp_t
</a> * ipp,
2975 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
2976 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2978 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
2979 <tr><td><tt>group
</tt></td><td>IPP group
</td></tr>
2980 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
2981 <tr><td><tt>units
</tt></td><td>Units for resolution
</td></tr>
2982 <tr><td><tt>xres
</tt></td><td>X resolution
</td></tr>
2983 <tr><td><tt>yres
</tt></td><td>Y resolution
</td></tr>
2984 </tbody></table></div>
2986 <p>New attribute
</p>
2988 <h3 class='title'
><a name='ippAddResolutions'
>ippAddResolutions()
</a></h3>
2989 <h4>Description
</h4>
2990 <p>Add resolution values to an IPP message.
2993 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
<br>
2995 <a href='#ipp_t'
>ipp_t
</a> * ipp,
3004 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
3005 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3007 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
3008 <tr><td><tt>group
</tt></td><td>IPP group
</td></tr>
3009 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
3010 <tr><td><tt>num_values
</tt></td><td>Number of values
</td></tr>
3011 <tr><td><tt>units
</tt></td><td>Units for resolution
</td></tr>
3012 <tr><td><tt>xres
</tt></td><td>X resolutions
</td></tr>
3013 <tr><td><tt>yres
</tt></td><td>Y resolutions
</td></tr>
3014 </tbody></table></div>
3016 <p>New attribute
</p>
3018 <h3 class='title'
><a name='ippAddSeparator'
>ippAddSeparator()
</a></h3>
3019 <h4>Description
</h4>
3020 <p>Add a group separator to an IPP message.
3023 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
<br>
3025 <a href='#ipp_t'
>ipp_t
</a> * ipp);
3028 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
3029 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3031 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
3032 </tbody></table></div>
3034 <p>New attribute
</p>
3036 <h3 class='title'
><a name='ippAddString'
>ippAddString()
</a></h3>
3037 <h4>Description
</h4>
3038 <p>Add a language-encoded string to an IPP message.
3041 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
<br>
3043 <a href='#ipp_t'
>ipp_t
</a> * ipp,
3047 const char * charset,
3048 const char * value);
3051 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
3052 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3054 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
3055 <tr><td><tt>group
</tt></td><td>IPP group
</td></tr>
3056 <tr><td><tt>type
</tt></td><td>Type of attribute
</td></tr>
3057 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
3058 <tr><td><tt>charset
</tt></td><td>Character set
</td></tr>
3059 <tr><td><tt>value
</tt></td><td>Value
</td></tr>
3060 </tbody></table></div>
3062 <p>New attribute
</p>
3064 <h3 class='title'
><a name='ippAddStrings'
>ippAddStrings()
</a></h3>
3065 <h4>Description
</h4>
3066 <p>Add language-encoded strings to an IPP message.
3069 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
<br>
3071 <a href='#ipp_t'
>ipp_t
</a> * ipp,
3076 const char * charset,
3077 const char *const * values);
3080 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
3081 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3083 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
3084 <tr><td><tt>group
</tt></td><td>IPP group
</td></tr>
3085 <tr><td><tt>type
</tt></td><td>Type of attribute
</td></tr>
3086 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
3087 <tr><td><tt>num_values
</tt></td><td>Number of values
</td></tr>
3088 <tr><td><tt>charset
</tt></td><td>Character set
</td></tr>
3089 <tr><td><tt>values
</tt></td><td>Values
</td></tr>
3090 </tbody></table></div>
3092 <p>New attribute
</p>
3094 <h3 class='title'
><a name='ippDateToTime'
>ippDateToTime()
</a></h3>
3095 <h4>Description
</h4>
3096 <p>Convert from RFC
1903 Date/Time format to UNIX time
3102 const
<a href='#ipp_uchar_t'
>ipp_uchar_t
</a> * date);
3105 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
3106 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3108 <tr><td><tt>date
</tt></td><td>RFC
1903 date info
</td></tr>
3109 </tbody></table></div>
3111 <p>UNIX time value
</p>
3113 <h3 class='title'
><a name='ippDelete'
>ippDelete()
</a></h3>
3114 <h4>Description
</h4>
3115 <p>Delete an IPP message.
3120 <a href='#ipp_t'
>ipp_t
</a> * ipp);
3123 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
3124 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3126 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
3127 </tbody></table></div>
3131 <h3 class='title'
><span class='info'
> CUPS
1.1.19 </span><a name='ippDeleteAttribute'
>ippDeleteAttribute()
</a></h3>
3132 <h4>Description
</h4>
3133 <p>Delete a single attribute in an IPP message.
3140 <a href='#ipp_t'
>ipp_t
</a> * ipp,
3141 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> * attr);
3144 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
3145 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3147 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
3148 <tr><td><tt>attr
</tt></td><td>Attribute to delete
</td></tr>
3149 </tbody></table></div>
3153 <h3 class='title'
><a name='ippErrorString'
>ippErrorString()
</a></h3>
3154 <h4>Description
</h4>
3155 <p>Return a name for the given status code.
3160 ipp_status_t error);
3163 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
3164 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3166 <tr><td><tt>error
</tt></td><td>Error status
</td></tr>
3167 </tbody></table></div>
3171 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='ippErrorValue'
>ippErrorValue()
</a></h3>
3172 <h4>Description
</h4>
3173 <p>Return a status code for the given name.
3183 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
3184 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3186 <tr><td><tt>name
</tt></td><td>Name
</td></tr>
3187 </tbody></table></div>
3189 <p>IPP status code
</p>
3191 <h3 class='title'
><a name='ippFindAttribute'
>ippFindAttribute()
</a></h3>
3192 <h4>Description
</h4>
3193 <p>Find a named attribute in a request...
3196 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
<br>
3198 <a href='#ipp_t'
>ipp_t
</a> * ipp,
3203 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
3204 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3206 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
3207 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
3208 <tr><td><tt>type
</tt></td><td>Type of attribute
</td></tr>
3209 </tbody></table></div>
3211 <p>Matching attribute
</p>
3213 <h3 class='title'
><a name='ippFindNextAttribute'
>ippFindNextAttribute()
</a></h3>
3214 <h4>Description
</h4>
3215 <p>Find the next named attribute in a request...
3218 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
<br>
3219 ippFindNextAttribute(
3220 <a href='#ipp_t'
>ipp_t
</a> * ipp,
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>ipp
</tt></td><td>IPP message
</td></tr>
3229 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
3230 <tr><td><tt>type
</tt></td><td>Type of attribute
</td></tr>
3231 </tbody></table></div>
3233 <p>Matching attribute
</p>
3235 <h3 class='title'
><a name='ippLength'
>ippLength()
</a></h3>
3236 <h4>Description
</h4>
3237 <p>Compute the length of an IPP message.
3242 <a href='#ipp_t'
>ipp_t
</a> * ipp);
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>ipp
</tt></td><td>IPP message
</td></tr>
3249 </tbody></table></div>
3251 <p>Size of IPP message
</p>
3253 <h3 class='title'
><a name='ippNew'
>ippNew()
</a></h3>
3254 <h4>Description
</h4>
3255 <p>Allocate a new IPP message.
3258 <a href='#ipp_t'
>ipp_t
</a> *
<br>
3264 <p>New IPP message
</p>
3266 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='ippNewRequest'
>ippNewRequest()
</a></h3>
3267 <h4>Description
</h4>
3268 <p>Allocate a new IPP request message.
3269 <p>The new request message is initialized with the attributes-charset and
3270 attributes-natural-language attributes added. The
3271 attributes-natural-language value is derived from the current locale.
3276 <a href='#ipp_t'
>ipp_t
</a> *
<br>
3281 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
3282 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3284 <tr><td><tt>op
</tt></td><td>Operation code
</td></tr>
3285 </tbody></table></div>
3287 <p>IPP request message
</p>
3289 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='ippOpString'
>ippOpString()
</a></h3>
3290 <h4>Description
</h4>
3291 <p>Return a name for the given operation id.
3301 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
3302 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3304 <tr><td><tt>op
</tt></td><td>Operation ID
</td></tr>
3305 </tbody></table></div>
3309 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='ippOpValue'
>ippOpValue()
</a></h3>
3310 <h4>Description
</h4>
3311 <p>Return an operation id for the given name.
3321 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
3322 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3324 <tr><td><tt>name
</tt></td><td>Textual name
</td></tr>
3325 </tbody></table></div>
3329 <h3 class='title'
><a name='ippPort'
>ippPort()
</a></h3>
3330 <h4>Description
</h4>
3331 <p>Return the default IPP port number.
3342 <h3 class='title'
><a name='ippRead'
>ippRead()
</a></h3>
3343 <h4>Description
</h4>
3344 <p>Read data for an IPP message from a HTTP connection.
3349 <a href='#http_t'
>http_t
</a> * http,
3350 <a href='#ipp_t'
>ipp_t
</a> * ipp);
3353 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
3354 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3356 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
3357 <tr><td><tt>ipp
</tt></td><td>IPP data
</td></tr>
3358 </tbody></table></div>
3360 <p>Current state
</p>
3362 <h3 class='title'
><span class='info'
> CUPS
1.1.19 </span><a name='ippReadFile'
>ippReadFile()
</a></h3>
3363 <h4>Description
</h4>
3364 <p>Read data for an IPP message from a file.
3372 <a href='#ipp_t'
>ipp_t
</a> * ipp);
3375 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
3376 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3378 <tr><td><tt>fd
</tt></td><td>HTTP data
</td></tr>
3379 <tr><td><tt>ipp
</tt></td><td>IPP data
</td></tr>
3380 </tbody></table></div>
3382 <p>Current state
</p>
3384 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='ippReadIO'
>ippReadIO()
</a></h3>
3385 <h4>Description
</h4>
3386 <p>Read data for an IPP message.
3394 <a href='#ipp_iocb_t'
>ipp_iocb_t
</a> cb,
3396 <a href='#ipp_t'
>ipp_t
</a> * parent,
3397 <a href='#ipp_t'
>ipp_t
</a> * ipp);
3400 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
3401 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3403 <tr><td><tt>src
</tt></td><td>Data source
</td></tr>
3404 <tr><td><tt>cb
</tt></td><td>Read callback function
</td></tr>
3405 <tr><td><tt>blocking
</tt></td><td>Use blocking IO?
</td></tr>
3406 <tr><td><tt>parent
</tt></td><td>Parent request, if any
</td></tr>
3407 <tr><td><tt>ipp
</tt></td><td>IPP data
</td></tr>
3408 </tbody></table></div>
3410 <p>Current state
</p>
3412 <h3 class='title'
><a name='ippSetPort'
>ippSetPort()
</a></h3>
3413 <h4>Description
</h4>
3414 <p>Set the default port number.
3422 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
3423 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3425 <tr><td><tt>p
</tt></td><td>Port number to use
</td></tr>
3426 </tbody></table></div>
3430 <h3 class='title'
><a name='ippTimeToDate'
>ippTimeToDate()
</a></h3>
3431 <h4>Description
</h4>
3432 <p>Convert from UNIX time to RFC
1903 format.
3435 const
<a href='#ipp_uchar_t'
>ipp_uchar_t
</a> *
<br>
3440 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
3441 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3443 <tr><td><tt>t
</tt></td><td>UNIX time value
</td></tr>
3444 </tbody></table></div>
3446 <p>RFC-
1903 date/time data
</p>
3448 <h3 class='title'
><a name='ippWrite'
>ippWrite()
</a></h3>
3449 <h4>Description
</h4>
3450 <p>Write data for an IPP message to a HTTP connection.
3455 <a href='#http_t'
>http_t
</a> * http,
3456 <a href='#ipp_t'
>ipp_t
</a> * ipp);
3459 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
3460 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3462 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
3463 <tr><td><tt>ipp
</tt></td><td>IPP data
</td></tr>
3464 </tbody></table></div>
3466 <p>Current state
</p>
3468 <h3 class='title'
><span class='info'
> CUPS
1.1.19 </span><a name='ippWriteFile'
>ippWriteFile()
</a></h3>
3469 <h4>Description
</h4>
3470 <p>Write data for an IPP message to a file.
3478 <a href='#ipp_t'
>ipp_t
</a> * ipp);
3481 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
3482 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3484 <tr><td><tt>fd
</tt></td><td>HTTP data
</td></tr>
3485 <tr><td><tt>ipp
</tt></td><td>IPP data
</td></tr>
3486 </tbody></table></div>
3488 <p>Current state
</p>
3490 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='ippWriteIO'
>ippWriteIO()
</a></h3>
3491 <h4>Description
</h4>
3492 <p>Write data for an IPP message.
3500 <a href='#ipp_iocb_t'
>ipp_iocb_t
</a> cb,
3502 <a href='#ipp_t'
>ipp_t
</a> * parent,
3503 <a href='#ipp_t'
>ipp_t
</a> * ipp);
3506 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0' summary='Arguments'
>
3507 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3509 <tr><td><tt>dst
</tt></td><td>Destination
</td></tr>
3510 <tr><td><tt>cb
</tt></td><td>Write callback function
</td></tr>
3511 <tr><td><tt>blocking
</tt></td><td>Use blocking IO?
</td></tr>
3512 <tr><td><tt>parent
</tt></td><td>Parent IPP message
</td></tr>
3513 <tr><td><tt>ipp
</tt></td><td>IPP data
</td></tr>
3514 </tbody></table></div>
3516 <p>Current state
</p>
3518 <h2 class='title'
><a name='STRUCTURES'
>Structures
</a></h2>
3520 <li><a href='#http_addrlist_s'
><tt>http_addrlist_s
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
3521 <li><a href='#ipp_attribute_s'
><tt>ipp_attribute_s
</tt></a> </li>
3522 <li><a href='#ipp_s'
><tt>ipp_s
</tt></a> </li>
3525 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='http_addrlist_s'
>http_addrlist_s
</a></h3>
3526 <h4>Description
</h4>
3527 <p>Socket address list, which is
3528 used to enumerate all of the
3529 addresses that are associated
3533 struct http_addrlist_s
<br>
3535 <a href='#http_addr_t'
>http_addr_t
</a> addr;
<br>
3536 struct
<a href='#http_addrlist_s'
>http_addrlist_s
</a> * next;
<br>
3539 <div class='table'
><table align='center' border='
1' width='
80%' summary='Members'
>
3540 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3542 <tr><td><tt>addr
</tt> </td><td>Address
3544 <tr><td><tt>next
</tt> </td><td>Pointer to next address in list
3546 </tbody></table></div>
3548 <h3 class='title'
><a name='ipp_attribute_s'
>ipp_attribute_s
</a></h3>
3549 <h4>Description
</h4>
3553 struct ipp_attribute_s
<br>
3555 char * name;
<br>
3556 struct
<a href='#ipp_attribute_s'
>ipp_attribute_s
</a> * next;
<br>
3557 int num_values;
<br>
3558 ipp_tag_t group_tag, value_tag;
<br>
3559 <a href='#ipp_value_t'
>ipp_value_t
</a> values[
1];
<br>
3562 <div class='table'
><table align='center' border='
1' width='
80%' summary='Members'
>
3563 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3565 <tr><td><tt>name
</tt> </td><td>Name of attribute
3567 <tr><td><tt>next
</tt> </td><td>Next attribute in list
3569 <tr><td><tt>num_values
</tt> </td><td>Number of values
3571 <tr><td><tt>value_tag
</tt> </td><td>What type of value is it?
3573 <tr><td><tt>values[
1]
</tt> </td><td>Values
3575 </tbody></table></div>
3577 <h3 class='title'
><a name='ipp_s'
>ipp_s
</a></h3>
3578 <h4>Description
</h4>
3579 <p>IPP Request/Response/Notification
3584 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> * attrs;
<br>
3585 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> * current;
<br>
3586 ipp_tag_t curtag;
<br>
3587 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> * last;
<br>
3588 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> * prev;
<br>
3589 <a href='#ipp_request_t'
>ipp_request_t
</a> request;
<br>
3590 ipp_state_t state;
<br>
3593 <div class='table'
><table align='center' border='
1' width='
80%' summary='Members'
>
3594 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3596 <tr><td><tt>attrs
</tt> </td><td>Attributes
3598 <tr><td><tt>current
</tt> </td><td>Current attribute (for read/write)
3600 <tr><td><tt>curtag
</tt> </td><td>Current attribute group tag
3602 <tr><td><tt>last
</tt> </td><td>Last attribute in list
3604 <tr><td><tt>prev
</tt> </td><td>Previous attribute (for read)
3606 <tr><td><tt>request
</tt> </td><td>Request header
3608 <tr><td><tt>state
</tt> </td><td>State of request
3610 </tbody></table></div>
3612 <h2 class='title'
><a name='TYPES'
>Types
</a></h2>
3614 <li><a href='#http_addrlist_t'
><tt>http_addrlist_t
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
3615 <li><a href='#http_auth_t'
><tt>http_auth_t
</tt></a> </li>
3616 <li><a href='#http_encoding_t'
><tt>http_encoding_t
</tt></a> </li>
3617 <li><a href='#http_encryption_t'
><tt>http_encryption_t
</tt></a> </li>
3618 <li><a href='#http_t'
><tt>http_t
</tt></a> </li>
3619 <li><a href='#ipp_attribute_t'
><tt>ipp_attribute_t
</tt></a> </li>
3620 <li><a href='#ipp_iocb_t'
><tt>ipp_iocb_t
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
3621 <li><a href='#ipp_request_t'
><tt>ipp_request_t
</tt></a> </li>
3622 <li><a href='#ipp_t'
><tt>ipp_t
</tt></a> </li>
3623 <li><a href='#ipp_uchar_t'
><tt>ipp_uchar_t
</tt></a> </li>
3624 <li><a href='#ipp_value_t'
><tt>ipp_value_t
</tt></a> </li>
3627 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='http_addrlist_t'
>http_addrlist_t
</a></h3>
3628 <h4>Description
</h4>
3629 <p>Socket address list, which is
3630 used to enumerate all of the
3631 addresses that are associated
3635 typedef struct
<a href='#http_addrlist_s'
>http_addrlist_s
</a> / http_addrlist_t;
3638 <h3 class='title'
><a name='http_auth_t'
>http_auth_t
</a></h3>
3639 <h4>Description
</h4>
3640 <p>HTTP authentication types
3643 typedef enum
<a href='#http_auth_e'
>http_auth_e
</a> http_auth_t;
3646 <h3 class='title'
><a name='http_encoding_t'
>http_encoding_t
</a></h3>
3647 <h4>Description
</h4>
3648 <p>HTTP transfer encoding values
3651 typedef enum
<a href='#http_encoding_e'
>http_encoding_e
</a> http_encoding_t;
3654 <h3 class='title'
><a name='http_encryption_t'
>http_encryption_t
</a></h3>
3655 <h4>Description
</h4>
3656 <p>HTTP encryption values
3659 typedef enum
<a href='#http_encryption_e'
>http_encryption_e
</a> http_encryption_t;
3662 <h3 class='title'
><a name='http_t'
>http_t
</a></h3>
3663 <h4>Description
</h4>
3664 <p>HTTP connection type
3667 typedef struct _http_s http_t;
3670 <h3 class='title'
><a name='ipp_attribute_t'
>ipp_attribute_t
</a></h3>
3671 <h4>Description
</h4>
3675 typedef struct
<a href='#ipp_attribute_s'
>ipp_attribute_s
</a> ipp_attribute_t;
3678 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='ipp_iocb_t'
>ipp_iocb_t
</a></h3>
3679 <h4>Description
</h4>
3680 <p>IPP IO Callback Function
3683 typedef
<a href='#ssize_t'
>ssize_t
</a> (*ipp_iocb_t)(void *,
<a href='#ipp_uchar_t'
>ipp_uchar_t
</a> *, size_t);
3686 <h3 class='title'
><a name='ipp_request_t'
>ipp_request_t
</a></h3>
3687 <h4>Description
</h4>
3691 typedef union
<a href='#ipp_request_u'
>ipp_request_u
</a> ipp_request_t;
3694 <h3 class='title'
><a name='ipp_t'
>ipp_t
</a></h3>
3695 <h4>Description
</h4>
3699 typedef struct
<a href='#ipp_s'
>ipp_s
</a> ipp_t;
3702 <h3 class='title'
><a name='ipp_uchar_t'
>ipp_uchar_t
</a></h3>
3703 <h4>Description
</h4>
3704 <p>IPP status codes...
3707 typedef typedef unsigned char ipp_uchar_t;
3710 <h3 class='title'
><a name='ipp_value_t'
>ipp_value_t
</a></h3>
3711 <h4>Description
</h4>
3712 <p>New in CUPS
1.1.19
3715 typedef union
<a href='#ipp_value_u'
>ipp_value_u
</a> ipp_value_t;
3718 <h2 class='title'
><a name='UNIONS'
>Unions
</a></h2>
3720 <li><a href='#ipp_request_u'
><tt>ipp_request_u
</tt></a> </li>
3721 <li><a href='#ipp_value_u'
><tt>ipp_value_u
</tt></a> </li>
3724 <h3 class='title'
><a name='ipp_request_u'
>ipp_request_u
</a></h3>
3725 <h4>Description
</h4>
3729 union ipp_request_u
<br>
3733 <div class='table'
><table align='center' border='
1' width='
80%' summary='Members'
>
3734 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3736 </tbody></table></div>
3738 <h3 class='title'
><a name='ipp_value_u'
>ipp_value_u
</a></h3>
3739 <h4>Description
</h4>
3740 <p>New in CUPS
1.1.19
3743 union ipp_value_u
<br>
3745 char boolean;
<br>
3746 <a href='#ipp_t'
>ipp_t
</a> * collection;
<br>
3747 <a href='#ipp_uchar_t'
>ipp_uchar_t
</a> date[
11];
<br>
3748 int integer;
<br>
3751 <div class='table'
><table align='center' border='
1' width='
80%' summary='Members'
>
3752 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3754 <tr><td><tt>boolean
</tt> </td><td>Boolean value
3756 <tr><td><tt>collection
</tt> </td><td>Collection value
3758 <tr><td><tt>date[
11]
</tt> </td><td>Date/time value
3760 <tr><td><tt>integer
</tt> </td><td>Integer/enumerated value
3762 </tbody></table></div>