1 <!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
3 <!-- SECTION: Programming -->
5 <title>HTTP and IPP APIs
</title>
6 <meta name='keywords' content='Programming'
>
7 <meta name='creator' content='Mini-XML v2.3'
>
8 <style type='text/css'
><!--
9 h1, h2, h3, p { font-family: sans-serif; text-align: justify; }
10 tt, pre a:link, pre a:visited, tt a:link, tt a:visited { font-weight: bold; color: #7f0000; }
11 pre { font-weight: bold; color: #7f0000; margin-left: 2em; }
12 span.info { background: #000000; border: solid thin #000000; color: #ffffff; font-size: 80%; font-style: italic; font-weight: bold; white-space: nowrap; }
13 h3 span.info { float: right; font-size: 100%; }
14 h1.title, h2.title, h3.title { border-bottom: solid 2px #000000; }
21 HTTP and IPP API introduction for the Common UNIX Printing System (CUPS).
23 Copyright 1997-2006 by Easy Software Products.
25 These coded instructions, statements, and computer programs are the
26 property of Easy Software Products and are protected by Federal
27 copyright law. Distribution and use rights are outlined in the file
28 "LICENSE.txt" which should have been included with this file. If this
29 file is missing or damaged please contact Easy Software Products
32 Attn: CUPS Licensing Information
33 Easy Software Products
34 44141 Airport View Drive, Suite 204
35 Hollywood, Maryland 20636 USA
38 EMail: cups-info@cups.org
39 WWW: http://www.cups.org
42 <h2 class='title'
>Introduction
</h2>
44 <p>The CUPS HTTP and IPP APIs provide low-level access to the
45 HTTP and IPP protocols and CUPS scheduler. They are typically
46 used by monitoring and administration programs to perform
47 specific functions not supported by the high-level CUPS API
50 <h2 class='title'
>General Usage
</h2>
52 <p>The
<var><cups/cups.h
></var> header file must be included to
53 use the HTTP and IPP functions.
</p>
55 <p>Programs using these functions must be linked to the CUPS
56 library:
<var>libcups.a
</var>,
<var>libcups.so
.2</var>,
57 <var>libcups
.2.dylib
</var>,
<var>libcups_s.a
</var>, or
58 <var>libcups2.lib
</var> depending on the platform. The following
59 command compiles
<var>myprogram.c
</var> using GCC and the CUPS
63 <kbd>gcc -o myprogram myprogram.c -lcups
</kbd>
66 <h2 class='title'
>Compatibility
</h2>
68 <p>Unless otherwise specified, the HTTP and IPP API functions
69 require CUPS
1.1 or higher.
</p>
70 <h2 class='title'
>Contents
</h2>
72 <li><a href='#ENUMERATIONS'
>Enumerations
</a></li>
73 <li><a href='#FUNCTIONS'
>Functions
</a></li>
74 <li><a href='#STRUCTURES'
>Structures
</a></li>
75 <li><a href='#TYPES'
>Types
</a></li>
76 <li><a href='#UNIONS'
>Unions
</a></li>
79 <h2 class='title'
><a name='ENUMERATIONS'
>Enumerations
</a></h2>
81 <li><a href='#http_auth_e'
><tt>http_auth_e
</tt></a> </li>
82 <li><a href='#http_encoding_e'
><tt>http_encoding_e
</tt></a> </li>
83 <li><a href='#http_encryption_e'
><tt>http_encryption_e
</tt></a> </li>
84 <li><a href='#http_field_e'
><tt>http_field_e
</tt></a> </li>
85 <li><a href='#http_keepalive_e'
><tt>http_keepalive_e
</tt></a> </li>
86 <li><a href='#http_status_e'
><tt>http_status_e
</tt></a> </li>
87 <li><a href='#ipp_res_e'
><tt>ipp_res_e
</tt></a> </li>
88 <li><a href='#ipp_status_e'
><tt>ipp_status_e
</tt></a> </li>
89 <li><a href='#ipp_tag_e'
><tt>ipp_tag_e
</tt></a> </li>
92 <h3 class='title'
><a name='http_auth_e'
>http_auth_e
</a></h3>
94 <p>HTTP authentication types
</p>
96 <div class='table'
><table align='center' border='
1' width='
80%'
>
97 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
99 <tr><td><tt>HTTP_AUTH_BASIC
</tt> </td><td>Basic authentication in use
</td></tr>
100 <tr><td><tt>HTTP_AUTH_MD5
</tt> </td><td>Digest authentication in use
</td></tr>
101 <tr><td><tt>HTTP_AUTH_MD5_INT
</tt> </td><td>Digest authentication in use for body
</td></tr>
102 <tr><td><tt>HTTP_AUTH_MD5_SESS
</tt> </td><td>MD5-session authentication in use
</td></tr>
103 <tr><td><tt>HTTP_AUTH_MD5_SESS_INT
</tt> </td><td>MD5-session authentication in use for body
</td></tr>
104 <tr><td><tt>HTTP_AUTH_NONE
</tt> </td><td>No authentication in use
</td></tr>
105 </tbody></table></div>
107 <h3 class='title'
><a name='http_encoding_e'
>http_encoding_e
</a></h3>
109 <p>HTTP transfer encoding values
</p>
111 <div class='table'
><table align='center' border='
1' width='
80%'
>
112 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
114 <tr><td><tt>HTTP_ENCODE_CHUNKED
</tt> </td><td>Data is chunked
</td></tr>
115 <tr><td><tt>HTTP_ENCODE_LENGTH
</tt> </td><td>Data is sent with Content-Length
</td></tr>
116 </tbody></table></div>
118 <h3 class='title'
><a name='http_encryption_e'
>http_encryption_e
</a></h3>
120 <p>HTTP encryption values
</p>
122 <div class='table'
><table align='center' border='
1' width='
80%'
>
123 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
125 <tr><td><tt>HTTP_ENCRYPT_ALWAYS
</tt> </td><td>Always encrypt (SSL)
</td></tr>
126 <tr><td><tt>HTTP_ENCRYPT_IF_REQUESTED
</tt> </td><td>Encrypt if requested (TLS upgrade)
</td></tr>
127 <tr><td><tt>HTTP_ENCRYPT_NEVER
</tt> </td><td>Never encrypt
</td></tr>
128 <tr><td><tt>HTTP_ENCRYPT_REQUIRED
</tt> </td><td>Encryption is required (TLS upgrade)
</td></tr>
129 </tbody></table></div>
131 <h3 class='title'
><a name='http_field_e'
>http_field_e
</a></h3>
133 <p>HTTP field names
</p>
135 <div class='table'
><table align='center' border='
1' width='
80%'
>
136 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
138 <tr><td><tt>HTTP_FIELD_ACCEPT_LANGUAGE
</tt> </td><td>Accept-Language field
</td></tr>
139 <tr><td><tt>HTTP_FIELD_ACCEPT_RANGES
</tt> </td><td>Accept-Ranges field
</td></tr>
140 <tr><td><tt>HTTP_FIELD_AUTHORIZATION
</tt> </td><td>Authorization field
</td></tr>
141 <tr><td><tt>HTTP_FIELD_CONNECTION
</tt> </td><td>Connection field
</td></tr>
142 <tr><td><tt>HTTP_FIELD_CONTENT_ENCODING
</tt> </td><td>Content-Encoding field
</td></tr>
143 <tr><td><tt>HTTP_FIELD_CONTENT_LANGUAGE
</tt> </td><td>Content-Language field
</td></tr>
144 <tr><td><tt>HTTP_FIELD_CONTENT_LENGTH
</tt> </td><td>Content-Length field
</td></tr>
145 <tr><td><tt>HTTP_FIELD_CONTENT_LOCATION
</tt> </td><td>Content-Location field
</td></tr>
146 <tr><td><tt>HTTP_FIELD_CONTENT_MD5
</tt> </td><td>Content-MD5 field
</td></tr>
147 <tr><td><tt>HTTP_FIELD_CONTENT_RANGE
</tt> </td><td>Content-Range field
</td></tr>
148 <tr><td><tt>HTTP_FIELD_CONTENT_TYPE
</tt> </td><td>Content-Type field
</td></tr>
149 <tr><td><tt>HTTP_FIELD_CONTENT_VERSION
</tt> </td><td>Content-Version field
</td></tr>
150 <tr><td><tt>HTTP_FIELD_DATE
</tt> </td><td>Date field
</td></tr>
151 <tr><td><tt>HTTP_FIELD_HOST
</tt> </td><td>Host field
</td></tr>
152 <tr><td><tt>HTTP_FIELD_IF_MODIFIED_SINCE
</tt> </td><td>If-Modified-Since field
</td></tr>
153 <tr><td><tt>HTTP_FIELD_IF_UNMODIFIED_SINCE
</tt> </td><td>If-Unmodified-Since field
</td></tr>
154 <tr><td><tt>HTTP_FIELD_KEEP_ALIVE
</tt> </td><td>Keep-Alive field
</td></tr>
155 <tr><td><tt>HTTP_FIELD_LAST_MODIFIED
</tt> </td><td>Last-Modified field
</td></tr>
156 <tr><td><tt>HTTP_FIELD_LINK
</tt> </td><td>Link field
</td></tr>
157 <tr><td><tt>HTTP_FIELD_LOCATION
</tt> </td><td>Location field
</td></tr>
158 <tr><td><tt>HTTP_FIELD_MAX
</tt> </td><td>Maximum field index
</td></tr>
159 <tr><td><tt>HTTP_FIELD_RANGE
</tt> </td><td>Range field
</td></tr>
160 <tr><td><tt>HTTP_FIELD_REFERER
</tt> </td><td>Referer field
</td></tr>
161 <tr><td><tt>HTTP_FIELD_RETRY_AFTER
</tt> </td><td>Retry-After field
</td></tr>
162 <tr><td><tt>HTTP_FIELD_TRANSFER_ENCODING
</tt> </td><td>Transfer-Encoding field
</td></tr>
163 <tr><td><tt>HTTP_FIELD_UNKNOWN
</tt> </td><td>Unknown field
</td></tr>
164 <tr><td><tt>HTTP_FIELD_UPGRADE
</tt> </td><td>Upgrade field
</td></tr>
165 <tr><td><tt>HTTP_FIELD_USER_AGENT
</tt> </td><td>User-Agent field
</td></tr>
166 <tr><td><tt>HTTP_FIELD_WWW_AUTHENTICATE
</tt> </td><td>WWW-Authenticate field
</td></tr>
167 </tbody></table></div>
169 <h3 class='title'
><a name='http_keepalive_e'
>http_keepalive_e
</a></h3>
171 <p>Types and structures...
</p>
173 <div class='table'
><table align='center' border='
1' width='
80%'
>
174 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
176 <tr><td><tt>HTTP_KEEPALIVE_OFF
</tt> </td><td>No keep alive support
</td></tr>
177 <tr><td><tt>HTTP_KEEPALIVE_ON
</tt> </td><td>Use keep alive
</td></tr>
178 </tbody></table></div>
180 <h3 class='title'
><a name='http_status_e'
>http_status_e
</a></h3>
182 <p>HTTP status codes
</p>
184 <div class='table'
><table align='center' border='
1' width='
80%'
>
185 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
187 <tr><td><tt>HTTP_ACCEPTED
</tt> </td><td>DELETE command was successful
</td></tr>
188 <tr><td><tt>HTTP_BAD_GATEWAY
</tt> </td><td>Bad gateway
</td></tr>
189 <tr><td><tt>HTTP_BAD_REQUEST
</tt> </td><td>Bad request
</td></tr>
190 <tr><td><tt>HTTP_CONFLICT
</tt> </td><td>Request is self-conflicting
</td></tr>
191 <tr><td><tt>HTTP_CONTINUE
</tt> </td><td>Everything OK, keep going...
</td></tr>
192 <tr><td><tt>HTTP_CREATED
</tt> </td><td>PUT command was successful
</td></tr>
193 <tr><td><tt>HTTP_ERROR
</tt> </td><td>An error response from httpXxxx()
</td></tr>
194 <tr><td><tt>HTTP_FORBIDDEN
</tt> </td><td>Forbidden to access this URI
</td></tr>
195 <tr><td><tt>HTTP_GATEWAY_TIMEOUT
</tt> </td><td>Gateway connection timed out
</td></tr>
196 <tr><td><tt>HTTP_GONE
</tt> </td><td>Server has gone away
</td></tr>
197 <tr><td><tt>HTTP_LENGTH_REQUIRED
</tt> </td><td>A content length or encoding is required
</td></tr>
198 <tr><td><tt>HTTP_METHOD_NOT_ALLOWED
</tt> </td><td>Method is not allowed
</td></tr>
199 <tr><td><tt>HTTP_MOVED_PERMANENTLY
</tt> </td><td>Document has moved permanently
</td></tr>
200 <tr><td><tt>HTTP_MOVED_TEMPORARILY
</tt> </td><td>Document has moved temporarily
</td></tr>
201 <tr><td><tt>HTTP_MULTIPLE_CHOICES
</tt> </td><td>Multiple files match request
</td></tr>
202 <tr><td><tt>HTTP_NOT_ACCEPTABLE
</tt> </td><td>Not Acceptable
</td></tr>
203 <tr><td><tt>HTTP_NOT_AUTHORITATIVE
</tt> </td><td>Information isn't authoritative
</td></tr>
204 <tr><td><tt>HTTP_NOT_FOUND
</tt> </td><td>URI was not found
</td></tr>
205 <tr><td><tt>HTTP_NOT_IMPLEMENTED
</tt> </td><td>Feature not implemented
</td></tr>
206 <tr><td><tt>HTTP_NOT_MODIFIED
</tt> </td><td>File not modified
</td></tr>
207 <tr><td><tt>HTTP_NOT_SUPPORTED
</tt> </td><td>HTTP version not supported
</td></tr>
208 <tr><td><tt>HTTP_NO_CONTENT
</tt> </td><td>Successful command, no new data
</td></tr>
209 <tr><td><tt>HTTP_OK
</tt> </td><td>OPTIONS/GET/HEAD/POST/TRACE command was successful
</td></tr>
210 <tr><td><tt>HTTP_PARTIAL_CONTENT
</tt> </td><td>Only a partial file was recieved/sent
</td></tr>
211 <tr><td><tt>HTTP_PAYMENT_REQUIRED
</tt> </td><td>Payment required
</td></tr>
212 <tr><td><tt>HTTP_PRECONDITION
</tt> </td><td>Precondition failed
</td></tr>
213 <tr><td><tt>HTTP_PROXY_AUTHENTICATION
</tt> </td><td>Proxy Authentication is Required
</td></tr>
214 <tr><td><tt>HTTP_REQUEST_TIMEOUT
</tt> </td><td>Request timed out
</td></tr>
215 <tr><td><tt>HTTP_REQUEST_TOO_LARGE
</tt> </td><td>Request entity too large
</td></tr>
216 <tr><td><tt>HTTP_RESET_CONTENT
</tt> </td><td>Content was reset/recreated
</td></tr>
217 <tr><td><tt>HTTP_SEE_OTHER
</tt> </td><td>See this other link...
</td></tr>
218 <tr><td><tt>HTTP_SERVER_ERROR
</tt> </td><td>Internal server error
</td></tr>
219 <tr><td><tt>HTTP_SERVICE_UNAVAILABLE
</tt> </td><td>Service is unavailable
</td></tr>
220 <tr><td><tt>HTTP_SWITCHING_PROTOCOLS
</tt> </td><td>HTTP upgrade to TLS/SSL
</td></tr>
221 <tr><td><tt>HTTP_UNAUTHORIZED
</tt> </td><td>Unauthorized to access host
</td></tr>
222 <tr><td><tt>HTTP_UNSUPPORTED_MEDIATYPE
</tt> </td><td>The requested media type is unsupported
</td></tr>
223 <tr><td><tt>HTTP_UPGRADE_REQUIRED
</tt> </td><td>Upgrade to SSL/TLS required
</td></tr>
224 <tr><td><tt>HTTP_URI_TOO_LONG
</tt> </td><td>URI too long
</td></tr>
225 <tr><td><tt>HTTP_USE_PROXY
</tt> </td><td>Must use a proxy to access this URI
</td></tr>
226 </tbody></table></div>
228 <h3 class='title'
><a name='ipp_res_e'
>ipp_res_e
</a></h3>
230 <p>Types and structures...
</p>
232 <div class='table'
><table align='center' border='
1' width='
80%'
>
233 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
235 <tr><td><tt>IPP_RES_PER_CM
</tt> </td><td>Pixels per centimeter
</td></tr>
236 <tr><td><tt>IPP_RES_PER_INCH
</tt> </td><td>Pixels per inch
</td></tr>
237 </tbody></table></div>
239 <h3 class='title'
><a name='ipp_status_e'
>ipp_status_e
</a></h3>
241 <p>IPP status codes...
</p>
243 <div class='table'
><table align='center' border='
1' width='
80%'
>
244 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
246 <tr><td><tt>IPP_ATTRIBUTES
</tt> </td><td>client-error-attributes-or-values-not-supported
</td></tr>
247 <tr><td><tt>IPP_ATTRIBUTES_NOT_SETTABLE
</tt> </td><td>client-error-attributes-not-settable
</td></tr>
248 <tr><td><tt>IPP_BAD_REQUEST
</tt> </td><td>client-error-bad-request
</td></tr>
249 <tr><td><tt>IPP_CHARSET
</tt> </td><td>client-error-charset-not-supported
</td></tr>
250 <tr><td><tt>IPP_COMPRESSION_ERROR
</tt> </td><td>client-error-compression-error
</td></tr>
251 <tr><td><tt>IPP_COMPRESSION_NOT_SUPPORTED
</tt> </td><td>client-error-compression-not-supported
</td></tr>
252 <tr><td><tt>IPP_CONFLICT
</tt> </td><td>client-error-conflicting-attributes
</td></tr>
253 <tr><td><tt>IPP_DEVICE_ERROR
</tt> </td><td>server-error-device-error
</td></tr>
254 <tr><td><tt>IPP_DOCUMENT_ACCESS_ERROR
</tt> </td><td>client-error-document-access-error
</td></tr>
255 <tr><td><tt>IPP_DOCUMENT_FORMAT
</tt> </td><td>client-error-document-format-not-supported
</td></tr>
256 <tr><td><tt>IPP_DOCUMENT_FORMAT_ERROR
</tt> </td><td>client-error-document-format-error
</td></tr>
257 <tr><td><tt>IPP_ERROR_JOB_CANCELLED
</tt> </td><td>server-error-job-canceled
</td></tr>
258 <tr><td><tt>IPP_FORBIDDEN
</tt> </td><td>client-error-forbidden
</td></tr>
259 <tr><td><tt>IPP_GONE
</tt> </td><td>client-error-gone
</td></tr>
260 <tr><td><tt>IPP_IGNORED_ALL_NOTIFICATIONS
</tt> </td><td>client-error-ignored-all-notifications
</td></tr>
261 <tr><td><tt>IPP_IGNORED_ALL_SUBSCRIPTIONS
</tt> </td><td>client-error-ignored-all-subscriptions
</td></tr>
262 <tr><td><tt>IPP_INTERNAL_ERROR
</tt> </td><td>server-error-internal-error
</td></tr>
263 <tr><td><tt>IPP_MULTIPLE_JOBS_NOT_SUPPORTED
</tt> </td><td>server-error-multiple-document-jobs-not-supported
</td></tr>
264 <tr><td><tt>IPP_NOT_ACCEPTING
</tt> </td><td>server-error-not-accepting-jobs
</td></tr>
265 <tr><td><tt>IPP_NOT_AUTHENTICATED
</tt> </td><td>client-error-not-authenticated
</td></tr>
266 <tr><td><tt>IPP_NOT_AUTHORIZED
</tt> </td><td>client-error-not-authorized
</td></tr>
267 <tr><td><tt>IPP_NOT_FOUND
</tt> </td><td>client-error-not-found
</td></tr>
268 <tr><td><tt>IPP_NOT_POSSIBLE
</tt> </td><td>client-error-not-possible
</td></tr>
269 <tr><td><tt>IPP_OK
</tt> </td><td>successful-ok
</td></tr>
270 <tr><td><tt>IPP_OK_BUT_CANCEL_SUBSCRIPTION
</tt> </td><td>successful-ok-but-cancel-subscription
</td></tr>
271 <tr><td><tt>IPP_OK_CONFLICT
</tt> </td><td>successful-ok-conflicting-attributes
</td></tr>
272 <tr><td><tt>IPP_OK_EVENTS_COMPLETE
</tt> </td><td>successful-ok-events-complete
</td></tr>
273 <tr><td><tt>IPP_OK_IGNORED_NOTIFICATIONS
</tt> </td><td>successful-ok-ignored-notifications
</td></tr>
274 <tr><td><tt>IPP_OK_IGNORED_SUBSCRIPTIONS
</tt> </td><td>successful-ok-ignored-subscriptions
</td></tr>
275 <tr><td><tt>IPP_OK_SUBST
</tt> </td><td>successful-ok-ignored-or-substituted-attributes
</td></tr>
276 <tr><td><tt>IPP_OK_TOO_MANY_EVENTS
</tt> </td><td>successful-ok-too-many-events
</td></tr>
277 <tr><td><tt>IPP_OPERATION_NOT_SUPPORTED
</tt> </td><td>server-error-operation-not-supported
</td></tr>
278 <tr><td><tt>IPP_PRINTER_BUSY
</tt> </td><td>server-error-busy
</td></tr>
279 <tr><td><tt>IPP_PRINTER_IS_DEACTIVATED
</tt> </td><td>server-error-printer-is-deactivated
</td></tr>
280 <tr><td><tt>IPP_PRINT_SUPPORT_FILE_NOT_FOUND
</tt> </td><td>client-error-print-support-file-not-found
</td></tr>
281 <tr><td><tt>IPP_REDIRECTION_OTHER_SITE
</tt> </td><td></td></tr>
282 <tr><td><tt>IPP_REQUEST_ENTITY
</tt> </td><td>client-error-request-entity-too-large
</td></tr>
283 <tr><td><tt>IPP_REQUEST_VALUE
</tt> </td><td>client-error-request-value-too-long
</td></tr>
284 <tr><td><tt>IPP_SERVICE_UNAVAILABLE
</tt> </td><td>server-error-service-unavailable
</td></tr>
285 <tr><td><tt>IPP_TEMPORARY_ERROR
</tt> </td><td>server-error-temporary-error
</td></tr>
286 <tr><td><tt>IPP_TIMEOUT
</tt> </td><td>client-error-timeout
</td></tr>
287 <tr><td><tt>IPP_TOO_MANY_SUBSCRIPTIONS
</tt> </td><td>client-error-too-many-subscriptions
</td></tr>
288 <tr><td><tt>IPP_URI_SCHEME
</tt> </td><td>client-error-uri-scheme-not-supported
</td></tr>
289 <tr><td><tt>IPP_VERSION_NOT_SUPPORTED
</tt> </td><td>server-error-version-not-supported
</td></tr>
290 </tbody></table></div>
292 <h3 class='title'
><a name='ipp_tag_e'
>ipp_tag_e
</a></h3>
294 <p>Format tags for attributes...
</p>
296 <div class='table'
><table align='center' border='
1' width='
80%'
>
297 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
299 <tr><td><tt>IPP_TAG_ADMINDEFINE
</tt> </td><td>Admin-defined value
</td></tr>
300 <tr><td><tt>IPP_TAG_BEGIN_COLLECTION
</tt> </td><td>Beginning of collection value
</td></tr>
301 <tr><td><tt>IPP_TAG_BOOLEAN
</tt> </td><td>Boolean value
</td></tr>
302 <tr><td><tt>IPP_TAG_CHARSET
</tt> </td><td>Character set value
</td></tr>
303 <tr><td><tt>IPP_TAG_COPY
</tt> </td><td>Bitflag for copied attribute values
</td></tr>
304 <tr><td><tt>IPP_TAG_DATE
</tt> </td><td>Date/time value
</td></tr>
305 <tr><td><tt>IPP_TAG_DEFAULT
</tt> </td><td>Default value
</td></tr>
306 <tr><td><tt>IPP_TAG_DELETEATTR
</tt> </td><td>Delete-attribute value
</td></tr>
307 <tr><td><tt>IPP_TAG_END
</tt> </td><td>End-of-attributes
</td></tr>
308 <tr><td><tt>IPP_TAG_END_COLLECTION
</tt> </td><td>End of collection value
</td></tr>
309 <tr><td><tt>IPP_TAG_ENUM
</tt> </td><td>Enumeration value
</td></tr>
310 <tr><td><tt>IPP_TAG_EVENT_NOTIFICATION
</tt> </td><td>Event group
</td></tr>
311 <tr><td><tt>IPP_TAG_INTEGER
</tt> </td><td>Integer value
</td></tr>
312 <tr><td><tt>IPP_TAG_JOB
</tt> </td><td>Job group
</td></tr>
313 <tr><td><tt>IPP_TAG_KEYWORD
</tt> </td><td>Keyword value
</td></tr>
314 <tr><td><tt>IPP_TAG_LANGUAGE
</tt> </td><td>Language value
</td></tr>
315 <tr><td><tt>IPP_TAG_MASK
</tt> </td><td>Mask for copied attribute values
</td></tr>
316 <tr><td><tt>IPP_TAG_MEMBERNAME
</tt> </td><td>Collection member name value
</td></tr>
317 <tr><td><tt>IPP_TAG_MIMETYPE
</tt> </td><td>MIME media type value
</td></tr>
318 <tr><td><tt>IPP_TAG_NAME
</tt> </td><td>Name value
</td></tr>
319 <tr><td><tt>IPP_TAG_NAMELANG
</tt> </td><td>Name-with-language value
</td></tr>
320 <tr><td><tt>IPP_TAG_NOTSETTABLE
</tt> </td><td>Not-settable value
</td></tr>
321 <tr><td><tt>IPP_TAG_NOVALUE
</tt> </td><td>No-value value
</td></tr>
322 <tr><td><tt>IPP_TAG_OPERATION
</tt> </td><td>Operation group
</td></tr>
323 <tr><td><tt>IPP_TAG_PRINTER
</tt> </td><td>Printer group
</td></tr>
324 <tr><td><tt>IPP_TAG_RANGE
</tt> </td><td>Range value
</td></tr>
325 <tr><td><tt>IPP_TAG_RESOLUTION
</tt> </td><td>Resolution value
</td></tr>
326 <tr><td><tt>IPP_TAG_STRING
</tt> </td><td>Octet string value
</td></tr>
327 <tr><td><tt>IPP_TAG_SUBSCRIPTION
</tt> </td><td>Subscription group
</td></tr>
328 <tr><td><tt>IPP_TAG_TEXT
</tt> </td><td>Text value
</td></tr>
329 <tr><td><tt>IPP_TAG_TEXTLANG
</tt> </td><td>Text-with-language value
</td></tr>
330 <tr><td><tt>IPP_TAG_UNKNOWN
</tt> </td><td>Unknown value
</td></tr>
331 <tr><td><tt>IPP_TAG_UNSUPPORTED_GROUP
</tt> </td><td>Unsupported attributes group
</td></tr>
332 <tr><td><tt>IPP_TAG_UNSUPPORTED_VALUE
</tt> </td><td>Unsupported value
</td></tr>
333 <tr><td><tt>IPP_TAG_URI
</tt> </td><td>URI value
</td></tr>
334 <tr><td><tt>IPP_TAG_URISCHEME
</tt> </td><td>URI scheme value
</td></tr>
335 <tr><td><tt>IPP_TAG_ZERO
</tt> </td><td>Zero tag - used for separators
</td></tr>
336 </tbody></table></div>
338 <h2 class='title'
><a name='FUNCTIONS'
>Functions
</a></h2>
340 <li><a href='#cupsDoAuthentication'
><tt>cupsDoAuthentication()
</tt></a> <span class='info'
> CUPS
1.1.20 </span></li>
341 <li><a href='#cupsDoFileRequest'
><tt>cupsDoFileRequest()
</tt></a> </li>
342 <li><a href='#cupsDoRequest'
><tt>cupsDoRequest()
</tt></a> </li>
343 <li><a href='#cupsEncodeOptions'
><tt>cupsEncodeOptions()
</tt></a> </li>
344 <li><a href='#cupsEncodeOptions2'
><tt>cupsEncodeOptions2()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
345 <li><a href='#httpAddrAny'
><tt>httpAddrAny()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
346 <li><a href='#httpAddrEqual'
><tt>httpAddrEqual()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
347 <li><a href='#httpAddrLength'
><tt>httpAddrLength()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
348 <li><a href='#httpAddrLocalhost'
><tt>httpAddrLocalhost()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
349 <li><a href='#httpAddrLookup'
><tt>httpAddrLookup()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
350 <li><a href='#httpAddrString'
><tt>httpAddrString()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
351 <li><a href='#httpAssembleURI'
><tt>httpAssembleURI()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
352 <li><a href='#httpAssembleURIf'
><tt>httpAssembleURIf()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
353 <li><a href='#httpBlocking'
><tt>httpBlocking()
</tt></a> </li>
354 <li><a href='#httpCheck'
><tt>httpCheck()
</tt></a> </li>
355 <li><a href='#httpClearCookie'
><tt>httpClearCookie()
</tt></a> <span class='info'
> CUPS
1.1.19 </span></li>
356 <li><a href='#httpClearFields'
><tt>httpClearFields()
</tt></a> </li>
357 <li><a href='#httpClose'
><tt>httpClose()
</tt></a> </li>
358 <li><a href='#httpConnect'
><tt>httpConnect()
</tt></a> </li>
359 <li><a href='#httpConnectEncrypt'
><tt>httpConnectEncrypt()
</tt></a> </li>
360 <li><a href='#httpDecode64'
><tt>httpDecode64()
</tt></a> <span class='info'
> DEPRECATED
</span></li>
361 <li><a href='#httpDecode64_2'
><tt>httpDecode64_2()
</tt></a> <span class='info'
> CUPS
1.1.21 </span></li>
362 <li><a href='#httpDelete'
><tt>httpDelete()
</tt></a> </li>
363 <li><a href='#httpEncode64'
><tt>httpEncode64()
</tt></a> <span class='info'
> DEPRECATED
</span></li>
364 <li><a href='#httpEncode64_2'
><tt>httpEncode64_2()
</tt></a> <span class='info'
> CUPS
1.1.21 </span></li>
365 <li><a href='#httpEncryption'
><tt>httpEncryption()
</tt></a> </li>
366 <li><a href='#httpError'
><tt>httpError()
</tt></a> </li>
367 <li><a href='#httpFlush'
><tt>httpFlush()
</tt></a> </li>
368 <li><a href='#httpFlushWrite'
><tt>httpFlushWrite()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
369 <li><a href='#httpGet'
><tt>httpGet()
</tt></a> </li>
370 <li><a href='#httpGetBlocking'
><tt>httpGetBlocking()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
371 <li><a href='#httpGetCookie'
><tt>httpGetCookie()
</tt></a> </li>
372 <li><a href='#httpGetDateString'
><tt>httpGetDateString()
</tt></a> <span class='info'
> DEPRECATED
</span></li>
373 <li><a href='#httpGetDateString2'
><tt>httpGetDateString2()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
374 <li><a href='#httpGetDateTime'
><tt>httpGetDateTime()
</tt></a> </li>
375 <li><a href='#httpGetFd'
><tt>httpGetFd()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
376 <li><a href='#httpGetField'
><tt>httpGetField()
</tt></a> </li>
377 <li><a href='#httpGetHostByName'
><tt>httpGetHostByName()
</tt></a> <span class='info'
> DEPRECATED
</span></li>
378 <li><a href='#httpGetHostname'
><tt>httpGetHostname()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
379 <li><a href='#httpGetLength'
><tt>httpGetLength()
</tt></a> <span class='info'
> DEPRECATED
</span></li>
380 <li><a href='#httpGetLength2'
><tt>httpGetLength2()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
381 <li><a href='#httpGetStatus'
><tt>httpGetStatus()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
382 <li><a href='#httpGetSubField'
><tt>httpGetSubField()
</tt></a> <span class='info'
> DEPRECATED
</span></li>
383 <li><a href='#httpGetSubField2'
><tt>httpGetSubField2()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
384 <li><a href='#httpGets'
><tt>httpGets()
</tt></a> </li>
385 <li><a href='#httpHead'
><tt>httpHead()
</tt></a> </li>
386 <li><a href='#httpInitialize'
><tt>httpInitialize()
</tt></a> </li>
387 <li><a href='#httpMD5'
><tt>httpMD5()
</tt></a> </li>
388 <li><a href='#httpMD5Final'
><tt>httpMD5Final()
</tt></a> </li>
389 <li><a href='#httpMD5String'
><tt>httpMD5String()
</tt></a> </li>
390 <li><a href='#httpOptions'
><tt>httpOptions()
</tt></a> </li>
391 <li><a href='#httpPost'
><tt>httpPost()
</tt></a> </li>
392 <li><a href='#httpPut'
><tt>httpPut()
</tt></a> </li>
393 <li><a href='#httpRead'
><tt>httpRead()
</tt></a> <span class='info'
> DEPRECATED
</span></li>
394 <li><a href='#httpRead2'
><tt>httpRead2()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
395 <li><a href='#httpReconnect'
><tt>httpReconnect()
</tt></a> </li>
396 <li><a href='#httpSeparate'
><tt>httpSeparate()
</tt></a> <span class='info'
> DEPRECATED
</span></li>
397 <li><a href='#httpSeparate2'
><tt>httpSeparate2()
</tt></a> <span class='info'
> CUPS
1.1.21 </span></li>
398 <li><a href='#httpSeparateURI'
><tt>httpSeparateURI()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
399 <li><a href='#httpSetCookie'
><tt>httpSetCookie()
</tt></a> <span class='info'
> CUPS
1.1.19 </span></li>
400 <li><a href='#httpSetField'
><tt>httpSetField()
</tt></a> </li>
401 <li><a href='#httpSetLength'
><tt>httpSetLength()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
402 <li><a href='#httpStatus'
><tt>httpStatus()
</tt></a> </li>
403 <li><a href='#httpTrace'
><tt>httpTrace()
</tt></a> </li>
404 <li><a href='#httpUpdate'
><tt>httpUpdate()
</tt></a> </li>
405 <li><a href='#httpWait'
><tt>httpWait()
</tt></a> <span class='info'
> CUPS
1.1.19 </span></li>
406 <li><a href='#httpWrite'
><tt>httpWrite()
</tt></a> <span class='info'
> DEPRECATED
</span></li>
407 <li><a href='#httpWrite2'
><tt>httpWrite2()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
408 <li><a href='#ippAddBoolean'
><tt>ippAddBoolean()
</tt></a> </li>
409 <li><a href='#ippAddBooleans'
><tt>ippAddBooleans()
</tt></a> </li>
410 <li><a href='#ippAddCollection'
><tt>ippAddCollection()
</tt></a> <span class='info'
> CUPS
1.1.19 </span></li>
411 <li><a href='#ippAddCollections'
><tt>ippAddCollections()
</tt></a> <span class='info'
> CUPS
1.1.19 </span></li>
412 <li><a href='#ippAddDate'
><tt>ippAddDate()
</tt></a> </li>
413 <li><a href='#ippAddInteger'
><tt>ippAddInteger()
</tt></a> </li>
414 <li><a href='#ippAddIntegers'
><tt>ippAddIntegers()
</tt></a> </li>
415 <li><a href='#ippAddOctetString'
><tt>ippAddOctetString()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
416 <li><a href='#ippAddRange'
><tt>ippAddRange()
</tt></a> </li>
417 <li><a href='#ippAddRanges'
><tt>ippAddRanges()
</tt></a> </li>
418 <li><a href='#ippAddResolution'
><tt>ippAddResolution()
</tt></a> </li>
419 <li><a href='#ippAddResolutions'
><tt>ippAddResolutions()
</tt></a> </li>
420 <li><a href='#ippAddSeparator'
><tt>ippAddSeparator()
</tt></a> </li>
421 <li><a href='#ippAddString'
><tt>ippAddString()
</tt></a> </li>
422 <li><a href='#ippAddStrings'
><tt>ippAddStrings()
</tt></a> </li>
423 <li><a href='#ippDateToTime'
><tt>ippDateToTime()
</tt></a> </li>
424 <li><a href='#ippDelete'
><tt>ippDelete()
</tt></a> </li>
425 <li><a href='#ippDeleteAttribute'
><tt>ippDeleteAttribute()
</tt></a> <span class='info'
> CUPS
1.1.19 </span></li>
426 <li><a href='#ippErrorString'
><tt>ippErrorString()
</tt></a> </li>
427 <li><a href='#ippErrorValue'
><tt>ippErrorValue()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
428 <li><a href='#ippFindAttribute'
><tt>ippFindAttribute()
</tt></a> </li>
429 <li><a href='#ippFindNextAttribute'
><tt>ippFindNextAttribute()
</tt></a> </li>
430 <li><a href='#ippLength'
><tt>ippLength()
</tt></a> </li>
431 <li><a href='#ippNew'
><tt>ippNew()
</tt></a> </li>
432 <li><a href='#ippNewRequest'
><tt>ippNewRequest()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
433 <li><a href='#ippOpString'
><tt>ippOpString()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
434 <li><a href='#ippOpValue'
><tt>ippOpValue()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
435 <li><a href='#ippPort'
><tt>ippPort()
</tt></a> </li>
436 <li><a href='#ippRead'
><tt>ippRead()
</tt></a> </li>
437 <li><a href='#ippReadFile'
><tt>ippReadFile()
</tt></a> <span class='info'
> CUPS
1.1.19 </span></li>
438 <li><a href='#ippReadIO'
><tt>ippReadIO()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
439 <li><a href='#ippSetPort'
><tt>ippSetPort()
</tt></a> </li>
440 <li><a href='#ippTimeToDate'
><tt>ippTimeToDate()
</tt></a> </li>
441 <li><a href='#ippWrite'
><tt>ippWrite()
</tt></a> </li>
442 <li><a href='#ippWriteFile'
><tt>ippWriteFile()
</tt></a> <span class='info'
> CUPS
1.1.19 </span></li>
443 <li><a href='#ippWriteIO'
><tt>ippWriteIO()
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
446 <h3 class='title'
><span class='info'
> CUPS
1.1.20 </span><a name='cupsDoAuthentication'
>cupsDoAuthentication()
</a></h3>
448 <p>Authenticate a request.
450 This function should be called in response to a HTTP_UNAUTHORIZED
451 status, prior to resubmitting your request.
457 cupsDoAuthentication(
458 <a href='#http_t'
>http_t
</a> * http,
460 const char * resource);
463 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
464 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
466 <tr><td><tt>http
</tt></td><td>HTTP connection to server
</td></tr>
467 <tr><td><tt>method
</tt></td><td>Request method (GET, POST, PUT)
</td></tr>
468 <tr><td><tt>resource
</tt></td><td>Resource path
</td></tr>
469 </tbody></table></div>
471 <p>0 on success, -
1 on error
</p>
473 <h3 class='title'
><a name='cupsDoFileRequest'
>cupsDoFileRequest()
</a></h3>
475 <p>Do an IPP request with a file.
477 This function sends the IPP request to the specified server, retrying
478 and authenticating as necessary. The request is freed with ippDelete()
479 after receiving a valid IPP response.
</p>
482 <a href='#ipp_t'
>ipp_t
</a> *
484 <a href='#http_t'
>http_t
</a> * http,
485 <a href='#ipp_t'
>ipp_t
</a> * request,
486 const char * resource,
487 const char * filename);
490 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
491 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
493 <tr><td><tt>http
</tt></td><td>HTTP connection to server
</td></tr>
494 <tr><td><tt>request
</tt></td><td>IPP request
</td></tr>
495 <tr><td><tt>resource
</tt></td><td>HTTP resource for POST
</td></tr>
496 <tr><td><tt>filename
</tt></td><td>File to send or NULL for none
</td></tr>
497 </tbody></table></div>
501 <h3 class='title'
><a name='cupsDoRequest'
>cupsDoRequest()
</a></h3>
503 <p>Do an IPP request.
505 This function sends the IPP request to the specified server, retrying
506 and authenticating as necessary. The request is freed with ippDelete()
507 after receiving a valid IPP response.
</p>
510 <a href='#ipp_t'
>ipp_t
</a> *
512 <a href='#http_t'
>http_t
</a> * http,
513 <a href='#ipp_t'
>ipp_t
</a> * request,
514 const char * resource);
517 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
518 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
520 <tr><td><tt>http
</tt></td><td>HTTP connection to server
</td></tr>
521 <tr><td><tt>request
</tt></td><td>IPP request
</td></tr>
522 <tr><td><tt>resource
</tt></td><td>HTTP resource for POST
</td></tr>
523 </tbody></table></div>
527 <h3 class='title'
><a name='cupsEncodeOptions'
>cupsEncodeOptions()
</a></h3>
529 <p>Encode printer options into IPP attributes.
531 This function adds operation, job, and then subscription attributes,
532 in that order. Use the cupsEncodeOptions2() function to add attributes
533 for a single group.
</p>
538 <a href='#ipp_t'
>ipp_t
</a> * ipp,
540 cups_option_t * options);
543 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
544 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
546 <tr><td><tt>ipp
</tt></td><td>Request to add to
</td></tr>
547 <tr><td><tt>num_options
</tt></td><td>Number of options
</td></tr>
548 <tr><td><tt>options
</tt></td><td>Options
</td></tr>
549 </tbody></table></div>
553 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='cupsEncodeOptions2'
>cupsEncodeOptions2()
</a></h3>
555 <p>Encode printer options into IPP attributes for a group.
557 This function only adds attributes for a single group. Call this
558 function multiple times for each group, or use cupsEncodeOptions()
559 to add the standard groups.
566 <a href='#ipp_t'
>ipp_t
</a> * ipp,
568 cups_option_t * options,
569 ipp_tag_t group_tag);
572 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
573 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
575 <tr><td><tt>ipp
</tt></td><td>Request to add to
</td></tr>
576 <tr><td><tt>num_options
</tt></td><td>Number of options
</td></tr>
577 <tr><td><tt>options
</tt></td><td>Options
</td></tr>
578 <tr><td><tt>group_tag
</tt></td><td>Group to encode
</td></tr>
579 </tbody></table></div>
583 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpAddrAny'
>httpAddrAny()
</a></h3>
585 <p>Check for the
"any
" address.
592 const
<a href='#http_addr_t'
>http_addr_t
</a> * addr);
595 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
596 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
598 <tr><td><tt>addr
</tt></td><td>Address to check
</td></tr>
599 </tbody></table></div>
601 <p>1 if
"any
",
0 otherwise
</p>
603 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpAddrEqual'
>httpAddrEqual()
</a></h3>
605 <p>Compare two addresses.
612 const
<a href='#http_addr_t'
>http_addr_t
</a> * addr1,
613 const
<a href='#http_addr_t'
>http_addr_t
</a> * addr2);
616 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
617 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
619 <tr><td><tt>addr1
</tt></td><td>First address
</td></tr>
620 <tr><td><tt>addr2
</tt></td><td>Second address
</td></tr>
621 </tbody></table></div>
623 <p>1 if equal,
0 if not
</p>
625 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpAddrLength'
>httpAddrLength()
</a></h3>
627 <p>Return the length of the address in bytes.
634 const
<a href='#http_addr_t'
>http_addr_t
</a> * addr);
637 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
638 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
640 <tr><td><tt>addr
</tt></td><td>Address
</td></tr>
641 </tbody></table></div>
643 <p>Length in bytes
</p>
645 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpAddrLocalhost'
>httpAddrLocalhost()
</a></h3>
647 <p>Check for the local loopback address.
654 const
<a href='#http_addr_t'
>http_addr_t
</a> * addr);
657 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
658 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
660 <tr><td><tt>addr
</tt></td><td>Address to check
</td></tr>
661 </tbody></table></div>
663 <p>1 if local host,
0 otherwise
</p>
665 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpAddrLookup'
>httpAddrLookup()
</a></h3>
667 <p>Lookup the hostname associated with the address.
674 const
<a href='#http_addr_t'
>http_addr_t
</a> * addr,
679 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
680 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
682 <tr><td><tt>addr
</tt></td><td>Address to lookup
</td></tr>
683 <tr><td><tt>name
</tt></td><td>Host name buffer
</td></tr>
684 <tr><td><tt>namelen
</tt></td><td>Size of name buffer
</td></tr>
685 </tbody></table></div>
689 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpAddrString'
>httpAddrString()
</a></h3>
691 <p>Convert an address to a numeric string.
698 const
<a href='#http_addr_t'
>http_addr_t
</a> * addr,
703 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
704 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
706 <tr><td><tt>addr
</tt></td><td>Address to convert
</td></tr>
707 <tr><td><tt>s
</tt></td><td>String buffer
</td></tr>
708 <tr><td><tt>slen
</tt></td><td>Length of string
</td></tr>
709 </tbody></table></div>
711 <p>Numeric address string
</p>
713 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpAssembleURI'
>httpAssembleURI()
</a></h3>
715 <p>Assemble a uniform resource identifier from its
718 This function escapes reserved characters in the URI depending on the
719 value of the
"encoding
" argument. You should use this function in
720 place of traditional string functions whenever you need to create a
728 http_uri_coding_t encoding,
732 const char * username,
735 const char * resource);
738 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
739 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
741 <tr><td><tt>encoding
</tt></td><td>Encoding flags
</td></tr>
742 <tr><td><tt>uri
</tt></td><td>URI buffer
</td></tr>
743 <tr><td><tt>urilen
</tt></td><td>Size of URI buffer
</td></tr>
744 <tr><td><tt>scheme
</tt></td><td>Scheme name
</td></tr>
745 <tr><td><tt>username
</tt></td><td>Username
</td></tr>
746 <tr><td><tt>host
</tt></td><td>Hostname or address
</td></tr>
747 <tr><td><tt>port
</tt></td><td>Port number
</td></tr>
748 <tr><td><tt>resource
</tt></td><td>Resource
</td></tr>
749 </tbody></table></div>
753 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpAssembleURIf'
>httpAssembleURIf()
</a></h3>
755 <p>Assemble a uniform resource identifier from its
756 components with a formatted resource.
758 This function creates a formatted version of the resource string
759 argument
"resourcef
" and escapes reserved characters in the URI
760 depending on the value of the
"encoding
" argument. You should use
761 this function in place of traditional string functions whenever
762 you need to create a URI string.
769 http_uri_coding_t encoding,
773 const char * username,
776 const char * resourcef,
780 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
781 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
783 <tr><td><tt>encoding
</tt></td><td>Encoding flags
</td></tr>
784 <tr><td><tt>uri
</tt></td><td>URI buffer
</td></tr>
785 <tr><td><tt>urilen
</tt></td><td>Size of URI buffer
</td></tr>
786 <tr><td><tt>scheme
</tt></td><td>Scheme name
</td></tr>
787 <tr><td><tt>username
</tt></td><td>Username
</td></tr>
788 <tr><td><tt>host
</tt></td><td>Hostname or address
</td></tr>
789 <tr><td><tt>port
</tt></td><td>Port number
</td></tr>
790 <tr><td><tt>resourcef
</tt></td><td>Printf-style resource
</td></tr>
791 <tr><td><tt>...
</tt></td><td>Additional arguments as needed
</td></tr>
792 </tbody></table></div>
796 <h3 class='title'
><a name='httpBlocking'
>httpBlocking()
</a></h3>
798 <p>Set blocking/non-blocking behavior on a connection.
</p>
803 <a href='#http_t'
>http_t
</a> * http,
807 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
808 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
810 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
811 <tr><td><tt>b
</tt></td><td>1 = blocking,
0 = non-blocking
</td></tr>
812 </tbody></table></div>
816 <h3 class='title'
><a name='httpCheck'
>httpCheck()
</a></h3>
818 <p>Check to see if there is a pending response from the server.
</p>
823 <a href='#http_t'
>http_t
</a> * http);
826 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
827 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
829 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
830 </tbody></table></div>
832 <p>0 = no data,
1 = data available
</p>
834 <h3 class='title'
><span class='info'
> CUPS
1.1.19 </span><a name='httpClearCookie'
>httpClearCookie()
</a></h3>
836 <p>Clear the cookie value(s).
843 <a href='#http_t'
>http_t
</a> * http);
846 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
847 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
849 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
850 </tbody></table></div>
854 <h3 class='title'
><a name='httpClearFields'
>httpClearFields()
</a></h3>
856 <p>Clear HTTP request fields.
</p>
861 <a href='#http_t'
>http_t
</a> * http);
864 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
865 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
867 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
868 </tbody></table></div>
872 <h3 class='title'
><a name='httpClose'
>httpClose()
</a></h3>
874 <p>Close an HTTP connection...
</p>
879 <a href='#http_t'
>http_t
</a> * http);
882 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
883 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
885 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
886 </tbody></table></div>
890 <h3 class='title'
><a name='httpConnect'
>httpConnect()
</a></h3>
892 <p>Connect to a HTTP server.
</p>
895 <a href='#http_t'
>http_t
</a> *
901 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
902 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
904 <tr><td><tt>host
</tt></td><td>Host to connect to
</td></tr>
905 <tr><td><tt>port
</tt></td><td>Port number
</td></tr>
906 </tbody></table></div>
908 <p>New HTTP connection
</p>
910 <h3 class='title'
><a name='httpConnectEncrypt'
>httpConnectEncrypt()
</a></h3>
912 <p>Connect to a HTTP server using encryption.
</p>
915 <a href='#http_t'
>http_t
</a> *
919 <a href='#http_encryption_t'
>http_encryption_t
</a> encryption);
922 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
923 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
925 <tr><td><tt>host
</tt></td><td>Host to connect to
</td></tr>
926 <tr><td><tt>port
</tt></td><td>Port number
</td></tr>
927 <tr><td><tt>encryption
</tt></td><td>Type of encryption to use
</td></tr>
928 </tbody></table></div>
930 <p>New HTTP connection
</p>
932 <h3 class='title'
><span class='info'
> DEPRECATED
</span><a name='httpDecode64'
>httpDecode64()
</a></h3>
934 <p>Base64-decode a string.
936 This function is deprecated. Use the httpDecode64_2() function instead
937 which provides buffer length arguments.
948 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
949 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
951 <tr><td><tt>out
</tt></td><td>String to write to
</td></tr>
952 <tr><td><tt>in
</tt></td><td>String to read from
</td></tr>
953 </tbody></table></div>
955 <p>Decoded string
</p>
957 <h3 class='title'
><span class='info'
> CUPS
1.1.21 </span><a name='httpDecode64_2'
>httpDecode64_2()
</a></h3>
959 <p>Base64-decode a string.
971 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
972 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
974 <tr><td><tt>out
</tt></td><td>String to write to
</td></tr>
975 <tr><td><tt>outlen
</tt></td><td>Size of output string
</td></tr>
976 <tr><td><tt>in
</tt></td><td>String to read from
</td></tr>
977 </tbody></table></div>
979 <p>Decoded string
</p>
981 <h3 class='title'
><a name='httpDelete'
>httpDelete()
</a></h3>
983 <p>Send a DELETE request to the server.
</p>
988 <a href='#http_t'
>http_t
</a> * http,
992 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
993 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
995 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
996 <tr><td><tt>uri
</tt></td><td>URI to delete
</td></tr>
997 </tbody></table></div>
999 <p>Status of call (
0 = success)
</p>
1001 <h3 class='title'
><span class='info'
> DEPRECATED
</span><a name='httpEncode64'
>httpEncode64()
</a></h3>
1002 <h4>Description
</h4>
1003 <p>Base64-encode a string.
1005 This function is deprecated. Use the httpEncode64_2() function instead
1006 which provides buffer length arguments.
1017 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
1018 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1020 <tr><td><tt>out
</tt></td><td>String to write to
</td></tr>
1021 <tr><td><tt>in
</tt></td><td>String to read from
</td></tr>
1022 </tbody></table></div>
1024 <p>Encoded string
</p>
1026 <h3 class='title'
><span class='info'
> CUPS
1.1.21 </span><a name='httpEncode64_2'
>httpEncode64_2()
</a></h3>
1027 <h4>Description
</h4>
1028 <p>Base64-encode a string.
1041 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
1042 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1044 <tr><td><tt>out
</tt></td><td>String to write to
</td></tr>
1045 <tr><td><tt>outlen
</tt></td><td>Size of output string
</td></tr>
1046 <tr><td><tt>in
</tt></td><td>String to read from
</td></tr>
1047 <tr><td><tt>inlen
</tt></td><td>Size of input string
</td></tr>
1048 </tbody></table></div>
1050 <p>Encoded string
</p>
1052 <h3 class='title'
><a name='httpEncryption'
>httpEncryption()
</a></h3>
1053 <h4>Description
</h4>
1054 <p>Set the required encryption on the link.
</p>
1059 <a href='#http_t'
>http_t
</a> * http,
1060 <a href='#http_encryption_t'
>http_encryption_t
</a> e);
1063 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
1064 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1066 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1067 <tr><td><tt>e
</tt></td><td>New encryption preference
</td></tr>
1068 </tbody></table></div>
1070 <p>-
1 on error,
0 on success
</p>
1072 <h3 class='title'
><a name='httpError'
>httpError()
</a></h3>
1073 <h4>Description
</h4>
1074 <p>Get the last error on a connection.
</p>
1079 <a href='#http_t'
>http_t
</a> * http);
1082 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
1083 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1085 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1086 </tbody></table></div>
1088 <p>Error code (errno) value
</p>
1090 <h3 class='title'
><a name='httpFlush'
>httpFlush()
</a></h3>
1091 <h4>Description
</h4>
1092 <p>Flush data from a HTTP connection.
</p>
1097 <a href='#http_t'
>http_t
</a> * http);
1100 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
1101 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1103 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1104 </tbody></table></div>
1108 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpFlushWrite'
>httpFlushWrite()
</a></h3>
1109 <h4>Description
</h4>
1110 <p>Flush data in write buffer.
1117 <a href='#http_t'
>http_t
</a> * http);
1120 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
1121 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1123 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1124 </tbody></table></div>
1126 <p>Bytes written or -
1 on error
</p>
1128 <h3 class='title'
><a name='httpGet'
>httpGet()
</a></h3>
1129 <h4>Description
</h4>
1130 <p>Send a GET request to the server.
</p>
1135 <a href='#http_t'
>http_t
</a> * http,
1139 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
1140 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1142 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1143 <tr><td><tt>uri
</tt></td><td>URI to get
</td></tr>
1144 </tbody></table></div>
1146 <p>Status of call (
0 = success)
</p>
1148 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpGetBlocking'
>httpGetBlocking()
</a></h3>
1149 <h4>Description
</h4>
1150 <p>Get the blocking/non-block state of a connection.
1157 <a href='#http_t'
>http_t
</a> * http);
1160 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
1161 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1163 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1164 </tbody></table></div>
1166 <p>1 if blocking,
0 if non-blocking
</p>
1168 <h3 class='title'
><a name='httpGetCookie'
>httpGetCookie()
</a></h3>
1169 <h4>Description
</h4>
1170 <p>Get any cookie data from the response.
</p>
1175 <a href='#http_t'
>http_t
</a> * http);
1178 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
1179 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1181 <tr><td><tt>http
</tt></td><td>HTTP connecion
</td></tr>
1182 </tbody></table></div>
1184 <p>Cookie data or NULL
</p>
1186 <h3 class='title'
><span class='info'
> DEPRECATED
</span><a name='httpGetDateString'
>httpGetDateString()
</a></h3>
1187 <h4>Description
</h4>
1188 <p>Get a formatted date/time string from a time value.
1198 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
1199 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1201 <tr><td><tt>t
</tt></td><td>UNIX time
</td></tr>
1202 </tbody></table></div>
1204 <p>Date/time string
</p>
1206 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpGetDateString2'
>httpGetDateString2()
</a></h3>
1207 <h4>Description
</h4>
1208 <p>Get a formatted date/time string from a time value.
1220 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
1221 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1223 <tr><td><tt>t
</tt></td><td>UNIX time
</td></tr>
1224 <tr><td><tt>s
</tt></td><td>String buffer
</td></tr>
1225 <tr><td><tt>slen
</tt></td><td>Size of string buffer
</td></tr>
1226 </tbody></table></div>
1228 <p>Date/time string
</p>
1230 <h3 class='title'
><a name='httpGetDateTime'
>httpGetDateTime()
</a></h3>
1231 <h4>Description
</h4>
1232 <p>Get a time value from a formatted date/time string.
</p>
1240 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
1241 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1243 <tr><td><tt>s
</tt></td><td>Date/time string
</td></tr>
1244 </tbody></table></div>
1248 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpGetFd'
>httpGetFd()
</a></h3>
1249 <h4>Description
</h4>
1250 <p>Get the file descriptor associated with a connection.
1257 <a href='#http_t'
>http_t
</a> * http);
1260 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
1261 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1263 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1264 </tbody></table></div>
1266 <p>File descriptor or -
1 if none
</p>
1268 <h3 class='title'
><a name='httpGetField'
>httpGetField()
</a></h3>
1269 <h4>Description
</h4>
1270 <p>Get a field value from a request/response.
</p>
1275 <a href='#http_t'
>http_t
</a> * http,
1276 http_field_t field);
1279 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
1280 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1282 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1283 <tr><td><tt>field
</tt></td><td>Field to get
</td></tr>
1284 </tbody></table></div>
1288 <h3 class='title'
><span class='info'
> DEPRECATED
</span><a name='httpGetHostByName'
>httpGetHostByName()
</a></h3>
1289 <h4>Description
</h4>
1290 <p>Lookup a hostname or IPv4 address, and return
1291 address records for the specified name.
1301 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
1302 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1304 <tr><td><tt>name
</tt></td><td>Hostname or IP address
</td></tr>
1305 </tbody></table></div>
1309 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpGetHostname'
>httpGetHostname()
</a></h3>
1310 <h4>Description
</h4>
1311 <p>Get the FQDN for the local system.
1313 This function uses both gethostname() and gethostbyname() to
1314 get the local hostname with domain.
1325 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
1326 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1328 <tr><td><tt>s
</tt></td><td>String buffer for name
</td></tr>
1329 <tr><td><tt>slen
</tt></td><td>Size of buffer
</td></tr>
1330 </tbody></table></div>
1332 <p>FQDN for this system
</p>
1334 <h3 class='title'
><span class='info'
> DEPRECATED
</span><a name='httpGetLength'
>httpGetLength()
</a></h3>
1335 <h4>Description
</h4>
1336 <p>Get the amount of data remaining from the
1337 content-length or transfer-encoding fields.
1339 This function is deprecated and will not return lengths larger than
1340 2^
31 -
1; use httpGetLength2() instead.
1347 <a href='#http_t'
>http_t
</a> * http);
1350 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
1351 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1353 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1354 </tbody></table></div>
1356 <p>Content length
</p>
1358 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpGetLength2'
>httpGetLength2()
</a></h3>
1359 <h4>Description
</h4>
1360 <p>Get the amount of data remaining from the
1361 content-length or transfer-encoding fields.
1363 This function returns the complete content length, even for
1364 content larger than
2^
31 -
1.
1371 <a href='#http_t'
>http_t
</a> * http);
1374 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
1375 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1377 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1378 </tbody></table></div>
1380 <p>Content length
</p>
1382 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpGetStatus'
>httpGetStatus()
</a></h3>
1383 <h4>Description
</h4>
1384 <p>Get the status of the last HTTP request.
1391 <a href='#http_t'
>http_t
</a> * http);
1394 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
1395 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1397 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1398 </tbody></table></div>
1402 <h3 class='title'
><span class='info'
> DEPRECATED
</span><a name='httpGetSubField'
>httpGetSubField()
</a></h3>
1403 <h4>Description
</h4>
1404 <p>Get a sub-field value.
1411 <a href='#http_t'
>http_t
</a> * http,
1417 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
1418 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1420 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1421 <tr><td><tt>field
</tt></td><td>Field index
</td></tr>
1422 <tr><td><tt>name
</tt></td><td>Name of sub-field
</td></tr>
1423 <tr><td><tt>value
</tt></td><td>Value string
</td></tr>
1424 </tbody></table></div>
1426 <p>Value or NULL
</p>
1428 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpGetSubField2'
>httpGetSubField2()
</a></h3>
1429 <h4>Description
</h4>
1430 <p>Get a sub-field value.
1437 <a href='#http_t'
>http_t
</a> * http,
1444 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
1445 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1447 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1448 <tr><td><tt>field
</tt></td><td>Field index
</td></tr>
1449 <tr><td><tt>name
</tt></td><td>Name of sub-field
</td></tr>
1450 <tr><td><tt>value
</tt></td><td>Value string
</td></tr>
1451 <tr><td><tt>valuelen
</tt></td><td>Size of value buffer
</td></tr>
1452 </tbody></table></div>
1454 <p>Value or NULL
</p>
1456 <h3 class='title'
><a name='httpGets'
>httpGets()
</a></h3>
1457 <h4>Description
</h4>
1458 <p>Get a line of text from a HTTP connection.
</p>
1465 <a href='#http_t'
>http_t
</a> * http);
1468 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
1469 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1471 <tr><td><tt>line
</tt></td><td>Line to read into
</td></tr>
1472 <tr><td><tt>length
</tt></td><td>Max length of buffer
</td></tr>
1473 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1474 </tbody></table></div>
1478 <h3 class='title'
><a name='httpHead'
>httpHead()
</a></h3>
1479 <h4>Description
</h4>
1480 <p>Send a HEAD request to the server.
</p>
1485 <a href='#http_t'
>http_t
</a> * http,
1489 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
1490 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1492 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1493 <tr><td><tt>uri
</tt></td><td>URI for head
</td></tr>
1494 </tbody></table></div>
1496 <p>Status of call (
0 = success)
</p>
1498 <h3 class='title'
><a name='httpInitialize'
>httpInitialize()
</a></h3>
1499 <h4>Description
</h4>
1500 <p>Initialize the HTTP interface library and set the
1501 default HTTP proxy (if any).
</p>
1505 httpInitialize(void);
1512 <h3 class='title'
><a name='httpMD5'
>httpMD5()
</a></h3>
1513 <h4>Description
</h4>
1514 <p>Compute the MD5 sum of the username:group:password.
</p>
1519 const char * username,
1521 const char * passwd,
1525 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
1526 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1528 <tr><td><tt>username
</tt></td><td>User name
</td></tr>
1529 <tr><td><tt>realm
</tt></td><td>Realm name
</td></tr>
1530 <tr><td><tt>passwd
</tt></td><td>Password string
</td></tr>
1531 <tr><td><tt>md5[
33]
</tt></td><td>MD5 string
</td></tr>
1532 </tbody></table></div>
1536 <h3 class='title'
><a name='httpMD5Final'
>httpMD5Final()
</a></h3>
1537 <h4>Description
</h4>
1538 <p>Combine the MD5 sum of the username, group, and password
1539 with the server-supplied nonce value, method, and
1546 const char * method,
1547 const char * resource,
1551 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
1552 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1554 <tr><td><tt>nonce
</tt></td><td>Server nonce value
</td></tr>
1555 <tr><td><tt>method
</tt></td><td>METHOD (GET, POST, etc.)
</td></tr>
1556 <tr><td><tt>resource
</tt></td><td>Resource path
</td></tr>
1557 <tr><td><tt>md5[
33]
</tt></td><td>MD5 sum
</td></tr>
1558 </tbody></table></div>
1562 <h3 class='title'
><a name='httpMD5String'
>httpMD5String()
</a></h3>
1563 <h4>Description
</h4>
1564 <p>Convert an MD5 sum to a character string.
</p>
1569 const unsigned char * sum,
1573 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
1574 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1576 <tr><td><tt>sum
</tt></td><td>MD5 sum data
</td></tr>
1577 <tr><td><tt>md5[
33]
</tt></td><td>MD5 sum in hex
</td></tr>
1578 </tbody></table></div>
1580 <p>MD5 sum in hex
</p>
1582 <h3 class='title'
><a name='httpOptions'
>httpOptions()
</a></h3>
1583 <h4>Description
</h4>
1584 <p>Send an OPTIONS request to the server.
</p>
1589 <a href='#http_t'
>http_t
</a> * http,
1593 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
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 for options
</td></tr>
1598 </tbody></table></div>
1600 <p>Status of call (
0 = success)
</p>
1602 <h3 class='title'
><a name='httpPost'
>httpPost()
</a></h3>
1603 <h4>Description
</h4>
1604 <p>Send a POST request to the server.
</p>
1609 <a href='#http_t'
>http_t
</a> * http,
1613 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
1614 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1616 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1617 <tr><td><tt>uri
</tt></td><td>URI for post
</td></tr>
1618 </tbody></table></div>
1620 <p>Status of call (
0 = success)
</p>
1622 <h3 class='title'
><a name='httpPut'
>httpPut()
</a></h3>
1623 <h4>Description
</h4>
1624 <p>Send a PUT request to the server.
</p>
1629 <a href='#http_t'
>http_t
</a> * http,
1633 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
1634 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1636 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1637 <tr><td><tt>uri
</tt></td><td>URI to put
</td></tr>
1638 </tbody></table></div>
1640 <p>Status of call (
0 = success)
</p>
1642 <h3 class='title'
><span class='info'
> DEPRECATED
</span><a name='httpRead'
>httpRead()
</a></h3>
1643 <h4>Description
</h4>
1644 <p>Read data from a HTTP connection.
1646 This function is deprecated. Use the httpRead2() function which can
1647 read more than
2GB of data.
1654 <a href='#http_t'
>http_t
</a> * http,
1659 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
1660 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1662 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1663 <tr><td><tt>buffer
</tt></td><td>Buffer for data
</td></tr>
1664 <tr><td><tt>length
</tt></td><td>Maximum number of bytes
</td></tr>
1665 </tbody></table></div>
1667 <p>Number of bytes read
</p>
1669 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpRead2'
>httpRead2()
</a></h3>
1670 <h4>Description
</h4>
1671 <p>Read data from a HTTP connection.
1678 <a href='#http_t'
>http_t
</a> * http,
1683 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
1684 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1686 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1687 <tr><td><tt>buffer
</tt></td><td>Buffer for data
</td></tr>
1688 <tr><td><tt>length
</tt></td><td>Maximum number of bytes
</td></tr>
1689 </tbody></table></div>
1691 <p>Number of bytes read
</p>
1693 <h3 class='title'
><a name='httpReconnect'
>httpReconnect()
</a></h3>
1694 <h4>Description
</h4>
1695 <p>Reconnect to a HTTP server.
</p>
1700 <a href='#http_t'
>http_t
</a> * http);
1703 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
1704 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1706 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1707 </tbody></table></div>
1709 <p>0 on success, non-zero on failure
</p>
1711 <h3 class='title'
><span class='info'
> DEPRECATED
</span><a name='httpSeparate'
>httpSeparate()
</a></h3>
1712 <h4>Description
</h4>
1713 <p>Separate a Universal Resource Identifier into its
1716 This function is deprecated; use the httpSeparateURI() function instead.
1731 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
1732 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1734 <tr><td><tt>uri
</tt></td><td>Universal Resource Identifier
</td></tr>
1735 <tr><td><tt>scheme
</tt></td><td>Scheme [
32] (http, https, etc.)
</td></tr>
1736 <tr><td><tt>username
</tt></td><td>Username [
1024]
</td></tr>
1737 <tr><td><tt>host
</tt></td><td>Hostname [
1024]
</td></tr>
1738 <tr><td><tt>port
</tt></td><td>Port number to use
</td></tr>
1739 <tr><td><tt>resource
</tt></td><td>Resource/filename [
1024]
</td></tr>
1740 </tbody></table></div>
1744 <h3 class='title'
><span class='info'
> CUPS
1.1.21 </span><a name='httpSeparate2'
>httpSeparate2()
</a></h3>
1745 <h4>Description
</h4>
1746 <p>Separate a Universal Resource Identifier into its
1749 This function is deprecated; use the httpSeparateURI() function instead.
1769 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
1770 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1772 <tr><td><tt>uri
</tt></td><td>Universal Resource Identifier
</td></tr>
1773 <tr><td><tt>scheme
</tt></td><td>Scheme (http, https, etc.)
</td></tr>
1774 <tr><td><tt>schemelen
</tt></td><td>Size of scheme buffer
</td></tr>
1775 <tr><td><tt>username
</tt></td><td>Username
</td></tr>
1776 <tr><td><tt>usernamelen
</tt></td><td>Size of username buffer
</td></tr>
1777 <tr><td><tt>host
</tt></td><td>Hostname
</td></tr>
1778 <tr><td><tt>hostlen
</tt></td><td>Size of hostname buffer
</td></tr>
1779 <tr><td><tt>port
</tt></td><td>Port number to use
</td></tr>
1780 <tr><td><tt>resource
</tt></td><td>Resource/filename
</td></tr>
1781 <tr><td><tt>resourcelen
</tt></td><td>Size of resource buffer
</td></tr>
1782 </tbody></table></div>
1786 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpSeparateURI'
>httpSeparateURI()
</a></h3>
1787 <h4>Description
</h4>
1788 <p>Separate a Universal Resource Identifier into its
1796 http_uri_coding_t decoding,
1809 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
1810 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1812 <tr><td><tt>decoding
</tt></td><td>Decoding flags
</td></tr>
1813 <tr><td><tt>uri
</tt></td><td>Universal Resource Identifier
</td></tr>
1814 <tr><td><tt>scheme
</tt></td><td>Scheme (http, https, etc.)
</td></tr>
1815 <tr><td><tt>schemelen
</tt></td><td>Size of scheme buffer
</td></tr>
1816 <tr><td><tt>username
</tt></td><td>Username
</td></tr>
1817 <tr><td><tt>usernamelen
</tt></td><td>Size of username buffer
</td></tr>
1818 <tr><td><tt>host
</tt></td><td>Hostname
</td></tr>
1819 <tr><td><tt>hostlen
</tt></td><td>Size of hostname buffer
</td></tr>
1820 <tr><td><tt>port
</tt></td><td>Port number to use
</td></tr>
1821 <tr><td><tt>resource
</tt></td><td>Resource/filename
</td></tr>
1822 <tr><td><tt>resourcelen
</tt></td><td>Size of resource buffer
</td></tr>
1823 </tbody></table></div>
1825 <p>Result of separation
</p>
1827 <h3 class='title'
><span class='info'
> CUPS
1.1.19 </span><a name='httpSetCookie'
>httpSetCookie()
</a></h3>
1828 <h4>Description
</h4>
1829 <p>Set the cookie value(s)...
1836 <a href='#http_t'
>http_t
</a> * http,
1837 const char * cookie);
1840 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
1841 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1843 <tr><td><tt>http
</tt></td><td>Connection
</td></tr>
1844 <tr><td><tt>cookie
</tt></td><td>Cookie string
</td></tr>
1845 </tbody></table></div>
1849 <h3 class='title'
><a name='httpSetField'
>httpSetField()
</a></h3>
1850 <h4>Description
</h4>
1851 <p>Set the value of an HTTP header.
</p>
1856 <a href='#http_t'
>http_t
</a> * http,
1858 const char * value);
1861 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
1862 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1864 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1865 <tr><td><tt>field
</tt></td><td>Field index
</td></tr>
1866 <tr><td><tt>value
</tt></td><td>Value
</td></tr>
1867 </tbody></table></div>
1871 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpSetLength'
>httpSetLength()
</a></h3>
1872 <h4>Description
</h4>
1873 <p>Set the content-length and content-encoding.
1880 <a href='#http_t'
>http_t
</a> * http,
1884 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
1885 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1887 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1888 <tr><td><tt>length
</tt></td><td>Length (
0 for chunked)
</td></tr>
1889 </tbody></table></div>
1893 <h3 class='title'
><a name='httpStatus'
>httpStatus()
</a></h3>
1894 <h4>Description
</h4>
1895 <p>Return a short string describing a HTTP status code.
</p>
1900 http_status_t status);
1903 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
1904 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1906 <tr><td><tt>status
</tt></td><td>HTTP status code
</td></tr>
1907 </tbody></table></div>
1909 <p>String or NULL
</p>
1911 <h3 class='title'
><a name='httpTrace'
>httpTrace()
</a></h3>
1912 <h4>Description
</h4>
1913 <p>Send an TRACE request to the server.
</p>
1918 <a href='#http_t'
>http_t
</a> * http,
1922 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
1923 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1925 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1926 <tr><td><tt>uri
</tt></td><td>URI for trace
</td></tr>
1927 </tbody></table></div>
1929 <p>Status of call (
0 = success)
</p>
1931 <h3 class='title'
><a name='httpUpdate'
>httpUpdate()
</a></h3>
1932 <h4>Description
</h4>
1933 <p>Update the current HTTP state for incoming data.
</p>
1938 <a href='#http_t'
>http_t
</a> * http);
1941 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
1942 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1944 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1945 </tbody></table></div>
1949 <h3 class='title'
><span class='info'
> CUPS
1.1.19 </span><a name='httpWait'
>httpWait()
</a></h3>
1950 <h4>Description
</h4>
1951 <p>Wait for data available on a connection.
1958 <a href='#http_t'
>http_t
</a> * http,
1962 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
1963 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1965 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1966 <tr><td><tt>msec
</tt></td><td>Milliseconds to wait
</td></tr>
1967 </tbody></table></div>
1969 <p>1 if data is available,
0 otherwise
</p>
1971 <h3 class='title'
><span class='info'
> DEPRECATED
</span><a name='httpWrite'
>httpWrite()
</a></h3>
1972 <h4>Description
</h4>
1973 <p>Write data to a HTTP connection.
1975 This function is deprecated. Use the httpWrite2() function which can
1976 write more than
2GB of data.
1983 <a href='#http_t'
>http_t
</a> * http,
1984 const char * buffer,
1988 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
1989 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
1991 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
1992 <tr><td><tt>buffer
</tt></td><td>Buffer for data
</td></tr>
1993 <tr><td><tt>length
</tt></td><td>Number of bytes to write
</td></tr>
1994 </tbody></table></div>
1996 <p>Number of bytes written
</p>
1998 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='httpWrite2'
>httpWrite2()
</a></h3>
1999 <h4>Description
</h4>
2000 <p>Write data to a HTTP connection.
2007 <a href='#http_t'
>http_t
</a> * http,
2008 const char * buffer,
2012 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
2013 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2015 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
2016 <tr><td><tt>buffer
</tt></td><td>Buffer for data
</td></tr>
2017 <tr><td><tt>length
</tt></td><td>Number of bytes to write
</td></tr>
2018 </tbody></table></div>
2020 <p>Number of bytes written
</p>
2022 <h3 class='title'
><a name='ippAddBoolean'
>ippAddBoolean()
</a></h3>
2023 <h4>Description
</h4>
2024 <p>Add a boolean attribute to an IPP message.
</p>
2027 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
2029 <a href='#ipp_t'
>ipp_t
</a> * ipp,
2035 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
2036 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2038 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
2039 <tr><td><tt>group
</tt></td><td>IPP group
</td></tr>
2040 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
2041 <tr><td><tt>value
</tt></td><td>Value of attribute
</td></tr>
2042 </tbody></table></div>
2044 <p>New attribute
</p>
2046 <h3 class='title'
><a name='ippAddBooleans'
>ippAddBooleans()
</a></h3>
2047 <h4>Description
</h4>
2048 <p>Add an array of boolean values.
</p>
2051 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
2053 <a href='#ipp_t'
>ipp_t
</a> * ipp,
2057 const char * values);
2060 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
2061 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2063 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
2064 <tr><td><tt>group
</tt></td><td>IPP group
</td></tr>
2065 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
2066 <tr><td><tt>num_values
</tt></td><td>Number of values
</td></tr>
2067 <tr><td><tt>values
</tt></td><td>Values
</td></tr>
2068 </tbody></table></div>
2070 <p>New attribute
</p>
2072 <h3 class='title'
><span class='info'
> CUPS
1.1.19 </span><a name='ippAddCollection'
>ippAddCollection()
</a></h3>
2073 <h4>Description
</h4>
2074 <p>Add a collection value.
2079 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
2081 <a href='#ipp_t'
>ipp_t
</a> * ipp,
2084 <a href='#ipp_t'
>ipp_t
</a> * value);
2087 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
2088 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2090 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
2091 <tr><td><tt>group
</tt></td><td>IPP group
</td></tr>
2092 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
2093 <tr><td><tt>value
</tt></td><td>Value
</td></tr>
2094 </tbody></table></div>
2096 <p>New attribute
</p>
2098 <h3 class='title'
><span class='info'
> CUPS
1.1.19 </span><a name='ippAddCollections'
>ippAddCollections()
</a></h3>
2099 <h4>Description
</h4>
2100 <p>Add an array of collection values.
2105 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
2107 <a href='#ipp_t'
>ipp_t
</a> * ipp,
2111 const
<a href='#ipp_t'
>ipp_t
</a> ** values);
2114 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
2115 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2117 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
2118 <tr><td><tt>group
</tt></td><td>IPP group
</td></tr>
2119 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
2120 <tr><td><tt>num_values
</tt></td><td>Number of values
</td></tr>
2121 <tr><td><tt>values
</tt></td><td>Values
</td></tr>
2122 </tbody></table></div>
2124 <p>New attribute
</p>
2126 <h3 class='title'
><a name='ippAddDate'
>ippAddDate()
</a></h3>
2127 <h4>Description
</h4>
2128 <p>Add a date attribute to an IPP message.
</p>
2131 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
2133 <a href='#ipp_t'
>ipp_t
</a> * ipp,
2136 const
<a href='#ipp_uchar_t'
>ipp_uchar_t
</a> * value);
2139 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
2140 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2142 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
2143 <tr><td><tt>group
</tt></td><td>IPP group
</td></tr>
2144 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
2145 <tr><td><tt>value
</tt></td><td>Value
</td></tr>
2146 </tbody></table></div>
2148 <p>New attribute
</p>
2150 <h3 class='title'
><a name='ippAddInteger'
>ippAddInteger()
</a></h3>
2151 <h4>Description
</h4>
2152 <p>Add a integer attribute to an IPP message.
</p>
2155 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
2157 <a href='#ipp_t'
>ipp_t
</a> * ipp,
2164 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
2165 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2167 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
2168 <tr><td><tt>group
</tt></td><td>IPP group
</td></tr>
2169 <tr><td><tt>type
</tt></td><td>Type of attribute
</td></tr>
2170 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
2171 <tr><td><tt>value
</tt></td><td>Value of attribute
</td></tr>
2172 </tbody></table></div>
2174 <p>New attribute
</p>
2176 <h3 class='title'
><a name='ippAddIntegers'
>ippAddIntegers()
</a></h3>
2177 <h4>Description
</h4>
2178 <p>Add an array of integer values.
</p>
2181 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
2183 <a href='#ipp_t'
>ipp_t
</a> * ipp,
2188 const int * values);
2191 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
2192 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2194 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
2195 <tr><td><tt>group
</tt></td><td>IPP group
</td></tr>
2196 <tr><td><tt>type
</tt></td><td>Type of attribute
</td></tr>
2197 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
2198 <tr><td><tt>num_values
</tt></td><td>Number of values
</td></tr>
2199 <tr><td><tt>values
</tt></td><td>Values
</td></tr>
2200 </tbody></table></div>
2202 <p>New attribute
</p>
2204 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='ippAddOctetString'
>ippAddOctetString()
</a></h3>
2205 <h4>Description
</h4>
2206 <p>Add an octetString value to an IPP message.
2211 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
2213 <a href='#ipp_t'
>ipp_t
</a> * ipp,
2220 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
2221 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2223 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
2224 <tr><td><tt>group
</tt></td><td>IPP group
</td></tr>
2225 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
2226 <tr><td><tt>data
</tt></td><td>octetString data
</td></tr>
2227 <tr><td><tt>datalen
</tt></td><td>Length of data in bytes
</td></tr>
2228 </tbody></table></div>
2230 <p>New attribute
</p>
2232 <h3 class='title'
><a name='ippAddRange'
>ippAddRange()
</a></h3>
2233 <h4>Description
</h4>
2234 <p>Add a range of values to an IPP message.
</p>
2237 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
2239 <a href='#ipp_t'
>ipp_t
</a> * ipp,
2246 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
2247 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2249 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
2250 <tr><td><tt>group
</tt></td><td>IPP group
</td></tr>
2251 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
2252 <tr><td><tt>lower
</tt></td><td>Lower value
</td></tr>
2253 <tr><td><tt>upper
</tt></td><td>Upper value
</td></tr>
2254 </tbody></table></div>
2256 <p>New attribute
</p>
2258 <h3 class='title'
><a name='ippAddRanges'
>ippAddRanges()
</a></h3>
2259 <h4>Description
</h4>
2260 <p>Add ranges of values to an IPP message.
</p>
2263 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
2265 <a href='#ipp_t'
>ipp_t
</a> * ipp,
2273 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
2274 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2276 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
2277 <tr><td><tt>group
</tt></td><td>IPP group
</td></tr>
2278 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
2279 <tr><td><tt>num_values
</tt></td><td>Number of values
</td></tr>
2280 <tr><td><tt>lower
</tt></td><td>Lower values
</td></tr>
2281 <tr><td><tt>upper
</tt></td><td>Upper values
</td></tr>
2282 </tbody></table></div>
2284 <p>New attribute
</p>
2286 <h3 class='title'
><a name='ippAddResolution'
>ippAddResolution()
</a></h3>
2287 <h4>Description
</h4>
2288 <p>Add a resolution value to an IPP message.
</p>
2291 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
2293 <a href='#ipp_t'
>ipp_t
</a> * ipp,
2301 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
2302 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2304 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
2305 <tr><td><tt>group
</tt></td><td>IPP group
</td></tr>
2306 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
2307 <tr><td><tt>units
</tt></td><td>Units for resolution
</td></tr>
2308 <tr><td><tt>xres
</tt></td><td>X resolution
</td></tr>
2309 <tr><td><tt>yres
</tt></td><td>Y resolution
</td></tr>
2310 </tbody></table></div>
2312 <p>New attribute
</p>
2314 <h3 class='title'
><a name='ippAddResolutions'
>ippAddResolutions()
</a></h3>
2315 <h4>Description
</h4>
2316 <p>Add resolution values to an IPP message.
</p>
2319 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
2321 <a href='#ipp_t'
>ipp_t
</a> * ipp,
2330 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
2331 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2333 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
2334 <tr><td><tt>group
</tt></td><td>IPP group
</td></tr>
2335 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
2336 <tr><td><tt>num_values
</tt></td><td>Number of values
</td></tr>
2337 <tr><td><tt>units
</tt></td><td>Units for resolution
</td></tr>
2338 <tr><td><tt>xres
</tt></td><td>X resolutions
</td></tr>
2339 <tr><td><tt>yres
</tt></td><td>Y resolutions
</td></tr>
2340 </tbody></table></div>
2342 <p>New attribute
</p>
2344 <h3 class='title'
><a name='ippAddSeparator'
>ippAddSeparator()
</a></h3>
2345 <h4>Description
</h4>
2346 <p>Add a group separator to an IPP message.
</p>
2349 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
2351 <a href='#ipp_t'
>ipp_t
</a> * ipp);
2354 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
2355 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2357 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
2358 </tbody></table></div>
2360 <p>New attribute
</p>
2362 <h3 class='title'
><a name='ippAddString'
>ippAddString()
</a></h3>
2363 <h4>Description
</h4>
2364 <p>Add a language-encoded string to an IPP message.
</p>
2367 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
2369 <a href='#ipp_t'
>ipp_t
</a> * ipp,
2373 const char * charset,
2374 const char * value);
2377 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
2378 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2380 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
2381 <tr><td><tt>group
</tt></td><td>IPP group
</td></tr>
2382 <tr><td><tt>type
</tt></td><td>Type of attribute
</td></tr>
2383 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
2384 <tr><td><tt>charset
</tt></td><td>Character set
</td></tr>
2385 <tr><td><tt>value
</tt></td><td>Value
</td></tr>
2386 </tbody></table></div>
2388 <p>New attribute
</p>
2390 <h3 class='title'
><a name='ippAddStrings'
>ippAddStrings()
</a></h3>
2391 <h4>Description
</h4>
2392 <p>Add language-encoded strings to an IPP message.
</p>
2395 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
2397 <a href='#ipp_t'
>ipp_t
</a> * ipp,
2402 const char * charset,
2403 const char *const * values);
2406 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
2407 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2409 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
2410 <tr><td><tt>group
</tt></td><td>IPP group
</td></tr>
2411 <tr><td><tt>type
</tt></td><td>Type of attribute
</td></tr>
2412 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
2413 <tr><td><tt>num_values
</tt></td><td>Number of values
</td></tr>
2414 <tr><td><tt>charset
</tt></td><td>Character set
</td></tr>
2415 <tr><td><tt>values
</tt></td><td>Values
</td></tr>
2416 </tbody></table></div>
2418 <p>New attribute
</p>
2420 <h3 class='title'
><a name='ippDateToTime'
>ippDateToTime()
</a></h3>
2421 <h4>Description
</h4>
2422 <p>Convert from RFC
1903 Date/Time format to UNIX time
2428 const
<a href='#ipp_uchar_t'
>ipp_uchar_t
</a> * date);
2431 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
2432 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2434 <tr><td><tt>date
</tt></td><td>RFC
1903 date info
</td></tr>
2435 </tbody></table></div>
2437 <p>UNIX time value
</p>
2439 <h3 class='title'
><a name='ippDelete'
>ippDelete()
</a></h3>
2440 <h4>Description
</h4>
2441 <p>Delete an IPP message.
</p>
2446 <a href='#ipp_t'
>ipp_t
</a> * ipp);
2449 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
2450 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2452 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
2453 </tbody></table></div>
2457 <h3 class='title'
><span class='info'
> CUPS
1.1.19 </span><a name='ippDeleteAttribute'
>ippDeleteAttribute()
</a></h3>
2458 <h4>Description
</h4>
2459 <p>Delete a single attribute in an IPP message.
2466 <a href='#ipp_t'
>ipp_t
</a> * ipp,
2467 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> * attr);
2470 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
2471 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2473 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
2474 <tr><td><tt>attr
</tt></td><td>Attribute to delete
</td></tr>
2475 </tbody></table></div>
2479 <h3 class='title'
><a name='ippErrorString'
>ippErrorString()
</a></h3>
2480 <h4>Description
</h4>
2481 <p>Return a name for the given status code.
</p>
2486 ipp_status_t error);
2489 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
2490 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2492 <tr><td><tt>error
</tt></td><td>Error status
</td></tr>
2493 </tbody></table></div>
2497 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='ippErrorValue'
>ippErrorValue()
</a></h3>
2498 <h4>Description
</h4>
2499 <p>Return a status code for the given name.
2509 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
2510 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2512 <tr><td><tt>name
</tt></td><td>Name
</td></tr>
2513 </tbody></table></div>
2515 <p>IPP status code
</p>
2517 <h3 class='title'
><a name='ippFindAttribute'
>ippFindAttribute()
</a></h3>
2518 <h4>Description
</h4>
2519 <p>Find a named attribute in a request...
</p>
2522 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
2524 <a href='#ipp_t'
>ipp_t
</a> * ipp,
2529 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
2530 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2532 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
2533 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
2534 <tr><td><tt>type
</tt></td><td>Type of attribute
</td></tr>
2535 </tbody></table></div>
2537 <p>Matching attribute
</p>
2539 <h3 class='title'
><a name='ippFindNextAttribute'
>ippFindNextAttribute()
</a></h3>
2540 <h4>Description
</h4>
2541 <p>Find the next named attribute in a request...
</p>
2544 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> *
2545 ippFindNextAttribute(
2546 <a href='#ipp_t'
>ipp_t
</a> * ipp,
2551 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
2552 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2554 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
2555 <tr><td><tt>name
</tt></td><td>Name of attribute
</td></tr>
2556 <tr><td><tt>type
</tt></td><td>Type of attribute
</td></tr>
2557 </tbody></table></div>
2559 <p>Matching attribute
</p>
2561 <h3 class='title'
><a name='ippLength'
>ippLength()
</a></h3>
2562 <h4>Description
</h4>
2563 <p>Compute the length of an IPP message.
</p>
2568 <a href='#ipp_t'
>ipp_t
</a> * ipp);
2571 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
2572 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2574 <tr><td><tt>ipp
</tt></td><td>IPP message
</td></tr>
2575 </tbody></table></div>
2577 <p>Size of IPP message
</p>
2579 <h3 class='title'
><a name='ippNew'
>ippNew()
</a></h3>
2580 <h4>Description
</h4>
2581 <p>Allocate a new IPP message.
</p>
2584 <a href='#ipp_t'
>ipp_t
</a> *
2590 <p>New IPP message
</p>
2592 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='ippNewRequest'
>ippNewRequest()
</a></h3>
2593 <h4>Description
</h4>
2594 <p>Allocate a new IPP request message.
2596 The new request message is initialized with the attributes-charset and
2597 attributes-natural-language attributes added. The
2598 attributes-natural-language value is derived from the current locale.
2603 <a href='#ipp_t'
>ipp_t
</a> *
2608 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
2609 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2611 <tr><td><tt>op
</tt></td><td>Operation code
</td></tr>
2612 </tbody></table></div>
2614 <p>IPP request message
</p>
2616 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='ippOpString'
>ippOpString()
</a></h3>
2617 <h4>Description
</h4>
2618 <p>Return a name for the given operation id.
2628 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
2629 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2631 <tr><td><tt>op
</tt></td><td>Operation ID
</td></tr>
2632 </tbody></table></div>
2636 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='ippOpValue'
>ippOpValue()
</a></h3>
2637 <h4>Description
</h4>
2638 <p>Return an operation id for the given name.
2648 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
2649 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2651 <tr><td><tt>name
</tt></td><td>Textual name
</td></tr>
2652 </tbody></table></div>
2656 <h3 class='title'
><a name='ippPort'
>ippPort()
</a></h3>
2657 <h4>Description
</h4>
2658 <p>Return the default IPP port number.
</p>
2669 <h3 class='title'
><a name='ippRead'
>ippRead()
</a></h3>
2670 <h4>Description
</h4>
2671 <p>Read data for an IPP message from a HTTP connection.
</p>
2676 <a href='#http_t'
>http_t
</a> * http,
2677 <a href='#ipp_t'
>ipp_t
</a> * ipp);
2680 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
2681 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2683 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
2684 <tr><td><tt>ipp
</tt></td><td>IPP data
</td></tr>
2685 </tbody></table></div>
2687 <p>Current state
</p>
2689 <h3 class='title'
><span class='info'
> CUPS
1.1.19 </span><a name='ippReadFile'
>ippReadFile()
</a></h3>
2690 <h4>Description
</h4>
2691 <p>Read data for an IPP message from a file.
2699 <a href='#ipp_t'
>ipp_t
</a> * ipp);
2702 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
2703 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2705 <tr><td><tt>fd
</tt></td><td>HTTP data
</td></tr>
2706 <tr><td><tt>ipp
</tt></td><td>IPP data
</td></tr>
2707 </tbody></table></div>
2709 <p>Current state
</p>
2711 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='ippReadIO'
>ippReadIO()
</a></h3>
2712 <h4>Description
</h4>
2713 <p>Read data for an IPP message.
2721 <a href='#ipp_iocb_t'
>ipp_iocb_t
</a> cb,
2723 <a href='#ipp_t'
>ipp_t
</a> * parent,
2724 <a href='#ipp_t'
>ipp_t
</a> * ipp);
2727 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
2728 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2730 <tr><td><tt>src
</tt></td><td>Data source
</td></tr>
2731 <tr><td><tt>cb
</tt></td><td>Read callback function
</td></tr>
2732 <tr><td><tt>blocking
</tt></td><td>Use blocking IO?
</td></tr>
2733 <tr><td><tt>parent
</tt></td><td>Parent request, if any
</td></tr>
2734 <tr><td><tt>ipp
</tt></td><td>IPP data
</td></tr>
2735 </tbody></table></div>
2737 <p>Current state
</p>
2739 <h3 class='title'
><a name='ippSetPort'
>ippSetPort()
</a></h3>
2740 <h4>Description
</h4>
2741 <p>Set the default port number.
</p>
2749 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
2750 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2752 <tr><td><tt>p
</tt></td><td>Port number to use
</td></tr>
2753 </tbody></table></div>
2757 <h3 class='title'
><a name='ippTimeToDate'
>ippTimeToDate()
</a></h3>
2758 <h4>Description
</h4>
2759 <p>Convert from UNIX time to RFC
1903 format.
</p>
2762 const
<a href='#ipp_uchar_t'
>ipp_uchar_t
</a> *
2767 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
2768 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2770 <tr><td><tt>t
</tt></td><td>UNIX time value
</td></tr>
2771 </tbody></table></div>
2773 <p>RFC-
1903 date/time data
</p>
2775 <h3 class='title'
><a name='ippWrite'
>ippWrite()
</a></h3>
2776 <h4>Description
</h4>
2777 <p>Write data for an IPP message to a HTTP connection.
</p>
2782 <a href='#http_t'
>http_t
</a> * http,
2783 <a href='#ipp_t'
>ipp_t
</a> * ipp);
2786 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
2787 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2789 <tr><td><tt>http
</tt></td><td>HTTP connection
</td></tr>
2790 <tr><td><tt>ipp
</tt></td><td>IPP data
</td></tr>
2791 </tbody></table></div>
2793 <p>Current state
</p>
2795 <h3 class='title'
><span class='info'
> CUPS
1.1.19 </span><a name='ippWriteFile'
>ippWriteFile()
</a></h3>
2796 <h4>Description
</h4>
2797 <p>Write data for an IPP message to a file.
2805 <a href='#ipp_t'
>ipp_t
</a> * ipp);
2808 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
2809 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2811 <tr><td><tt>fd
</tt></td><td>HTTP data
</td></tr>
2812 <tr><td><tt>ipp
</tt></td><td>IPP data
</td></tr>
2813 </tbody></table></div>
2815 <p>Current state
</p>
2817 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='ippWriteIO'
>ippWriteIO()
</a></h3>
2818 <h4>Description
</h4>
2819 <p>Write data for an IPP message.
2827 <a href='#ipp_iocb_t'
>ipp_iocb_t
</a> cb,
2829 <a href='#ipp_t'
>ipp_t
</a> * parent,
2830 <a href='#ipp_t'
>ipp_t
</a> * ipp);
2833 <div class='table'
><table align='center' border='
1' width='
80%' cellpadding='
5' cellspacing='
0'
>
2834 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2836 <tr><td><tt>dst
</tt></td><td>Destination
</td></tr>
2837 <tr><td><tt>cb
</tt></td><td>Write callback function
</td></tr>
2838 <tr><td><tt>blocking
</tt></td><td>Use blocking IO?
</td></tr>
2839 <tr><td><tt>parent
</tt></td><td>Parent IPP message
</td></tr>
2840 <tr><td><tt>ipp
</tt></td><td>IPP data
</td></tr>
2841 </tbody></table></div>
2843 <p>Current state
</p>
2845 <h2 class='title'
><a name='STRUCTURES'
>Structures
</a></h2>
2847 <li><a href='#http_addrlist_s'
><tt>http_addrlist_s
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
2848 <li><a href='#ipp_attribute_s'
><tt>ipp_attribute_s
</tt></a> </li>
2849 <li><a href='#ipp_s'
><tt>ipp_s
</tt></a> </li>
2852 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='http_addrlist_s'
>http_addrlist_s
</a></h3>
2853 <h4>Description
</h4>
2854 <p>Socket address list, which is
2855 used to enumerate all of the
2856 addresses that are associated
2857 with a hostname.
</p>
2860 struct http_addrlist_s
2862 <a href='#http_addr_t'
>http_addr_t
</a> addr;
2863 struct
<a href='#http_addrlist_s'
>http_addrlist_s
</a> * next;
2867 <div class='table'
><table align='center' border='
1' width='
80%'
>
2868 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2870 <tr><td><tt>addr
</tt> </td><td>Address
</td></tr>
2871 <tr><td><tt>next
</tt> </td><td>Pointer to next address in list
</td></tr>
2872 </tbody></table></div>
2874 <h3 class='title'
><a name='ipp_attribute_s'
>ipp_attribute_s
</a></h3>
2875 <h4>Description
</h4>
2879 struct ipp_attribute_s
2882 struct
<a href='#ipp_attribute_s'
>ipp_attribute_s
</a> * next;
2884 ipp_tag_t group_tag, value_tag;
2885 <a href='#ipp_value_t'
>ipp_value_t
</a> values[
1];
2889 <div class='table'
><table align='center' border='
1' width='
80%'
>
2890 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2892 <tr><td><tt>name
</tt> </td><td>Name of attribute
</td></tr>
2893 <tr><td><tt>next
</tt> </td><td>Next attribute in list
</td></tr>
2894 <tr><td><tt>num_values
</tt> </td><td>Number of values
</td></tr>
2895 <tr><td><tt>value_tag
</tt> </td><td>What type of value is it?
</td></tr>
2896 <tr><td><tt>values[
1]
</tt> </td><td>Values
</td></tr>
2897 </tbody></table></div>
2899 <h3 class='title'
><a name='ipp_s'
>ipp_s
</a></h3>
2900 <h4>Description
</h4>
2901 <p>IPP Request/Response/Notification
</p>
2906 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> * attrs;
2907 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> * current;
2909 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> * last;
2910 <a href='#ipp_attribute_t'
>ipp_attribute_t
</a> * prev;
2911 <a href='#ipp_request_t'
>ipp_request_t
</a> request;
2916 <div class='table'
><table align='center' border='
1' width='
80%'
>
2917 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
2919 <tr><td><tt>attrs
</tt> </td><td>Attributes
</td></tr>
2920 <tr><td><tt>current
</tt> </td><td>Current attribute (for read/write)
</td></tr>
2921 <tr><td><tt>curtag
</tt> </td><td>Current attribute group tag
</td></tr>
2922 <tr><td><tt>last
</tt> </td><td>Last attribute in list
</td></tr>
2923 <tr><td><tt>prev
</tt> </td><td>Previous attribute (for read)
</td></tr>
2924 <tr><td><tt>request
</tt> </td><td>Request header
</td></tr>
2925 <tr><td><tt>state
</tt> </td><td>State of request
</td></tr>
2926 </tbody></table></div>
2928 <h2 class='title'
><a name='TYPES'
>Types
</a></h2>
2930 <li><a href='#http_addrlist_t'
><tt>http_addrlist_t
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
2931 <li><a href='#http_auth_t'
><tt>http_auth_t
</tt></a> </li>
2932 <li><a href='#http_encoding_t'
><tt>http_encoding_t
</tt></a> </li>
2933 <li><a href='#http_encryption_t'
><tt>http_encryption_t
</tt></a> </li>
2934 <li><a href='#http_t'
><tt>http_t
</tt></a> </li>
2935 <li><a href='#ipp_attribute_t'
><tt>ipp_attribute_t
</tt></a> </li>
2936 <li><a href='#ipp_iocb_t'
><tt>ipp_iocb_t
</tt></a> <span class='info'
> CUPS
1.2 </span></li>
2937 <li><a href='#ipp_request_t'
><tt>ipp_request_t
</tt></a> </li>
2938 <li><a href='#ipp_t'
><tt>ipp_t
</tt></a> </li>
2939 <li><a href='#ipp_uchar_t'
><tt>ipp_uchar_t
</tt></a> </li>
2940 <li><a href='#ipp_value_t'
><tt>ipp_value_t
</tt></a> </li>
2943 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='http_addrlist_t'
>http_addrlist_t
</a></h3>
2944 <h4>Description
</h4>
2945 <p>Socket address list, which is
2946 used to enumerate all of the
2947 addresses that are associated
2948 with a hostname.
</p>
2951 typedef struct
<a href='#http_addrlist_s'
>http_addrlist_s
</a> / http_addrlist_t;
2954 <h3 class='title'
><a name='http_auth_t'
>http_auth_t
</a></h3>
2955 <h4>Description
</h4>
2956 <p>HTTP authentication types
</p>
2959 typedef enum
<a href='#http_auth_e'
>http_auth_e
</a> http_auth_t;
2962 <h3 class='title'
><a name='http_encoding_t'
>http_encoding_t
</a></h3>
2963 <h4>Description
</h4>
2964 <p>HTTP transfer encoding values
</p>
2967 typedef enum
<a href='#http_encoding_e'
>http_encoding_e
</a> http_encoding_t;
2970 <h3 class='title'
><a name='http_encryption_t'
>http_encryption_t
</a></h3>
2971 <h4>Description
</h4>
2972 <p>HTTP encryption values
</p>
2975 typedef enum
<a href='#http_encryption_e'
>http_encryption_e
</a> http_encryption_t;
2978 <h3 class='title'
><a name='http_t'
>http_t
</a></h3>
2979 <h4>Description
</h4>
2980 <p>HTTP connection structure.
</p>
2983 typedef struct _http_s http_t;
2986 <h3 class='title'
><a name='ipp_attribute_t'
>ipp_attribute_t
</a></h3>
2987 <h4>Description
</h4>
2991 typedef struct
<a href='#ipp_attribute_s'
>ipp_attribute_s
</a> ipp_attribute_t;
2994 <h3 class='title'
><span class='info'
> CUPS
1.2 </span><a name='ipp_iocb_t'
>ipp_iocb_t
</a></h3>
2995 <h4>Description
</h4>
2996 <p>IPP IO Callback Function
</p>
2999 typedef ssize_t (*ipp_iocb_t)(void *,
<a href='#ipp_uchar_t'
>ipp_uchar_t
</a> *, size_t);
3002 <h3 class='title'
><a name='ipp_request_t'
>ipp_request_t
</a></h3>
3003 <h4>Description
</h4>
3004 <p>Request Header
</p>
3007 typedef union
<a href='#ipp_request_u'
>ipp_request_u
</a> ipp_request_t;
3010 <h3 class='title'
><a name='ipp_t'
>ipp_t
</a></h3>
3011 <h4>Description
</h4>
3012 <p>Attribute Value
</p>
3015 typedef struct
<a href='#ipp_s'
>ipp_s
</a> ipp_t;
3018 <h3 class='title'
><a name='ipp_uchar_t'
>ipp_uchar_t
</a></h3>
3019 <h4>Description
</h4>
3020 <p>IPP status codes...
</p>
3023 typedef typedef unsigned char ipp_uchar_t;
3026 <h3 class='title'
><a name='ipp_value_t'
>ipp_value_t
</a></h3>
3027 <h4>Description
</h4>
3028 <p>New in CUPS
1.1.19</p>
3031 typedef union
<a href='#ipp_value_u'
>ipp_value_u
</a> ipp_value_t;
3034 <h2 class='title'
><a name='UNIONS'
>Unions
</a></h2>
3036 <li><a href='#ipp_request_u'
><tt>ipp_request_u
</tt></a> </li>
3037 <li><a href='#ipp_value_u'
><tt>ipp_value_u
</tt></a> </li>
3040 <h3 class='title'
><a name='ipp_request_u'
>ipp_request_u
</a></h3>
3041 <h4>Description
</h4>
3042 <p>Request Header
</p>
3050 <div class='table'
><table align='center' border='
1' width='
80%'
>
3051 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3053 </tbody></table></div>
3055 <h3 class='title'
><a name='ipp_value_u'
>ipp_value_u
</a></h3>
3056 <h4>Description
</h4>
3057 <p>New in CUPS
1.1.19</p>
3063 <a href='#ipp_t'
>ipp_t
</a> * collection;
3064 <a href='#ipp_uchar_t'
>ipp_uchar_t
</a> date[
11];
3069 <div class='table'
><table align='center' border='
1' width='
80%'
>
3070 <thead><tr><th>Name
</th><th>Description
</th></tr></thead>
3072 <tr><td><tt>boolean
</tt> </td><td>Boolean value
</td></tr>
3073 <tr><td><tt>collection
</tt> </td><td>Collection value
</td></tr>
3074 <tr><td><tt>date[
11]
</tt> </td><td>Date/time value
</td></tr>
3075 <tr><td><tt>integer
</tt> </td><td>Integer/enumerated value
</td></tr>
3076 </tbody></table></div>