]> git.ipfire.org Git - thirdparty/cups.git/blob - doc/help/api-httpipp.html
Load cups into easysw/current.
[thirdparty/cups.git] / doc / help / api-httpipp.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
2 <html>
3 <!-- SECTION: Programming -->
4 <head>
5 <title>HTTP and IPP APIs</title>
6 <meta name='keywords' content='Programming'>
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; }
15 --></style>
16 </head>
17 <body>
18 <!--
19 "$Id: api-httpipp.shtml 5138 2006-02-21 10:49:06Z mike $"
20
21 HTTP and IPP API introduction for the Common UNIX Printing System (CUPS).
22
23 Copyright 1997-2006 by Easy Software Products.
24
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
30 at:
31
32 Attn: CUPS Licensing Information
33 Easy Software Products
34 44141 Airport View Drive, Suite 204
35 Hollywood, Maryland 20636 USA
36
37 Voice: (301) 373-9600
38 EMail: cups-info@cups.org
39 WWW: http://www.cups.org
40 -->
41
42 <h2 class='title'>Introduction</h2>
43
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
48 functions.</p>
49
50 <h2 class='title'>General Usage</h2>
51
52 <p>The <var>&lt;cups/cups.h&gt;</var> header file must be included to
53 use the HTTP and IPP functions.</p>
54
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
60 library:</p>
61
62 <pre class='command'>
63 <kbd>gcc -o myprogram myprogram.c -lcups</kbd>
64 </pre>
65
66 <h2 class='title'>Compatibility</h2>
67
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>
71 <ul>
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>
77 </ul>
78 <!-- NEW PAGE -->
79 <h2 class='title'><a name='ENUMERATIONS'>Enumerations</a></h2>
80 <ul>
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>
90 </ul>
91 <!-- NEW PAGE -->
92 <h3 class='title'><a name='http_auth_e'>http_auth_e</a></h3>
93 <h4>Description</h4>
94 <p>HTTP authentication types</p>
95 <h4>Values</h4>
96 <div class='table'><table align='center' border='1' width='80%'>
97 <thead><tr><th>Name</th><th>Description</th></tr></thead>
98 <tbody>
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>
106 <!-- NEW PAGE -->
107 <h3 class='title'><a name='http_encoding_e'>http_encoding_e</a></h3>
108 <h4>Description</h4>
109 <p>HTTP transfer encoding values</p>
110 <h4>Values</h4>
111 <div class='table'><table align='center' border='1' width='80%'>
112 <thead><tr><th>Name</th><th>Description</th></tr></thead>
113 <tbody>
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>
117 <!-- NEW PAGE -->
118 <h3 class='title'><a name='http_encryption_e'>http_encryption_e</a></h3>
119 <h4>Description</h4>
120 <p>HTTP encryption values</p>
121 <h4>Values</h4>
122 <div class='table'><table align='center' border='1' width='80%'>
123 <thead><tr><th>Name</th><th>Description</th></tr></thead>
124 <tbody>
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>
130 <!-- NEW PAGE -->
131 <h3 class='title'><a name='http_field_e'>http_field_e</a></h3>
132 <h4>Description</h4>
133 <p>HTTP field names</p>
134 <h4>Values</h4>
135 <div class='table'><table align='center' border='1' width='80%'>
136 <thead><tr><th>Name</th><th>Description</th></tr></thead>
137 <tbody>
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>
168 <!-- NEW PAGE -->
169 <h3 class='title'><a name='http_keepalive_e'>http_keepalive_e</a></h3>
170 <h4>Description</h4>
171 <p>Types and structures...</p>
172 <h4>Values</h4>
173 <div class='table'><table align='center' border='1' width='80%'>
174 <thead><tr><th>Name</th><th>Description</th></tr></thead>
175 <tbody>
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>
179 <!-- NEW PAGE -->
180 <h3 class='title'><a name='http_status_e'>http_status_e</a></h3>
181 <h4>Description</h4>
182 <p>HTTP status codes</p>
183 <h4>Values</h4>
184 <div class='table'><table align='center' border='1' width='80%'>
185 <thead><tr><th>Name</th><th>Description</th></tr></thead>
186 <tbody>
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_EXPECTATION_FAILED</tt> </td><td>The expectation given in an Expect header field was not met</td></tr>
195 <tr><td><tt>HTTP_FORBIDDEN</tt> </td><td>Forbidden to access this URI</td></tr>
196 <tr><td><tt>HTTP_GATEWAY_TIMEOUT</tt> </td><td>Gateway connection timed out</td></tr>
197 <tr><td><tt>HTTP_GONE</tt> </td><td>Server has gone away</td></tr>
198 <tr><td><tt>HTTP_LENGTH_REQUIRED</tt> </td><td>A content length or encoding is required</td></tr>
199 <tr><td><tt>HTTP_METHOD_NOT_ALLOWED</tt> </td><td>Method is not allowed</td></tr>
200 <tr><td><tt>HTTP_MOVED_PERMANENTLY</tt> </td><td>Document has moved permanently</td></tr>
201 <tr><td><tt>HTTP_MOVED_TEMPORARILY</tt> </td><td>Document has moved temporarily</td></tr>
202 <tr><td><tt>HTTP_MULTIPLE_CHOICES</tt> </td><td>Multiple files match request</td></tr>
203 <tr><td><tt>HTTP_NOT_ACCEPTABLE</tt> </td><td>Not Acceptable</td></tr>
204 <tr><td><tt>HTTP_NOT_AUTHORITATIVE</tt> </td><td>Information isn't authoritative</td></tr>
205 <tr><td><tt>HTTP_NOT_FOUND</tt> </td><td>URI was not found</td></tr>
206 <tr><td><tt>HTTP_NOT_IMPLEMENTED</tt> </td><td>Feature not implemented</td></tr>
207 <tr><td><tt>HTTP_NOT_MODIFIED</tt> </td><td>File not modified</td></tr>
208 <tr><td><tt>HTTP_NOT_SUPPORTED</tt> </td><td>HTTP version not supported</td></tr>
209 <tr><td><tt>HTTP_NO_CONTENT</tt> </td><td>Successful command, no new data</td></tr>
210 <tr><td><tt>HTTP_OK</tt> </td><td>OPTIONS/GET/HEAD/POST/TRACE command was successful</td></tr>
211 <tr><td><tt>HTTP_PARTIAL_CONTENT</tt> </td><td>Only a partial file was recieved/sent</td></tr>
212 <tr><td><tt>HTTP_PAYMENT_REQUIRED</tt> </td><td>Payment required</td></tr>
213 <tr><td><tt>HTTP_PRECONDITION</tt> </td><td>Precondition failed</td></tr>
214 <tr><td><tt>HTTP_PROXY_AUTHENTICATION</tt> </td><td>Proxy Authentication is Required</td></tr>
215 <tr><td><tt>HTTP_REQUESTED_RANGE</tt> </td><td>The requested range is not satisfiable</td></tr>
216 <tr><td><tt>HTTP_REQUEST_TIMEOUT</tt> </td><td>Request timed out</td></tr>
217 <tr><td><tt>HTTP_REQUEST_TOO_LARGE</tt> </td><td>Request entity too large</td></tr>
218 <tr><td><tt>HTTP_RESET_CONTENT</tt> </td><td>Content was reset/recreated</td></tr>
219 <tr><td><tt>HTTP_SEE_OTHER</tt> </td><td>See this other link...</td></tr>
220 <tr><td><tt>HTTP_SERVER_ERROR</tt> </td><td>Internal server error</td></tr>
221 <tr><td><tt>HTTP_SERVICE_UNAVAILABLE</tt> </td><td>Service is unavailable</td></tr>
222 <tr><td><tt>HTTP_SWITCHING_PROTOCOLS</tt> </td><td>HTTP upgrade to TLS/SSL</td></tr>
223 <tr><td><tt>HTTP_UNAUTHORIZED</tt> </td><td>Unauthorized to access host</td></tr>
224 <tr><td><tt>HTTP_UNSUPPORTED_MEDIATYPE</tt> </td><td>The requested media type is unsupported</td></tr>
225 <tr><td><tt>HTTP_UPGRADE_REQUIRED</tt> </td><td>Upgrade to SSL/TLS required</td></tr>
226 <tr><td><tt>HTTP_URI_TOO_LONG</tt> </td><td>URI too long</td></tr>
227 <tr><td><tt>HTTP_USE_PROXY</tt> </td><td>Must use a proxy to access this URI</td></tr>
228 </tbody></table></div>
229 <!-- NEW PAGE -->
230 <h3 class='title'><a name='ipp_res_e'>ipp_res_e</a></h3>
231 <h4>Description</h4>
232 <p>Types and structures...</p>
233 <h4>Values</h4>
234 <div class='table'><table align='center' border='1' width='80%'>
235 <thead><tr><th>Name</th><th>Description</th></tr></thead>
236 <tbody>
237 <tr><td><tt>IPP_RES_PER_CM</tt> </td><td>Pixels per centimeter</td></tr>
238 <tr><td><tt>IPP_RES_PER_INCH</tt> </td><td>Pixels per inch</td></tr>
239 </tbody></table></div>
240 <!-- NEW PAGE -->
241 <h3 class='title'><a name='ipp_status_e'>ipp_status_e</a></h3>
242 <h4>Description</h4>
243 <p>IPP status codes...</p>
244 <h4>Values</h4>
245 <div class='table'><table align='center' border='1' width='80%'>
246 <thead><tr><th>Name</th><th>Description</th></tr></thead>
247 <tbody>
248 <tr><td><tt>IPP_ATTRIBUTES</tt> </td><td>client-error-attributes-or-values-not-supported</td></tr>
249 <tr><td><tt>IPP_ATTRIBUTES_NOT_SETTABLE</tt> </td><td>client-error-attributes-not-settable</td></tr>
250 <tr><td><tt>IPP_BAD_REQUEST</tt> </td><td>client-error-bad-request</td></tr>
251 <tr><td><tt>IPP_CHARSET</tt> </td><td>client-error-charset-not-supported</td></tr>
252 <tr><td><tt>IPP_COMPRESSION_ERROR</tt> </td><td>client-error-compression-error</td></tr>
253 <tr><td><tt>IPP_COMPRESSION_NOT_SUPPORTED</tt> </td><td>client-error-compression-not-supported</td></tr>
254 <tr><td><tt>IPP_CONFLICT</tt> </td><td>client-error-conflicting-attributes</td></tr>
255 <tr><td><tt>IPP_DEVICE_ERROR</tt> </td><td>server-error-device-error</td></tr>
256 <tr><td><tt>IPP_DOCUMENT_ACCESS_ERROR</tt> </td><td>client-error-document-access-error</td></tr>
257 <tr><td><tt>IPP_DOCUMENT_FORMAT</tt> </td><td>client-error-document-format-not-supported</td></tr>
258 <tr><td><tt>IPP_DOCUMENT_FORMAT_ERROR</tt> </td><td>client-error-document-format-error</td></tr>
259 <tr><td><tt>IPP_ERROR_JOB_CANCELLED</tt> </td><td>server-error-job-canceled</td></tr>
260 <tr><td><tt>IPP_FORBIDDEN</tt> </td><td>client-error-forbidden</td></tr>
261 <tr><td><tt>IPP_GONE</tt> </td><td>client-error-gone</td></tr>
262 <tr><td><tt>IPP_IGNORED_ALL_NOTIFICATIONS</tt> </td><td>client-error-ignored-all-notifications</td></tr>
263 <tr><td><tt>IPP_IGNORED_ALL_SUBSCRIPTIONS</tt> </td><td>client-error-ignored-all-subscriptions</td></tr>
264 <tr><td><tt>IPP_INTERNAL_ERROR</tt> </td><td>server-error-internal-error</td></tr>
265 <tr><td><tt>IPP_MULTIPLE_JOBS_NOT_SUPPORTED</tt> </td><td>server-error-multiple-document-jobs-not-supported</td></tr>
266 <tr><td><tt>IPP_NOT_ACCEPTING</tt> </td><td>server-error-not-accepting-jobs</td></tr>
267 <tr><td><tt>IPP_NOT_AUTHENTICATED</tt> </td><td>client-error-not-authenticated</td></tr>
268 <tr><td><tt>IPP_NOT_AUTHORIZED</tt> </td><td>client-error-not-authorized</td></tr>
269 <tr><td><tt>IPP_NOT_FOUND</tt> </td><td>client-error-not-found</td></tr>
270 <tr><td><tt>IPP_NOT_POSSIBLE</tt> </td><td>client-error-not-possible</td></tr>
271 <tr><td><tt>IPP_OK</tt> </td><td>successful-ok</td></tr>
272 <tr><td><tt>IPP_OK_BUT_CANCEL_SUBSCRIPTION</tt> </td><td>successful-ok-but-cancel-subscription</td></tr>
273 <tr><td><tt>IPP_OK_CONFLICT</tt> </td><td>successful-ok-conflicting-attributes</td></tr>
274 <tr><td><tt>IPP_OK_EVENTS_COMPLETE</tt> </td><td>successful-ok-events-complete</td></tr>
275 <tr><td><tt>IPP_OK_IGNORED_NOTIFICATIONS</tt> </td><td>successful-ok-ignored-notifications</td></tr>
276 <tr><td><tt>IPP_OK_IGNORED_SUBSCRIPTIONS</tt> </td><td>successful-ok-ignored-subscriptions</td></tr>
277 <tr><td><tt>IPP_OK_SUBST</tt> </td><td>successful-ok-ignored-or-substituted-attributes</td></tr>
278 <tr><td><tt>IPP_OK_TOO_MANY_EVENTS</tt> </td><td>successful-ok-too-many-events</td></tr>
279 <tr><td><tt>IPP_OPERATION_NOT_SUPPORTED</tt> </td><td>server-error-operation-not-supported</td></tr>
280 <tr><td><tt>IPP_PRINTER_BUSY</tt> </td><td>server-error-busy</td></tr>
281 <tr><td><tt>IPP_PRINTER_IS_DEACTIVATED</tt> </td><td>server-error-printer-is-deactivated</td></tr>
282 <tr><td><tt>IPP_PRINT_SUPPORT_FILE_NOT_FOUND</tt> </td><td>client-error-print-support-file-not-found</td></tr>
283 <tr><td><tt>IPP_REDIRECTION_OTHER_SITE</tt> </td><td></td></tr>
284 <tr><td><tt>IPP_REQUEST_ENTITY</tt> </td><td>client-error-request-entity-too-large</td></tr>
285 <tr><td><tt>IPP_REQUEST_VALUE</tt> </td><td>client-error-request-value-too-long</td></tr>
286 <tr><td><tt>IPP_SERVICE_UNAVAILABLE</tt> </td><td>server-error-service-unavailable</td></tr>
287 <tr><td><tt>IPP_TEMPORARY_ERROR</tt> </td><td>server-error-temporary-error</td></tr>
288 <tr><td><tt>IPP_TIMEOUT</tt> </td><td>client-error-timeout</td></tr>
289 <tr><td><tt>IPP_TOO_MANY_SUBSCRIPTIONS</tt> </td><td>client-error-too-many-subscriptions</td></tr>
290 <tr><td><tt>IPP_URI_SCHEME</tt> </td><td>client-error-uri-scheme-not-supported</td></tr>
291 <tr><td><tt>IPP_VERSION_NOT_SUPPORTED</tt> </td><td>server-error-version-not-supported</td></tr>
292 </tbody></table></div>
293 <!-- NEW PAGE -->
294 <h3 class='title'><a name='ipp_tag_e'>ipp_tag_e</a></h3>
295 <h4>Description</h4>
296 <p>Format tags for attributes...</p>
297 <h4>Values</h4>
298 <div class='table'><table align='center' border='1' width='80%'>
299 <thead><tr><th>Name</th><th>Description</th></tr></thead>
300 <tbody>
301 <tr><td><tt>IPP_TAG_ADMINDEFINE</tt> </td><td>Admin-defined value</td></tr>
302 <tr><td><tt>IPP_TAG_BEGIN_COLLECTION</tt> </td><td>Beginning of collection value</td></tr>
303 <tr><td><tt>IPP_TAG_BOOLEAN</tt> </td><td>Boolean value</td></tr>
304 <tr><td><tt>IPP_TAG_CHARSET</tt> </td><td>Character set value</td></tr>
305 <tr><td><tt>IPP_TAG_COPY</tt> </td><td>Bitflag for copied attribute values</td></tr>
306 <tr><td><tt>IPP_TAG_DATE</tt> </td><td>Date/time value</td></tr>
307 <tr><td><tt>IPP_TAG_DEFAULT</tt> </td><td>Default value</td></tr>
308 <tr><td><tt>IPP_TAG_DELETEATTR</tt> </td><td>Delete-attribute value</td></tr>
309 <tr><td><tt>IPP_TAG_END</tt> </td><td>End-of-attributes</td></tr>
310 <tr><td><tt>IPP_TAG_END_COLLECTION</tt> </td><td>End of collection value</td></tr>
311 <tr><td><tt>IPP_TAG_ENUM</tt> </td><td>Enumeration value</td></tr>
312 <tr><td><tt>IPP_TAG_EVENT_NOTIFICATION</tt> </td><td>Event group</td></tr>
313 <tr><td><tt>IPP_TAG_INTEGER</tt> </td><td>Integer value</td></tr>
314 <tr><td><tt>IPP_TAG_JOB</tt> </td><td>Job group</td></tr>
315 <tr><td><tt>IPP_TAG_KEYWORD</tt> </td><td>Keyword value</td></tr>
316 <tr><td><tt>IPP_TAG_LANGUAGE</tt> </td><td>Language value</td></tr>
317 <tr><td><tt>IPP_TAG_MASK</tt> </td><td>Mask for copied attribute values</td></tr>
318 <tr><td><tt>IPP_TAG_MEMBERNAME</tt> </td><td>Collection member name value</td></tr>
319 <tr><td><tt>IPP_TAG_MIMETYPE</tt> </td><td>MIME media type value</td></tr>
320 <tr><td><tt>IPP_TAG_NAME</tt> </td><td>Name value</td></tr>
321 <tr><td><tt>IPP_TAG_NAMELANG</tt> </td><td>Name-with-language value</td></tr>
322 <tr><td><tt>IPP_TAG_NOTSETTABLE</tt> </td><td>Not-settable value</td></tr>
323 <tr><td><tt>IPP_TAG_NOVALUE</tt> </td><td>No-value value</td></tr>
324 <tr><td><tt>IPP_TAG_OPERATION</tt> </td><td>Operation group</td></tr>
325 <tr><td><tt>IPP_TAG_PRINTER</tt> </td><td>Printer group</td></tr>
326 <tr><td><tt>IPP_TAG_RANGE</tt> </td><td>Range value</td></tr>
327 <tr><td><tt>IPP_TAG_RESOLUTION</tt> </td><td>Resolution value</td></tr>
328 <tr><td><tt>IPP_TAG_STRING</tt> </td><td>Octet string value</td></tr>
329 <tr><td><tt>IPP_TAG_SUBSCRIPTION</tt> </td><td>Subscription group</td></tr>
330 <tr><td><tt>IPP_TAG_TEXT</tt> </td><td>Text value</td></tr>
331 <tr><td><tt>IPP_TAG_TEXTLANG</tt> </td><td>Text-with-language value</td></tr>
332 <tr><td><tt>IPP_TAG_UNKNOWN</tt> </td><td>Unknown value</td></tr>
333 <tr><td><tt>IPP_TAG_UNSUPPORTED_GROUP</tt> </td><td>Unsupported attributes group</td></tr>
334 <tr><td><tt>IPP_TAG_UNSUPPORTED_VALUE</tt> </td><td>Unsupported value</td></tr>
335 <tr><td><tt>IPP_TAG_URI</tt> </td><td>URI value</td></tr>
336 <tr><td><tt>IPP_TAG_URISCHEME</tt> </td><td>URI scheme value</td></tr>
337 <tr><td><tt>IPP_TAG_ZERO</tt> </td><td>Zero tag - used for separators</td></tr>
338 </tbody></table></div>
339 <!-- NEW PAGE -->
340 <h2 class='title'><a name='FUNCTIONS'>Functions</a></h2>
341 <ul>
342 <li><a href='#cupsDoAuthentication'><tt>cupsDoAuthentication()</tt></a> <span class='info'>&nbsp;CUPS 1.1.20&nbsp;</span></li>
343 <li><a href='#cupsDoFileRequest'><tt>cupsDoFileRequest()</tt></a> </li>
344 <li><a href='#cupsDoRequest'><tt>cupsDoRequest()</tt></a> </li>
345 <li><a href='#cupsEncodeOptions'><tt>cupsEncodeOptions()</tt></a> </li>
346 <li><a href='#cupsEncodeOptions2'><tt>cupsEncodeOptions2()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
347 <li><a href='#httpAddrAny'><tt>httpAddrAny()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
348 <li><a href='#httpAddrEqual'><tt>httpAddrEqual()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
349 <li><a href='#httpAddrLength'><tt>httpAddrLength()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
350 <li><a href='#httpAddrLocalhost'><tt>httpAddrLocalhost()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
351 <li><a href='#httpAddrLookup'><tt>httpAddrLookup()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
352 <li><a href='#httpAddrString'><tt>httpAddrString()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
353 <li><a href='#httpAssembleURI'><tt>httpAssembleURI()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
354 <li><a href='#httpAssembleURIf'><tt>httpAssembleURIf()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
355 <li><a href='#httpBlocking'><tt>httpBlocking()</tt></a> </li>
356 <li><a href='#httpCheck'><tt>httpCheck()</tt></a> </li>
357 <li><a href='#httpClearCookie'><tt>httpClearCookie()</tt></a> <span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span></li>
358 <li><a href='#httpClearFields'><tt>httpClearFields()</tt></a> </li>
359 <li><a href='#httpClose'><tt>httpClose()</tt></a> </li>
360 <li><a href='#httpConnect'><tt>httpConnect()</tt></a> </li>
361 <li><a href='#httpConnectEncrypt'><tt>httpConnectEncrypt()</tt></a> </li>
362 <li><a href='#httpDecode64'><tt>httpDecode64()</tt></a> <span class='info'>&nbsp;DEPRECATED&nbsp;</span></li>
363 <li><a href='#httpDecode64_2'><tt>httpDecode64_2()</tt></a> <span class='info'>&nbsp;CUPS 1.1.21&nbsp;</span></li>
364 <li><a href='#httpDelete'><tt>httpDelete()</tt></a> </li>
365 <li><a href='#httpEncode64'><tt>httpEncode64()</tt></a> <span class='info'>&nbsp;DEPRECATED&nbsp;</span></li>
366 <li><a href='#httpEncode64_2'><tt>httpEncode64_2()</tt></a> <span class='info'>&nbsp;CUPS 1.1.21&nbsp;</span></li>
367 <li><a href='#httpEncryption'><tt>httpEncryption()</tt></a> </li>
368 <li><a href='#httpError'><tt>httpError()</tt></a> </li>
369 <li><a href='#httpFlush'><tt>httpFlush()</tt></a> </li>
370 <li><a href='#httpFlushWrite'><tt>httpFlushWrite()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
371 <li><a href='#httpGet'><tt>httpGet()</tt></a> </li>
372 <li><a href='#httpGetBlocking'><tt>httpGetBlocking()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
373 <li><a href='#httpGetCookie'><tt>httpGetCookie()</tt></a> <span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span></li>
374 <li><a href='#httpGetDateString'><tt>httpGetDateString()</tt></a> <span class='info'>&nbsp;DEPRECATED&nbsp;</span></li>
375 <li><a href='#httpGetDateString2'><tt>httpGetDateString2()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
376 <li><a href='#httpGetDateTime'><tt>httpGetDateTime()</tt></a> </li>
377 <li><a href='#httpGetFd'><tt>httpGetFd()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
378 <li><a href='#httpGetField'><tt>httpGetField()</tt></a> </li>
379 <li><a href='#httpGetHostByName'><tt>httpGetHostByName()</tt></a> <span class='info'>&nbsp;DEPRECATED&nbsp;</span></li>
380 <li><a href='#httpGetHostname'><tt>httpGetHostname()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
381 <li><a href='#httpGetLength'><tt>httpGetLength()</tt></a> <span class='info'>&nbsp;DEPRECATED&nbsp;</span></li>
382 <li><a href='#httpGetLength2'><tt>httpGetLength2()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
383 <li><a href='#httpGetStatus'><tt>httpGetStatus()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
384 <li><a href='#httpGetSubField'><tt>httpGetSubField()</tt></a> <span class='info'>&nbsp;DEPRECATED&nbsp;</span></li>
385 <li><a href='#httpGetSubField2'><tt>httpGetSubField2()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
386 <li><a href='#httpGets'><tt>httpGets()</tt></a> </li>
387 <li><a href='#httpHead'><tt>httpHead()</tt></a> </li>
388 <li><a href='#httpInitialize'><tt>httpInitialize()</tt></a> </li>
389 <li><a href='#httpMD5'><tt>httpMD5()</tt></a> </li>
390 <li><a href='#httpMD5Final'><tt>httpMD5Final()</tt></a> </li>
391 <li><a href='#httpMD5String'><tt>httpMD5String()</tt></a> </li>
392 <li><a href='#httpOptions'><tt>httpOptions()</tt></a> </li>
393 <li><a href='#httpPost'><tt>httpPost()</tt></a> </li>
394 <li><a href='#httpPut'><tt>httpPut()</tt></a> </li>
395 <li><a href='#httpRead'><tt>httpRead()</tt></a> <span class='info'>&nbsp;DEPRECATED&nbsp;</span></li>
396 <li><a href='#httpRead2'><tt>httpRead2()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
397 <li><a href='#httpReconnect'><tt>httpReconnect()</tt></a> </li>
398 <li><a href='#httpSeparate'><tt>httpSeparate()</tt></a> <span class='info'>&nbsp;DEPRECATED&nbsp;</span></li>
399 <li><a href='#httpSeparate2'><tt>httpSeparate2()</tt></a> <span class='info'>&nbsp;CUPS 1.1.21&nbsp;</span></li>
400 <li><a href='#httpSeparateURI'><tt>httpSeparateURI()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
401 <li><a href='#httpSetCookie'><tt>httpSetCookie()</tt></a> <span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span></li>
402 <li><a href='#httpSetExpect'><tt>httpSetExpect()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
403 <li><a href='#httpSetField'><tt>httpSetField()</tt></a> </li>
404 <li><a href='#httpSetLength'><tt>httpSetLength()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
405 <li><a href='#httpStatus'><tt>httpStatus()</tt></a> </li>
406 <li><a href='#httpTrace'><tt>httpTrace()</tt></a> </li>
407 <li><a href='#httpUpdate'><tt>httpUpdate()</tt></a> </li>
408 <li><a href='#httpWait'><tt>httpWait()</tt></a> <span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span></li>
409 <li><a href='#httpWrite'><tt>httpWrite()</tt></a> <span class='info'>&nbsp;DEPRECATED&nbsp;</span></li>
410 <li><a href='#httpWrite2'><tt>httpWrite2()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
411 <li><a href='#ippAddBoolean'><tt>ippAddBoolean()</tt></a> </li>
412 <li><a href='#ippAddBooleans'><tt>ippAddBooleans()</tt></a> </li>
413 <li><a href='#ippAddCollection'><tt>ippAddCollection()</tt></a> <span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span></li>
414 <li><a href='#ippAddCollections'><tt>ippAddCollections()</tt></a> <span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span></li>
415 <li><a href='#ippAddDate'><tt>ippAddDate()</tt></a> </li>
416 <li><a href='#ippAddInteger'><tt>ippAddInteger()</tt></a> </li>
417 <li><a href='#ippAddIntegers'><tt>ippAddIntegers()</tt></a> </li>
418 <li><a href='#ippAddOctetString'><tt>ippAddOctetString()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
419 <li><a href='#ippAddRange'><tt>ippAddRange()</tt></a> </li>
420 <li><a href='#ippAddRanges'><tt>ippAddRanges()</tt></a> </li>
421 <li><a href='#ippAddResolution'><tt>ippAddResolution()</tt></a> </li>
422 <li><a href='#ippAddResolutions'><tt>ippAddResolutions()</tt></a> </li>
423 <li><a href='#ippAddSeparator'><tt>ippAddSeparator()</tt></a> </li>
424 <li><a href='#ippAddString'><tt>ippAddString()</tt></a> </li>
425 <li><a href='#ippAddStrings'><tt>ippAddStrings()</tt></a> </li>
426 <li><a href='#ippDateToTime'><tt>ippDateToTime()</tt></a> </li>
427 <li><a href='#ippDelete'><tt>ippDelete()</tt></a> </li>
428 <li><a href='#ippDeleteAttribute'><tt>ippDeleteAttribute()</tt></a> <span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span></li>
429 <li><a href='#ippErrorString'><tt>ippErrorString()</tt></a> </li>
430 <li><a href='#ippErrorValue'><tt>ippErrorValue()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
431 <li><a href='#ippFindAttribute'><tt>ippFindAttribute()</tt></a> </li>
432 <li><a href='#ippFindNextAttribute'><tt>ippFindNextAttribute()</tt></a> </li>
433 <li><a href='#ippLength'><tt>ippLength()</tt></a> </li>
434 <li><a href='#ippNew'><tt>ippNew()</tt></a> </li>
435 <li><a href='#ippNewRequest'><tt>ippNewRequest()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
436 <li><a href='#ippOpString'><tt>ippOpString()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
437 <li><a href='#ippOpValue'><tt>ippOpValue()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
438 <li><a href='#ippPort'><tt>ippPort()</tt></a> </li>
439 <li><a href='#ippRead'><tt>ippRead()</tt></a> </li>
440 <li><a href='#ippReadFile'><tt>ippReadFile()</tt></a> <span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span></li>
441 <li><a href='#ippReadIO'><tt>ippReadIO()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
442 <li><a href='#ippSetPort'><tt>ippSetPort()</tt></a> </li>
443 <li><a href='#ippTimeToDate'><tt>ippTimeToDate()</tt></a> </li>
444 <li><a href='#ippWrite'><tt>ippWrite()</tt></a> </li>
445 <li><a href='#ippWriteFile'><tt>ippWriteFile()</tt></a> <span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span></li>
446 <li><a href='#ippWriteIO'><tt>ippWriteIO()</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
447 </ul>
448 <!-- NEW PAGE -->
449 <h3 class='title'><span class='info'>&nbsp;CUPS 1.1.20&nbsp;</span><a name='cupsDoAuthentication'>cupsDoAuthentication()</a></h3>
450 <h4>Description</h4>
451 <p>Authenticate a request.
452
453 This function should be called in response to a HTTP_UNAUTHORIZED
454 status, prior to resubmitting your request.
455
456 </p>
457 <h4>Syntax</h4>
458 <pre>
459 int
460 cupsDoAuthentication(
461 <a href='#http_t'>http_t</a> * http,
462 const char * method,
463 const char * resource);
464 </pre>
465 <h4>Arguments</h4>
466 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
467 <thead><tr><th>Name</th><th>Description</th></tr></thead>
468 <tbody>
469 <tr><td><tt>http</tt></td><td>HTTP connection to server</td></tr>
470 <tr><td><tt>method</tt></td><td>Request method (GET, POST, PUT)</td></tr>
471 <tr><td><tt>resource</tt></td><td>Resource path</td></tr>
472 </tbody></table></div>
473 <h4>Returns</h4>
474 <p>0 on success, -1 on error</p>
475 <!-- NEW PAGE -->
476 <h3 class='title'><a name='cupsDoFileRequest'>cupsDoFileRequest()</a></h3>
477 <h4>Description</h4>
478 <p>Do an IPP request with a file.
479
480 This function sends the IPP request to the specified server, retrying
481 and authenticating as necessary. The request is freed with ippDelete()
482 after receiving a valid IPP response.</p>
483 <h4>Syntax</h4>
484 <pre>
485 <a href='#ipp_t'>ipp_t</a> *
486 cupsDoFileRequest(
487 <a href='#http_t'>http_t</a> * http,
488 <a href='#ipp_t'>ipp_t</a> * request,
489 const char * resource,
490 const char * filename);
491 </pre>
492 <h4>Arguments</h4>
493 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
494 <thead><tr><th>Name</th><th>Description</th></tr></thead>
495 <tbody>
496 <tr><td><tt>http</tt></td><td>HTTP connection to server</td></tr>
497 <tr><td><tt>request</tt></td><td>IPP request</td></tr>
498 <tr><td><tt>resource</tt></td><td>HTTP resource for POST</td></tr>
499 <tr><td><tt>filename</tt></td><td>File to send or NULL for none</td></tr>
500 </tbody></table></div>
501 <h4>Returns</h4>
502 <p>Response data</p>
503 <!-- NEW PAGE -->
504 <h3 class='title'><a name='cupsDoRequest'>cupsDoRequest()</a></h3>
505 <h4>Description</h4>
506 <p>Do an IPP request.
507
508 This function sends the IPP request to the specified server, retrying
509 and authenticating as necessary. The request is freed with ippDelete()
510 after receiving a valid IPP response.</p>
511 <h4>Syntax</h4>
512 <pre>
513 <a href='#ipp_t'>ipp_t</a> *
514 cupsDoRequest(
515 <a href='#http_t'>http_t</a> * http,
516 <a href='#ipp_t'>ipp_t</a> * request,
517 const char * resource);
518 </pre>
519 <h4>Arguments</h4>
520 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
521 <thead><tr><th>Name</th><th>Description</th></tr></thead>
522 <tbody>
523 <tr><td><tt>http</tt></td><td>HTTP connection to server</td></tr>
524 <tr><td><tt>request</tt></td><td>IPP request</td></tr>
525 <tr><td><tt>resource</tt></td><td>HTTP resource for POST</td></tr>
526 </tbody></table></div>
527 <h4>Returns</h4>
528 <p>Response data</p>
529 <!-- NEW PAGE -->
530 <h3 class='title'><a name='cupsEncodeOptions'>cupsEncodeOptions()</a></h3>
531 <h4>Description</h4>
532 <p>Encode printer options into IPP attributes.
533
534 This function adds operation, job, and then subscription attributes,
535 in that order. Use the cupsEncodeOptions2() function to add attributes
536 for a single group.</p>
537 <h4>Syntax</h4>
538 <pre>
539 void
540 cupsEncodeOptions(
541 <a href='#ipp_t'>ipp_t</a> * ipp,
542 int num_options,
543 cups_option_t * options);
544 </pre>
545 <h4>Arguments</h4>
546 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
547 <thead><tr><th>Name</th><th>Description</th></tr></thead>
548 <tbody>
549 <tr><td><tt>ipp</tt></td><td>Request to add to</td></tr>
550 <tr><td><tt>num_options</tt></td><td>Number of options</td></tr>
551 <tr><td><tt>options</tt></td><td>Options</td></tr>
552 </tbody></table></div>
553 <h4>Returns</h4>
554 <p>Nothing.</p>
555 <!-- NEW PAGE -->
556 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='cupsEncodeOptions2'>cupsEncodeOptions2()</a></h3>
557 <h4>Description</h4>
558 <p>Encode printer options into IPP attributes for a group.
559
560 This function only adds attributes for a single group. Call this
561 function multiple times for each group, or use cupsEncodeOptions()
562 to add the standard groups.
563
564 </p>
565 <h4>Syntax</h4>
566 <pre>
567 void
568 cupsEncodeOptions2(
569 <a href='#ipp_t'>ipp_t</a> * ipp,
570 int num_options,
571 cups_option_t * options,
572 ipp_tag_t group_tag);
573 </pre>
574 <h4>Arguments</h4>
575 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
576 <thead><tr><th>Name</th><th>Description</th></tr></thead>
577 <tbody>
578 <tr><td><tt>ipp</tt></td><td>Request to add to</td></tr>
579 <tr><td><tt>num_options</tt></td><td>Number of options</td></tr>
580 <tr><td><tt>options</tt></td><td>Options</td></tr>
581 <tr><td><tt>group_tag</tt></td><td>Group to encode</td></tr>
582 </tbody></table></div>
583 <h4>Returns</h4>
584 <p>Nothing.</p>
585 <!-- NEW PAGE -->
586 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='httpAddrAny'>httpAddrAny()</a></h3>
587 <h4>Description</h4>
588 <p>Check for the &quot;any&quot; address.
589
590 </p>
591 <h4>Syntax</h4>
592 <pre>
593 int
594 httpAddrAny(
595 const <a href='#http_addr_t'>http_addr_t</a> * addr);
596 </pre>
597 <h4>Arguments</h4>
598 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
599 <thead><tr><th>Name</th><th>Description</th></tr></thead>
600 <tbody>
601 <tr><td><tt>addr</tt></td><td>Address to check</td></tr>
602 </tbody></table></div>
603 <h4>Returns</h4>
604 <p>1 if &quot;any&quot;, 0 otherwise</p>
605 <!-- NEW PAGE -->
606 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='httpAddrEqual'>httpAddrEqual()</a></h3>
607 <h4>Description</h4>
608 <p>Compare two addresses.
609
610 </p>
611 <h4>Syntax</h4>
612 <pre>
613 int
614 httpAddrEqual(
615 const <a href='#http_addr_t'>http_addr_t</a> * addr1,
616 const <a href='#http_addr_t'>http_addr_t</a> * addr2);
617 </pre>
618 <h4>Arguments</h4>
619 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
620 <thead><tr><th>Name</th><th>Description</th></tr></thead>
621 <tbody>
622 <tr><td><tt>addr1</tt></td><td>First address</td></tr>
623 <tr><td><tt>addr2</tt></td><td>Second address</td></tr>
624 </tbody></table></div>
625 <h4>Returns</h4>
626 <p>1 if equal, 0 if not</p>
627 <!-- NEW PAGE -->
628 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='httpAddrLength'>httpAddrLength()</a></h3>
629 <h4>Description</h4>
630 <p>Return the length of the address in bytes.
631
632 </p>
633 <h4>Syntax</h4>
634 <pre>
635 int
636 httpAddrLength(
637 const <a href='#http_addr_t'>http_addr_t</a> * addr);
638 </pre>
639 <h4>Arguments</h4>
640 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
641 <thead><tr><th>Name</th><th>Description</th></tr></thead>
642 <tbody>
643 <tr><td><tt>addr</tt></td><td>Address</td></tr>
644 </tbody></table></div>
645 <h4>Returns</h4>
646 <p>Length in bytes</p>
647 <!-- NEW PAGE -->
648 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='httpAddrLocalhost'>httpAddrLocalhost()</a></h3>
649 <h4>Description</h4>
650 <p>Check for the local loopback address.
651
652 </p>
653 <h4>Syntax</h4>
654 <pre>
655 int
656 httpAddrLocalhost(
657 const <a href='#http_addr_t'>http_addr_t</a> * addr);
658 </pre>
659 <h4>Arguments</h4>
660 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
661 <thead><tr><th>Name</th><th>Description</th></tr></thead>
662 <tbody>
663 <tr><td><tt>addr</tt></td><td>Address to check</td></tr>
664 </tbody></table></div>
665 <h4>Returns</h4>
666 <p>1 if local host, 0 otherwise</p>
667 <!-- NEW PAGE -->
668 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='httpAddrLookup'>httpAddrLookup()</a></h3>
669 <h4>Description</h4>
670 <p>Lookup the hostname associated with the address.
671
672 </p>
673 <h4>Syntax</h4>
674 <pre>
675 char *
676 httpAddrLookup(
677 const <a href='#http_addr_t'>http_addr_t</a> * addr,
678 char * name,
679 int namelen);
680 </pre>
681 <h4>Arguments</h4>
682 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
683 <thead><tr><th>Name</th><th>Description</th></tr></thead>
684 <tbody>
685 <tr><td><tt>addr</tt></td><td>Address to lookup</td></tr>
686 <tr><td><tt>name</tt></td><td>Host name buffer</td></tr>
687 <tr><td><tt>namelen</tt></td><td>Size of name buffer</td></tr>
688 </tbody></table></div>
689 <h4>Returns</h4>
690 <p>Host name</p>
691 <!-- NEW PAGE -->
692 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='httpAddrString'>httpAddrString()</a></h3>
693 <h4>Description</h4>
694 <p>Convert an address to a numeric string.
695
696 </p>
697 <h4>Syntax</h4>
698 <pre>
699 char *
700 httpAddrString(
701 const <a href='#http_addr_t'>http_addr_t</a> * addr,
702 char * s,
703 int slen);
704 </pre>
705 <h4>Arguments</h4>
706 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
707 <thead><tr><th>Name</th><th>Description</th></tr></thead>
708 <tbody>
709 <tr><td><tt>addr</tt></td><td>Address to convert</td></tr>
710 <tr><td><tt>s</tt></td><td>String buffer</td></tr>
711 <tr><td><tt>slen</tt></td><td>Length of string</td></tr>
712 </tbody></table></div>
713 <h4>Returns</h4>
714 <p>Numeric address string</p>
715 <!-- NEW PAGE -->
716 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='httpAssembleURI'>httpAssembleURI()</a></h3>
717 <h4>Description</h4>
718 <p>Assemble a uniform resource identifier from its
719 components.
720
721 This function escapes reserved characters in the URI depending on the
722 value of the &quot;encoding&quot; argument. You should use this function in
723 place of traditional string functions whenever you need to create a
724 URI string.
725
726 </p>
727 <h4>Syntax</h4>
728 <pre>
729 http_uri_status_t
730 httpAssembleURI(
731 http_uri_coding_t encoding,
732 char * uri,
733 int urilen,
734 const char * scheme,
735 const char * username,
736 const char * host,
737 int port,
738 const char * resource);
739 </pre>
740 <h4>Arguments</h4>
741 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
742 <thead><tr><th>Name</th><th>Description</th></tr></thead>
743 <tbody>
744 <tr><td><tt>encoding</tt></td><td>Encoding flags</td></tr>
745 <tr><td><tt>uri</tt></td><td>URI buffer</td></tr>
746 <tr><td><tt>urilen</tt></td><td>Size of URI buffer</td></tr>
747 <tr><td><tt>scheme</tt></td><td>Scheme name</td></tr>
748 <tr><td><tt>username</tt></td><td>Username</td></tr>
749 <tr><td><tt>host</tt></td><td>Hostname or address</td></tr>
750 <tr><td><tt>port</tt></td><td>Port number</td></tr>
751 <tr><td><tt>resource</tt></td><td>Resource</td></tr>
752 </tbody></table></div>
753 <h4>Returns</h4>
754 <p>URI status</p>
755 <!-- NEW PAGE -->
756 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='httpAssembleURIf'>httpAssembleURIf()</a></h3>
757 <h4>Description</h4>
758 <p>Assemble a uniform resource identifier from its
759 components with a formatted resource.
760
761 This function creates a formatted version of the resource string
762 argument &quot;resourcef&quot; and escapes reserved characters in the URI
763 depending on the value of the &quot;encoding&quot; argument. You should use
764 this function in place of traditional string functions whenever
765 you need to create a URI string.
766
767 </p>
768 <h4>Syntax</h4>
769 <pre>
770 http_uri_status_t
771 httpAssembleURIf(
772 http_uri_coding_t encoding,
773 char * uri,
774 int urilen,
775 const char * scheme,
776 const char * username,
777 const char * host,
778 int port,
779 const char * resourcef,
780 ...);
781 </pre>
782 <h4>Arguments</h4>
783 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
784 <thead><tr><th>Name</th><th>Description</th></tr></thead>
785 <tbody>
786 <tr><td><tt>encoding</tt></td><td>Encoding flags</td></tr>
787 <tr><td><tt>uri</tt></td><td>URI buffer</td></tr>
788 <tr><td><tt>urilen</tt></td><td>Size of URI buffer</td></tr>
789 <tr><td><tt>scheme</tt></td><td>Scheme name</td></tr>
790 <tr><td><tt>username</tt></td><td>Username</td></tr>
791 <tr><td><tt>host</tt></td><td>Hostname or address</td></tr>
792 <tr><td><tt>port</tt></td><td>Port number</td></tr>
793 <tr><td><tt>resourcef</tt></td><td>Printf-style resource</td></tr>
794 <tr><td><tt>...</tt></td><td>Additional arguments as needed</td></tr>
795 </tbody></table></div>
796 <h4>Returns</h4>
797 <p>URI status</p>
798 <!-- NEW PAGE -->
799 <h3 class='title'><a name='httpBlocking'>httpBlocking()</a></h3>
800 <h4>Description</h4>
801 <p>Set blocking/non-blocking behavior on a connection.</p>
802 <h4>Syntax</h4>
803 <pre>
804 void
805 httpBlocking(
806 <a href='#http_t'>http_t</a> * http,
807 int b);
808 </pre>
809 <h4>Arguments</h4>
810 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
811 <thead><tr><th>Name</th><th>Description</th></tr></thead>
812 <tbody>
813 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
814 <tr><td><tt>b</tt></td><td>1 = blocking, 0 = non-blocking</td></tr>
815 </tbody></table></div>
816 <h4>Returns</h4>
817 <p>Nothing.</p>
818 <!-- NEW PAGE -->
819 <h3 class='title'><a name='httpCheck'>httpCheck()</a></h3>
820 <h4>Description</h4>
821 <p>Check to see if there is a pending response from the server.</p>
822 <h4>Syntax</h4>
823 <pre>
824 int
825 httpCheck(
826 <a href='#http_t'>http_t</a> * http);
827 </pre>
828 <h4>Arguments</h4>
829 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
830 <thead><tr><th>Name</th><th>Description</th></tr></thead>
831 <tbody>
832 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
833 </tbody></table></div>
834 <h4>Returns</h4>
835 <p>0 = no data, 1 = data available</p>
836 <!-- NEW PAGE -->
837 <h3 class='title'><span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span><a name='httpClearCookie'>httpClearCookie()</a></h3>
838 <h4>Description</h4>
839 <p>Clear the cookie value(s).
840
841 </p>
842 <h4>Syntax</h4>
843 <pre>
844 void
845 httpClearCookie(
846 <a href='#http_t'>http_t</a> * http);
847 </pre>
848 <h4>Arguments</h4>
849 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
850 <thead><tr><th>Name</th><th>Description</th></tr></thead>
851 <tbody>
852 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
853 </tbody></table></div>
854 <h4>Returns</h4>
855 <p>Nothing.</p>
856 <!-- NEW PAGE -->
857 <h3 class='title'><a name='httpClearFields'>httpClearFields()</a></h3>
858 <h4>Description</h4>
859 <p>Clear HTTP request fields.</p>
860 <h4>Syntax</h4>
861 <pre>
862 void
863 httpClearFields(
864 <a href='#http_t'>http_t</a> * http);
865 </pre>
866 <h4>Arguments</h4>
867 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
868 <thead><tr><th>Name</th><th>Description</th></tr></thead>
869 <tbody>
870 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
871 </tbody></table></div>
872 <h4>Returns</h4>
873 <p>Nothing.</p>
874 <!-- NEW PAGE -->
875 <h3 class='title'><a name='httpClose'>httpClose()</a></h3>
876 <h4>Description</h4>
877 <p>Close an HTTP connection...</p>
878 <h4>Syntax</h4>
879 <pre>
880 void
881 httpClose(
882 <a href='#http_t'>http_t</a> * http);
883 </pre>
884 <h4>Arguments</h4>
885 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
886 <thead><tr><th>Name</th><th>Description</th></tr></thead>
887 <tbody>
888 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
889 </tbody></table></div>
890 <h4>Returns</h4>
891 <p>Nothing.</p>
892 <!-- NEW PAGE -->
893 <h3 class='title'><a name='httpConnect'>httpConnect()</a></h3>
894 <h4>Description</h4>
895 <p>Connect to a HTTP server.</p>
896 <h4>Syntax</h4>
897 <pre>
898 <a href='#http_t'>http_t</a> *
899 httpConnect(
900 const char * host,
901 int port);
902 </pre>
903 <h4>Arguments</h4>
904 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
905 <thead><tr><th>Name</th><th>Description</th></tr></thead>
906 <tbody>
907 <tr><td><tt>host</tt></td><td>Host to connect to</td></tr>
908 <tr><td><tt>port</tt></td><td>Port number</td></tr>
909 </tbody></table></div>
910 <h4>Returns</h4>
911 <p>New HTTP connection</p>
912 <!-- NEW PAGE -->
913 <h3 class='title'><a name='httpConnectEncrypt'>httpConnectEncrypt()</a></h3>
914 <h4>Description</h4>
915 <p>Connect to a HTTP server using encryption.</p>
916 <h4>Syntax</h4>
917 <pre>
918 <a href='#http_t'>http_t</a> *
919 httpConnectEncrypt(
920 const char * host,
921 int port,
922 <a href='#http_encryption_t'>http_encryption_t</a> encryption);
923 </pre>
924 <h4>Arguments</h4>
925 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
926 <thead><tr><th>Name</th><th>Description</th></tr></thead>
927 <tbody>
928 <tr><td><tt>host</tt></td><td>Host to connect to</td></tr>
929 <tr><td><tt>port</tt></td><td>Port number</td></tr>
930 <tr><td><tt>encryption</tt></td><td>Type of encryption to use</td></tr>
931 </tbody></table></div>
932 <h4>Returns</h4>
933 <p>New HTTP connection</p>
934 <!-- NEW PAGE -->
935 <h3 class='title'><span class='info'>&nbsp;DEPRECATED&nbsp;</span><a name='httpDecode64'>httpDecode64()</a></h3>
936 <h4>Description</h4>
937 <p>Base64-decode a string.
938
939 This function is deprecated. Use the httpDecode64_2() function instead
940 which provides buffer length arguments.
941
942 </p>
943 <h4>Syntax</h4>
944 <pre>
945 char *
946 httpDecode64(
947 char * out,
948 const char * in);
949 </pre>
950 <h4>Arguments</h4>
951 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
952 <thead><tr><th>Name</th><th>Description</th></tr></thead>
953 <tbody>
954 <tr><td><tt>out</tt></td><td>String to write to</td></tr>
955 <tr><td><tt>in</tt></td><td>String to read from</td></tr>
956 </tbody></table></div>
957 <h4>Returns</h4>
958 <p>Decoded string</p>
959 <!-- NEW PAGE -->
960 <h3 class='title'><span class='info'>&nbsp;CUPS 1.1.21&nbsp;</span><a name='httpDecode64_2'>httpDecode64_2()</a></h3>
961 <h4>Description</h4>
962 <p>Base64-decode a string.
963
964 </p>
965 <h4>Syntax</h4>
966 <pre>
967 char *
968 httpDecode64_2(
969 char * out,
970 int * outlen,
971 const char * in);
972 </pre>
973 <h4>Arguments</h4>
974 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
975 <thead><tr><th>Name</th><th>Description</th></tr></thead>
976 <tbody>
977 <tr><td><tt>out</tt></td><td>String to write to</td></tr>
978 <tr><td><tt>outlen</tt></td><td>Size of output string</td></tr>
979 <tr><td><tt>in</tt></td><td>String to read from</td></tr>
980 </tbody></table></div>
981 <h4>Returns</h4>
982 <p>Decoded string</p>
983 <!-- NEW PAGE -->
984 <h3 class='title'><a name='httpDelete'>httpDelete()</a></h3>
985 <h4>Description</h4>
986 <p>Send a DELETE request to the server.</p>
987 <h4>Syntax</h4>
988 <pre>
989 int
990 httpDelete(
991 <a href='#http_t'>http_t</a> * http,
992 const char * uri);
993 </pre>
994 <h4>Arguments</h4>
995 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
996 <thead><tr><th>Name</th><th>Description</th></tr></thead>
997 <tbody>
998 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
999 <tr><td><tt>uri</tt></td><td>URI to delete</td></tr>
1000 </tbody></table></div>
1001 <h4>Returns</h4>
1002 <p>Status of call (0 = success)</p>
1003 <!-- NEW PAGE -->
1004 <h3 class='title'><span class='info'>&nbsp;DEPRECATED&nbsp;</span><a name='httpEncode64'>httpEncode64()</a></h3>
1005 <h4>Description</h4>
1006 <p>Base64-encode a string.
1007
1008 This function is deprecated. Use the httpEncode64_2() function instead
1009 which provides buffer length arguments.
1010
1011 </p>
1012 <h4>Syntax</h4>
1013 <pre>
1014 char *
1015 httpEncode64(
1016 char * out,
1017 const char * in);
1018 </pre>
1019 <h4>Arguments</h4>
1020 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
1021 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1022 <tbody>
1023 <tr><td><tt>out</tt></td><td>String to write to</td></tr>
1024 <tr><td><tt>in</tt></td><td>String to read from</td></tr>
1025 </tbody></table></div>
1026 <h4>Returns</h4>
1027 <p>Encoded string</p>
1028 <!-- NEW PAGE -->
1029 <h3 class='title'><span class='info'>&nbsp;CUPS 1.1.21&nbsp;</span><a name='httpEncode64_2'>httpEncode64_2()</a></h3>
1030 <h4>Description</h4>
1031 <p>Base64-encode a string.
1032
1033 </p>
1034 <h4>Syntax</h4>
1035 <pre>
1036 char *
1037 httpEncode64_2(
1038 char * out,
1039 int outlen,
1040 const char * in,
1041 int inlen);
1042 </pre>
1043 <h4>Arguments</h4>
1044 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
1045 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1046 <tbody>
1047 <tr><td><tt>out</tt></td><td>String to write to</td></tr>
1048 <tr><td><tt>outlen</tt></td><td>Size of output string</td></tr>
1049 <tr><td><tt>in</tt></td><td>String to read from</td></tr>
1050 <tr><td><tt>inlen</tt></td><td>Size of input string</td></tr>
1051 </tbody></table></div>
1052 <h4>Returns</h4>
1053 <p>Encoded string</p>
1054 <!-- NEW PAGE -->
1055 <h3 class='title'><a name='httpEncryption'>httpEncryption()</a></h3>
1056 <h4>Description</h4>
1057 <p>Set the required encryption on the link.</p>
1058 <h4>Syntax</h4>
1059 <pre>
1060 int
1061 httpEncryption(
1062 <a href='#http_t'>http_t</a> * http,
1063 <a href='#http_encryption_t'>http_encryption_t</a> e);
1064 </pre>
1065 <h4>Arguments</h4>
1066 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
1067 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1068 <tbody>
1069 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
1070 <tr><td><tt>e</tt></td><td>New encryption preference</td></tr>
1071 </tbody></table></div>
1072 <h4>Returns</h4>
1073 <p>-1 on error, 0 on success</p>
1074 <!-- NEW PAGE -->
1075 <h3 class='title'><a name='httpError'>httpError()</a></h3>
1076 <h4>Description</h4>
1077 <p>Get the last error on a connection.</p>
1078 <h4>Syntax</h4>
1079 <pre>
1080 int
1081 httpError(
1082 <a href='#http_t'>http_t</a> * http);
1083 </pre>
1084 <h4>Arguments</h4>
1085 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
1086 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1087 <tbody>
1088 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
1089 </tbody></table></div>
1090 <h4>Returns</h4>
1091 <p>Error code (errno) value</p>
1092 <!-- NEW PAGE -->
1093 <h3 class='title'><a name='httpFlush'>httpFlush()</a></h3>
1094 <h4>Description</h4>
1095 <p>Flush data from a HTTP connection.</p>
1096 <h4>Syntax</h4>
1097 <pre>
1098 void
1099 httpFlush(
1100 <a href='#http_t'>http_t</a> * http);
1101 </pre>
1102 <h4>Arguments</h4>
1103 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
1104 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1105 <tbody>
1106 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
1107 </tbody></table></div>
1108 <h4>Returns</h4>
1109 <p>Nothing.</p>
1110 <!-- NEW PAGE -->
1111 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='httpFlushWrite'>httpFlushWrite()</a></h3>
1112 <h4>Description</h4>
1113 <p>Flush data in write buffer.
1114
1115 </p>
1116 <h4>Syntax</h4>
1117 <pre>
1118 int
1119 httpFlushWrite(
1120 <a href='#http_t'>http_t</a> * http);
1121 </pre>
1122 <h4>Arguments</h4>
1123 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
1124 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1125 <tbody>
1126 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
1127 </tbody></table></div>
1128 <h4>Returns</h4>
1129 <p>Bytes written or -1 on error</p>
1130 <!-- NEW PAGE -->
1131 <h3 class='title'><a name='httpGet'>httpGet()</a></h3>
1132 <h4>Description</h4>
1133 <p>Send a GET request to the server.</p>
1134 <h4>Syntax</h4>
1135 <pre>
1136 int
1137 httpGet(
1138 <a href='#http_t'>http_t</a> * http,
1139 const char * uri);
1140 </pre>
1141 <h4>Arguments</h4>
1142 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
1143 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1144 <tbody>
1145 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
1146 <tr><td><tt>uri</tt></td><td>URI to get</td></tr>
1147 </tbody></table></div>
1148 <h4>Returns</h4>
1149 <p>Status of call (0 = success)</p>
1150 <!-- NEW PAGE -->
1151 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='httpGetBlocking'>httpGetBlocking()</a></h3>
1152 <h4>Description</h4>
1153 <p>Get the blocking/non-block state of a connection.
1154
1155 </p>
1156 <h4>Syntax</h4>
1157 <pre>
1158 int
1159 httpGetBlocking(
1160 <a href='#http_t'>http_t</a> * http);
1161 </pre>
1162 <h4>Arguments</h4>
1163 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
1164 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1165 <tbody>
1166 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
1167 </tbody></table></div>
1168 <h4>Returns</h4>
1169 <p>1 if blocking, 0 if non-blocking</p>
1170 <!-- NEW PAGE -->
1171 <h3 class='title'><span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span><a name='httpGetCookie'>httpGetCookie()</a></h3>
1172 <h4>Description</h4>
1173 <p>Get any cookie data from the response.
1174
1175 </p>
1176 <h4>Syntax</h4>
1177 <pre>
1178 const char *
1179 httpGetCookie(
1180 <a href='#http_t'>http_t</a> * http);
1181 </pre>
1182 <h4>Arguments</h4>
1183 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
1184 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1185 <tbody>
1186 <tr><td><tt>http</tt></td><td>HTTP connecion</td></tr>
1187 </tbody></table></div>
1188 <h4>Returns</h4>
1189 <p>Cookie data or NULL</p>
1190 <!-- NEW PAGE -->
1191 <h3 class='title'><span class='info'>&nbsp;DEPRECATED&nbsp;</span><a name='httpGetDateString'>httpGetDateString()</a></h3>
1192 <h4>Description</h4>
1193 <p>Get a formatted date/time string from a time value.
1194
1195 </p>
1196 <h4>Syntax</h4>
1197 <pre>
1198 const char *
1199 httpGetDateString(
1200 time_t t);
1201 </pre>
1202 <h4>Arguments</h4>
1203 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
1204 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1205 <tbody>
1206 <tr><td><tt>t</tt></td><td>UNIX time</td></tr>
1207 </tbody></table></div>
1208 <h4>Returns</h4>
1209 <p>Date/time string</p>
1210 <!-- NEW PAGE -->
1211 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='httpGetDateString2'>httpGetDateString2()</a></h3>
1212 <h4>Description</h4>
1213 <p>Get a formatted date/time string from a time value.
1214
1215 </p>
1216 <h4>Syntax</h4>
1217 <pre>
1218 const char *
1219 httpGetDateString2(
1220 time_t t,
1221 char * s,
1222 int slen);
1223 </pre>
1224 <h4>Arguments</h4>
1225 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
1226 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1227 <tbody>
1228 <tr><td><tt>t</tt></td><td>UNIX time</td></tr>
1229 <tr><td><tt>s</tt></td><td>String buffer</td></tr>
1230 <tr><td><tt>slen</tt></td><td>Size of string buffer</td></tr>
1231 </tbody></table></div>
1232 <h4>Returns</h4>
1233 <p>Date/time string</p>
1234 <!-- NEW PAGE -->
1235 <h3 class='title'><a name='httpGetDateTime'>httpGetDateTime()</a></h3>
1236 <h4>Description</h4>
1237 <p>Get a time value from a formatted date/time string.</p>
1238 <h4>Syntax</h4>
1239 <pre>
1240 time_t
1241 httpGetDateTime(
1242 const char * s);
1243 </pre>
1244 <h4>Arguments</h4>
1245 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
1246 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1247 <tbody>
1248 <tr><td><tt>s</tt></td><td>Date/time string</td></tr>
1249 </tbody></table></div>
1250 <h4>Returns</h4>
1251 <p>UNIX time</p>
1252 <!-- NEW PAGE -->
1253 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='httpGetFd'>httpGetFd()</a></h3>
1254 <h4>Description</h4>
1255 <p>Get the file descriptor associated with a connection.
1256
1257 </p>
1258 <h4>Syntax</h4>
1259 <pre>
1260 int
1261 httpGetFd(
1262 <a href='#http_t'>http_t</a> * http);
1263 </pre>
1264 <h4>Arguments</h4>
1265 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
1266 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1267 <tbody>
1268 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
1269 </tbody></table></div>
1270 <h4>Returns</h4>
1271 <p>File descriptor or -1 if none</p>
1272 <!-- NEW PAGE -->
1273 <h3 class='title'><a name='httpGetField'>httpGetField()</a></h3>
1274 <h4>Description</h4>
1275 <p>Get a field value from a request/response.</p>
1276 <h4>Syntax</h4>
1277 <pre>
1278 const char *
1279 httpGetField(
1280 <a href='#http_t'>http_t</a> * http,
1281 http_field_t field);
1282 </pre>
1283 <h4>Arguments</h4>
1284 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
1285 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1286 <tbody>
1287 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
1288 <tr><td><tt>field</tt></td><td>Field to get</td></tr>
1289 </tbody></table></div>
1290 <h4>Returns</h4>
1291 <p>Field value</p>
1292 <!-- NEW PAGE -->
1293 <h3 class='title'><span class='info'>&nbsp;DEPRECATED&nbsp;</span><a name='httpGetHostByName'>httpGetHostByName()</a></h3>
1294 <h4>Description</h4>
1295 <p>Lookup a hostname or IPv4 address, and return
1296 address records for the specified name.
1297
1298 </p>
1299 <h4>Syntax</h4>
1300 <pre>
1301 struct hostent *
1302 httpGetHostByName(
1303 const char * name);
1304 </pre>
1305 <h4>Arguments</h4>
1306 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
1307 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1308 <tbody>
1309 <tr><td><tt>name</tt></td><td>Hostname or IP address</td></tr>
1310 </tbody></table></div>
1311 <h4>Returns</h4>
1312 <p>Host entry</p>
1313 <!-- NEW PAGE -->
1314 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='httpGetHostname'>httpGetHostname()</a></h3>
1315 <h4>Description</h4>
1316 <p>Get the FQDN for the connection or local system.
1317
1318 When &quot;http&quot; points to a connected socket, return the hostname or
1319 address that was used in the call to httpConnect() or httpConnectEncrypt().
1320 Otherwise, return the FQDN for the local system using both gethostname()
1321 and gethostbyname() to get the local hostname with domain.
1322
1323 </p>
1324 <h4>Syntax</h4>
1325 <pre>
1326 const char *
1327 httpGetHostname(
1328 <a href='#http_t'>http_t</a> * http,
1329 char * s,
1330 int slen);
1331 </pre>
1332 <h4>Arguments</h4>
1333 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
1334 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1335 <tbody>
1336 <tr><td><tt>http</tt></td><td>HTTP connection or NULL</td></tr>
1337 <tr><td><tt>s</tt></td><td>String buffer for name</td></tr>
1338 <tr><td><tt>slen</tt></td><td>Size of buffer</td></tr>
1339 </tbody></table></div>
1340 <h4>Returns</h4>
1341 <p>FQDN for connection or system</p>
1342 <!-- NEW PAGE -->
1343 <h3 class='title'><span class='info'>&nbsp;DEPRECATED&nbsp;</span><a name='httpGetLength'>httpGetLength()</a></h3>
1344 <h4>Description</h4>
1345 <p>Get the amount of data remaining from the
1346 content-length or transfer-encoding fields.
1347
1348 This function is deprecated and will not return lengths larger than
1349 2^31 - 1; use httpGetLength2() instead.
1350
1351 </p>
1352 <h4>Syntax</h4>
1353 <pre>
1354 int
1355 httpGetLength(
1356 <a href='#http_t'>http_t</a> * http);
1357 </pre>
1358 <h4>Arguments</h4>
1359 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
1360 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1361 <tbody>
1362 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
1363 </tbody></table></div>
1364 <h4>Returns</h4>
1365 <p>Content length</p>
1366 <!-- NEW PAGE -->
1367 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='httpGetLength2'>httpGetLength2()</a></h3>
1368 <h4>Description</h4>
1369 <p>Get the amount of data remaining from the
1370 content-length or transfer-encoding fields.
1371
1372 This function returns the complete content length, even for
1373 content larger than 2^31 - 1.
1374
1375 </p>
1376 <h4>Syntax</h4>
1377 <pre>
1378 off_t
1379 httpGetLength2(
1380 <a href='#http_t'>http_t</a> * http);
1381 </pre>
1382 <h4>Arguments</h4>
1383 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
1384 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1385 <tbody>
1386 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
1387 </tbody></table></div>
1388 <h4>Returns</h4>
1389 <p>Content length</p>
1390 <!-- NEW PAGE -->
1391 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='httpGetStatus'>httpGetStatus()</a></h3>
1392 <h4>Description</h4>
1393 <p>Get the status of the last HTTP request.
1394
1395 </p>
1396 <h4>Syntax</h4>
1397 <pre>
1398 http_status_t
1399 httpGetStatus(
1400 <a href='#http_t'>http_t</a> * http);
1401 </pre>
1402 <h4>Arguments</h4>
1403 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
1404 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1405 <tbody>
1406 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
1407 </tbody></table></div>
1408 <h4>Returns</h4>
1409 <p>HTTP status</p>
1410 <!-- NEW PAGE -->
1411 <h3 class='title'><span class='info'>&nbsp;DEPRECATED&nbsp;</span><a name='httpGetSubField'>httpGetSubField()</a></h3>
1412 <h4>Description</h4>
1413 <p>Get a sub-field value.
1414
1415 </p>
1416 <h4>Syntax</h4>
1417 <pre>
1418 char *
1419 httpGetSubField(
1420 <a href='#http_t'>http_t</a> * http,
1421 http_field_t field,
1422 const char * name,
1423 char * value);
1424 </pre>
1425 <h4>Arguments</h4>
1426 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
1427 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1428 <tbody>
1429 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
1430 <tr><td><tt>field</tt></td><td>Field index</td></tr>
1431 <tr><td><tt>name</tt></td><td>Name of sub-field</td></tr>
1432 <tr><td><tt>value</tt></td><td>Value string</td></tr>
1433 </tbody></table></div>
1434 <h4>Returns</h4>
1435 <p>Value or NULL</p>
1436 <!-- NEW PAGE -->
1437 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='httpGetSubField2'>httpGetSubField2()</a></h3>
1438 <h4>Description</h4>
1439 <p>Get a sub-field value.
1440
1441 </p>
1442 <h4>Syntax</h4>
1443 <pre>
1444 char *
1445 httpGetSubField2(
1446 <a href='#http_t'>http_t</a> * http,
1447 http_field_t field,
1448 const char * name,
1449 char * value,
1450 int valuelen);
1451 </pre>
1452 <h4>Arguments</h4>
1453 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
1454 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1455 <tbody>
1456 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
1457 <tr><td><tt>field</tt></td><td>Field index</td></tr>
1458 <tr><td><tt>name</tt></td><td>Name of sub-field</td></tr>
1459 <tr><td><tt>value</tt></td><td>Value string</td></tr>
1460 <tr><td><tt>valuelen</tt></td><td>Size of value buffer</td></tr>
1461 </tbody></table></div>
1462 <h4>Returns</h4>
1463 <p>Value or NULL</p>
1464 <!-- NEW PAGE -->
1465 <h3 class='title'><a name='httpGets'>httpGets()</a></h3>
1466 <h4>Description</h4>
1467 <p>Get a line of text from a HTTP connection.</p>
1468 <h4>Syntax</h4>
1469 <pre>
1470 char *
1471 httpGets(
1472 char * line,
1473 int length,
1474 <a href='#http_t'>http_t</a> * http);
1475 </pre>
1476 <h4>Arguments</h4>
1477 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
1478 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1479 <tbody>
1480 <tr><td><tt>line</tt></td><td>Line to read into</td></tr>
1481 <tr><td><tt>length</tt></td><td>Max length of buffer</td></tr>
1482 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
1483 </tbody></table></div>
1484 <h4>Returns</h4>
1485 <p>Line or NULL</p>
1486 <!-- NEW PAGE -->
1487 <h3 class='title'><a name='httpHead'>httpHead()</a></h3>
1488 <h4>Description</h4>
1489 <p>Send a HEAD request to the server.</p>
1490 <h4>Syntax</h4>
1491 <pre>
1492 int
1493 httpHead(
1494 <a href='#http_t'>http_t</a> * http,
1495 const char * uri);
1496 </pre>
1497 <h4>Arguments</h4>
1498 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
1499 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1500 <tbody>
1501 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
1502 <tr><td><tt>uri</tt></td><td>URI for head</td></tr>
1503 </tbody></table></div>
1504 <h4>Returns</h4>
1505 <p>Status of call (0 = success)</p>
1506 <!-- NEW PAGE -->
1507 <h3 class='title'><a name='httpInitialize'>httpInitialize()</a></h3>
1508 <h4>Description</h4>
1509 <p>Initialize the HTTP interface library and set the
1510 default HTTP proxy (if any).</p>
1511 <h4>Syntax</h4>
1512 <pre>
1513 void
1514 httpInitialize(void);
1515 </pre>
1516 <h4>Arguments</h4>
1517 <p>None.</p>
1518 <h4>Returns</h4>
1519 <p>Nothing.</p>
1520 <!-- NEW PAGE -->
1521 <h3 class='title'><a name='httpMD5'>httpMD5()</a></h3>
1522 <h4>Description</h4>
1523 <p>Compute the MD5 sum of the username:group:password.</p>
1524 <h4>Syntax</h4>
1525 <pre>
1526 char *
1527 httpMD5(
1528 const char * username,
1529 const char * realm,
1530 const char * passwd,
1531 char md5[33]);
1532 </pre>
1533 <h4>Arguments</h4>
1534 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
1535 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1536 <tbody>
1537 <tr><td><tt>username</tt></td><td>User name</td></tr>
1538 <tr><td><tt>realm</tt></td><td>Realm name</td></tr>
1539 <tr><td><tt>passwd</tt></td><td>Password string</td></tr>
1540 <tr><td><tt>md5[33]</tt></td><td>MD5 string</td></tr>
1541 </tbody></table></div>
1542 <h4>Returns</h4>
1543 <p>MD5 sum</p>
1544 <!-- NEW PAGE -->
1545 <h3 class='title'><a name='httpMD5Final'>httpMD5Final()</a></h3>
1546 <h4>Description</h4>
1547 <p>Combine the MD5 sum of the username, group, and password
1548 with the server-supplied nonce value, method, and
1549 request-uri.</p>
1550 <h4>Syntax</h4>
1551 <pre>
1552 char *
1553 httpMD5Final(
1554 const char * nonce,
1555 const char * method,
1556 const char * resource,
1557 char md5[33]);
1558 </pre>
1559 <h4>Arguments</h4>
1560 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
1561 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1562 <tbody>
1563 <tr><td><tt>nonce</tt></td><td>Server nonce value</td></tr>
1564 <tr><td><tt>method</tt></td><td>METHOD (GET, POST, etc.)</td></tr>
1565 <tr><td><tt>resource</tt></td><td>Resource path</td></tr>
1566 <tr><td><tt>md5[33]</tt></td><td>MD5 sum</td></tr>
1567 </tbody></table></div>
1568 <h4>Returns</h4>
1569 <p>New sum</p>
1570 <!-- NEW PAGE -->
1571 <h3 class='title'><a name='httpMD5String'>httpMD5String()</a></h3>
1572 <h4>Description</h4>
1573 <p>Convert an MD5 sum to a character string.</p>
1574 <h4>Syntax</h4>
1575 <pre>
1576 char *
1577 httpMD5String(
1578 const unsigned char * sum,
1579 char md5[33]);
1580 </pre>
1581 <h4>Arguments</h4>
1582 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
1583 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1584 <tbody>
1585 <tr><td><tt>sum</tt></td><td>MD5 sum data</td></tr>
1586 <tr><td><tt>md5[33]</tt></td><td>MD5 sum in hex</td></tr>
1587 </tbody></table></div>
1588 <h4>Returns</h4>
1589 <p>MD5 sum in hex</p>
1590 <!-- NEW PAGE -->
1591 <h3 class='title'><a name='httpOptions'>httpOptions()</a></h3>
1592 <h4>Description</h4>
1593 <p>Send an OPTIONS request to the server.</p>
1594 <h4>Syntax</h4>
1595 <pre>
1596 int
1597 httpOptions(
1598 <a href='#http_t'>http_t</a> * http,
1599 const char * uri);
1600 </pre>
1601 <h4>Arguments</h4>
1602 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
1603 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1604 <tbody>
1605 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
1606 <tr><td><tt>uri</tt></td><td>URI for options</td></tr>
1607 </tbody></table></div>
1608 <h4>Returns</h4>
1609 <p>Status of call (0 = success)</p>
1610 <!-- NEW PAGE -->
1611 <h3 class='title'><a name='httpPost'>httpPost()</a></h3>
1612 <h4>Description</h4>
1613 <p>Send a POST request to the server.</p>
1614 <h4>Syntax</h4>
1615 <pre>
1616 int
1617 httpPost(
1618 <a href='#http_t'>http_t</a> * http,
1619 const char * uri);
1620 </pre>
1621 <h4>Arguments</h4>
1622 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
1623 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1624 <tbody>
1625 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
1626 <tr><td><tt>uri</tt></td><td>URI for post</td></tr>
1627 </tbody></table></div>
1628 <h4>Returns</h4>
1629 <p>Status of call (0 = success)</p>
1630 <!-- NEW PAGE -->
1631 <h3 class='title'><a name='httpPut'>httpPut()</a></h3>
1632 <h4>Description</h4>
1633 <p>Send a PUT request to the server.</p>
1634 <h4>Syntax</h4>
1635 <pre>
1636 int
1637 httpPut(
1638 <a href='#http_t'>http_t</a> * http,
1639 const char * uri);
1640 </pre>
1641 <h4>Arguments</h4>
1642 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
1643 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1644 <tbody>
1645 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
1646 <tr><td><tt>uri</tt></td><td>URI to put</td></tr>
1647 </tbody></table></div>
1648 <h4>Returns</h4>
1649 <p>Status of call (0 = success)</p>
1650 <!-- NEW PAGE -->
1651 <h3 class='title'><span class='info'>&nbsp;DEPRECATED&nbsp;</span><a name='httpRead'>httpRead()</a></h3>
1652 <h4>Description</h4>
1653 <p>Read data from a HTTP connection.
1654
1655 This function is deprecated. Use the httpRead2() function which can
1656 read more than 2GB of data.
1657
1658 </p>
1659 <h4>Syntax</h4>
1660 <pre>
1661 int
1662 httpRead(
1663 <a href='#http_t'>http_t</a> * http,
1664 char * buffer,
1665 int length);
1666 </pre>
1667 <h4>Arguments</h4>
1668 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
1669 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1670 <tbody>
1671 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
1672 <tr><td><tt>buffer</tt></td><td>Buffer for data</td></tr>
1673 <tr><td><tt>length</tt></td><td>Maximum number of bytes</td></tr>
1674 </tbody></table></div>
1675 <h4>Returns</h4>
1676 <p>Number of bytes read</p>
1677 <!-- NEW PAGE -->
1678 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='httpRead2'>httpRead2()</a></h3>
1679 <h4>Description</h4>
1680 <p>Read data from a HTTP connection.
1681
1682 </p>
1683 <h4>Syntax</h4>
1684 <pre>
1685 ssize_t
1686 httpRead2(
1687 <a href='#http_t'>http_t</a> * http,
1688 char * buffer,
1689 size_t length);
1690 </pre>
1691 <h4>Arguments</h4>
1692 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
1693 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1694 <tbody>
1695 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
1696 <tr><td><tt>buffer</tt></td><td>Buffer for data</td></tr>
1697 <tr><td><tt>length</tt></td><td>Maximum number of bytes</td></tr>
1698 </tbody></table></div>
1699 <h4>Returns</h4>
1700 <p>Number of bytes read</p>
1701 <!-- NEW PAGE -->
1702 <h3 class='title'><a name='httpReconnect'>httpReconnect()</a></h3>
1703 <h4>Description</h4>
1704 <p>Reconnect to a HTTP server.</p>
1705 <h4>Syntax</h4>
1706 <pre>
1707 int
1708 httpReconnect(
1709 <a href='#http_t'>http_t</a> * http);
1710 </pre>
1711 <h4>Arguments</h4>
1712 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
1713 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1714 <tbody>
1715 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
1716 </tbody></table></div>
1717 <h4>Returns</h4>
1718 <p>0 on success, non-zero on failure</p>
1719 <!-- NEW PAGE -->
1720 <h3 class='title'><span class='info'>&nbsp;DEPRECATED&nbsp;</span><a name='httpSeparate'>httpSeparate()</a></h3>
1721 <h4>Description</h4>
1722 <p>Separate a Universal Resource Identifier into its
1723 components.
1724
1725 This function is deprecated; use the httpSeparateURI() function instead.
1726
1727 </p>
1728 <h4>Syntax</h4>
1729 <pre>
1730 void
1731 httpSeparate(
1732 const char * uri,
1733 char * scheme,
1734 char * username,
1735 char * host,
1736 int * port,
1737 char * resource);
1738 </pre>
1739 <h4>Arguments</h4>
1740 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
1741 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1742 <tbody>
1743 <tr><td><tt>uri</tt></td><td>Universal Resource Identifier</td></tr>
1744 <tr><td><tt>scheme</tt></td><td>Scheme [32] (http, https, etc.)</td></tr>
1745 <tr><td><tt>username</tt></td><td>Username [1024]</td></tr>
1746 <tr><td><tt>host</tt></td><td>Hostname [1024]</td></tr>
1747 <tr><td><tt>port</tt></td><td>Port number to use</td></tr>
1748 <tr><td><tt>resource</tt></td><td>Resource/filename [1024]</td></tr>
1749 </tbody></table></div>
1750 <h4>Returns</h4>
1751 <p>Nothing.</p>
1752 <!-- NEW PAGE -->
1753 <h3 class='title'><span class='info'>&nbsp;CUPS 1.1.21&nbsp;</span><a name='httpSeparate2'>httpSeparate2()</a></h3>
1754 <h4>Description</h4>
1755 <p>Separate a Universal Resource Identifier into its
1756 components.
1757
1758 This function is deprecated; use the httpSeparateURI() function instead.
1759
1760
1761 </p>
1762 <h4>Syntax</h4>
1763 <pre>
1764 void
1765 httpSeparate2(
1766 const char * uri,
1767 char * scheme,
1768 int schemelen,
1769 char * username,
1770 int usernamelen,
1771 char * host,
1772 int hostlen,
1773 int * port,
1774 char * resource,
1775 int resourcelen);
1776 </pre>
1777 <h4>Arguments</h4>
1778 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
1779 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1780 <tbody>
1781 <tr><td><tt>uri</tt></td><td>Universal Resource Identifier</td></tr>
1782 <tr><td><tt>scheme</tt></td><td>Scheme (http, https, etc.)</td></tr>
1783 <tr><td><tt>schemelen</tt></td><td>Size of scheme buffer</td></tr>
1784 <tr><td><tt>username</tt></td><td>Username</td></tr>
1785 <tr><td><tt>usernamelen</tt></td><td>Size of username buffer</td></tr>
1786 <tr><td><tt>host</tt></td><td>Hostname</td></tr>
1787 <tr><td><tt>hostlen</tt></td><td>Size of hostname buffer</td></tr>
1788 <tr><td><tt>port</tt></td><td>Port number to use</td></tr>
1789 <tr><td><tt>resource</tt></td><td>Resource/filename</td></tr>
1790 <tr><td><tt>resourcelen</tt></td><td>Size of resource buffer</td></tr>
1791 </tbody></table></div>
1792 <h4>Returns</h4>
1793 <p>Nothing.</p>
1794 <!-- NEW PAGE -->
1795 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='httpSeparateURI'>httpSeparateURI()</a></h3>
1796 <h4>Description</h4>
1797 <p>Separate a Universal Resource Identifier into its
1798 components.
1799
1800 </p>
1801 <h4>Syntax</h4>
1802 <pre>
1803 http_uri_status_t
1804 httpSeparateURI(
1805 http_uri_coding_t decoding,
1806 const char * uri,
1807 char * scheme,
1808 int schemelen,
1809 char * username,
1810 int usernamelen,
1811 char * host,
1812 int hostlen,
1813 int * port,
1814 char * resource,
1815 int resourcelen);
1816 </pre>
1817 <h4>Arguments</h4>
1818 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
1819 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1820 <tbody>
1821 <tr><td><tt>decoding</tt></td><td>Decoding flags</td></tr>
1822 <tr><td><tt>uri</tt></td><td>Universal Resource Identifier</td></tr>
1823 <tr><td><tt>scheme</tt></td><td>Scheme (http, https, etc.)</td></tr>
1824 <tr><td><tt>schemelen</tt></td><td>Size of scheme buffer</td></tr>
1825 <tr><td><tt>username</tt></td><td>Username</td></tr>
1826 <tr><td><tt>usernamelen</tt></td><td>Size of username buffer</td></tr>
1827 <tr><td><tt>host</tt></td><td>Hostname</td></tr>
1828 <tr><td><tt>hostlen</tt></td><td>Size of hostname buffer</td></tr>
1829 <tr><td><tt>port</tt></td><td>Port number to use</td></tr>
1830 <tr><td><tt>resource</tt></td><td>Resource/filename</td></tr>
1831 <tr><td><tt>resourcelen</tt></td><td>Size of resource buffer</td></tr>
1832 </tbody></table></div>
1833 <h4>Returns</h4>
1834 <p>Result of separation</p>
1835 <!-- NEW PAGE -->
1836 <h3 class='title'><span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span><a name='httpSetCookie'>httpSetCookie()</a></h3>
1837 <h4>Description</h4>
1838 <p>Set the cookie value(s)...
1839
1840 </p>
1841 <h4>Syntax</h4>
1842 <pre>
1843 void
1844 httpSetCookie(
1845 <a href='#http_t'>http_t</a> * http,
1846 const char * cookie);
1847 </pre>
1848 <h4>Arguments</h4>
1849 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
1850 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1851 <tbody>
1852 <tr><td><tt>http</tt></td><td>Connection</td></tr>
1853 <tr><td><tt>cookie</tt></td><td>Cookie string</td></tr>
1854 </tbody></table></div>
1855 <h4>Returns</h4>
1856 <p>Nothing.</p>
1857 <!-- NEW PAGE -->
1858 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='httpSetExpect'>httpSetExpect()</a></h3>
1859 <h4>Description</h4>
1860 <p>Set the Expect: header in a request.
1861
1862 Currently only HTTP_CONTINUE is supported for the &quot;expect&quot; argument.
1863
1864 </p>
1865 <h4>Syntax</h4>
1866 <pre>
1867 void
1868 httpSetExpect(
1869 <a href='#http_t'>http_t</a> * http,
1870 http_status_t expect);
1871 </pre>
1872 <h4>Arguments</h4>
1873 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
1874 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1875 <tbody>
1876 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
1877 <tr><td><tt>expect</tt></td><td>HTTP status to expect (HTTP_CONTINUE)</td></tr>
1878 </tbody></table></div>
1879 <h4>Returns</h4>
1880 <p>Nothing.</p>
1881 <!-- NEW PAGE -->
1882 <h3 class='title'><a name='httpSetField'>httpSetField()</a></h3>
1883 <h4>Description</h4>
1884 <p>Set the value of an HTTP header.</p>
1885 <h4>Syntax</h4>
1886 <pre>
1887 void
1888 httpSetField(
1889 <a href='#http_t'>http_t</a> * http,
1890 http_field_t field,
1891 const char * value);
1892 </pre>
1893 <h4>Arguments</h4>
1894 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
1895 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1896 <tbody>
1897 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
1898 <tr><td><tt>field</tt></td><td>Field index</td></tr>
1899 <tr><td><tt>value</tt></td><td>Value</td></tr>
1900 </tbody></table></div>
1901 <h4>Returns</h4>
1902 <p>Nothing.</p>
1903 <!-- NEW PAGE -->
1904 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='httpSetLength'>httpSetLength()</a></h3>
1905 <h4>Description</h4>
1906 <p>Set the content-length and content-encoding.
1907
1908 </p>
1909 <h4>Syntax</h4>
1910 <pre>
1911 void
1912 httpSetLength(
1913 <a href='#http_t'>http_t</a> * http,
1914 size_t length);
1915 </pre>
1916 <h4>Arguments</h4>
1917 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
1918 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1919 <tbody>
1920 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
1921 <tr><td><tt>length</tt></td><td>Length (0 for chunked)</td></tr>
1922 </tbody></table></div>
1923 <h4>Returns</h4>
1924 <p>Nothing.</p>
1925 <!-- NEW PAGE -->
1926 <h3 class='title'><a name='httpStatus'>httpStatus()</a></h3>
1927 <h4>Description</h4>
1928 <p>Return a short string describing a HTTP status code.</p>
1929 <h4>Syntax</h4>
1930 <pre>
1931 const char *
1932 httpStatus(
1933 http_status_t status);
1934 </pre>
1935 <h4>Arguments</h4>
1936 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
1937 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1938 <tbody>
1939 <tr><td><tt>status</tt></td><td>HTTP status code</td></tr>
1940 </tbody></table></div>
1941 <h4>Returns</h4>
1942 <p>String or NULL</p>
1943 <!-- NEW PAGE -->
1944 <h3 class='title'><a name='httpTrace'>httpTrace()</a></h3>
1945 <h4>Description</h4>
1946 <p>Send an TRACE request to the server.</p>
1947 <h4>Syntax</h4>
1948 <pre>
1949 int
1950 httpTrace(
1951 <a href='#http_t'>http_t</a> * http,
1952 const char * uri);
1953 </pre>
1954 <h4>Arguments</h4>
1955 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
1956 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1957 <tbody>
1958 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
1959 <tr><td><tt>uri</tt></td><td>URI for trace</td></tr>
1960 </tbody></table></div>
1961 <h4>Returns</h4>
1962 <p>Status of call (0 = success)</p>
1963 <!-- NEW PAGE -->
1964 <h3 class='title'><a name='httpUpdate'>httpUpdate()</a></h3>
1965 <h4>Description</h4>
1966 <p>Update the current HTTP state for incoming data.</p>
1967 <h4>Syntax</h4>
1968 <pre>
1969 http_status_t
1970 httpUpdate(
1971 <a href='#http_t'>http_t</a> * http);
1972 </pre>
1973 <h4>Arguments</h4>
1974 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
1975 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1976 <tbody>
1977 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
1978 </tbody></table></div>
1979 <h4>Returns</h4>
1980 <p>HTTP status</p>
1981 <!-- NEW PAGE -->
1982 <h3 class='title'><span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span><a name='httpWait'>httpWait()</a></h3>
1983 <h4>Description</h4>
1984 <p>Wait for data available on a connection.
1985
1986 </p>
1987 <h4>Syntax</h4>
1988 <pre>
1989 int
1990 httpWait(
1991 <a href='#http_t'>http_t</a> * http,
1992 int msec);
1993 </pre>
1994 <h4>Arguments</h4>
1995 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
1996 <thead><tr><th>Name</th><th>Description</th></tr></thead>
1997 <tbody>
1998 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
1999 <tr><td><tt>msec</tt></td><td>Milliseconds to wait</td></tr>
2000 </tbody></table></div>
2001 <h4>Returns</h4>
2002 <p>1 if data is available, 0 otherwise</p>
2003 <!-- NEW PAGE -->
2004 <h3 class='title'><span class='info'>&nbsp;DEPRECATED&nbsp;</span><a name='httpWrite'>httpWrite()</a></h3>
2005 <h4>Description</h4>
2006 <p>Write data to a HTTP connection.
2007
2008 This function is deprecated. Use the httpWrite2() function which can
2009 write more than 2GB of data.
2010
2011 </p>
2012 <h4>Syntax</h4>
2013 <pre>
2014 int
2015 httpWrite(
2016 <a href='#http_t'>http_t</a> * http,
2017 const char * buffer,
2018 int length);
2019 </pre>
2020 <h4>Arguments</h4>
2021 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
2022 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2023 <tbody>
2024 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
2025 <tr><td><tt>buffer</tt></td><td>Buffer for data</td></tr>
2026 <tr><td><tt>length</tt></td><td>Number of bytes to write</td></tr>
2027 </tbody></table></div>
2028 <h4>Returns</h4>
2029 <p>Number of bytes written</p>
2030 <!-- NEW PAGE -->
2031 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='httpWrite2'>httpWrite2()</a></h3>
2032 <h4>Description</h4>
2033 <p>Write data to a HTTP connection.
2034
2035 </p>
2036 <h4>Syntax</h4>
2037 <pre>
2038 ssize_t
2039 httpWrite2(
2040 <a href='#http_t'>http_t</a> * http,
2041 const char * buffer,
2042 size_t length);
2043 </pre>
2044 <h4>Arguments</h4>
2045 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
2046 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2047 <tbody>
2048 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
2049 <tr><td><tt>buffer</tt></td><td>Buffer for data</td></tr>
2050 <tr><td><tt>length</tt></td><td>Number of bytes to write</td></tr>
2051 </tbody></table></div>
2052 <h4>Returns</h4>
2053 <p>Number of bytes written</p>
2054 <!-- NEW PAGE -->
2055 <h3 class='title'><a name='ippAddBoolean'>ippAddBoolean()</a></h3>
2056 <h4>Description</h4>
2057 <p>Add a boolean attribute to an IPP message.</p>
2058 <h4>Syntax</h4>
2059 <pre>
2060 <a href='#ipp_attribute_t'>ipp_attribute_t</a> *
2061 ippAddBoolean(
2062 <a href='#ipp_t'>ipp_t</a> * ipp,
2063 ipp_tag_t group,
2064 const char * name,
2065 char value);
2066 </pre>
2067 <h4>Arguments</h4>
2068 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
2069 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2070 <tbody>
2071 <tr><td><tt>ipp</tt></td><td>IPP message</td></tr>
2072 <tr><td><tt>group</tt></td><td>IPP group</td></tr>
2073 <tr><td><tt>name</tt></td><td>Name of attribute</td></tr>
2074 <tr><td><tt>value</tt></td><td>Value of attribute</td></tr>
2075 </tbody></table></div>
2076 <h4>Returns</h4>
2077 <p>New attribute</p>
2078 <!-- NEW PAGE -->
2079 <h3 class='title'><a name='ippAddBooleans'>ippAddBooleans()</a></h3>
2080 <h4>Description</h4>
2081 <p>Add an array of boolean values.</p>
2082 <h4>Syntax</h4>
2083 <pre>
2084 <a href='#ipp_attribute_t'>ipp_attribute_t</a> *
2085 ippAddBooleans(
2086 <a href='#ipp_t'>ipp_t</a> * ipp,
2087 ipp_tag_t group,
2088 const char * name,
2089 int num_values,
2090 const char * values);
2091 </pre>
2092 <h4>Arguments</h4>
2093 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
2094 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2095 <tbody>
2096 <tr><td><tt>ipp</tt></td><td>IPP message</td></tr>
2097 <tr><td><tt>group</tt></td><td>IPP group</td></tr>
2098 <tr><td><tt>name</tt></td><td>Name of attribute</td></tr>
2099 <tr><td><tt>num_values</tt></td><td>Number of values</td></tr>
2100 <tr><td><tt>values</tt></td><td>Values</td></tr>
2101 </tbody></table></div>
2102 <h4>Returns</h4>
2103 <p>New attribute</p>
2104 <!-- NEW PAGE -->
2105 <h3 class='title'><span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span><a name='ippAddCollection'>ippAddCollection()</a></h3>
2106 <h4>Description</h4>
2107 <p>Add a collection value.
2108
2109 </p>
2110 <h4>Syntax</h4>
2111 <pre>
2112 <a href='#ipp_attribute_t'>ipp_attribute_t</a> *
2113 ippAddCollection(
2114 <a href='#ipp_t'>ipp_t</a> * ipp,
2115 ipp_tag_t group,
2116 const char * name,
2117 <a href='#ipp_t'>ipp_t</a> * value);
2118 </pre>
2119 <h4>Arguments</h4>
2120 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
2121 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2122 <tbody>
2123 <tr><td><tt>ipp</tt></td><td>IPP message</td></tr>
2124 <tr><td><tt>group</tt></td><td>IPP group</td></tr>
2125 <tr><td><tt>name</tt></td><td>Name of attribute</td></tr>
2126 <tr><td><tt>value</tt></td><td>Value</td></tr>
2127 </tbody></table></div>
2128 <h4>Returns</h4>
2129 <p>New attribute</p>
2130 <!-- NEW PAGE -->
2131 <h3 class='title'><span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span><a name='ippAddCollections'>ippAddCollections()</a></h3>
2132 <h4>Description</h4>
2133 <p>Add an array of collection values.
2134
2135 </p>
2136 <h4>Syntax</h4>
2137 <pre>
2138 <a href='#ipp_attribute_t'>ipp_attribute_t</a> *
2139 ippAddCollections(
2140 <a href='#ipp_t'>ipp_t</a> * ipp,
2141 ipp_tag_t group,
2142 const char * name,
2143 int num_values,
2144 const <a href='#ipp_t'>ipp_t</a> ** values);
2145 </pre>
2146 <h4>Arguments</h4>
2147 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
2148 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2149 <tbody>
2150 <tr><td><tt>ipp</tt></td><td>IPP message</td></tr>
2151 <tr><td><tt>group</tt></td><td>IPP group</td></tr>
2152 <tr><td><tt>name</tt></td><td>Name of attribute</td></tr>
2153 <tr><td><tt>num_values</tt></td><td>Number of values</td></tr>
2154 <tr><td><tt>values</tt></td><td>Values</td></tr>
2155 </tbody></table></div>
2156 <h4>Returns</h4>
2157 <p>New attribute</p>
2158 <!-- NEW PAGE -->
2159 <h3 class='title'><a name='ippAddDate'>ippAddDate()</a></h3>
2160 <h4>Description</h4>
2161 <p>Add a date attribute to an IPP message.</p>
2162 <h4>Syntax</h4>
2163 <pre>
2164 <a href='#ipp_attribute_t'>ipp_attribute_t</a> *
2165 ippAddDate(
2166 <a href='#ipp_t'>ipp_t</a> * ipp,
2167 ipp_tag_t group,
2168 const char * name,
2169 const <a href='#ipp_uchar_t'>ipp_uchar_t</a> * value);
2170 </pre>
2171 <h4>Arguments</h4>
2172 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
2173 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2174 <tbody>
2175 <tr><td><tt>ipp</tt></td><td>IPP message</td></tr>
2176 <tr><td><tt>group</tt></td><td>IPP group</td></tr>
2177 <tr><td><tt>name</tt></td><td>Name of attribute</td></tr>
2178 <tr><td><tt>value</tt></td><td>Value</td></tr>
2179 </tbody></table></div>
2180 <h4>Returns</h4>
2181 <p>New attribute</p>
2182 <!-- NEW PAGE -->
2183 <h3 class='title'><a name='ippAddInteger'>ippAddInteger()</a></h3>
2184 <h4>Description</h4>
2185 <p>Add a integer attribute to an IPP message.</p>
2186 <h4>Syntax</h4>
2187 <pre>
2188 <a href='#ipp_attribute_t'>ipp_attribute_t</a> *
2189 ippAddInteger(
2190 <a href='#ipp_t'>ipp_t</a> * ipp,
2191 ipp_tag_t group,
2192 ipp_tag_t type,
2193 const char * name,
2194 int value);
2195 </pre>
2196 <h4>Arguments</h4>
2197 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
2198 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2199 <tbody>
2200 <tr><td><tt>ipp</tt></td><td>IPP message</td></tr>
2201 <tr><td><tt>group</tt></td><td>IPP group</td></tr>
2202 <tr><td><tt>type</tt></td><td>Type of attribute</td></tr>
2203 <tr><td><tt>name</tt></td><td>Name of attribute</td></tr>
2204 <tr><td><tt>value</tt></td><td>Value of attribute</td></tr>
2205 </tbody></table></div>
2206 <h4>Returns</h4>
2207 <p>New attribute</p>
2208 <!-- NEW PAGE -->
2209 <h3 class='title'><a name='ippAddIntegers'>ippAddIntegers()</a></h3>
2210 <h4>Description</h4>
2211 <p>Add an array of integer values.</p>
2212 <h4>Syntax</h4>
2213 <pre>
2214 <a href='#ipp_attribute_t'>ipp_attribute_t</a> *
2215 ippAddIntegers(
2216 <a href='#ipp_t'>ipp_t</a> * ipp,
2217 ipp_tag_t group,
2218 ipp_tag_t type,
2219 const char * name,
2220 int num_values,
2221 const int * values);
2222 </pre>
2223 <h4>Arguments</h4>
2224 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
2225 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2226 <tbody>
2227 <tr><td><tt>ipp</tt></td><td>IPP message</td></tr>
2228 <tr><td><tt>group</tt></td><td>IPP group</td></tr>
2229 <tr><td><tt>type</tt></td><td>Type of attribute</td></tr>
2230 <tr><td><tt>name</tt></td><td>Name of attribute</td></tr>
2231 <tr><td><tt>num_values</tt></td><td>Number of values</td></tr>
2232 <tr><td><tt>values</tt></td><td>Values</td></tr>
2233 </tbody></table></div>
2234 <h4>Returns</h4>
2235 <p>New attribute</p>
2236 <!-- NEW PAGE -->
2237 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='ippAddOctetString'>ippAddOctetString()</a></h3>
2238 <h4>Description</h4>
2239 <p>Add an octetString value to an IPP message.
2240
2241 </p>
2242 <h4>Syntax</h4>
2243 <pre>
2244 <a href='#ipp_attribute_t'>ipp_attribute_t</a> *
2245 ippAddOctetString(
2246 <a href='#ipp_t'>ipp_t</a> * ipp,
2247 ipp_tag_t group,
2248 const char * name,
2249 const void * data,
2250 int datalen);
2251 </pre>
2252 <h4>Arguments</h4>
2253 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
2254 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2255 <tbody>
2256 <tr><td><tt>ipp</tt></td><td>IPP message</td></tr>
2257 <tr><td><tt>group</tt></td><td>IPP group</td></tr>
2258 <tr><td><tt>name</tt></td><td>Name of attribute</td></tr>
2259 <tr><td><tt>data</tt></td><td>octetString data</td></tr>
2260 <tr><td><tt>datalen</tt></td><td>Length of data in bytes</td></tr>
2261 </tbody></table></div>
2262 <h4>Returns</h4>
2263 <p>New attribute</p>
2264 <!-- NEW PAGE -->
2265 <h3 class='title'><a name='ippAddRange'>ippAddRange()</a></h3>
2266 <h4>Description</h4>
2267 <p>Add a range of values to an IPP message.</p>
2268 <h4>Syntax</h4>
2269 <pre>
2270 <a href='#ipp_attribute_t'>ipp_attribute_t</a> *
2271 ippAddRange(
2272 <a href='#ipp_t'>ipp_t</a> * ipp,
2273 ipp_tag_t group,
2274 const char * name,
2275 int lower,
2276 int upper);
2277 </pre>
2278 <h4>Arguments</h4>
2279 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
2280 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2281 <tbody>
2282 <tr><td><tt>ipp</tt></td><td>IPP message</td></tr>
2283 <tr><td><tt>group</tt></td><td>IPP group</td></tr>
2284 <tr><td><tt>name</tt></td><td>Name of attribute</td></tr>
2285 <tr><td><tt>lower</tt></td><td>Lower value</td></tr>
2286 <tr><td><tt>upper</tt></td><td>Upper value</td></tr>
2287 </tbody></table></div>
2288 <h4>Returns</h4>
2289 <p>New attribute</p>
2290 <!-- NEW PAGE -->
2291 <h3 class='title'><a name='ippAddRanges'>ippAddRanges()</a></h3>
2292 <h4>Description</h4>
2293 <p>Add ranges of values to an IPP message.</p>
2294 <h4>Syntax</h4>
2295 <pre>
2296 <a href='#ipp_attribute_t'>ipp_attribute_t</a> *
2297 ippAddRanges(
2298 <a href='#ipp_t'>ipp_t</a> * ipp,
2299 ipp_tag_t group,
2300 const char * name,
2301 int num_values,
2302 const int * lower,
2303 const int * upper);
2304 </pre>
2305 <h4>Arguments</h4>
2306 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
2307 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2308 <tbody>
2309 <tr><td><tt>ipp</tt></td><td>IPP message</td></tr>
2310 <tr><td><tt>group</tt></td><td>IPP group</td></tr>
2311 <tr><td><tt>name</tt></td><td>Name of attribute</td></tr>
2312 <tr><td><tt>num_values</tt></td><td>Number of values</td></tr>
2313 <tr><td><tt>lower</tt></td><td>Lower values</td></tr>
2314 <tr><td><tt>upper</tt></td><td>Upper values</td></tr>
2315 </tbody></table></div>
2316 <h4>Returns</h4>
2317 <p>New attribute</p>
2318 <!-- NEW PAGE -->
2319 <h3 class='title'><a name='ippAddResolution'>ippAddResolution()</a></h3>
2320 <h4>Description</h4>
2321 <p>Add a resolution value to an IPP message.</p>
2322 <h4>Syntax</h4>
2323 <pre>
2324 <a href='#ipp_attribute_t'>ipp_attribute_t</a> *
2325 ippAddResolution(
2326 <a href='#ipp_t'>ipp_t</a> * ipp,
2327 ipp_tag_t group,
2328 const char * name,
2329 ipp_res_t units,
2330 int xres,
2331 int yres);
2332 </pre>
2333 <h4>Arguments</h4>
2334 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
2335 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2336 <tbody>
2337 <tr><td><tt>ipp</tt></td><td>IPP message</td></tr>
2338 <tr><td><tt>group</tt></td><td>IPP group</td></tr>
2339 <tr><td><tt>name</tt></td><td>Name of attribute</td></tr>
2340 <tr><td><tt>units</tt></td><td>Units for resolution</td></tr>
2341 <tr><td><tt>xres</tt></td><td>X resolution</td></tr>
2342 <tr><td><tt>yres</tt></td><td>Y resolution</td></tr>
2343 </tbody></table></div>
2344 <h4>Returns</h4>
2345 <p>New attribute</p>
2346 <!-- NEW PAGE -->
2347 <h3 class='title'><a name='ippAddResolutions'>ippAddResolutions()</a></h3>
2348 <h4>Description</h4>
2349 <p>Add resolution values to an IPP message.</p>
2350 <h4>Syntax</h4>
2351 <pre>
2352 <a href='#ipp_attribute_t'>ipp_attribute_t</a> *
2353 ippAddResolutions(
2354 <a href='#ipp_t'>ipp_t</a> * ipp,
2355 ipp_tag_t group,
2356 const char * name,
2357 int num_values,
2358 ipp_res_t units,
2359 const int * xres,
2360 const int * yres);
2361 </pre>
2362 <h4>Arguments</h4>
2363 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
2364 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2365 <tbody>
2366 <tr><td><tt>ipp</tt></td><td>IPP message</td></tr>
2367 <tr><td><tt>group</tt></td><td>IPP group</td></tr>
2368 <tr><td><tt>name</tt></td><td>Name of attribute</td></tr>
2369 <tr><td><tt>num_values</tt></td><td>Number of values</td></tr>
2370 <tr><td><tt>units</tt></td><td>Units for resolution</td></tr>
2371 <tr><td><tt>xres</tt></td><td>X resolutions</td></tr>
2372 <tr><td><tt>yres</tt></td><td>Y resolutions</td></tr>
2373 </tbody></table></div>
2374 <h4>Returns</h4>
2375 <p>New attribute</p>
2376 <!-- NEW PAGE -->
2377 <h3 class='title'><a name='ippAddSeparator'>ippAddSeparator()</a></h3>
2378 <h4>Description</h4>
2379 <p>Add a group separator to an IPP message.</p>
2380 <h4>Syntax</h4>
2381 <pre>
2382 <a href='#ipp_attribute_t'>ipp_attribute_t</a> *
2383 ippAddSeparator(
2384 <a href='#ipp_t'>ipp_t</a> * ipp);
2385 </pre>
2386 <h4>Arguments</h4>
2387 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
2388 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2389 <tbody>
2390 <tr><td><tt>ipp</tt></td><td>IPP message</td></tr>
2391 </tbody></table></div>
2392 <h4>Returns</h4>
2393 <p>New attribute</p>
2394 <!-- NEW PAGE -->
2395 <h3 class='title'><a name='ippAddString'>ippAddString()</a></h3>
2396 <h4>Description</h4>
2397 <p>Add a language-encoded string to an IPP message.</p>
2398 <h4>Syntax</h4>
2399 <pre>
2400 <a href='#ipp_attribute_t'>ipp_attribute_t</a> *
2401 ippAddString(
2402 <a href='#ipp_t'>ipp_t</a> * ipp,
2403 ipp_tag_t group,
2404 ipp_tag_t type,
2405 const char * name,
2406 const char * charset,
2407 const char * value);
2408 </pre>
2409 <h4>Arguments</h4>
2410 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
2411 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2412 <tbody>
2413 <tr><td><tt>ipp</tt></td><td>IPP message</td></tr>
2414 <tr><td><tt>group</tt></td><td>IPP group</td></tr>
2415 <tr><td><tt>type</tt></td><td>Type of attribute</td></tr>
2416 <tr><td><tt>name</tt></td><td>Name of attribute</td></tr>
2417 <tr><td><tt>charset</tt></td><td>Character set</td></tr>
2418 <tr><td><tt>value</tt></td><td>Value</td></tr>
2419 </tbody></table></div>
2420 <h4>Returns</h4>
2421 <p>New attribute</p>
2422 <!-- NEW PAGE -->
2423 <h3 class='title'><a name='ippAddStrings'>ippAddStrings()</a></h3>
2424 <h4>Description</h4>
2425 <p>Add language-encoded strings to an IPP message.</p>
2426 <h4>Syntax</h4>
2427 <pre>
2428 <a href='#ipp_attribute_t'>ipp_attribute_t</a> *
2429 ippAddStrings(
2430 <a href='#ipp_t'>ipp_t</a> * ipp,
2431 ipp_tag_t group,
2432 ipp_tag_t type,
2433 const char * name,
2434 int num_values,
2435 const char * charset,
2436 const char *const * values);
2437 </pre>
2438 <h4>Arguments</h4>
2439 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
2440 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2441 <tbody>
2442 <tr><td><tt>ipp</tt></td><td>IPP message</td></tr>
2443 <tr><td><tt>group</tt></td><td>IPP group</td></tr>
2444 <tr><td><tt>type</tt></td><td>Type of attribute</td></tr>
2445 <tr><td><tt>name</tt></td><td>Name of attribute</td></tr>
2446 <tr><td><tt>num_values</tt></td><td>Number of values</td></tr>
2447 <tr><td><tt>charset</tt></td><td>Character set</td></tr>
2448 <tr><td><tt>values</tt></td><td>Values</td></tr>
2449 </tbody></table></div>
2450 <h4>Returns</h4>
2451 <p>New attribute</p>
2452 <!-- NEW PAGE -->
2453 <h3 class='title'><a name='ippDateToTime'>ippDateToTime()</a></h3>
2454 <h4>Description</h4>
2455 <p>Convert from RFC 1903 Date/Time format to UNIX time
2456 in seconds.</p>
2457 <h4>Syntax</h4>
2458 <pre>
2459 time_t
2460 ippDateToTime(
2461 const <a href='#ipp_uchar_t'>ipp_uchar_t</a> * date);
2462 </pre>
2463 <h4>Arguments</h4>
2464 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
2465 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2466 <tbody>
2467 <tr><td><tt>date</tt></td><td>RFC 1903 date info</td></tr>
2468 </tbody></table></div>
2469 <h4>Returns</h4>
2470 <p>UNIX time value</p>
2471 <!-- NEW PAGE -->
2472 <h3 class='title'><a name='ippDelete'>ippDelete()</a></h3>
2473 <h4>Description</h4>
2474 <p>Delete an IPP message.</p>
2475 <h4>Syntax</h4>
2476 <pre>
2477 void
2478 ippDelete(
2479 <a href='#ipp_t'>ipp_t</a> * ipp);
2480 </pre>
2481 <h4>Arguments</h4>
2482 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
2483 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2484 <tbody>
2485 <tr><td><tt>ipp</tt></td><td>IPP message</td></tr>
2486 </tbody></table></div>
2487 <h4>Returns</h4>
2488 <p>Nothing.</p>
2489 <!-- NEW PAGE -->
2490 <h3 class='title'><span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span><a name='ippDeleteAttribute'>ippDeleteAttribute()</a></h3>
2491 <h4>Description</h4>
2492 <p>Delete a single attribute in an IPP message.
2493
2494 </p>
2495 <h4>Syntax</h4>
2496 <pre>
2497 void
2498 ippDeleteAttribute(
2499 <a href='#ipp_t'>ipp_t</a> * ipp,
2500 <a href='#ipp_attribute_t'>ipp_attribute_t</a> * attr);
2501 </pre>
2502 <h4>Arguments</h4>
2503 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
2504 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2505 <tbody>
2506 <tr><td><tt>ipp</tt></td><td>IPP message</td></tr>
2507 <tr><td><tt>attr</tt></td><td>Attribute to delete</td></tr>
2508 </tbody></table></div>
2509 <h4>Returns</h4>
2510 <p>Nothing.</p>
2511 <!-- NEW PAGE -->
2512 <h3 class='title'><a name='ippErrorString'>ippErrorString()</a></h3>
2513 <h4>Description</h4>
2514 <p>Return a name for the given status code.</p>
2515 <h4>Syntax</h4>
2516 <pre>
2517 const char *
2518 ippErrorString(
2519 ipp_status_t error);
2520 </pre>
2521 <h4>Arguments</h4>
2522 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
2523 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2524 <tbody>
2525 <tr><td><tt>error</tt></td><td>Error status</td></tr>
2526 </tbody></table></div>
2527 <h4>Returns</h4>
2528 <p>Text string</p>
2529 <!-- NEW PAGE -->
2530 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='ippErrorValue'>ippErrorValue()</a></h3>
2531 <h4>Description</h4>
2532 <p>Return a status code for the given name.
2533
2534 </p>
2535 <h4>Syntax</h4>
2536 <pre>
2537 ipp_status_t
2538 ippErrorValue(
2539 const char * name);
2540 </pre>
2541 <h4>Arguments</h4>
2542 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
2543 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2544 <tbody>
2545 <tr><td><tt>name</tt></td><td>Name</td></tr>
2546 </tbody></table></div>
2547 <h4>Returns</h4>
2548 <p>IPP status code</p>
2549 <!-- NEW PAGE -->
2550 <h3 class='title'><a name='ippFindAttribute'>ippFindAttribute()</a></h3>
2551 <h4>Description</h4>
2552 <p>Find a named attribute in a request...</p>
2553 <h4>Syntax</h4>
2554 <pre>
2555 <a href='#ipp_attribute_t'>ipp_attribute_t</a> *
2556 ippFindAttribute(
2557 <a href='#ipp_t'>ipp_t</a> * ipp,
2558 const char * name,
2559 ipp_tag_t type);
2560 </pre>
2561 <h4>Arguments</h4>
2562 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
2563 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2564 <tbody>
2565 <tr><td><tt>ipp</tt></td><td>IPP message</td></tr>
2566 <tr><td><tt>name</tt></td><td>Name of attribute</td></tr>
2567 <tr><td><tt>type</tt></td><td>Type of attribute</td></tr>
2568 </tbody></table></div>
2569 <h4>Returns</h4>
2570 <p>Matching attribute</p>
2571 <!-- NEW PAGE -->
2572 <h3 class='title'><a name='ippFindNextAttribute'>ippFindNextAttribute()</a></h3>
2573 <h4>Description</h4>
2574 <p>Find the next named attribute in a request...</p>
2575 <h4>Syntax</h4>
2576 <pre>
2577 <a href='#ipp_attribute_t'>ipp_attribute_t</a> *
2578 ippFindNextAttribute(
2579 <a href='#ipp_t'>ipp_t</a> * ipp,
2580 const char * name,
2581 ipp_tag_t type);
2582 </pre>
2583 <h4>Arguments</h4>
2584 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
2585 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2586 <tbody>
2587 <tr><td><tt>ipp</tt></td><td>IPP message</td></tr>
2588 <tr><td><tt>name</tt></td><td>Name of attribute</td></tr>
2589 <tr><td><tt>type</tt></td><td>Type of attribute</td></tr>
2590 </tbody></table></div>
2591 <h4>Returns</h4>
2592 <p>Matching attribute</p>
2593 <!-- NEW PAGE -->
2594 <h3 class='title'><a name='ippLength'>ippLength()</a></h3>
2595 <h4>Description</h4>
2596 <p>Compute the length of an IPP message.</p>
2597 <h4>Syntax</h4>
2598 <pre>
2599 size_t
2600 ippLength(
2601 <a href='#ipp_t'>ipp_t</a> * ipp);
2602 </pre>
2603 <h4>Arguments</h4>
2604 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
2605 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2606 <tbody>
2607 <tr><td><tt>ipp</tt></td><td>IPP message</td></tr>
2608 </tbody></table></div>
2609 <h4>Returns</h4>
2610 <p>Size of IPP message</p>
2611 <!-- NEW PAGE -->
2612 <h3 class='title'><a name='ippNew'>ippNew()</a></h3>
2613 <h4>Description</h4>
2614 <p>Allocate a new IPP message.</p>
2615 <h4>Syntax</h4>
2616 <pre>
2617 <a href='#ipp_t'>ipp_t</a> *
2618 ippNew(void);
2619 </pre>
2620 <h4>Arguments</h4>
2621 <p>None.</p>
2622 <h4>Returns</h4>
2623 <p>New IPP message</p>
2624 <!-- NEW PAGE -->
2625 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='ippNewRequest'>ippNewRequest()</a></h3>
2626 <h4>Description</h4>
2627 <p>Allocate a new IPP request message.
2628
2629 The new request message is initialized with the attributes-charset and
2630 attributes-natural-language attributes added. The
2631 attributes-natural-language value is derived from the current locale.
2632
2633 </p>
2634 <h4>Syntax</h4>
2635 <pre>
2636 <a href='#ipp_t'>ipp_t</a> *
2637 ippNewRequest(
2638 ipp_op_t op);
2639 </pre>
2640 <h4>Arguments</h4>
2641 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
2642 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2643 <tbody>
2644 <tr><td><tt>op</tt></td><td>Operation code</td></tr>
2645 </tbody></table></div>
2646 <h4>Returns</h4>
2647 <p>IPP request message</p>
2648 <!-- NEW PAGE -->
2649 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='ippOpString'>ippOpString()</a></h3>
2650 <h4>Description</h4>
2651 <p>Return a name for the given operation id.
2652
2653 </p>
2654 <h4>Syntax</h4>
2655 <pre>
2656 const char *
2657 ippOpString(
2658 ipp_op_t op);
2659 </pre>
2660 <h4>Arguments</h4>
2661 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
2662 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2663 <tbody>
2664 <tr><td><tt>op</tt></td><td>Operation ID</td></tr>
2665 </tbody></table></div>
2666 <h4>Returns</h4>
2667 <p>Name</p>
2668 <!-- NEW PAGE -->
2669 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='ippOpValue'>ippOpValue()</a></h3>
2670 <h4>Description</h4>
2671 <p>Return an operation id for the given name.
2672
2673 </p>
2674 <h4>Syntax</h4>
2675 <pre>
2676 ipp_op_t
2677 ippOpValue(
2678 const char * name);
2679 </pre>
2680 <h4>Arguments</h4>
2681 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
2682 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2683 <tbody>
2684 <tr><td><tt>name</tt></td><td>Textual name</td></tr>
2685 </tbody></table></div>
2686 <h4>Returns</h4>
2687 <p>Operation ID</p>
2688 <!-- NEW PAGE -->
2689 <h3 class='title'><a name='ippPort'>ippPort()</a></h3>
2690 <h4>Description</h4>
2691 <p>Return the default IPP port number.</p>
2692 <h4>Syntax</h4>
2693 <pre>
2694 int
2695 ippPort(void);
2696 </pre>
2697 <h4>Arguments</h4>
2698 <p>None.</p>
2699 <h4>Returns</h4>
2700 <p>Port number</p>
2701 <!-- NEW PAGE -->
2702 <h3 class='title'><a name='ippRead'>ippRead()</a></h3>
2703 <h4>Description</h4>
2704 <p>Read data for an IPP message from a HTTP connection.</p>
2705 <h4>Syntax</h4>
2706 <pre>
2707 ipp_state_t
2708 ippRead(
2709 <a href='#http_t'>http_t</a> * http,
2710 <a href='#ipp_t'>ipp_t</a> * ipp);
2711 </pre>
2712 <h4>Arguments</h4>
2713 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
2714 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2715 <tbody>
2716 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
2717 <tr><td><tt>ipp</tt></td><td>IPP data</td></tr>
2718 </tbody></table></div>
2719 <h4>Returns</h4>
2720 <p>Current state</p>
2721 <!-- NEW PAGE -->
2722 <h3 class='title'><span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span><a name='ippReadFile'>ippReadFile()</a></h3>
2723 <h4>Description</h4>
2724 <p>Read data for an IPP message from a file.
2725
2726 </p>
2727 <h4>Syntax</h4>
2728 <pre>
2729 ipp_state_t
2730 ippReadFile(
2731 int fd,
2732 <a href='#ipp_t'>ipp_t</a> * ipp);
2733 </pre>
2734 <h4>Arguments</h4>
2735 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
2736 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2737 <tbody>
2738 <tr><td><tt>fd</tt></td><td>HTTP data</td></tr>
2739 <tr><td><tt>ipp</tt></td><td>IPP data</td></tr>
2740 </tbody></table></div>
2741 <h4>Returns</h4>
2742 <p>Current state</p>
2743 <!-- NEW PAGE -->
2744 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='ippReadIO'>ippReadIO()</a></h3>
2745 <h4>Description</h4>
2746 <p>Read data for an IPP message.
2747
2748 </p>
2749 <h4>Syntax</h4>
2750 <pre>
2751 ipp_state_t
2752 ippReadIO(
2753 void * src,
2754 <a href='#ipp_iocb_t'>ipp_iocb_t</a> cb,
2755 int blocking,
2756 <a href='#ipp_t'>ipp_t</a> * parent,
2757 <a href='#ipp_t'>ipp_t</a> * ipp);
2758 </pre>
2759 <h4>Arguments</h4>
2760 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
2761 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2762 <tbody>
2763 <tr><td><tt>src</tt></td><td>Data source</td></tr>
2764 <tr><td><tt>cb</tt></td><td>Read callback function</td></tr>
2765 <tr><td><tt>blocking</tt></td><td>Use blocking IO?</td></tr>
2766 <tr><td><tt>parent</tt></td><td>Parent request, if any</td></tr>
2767 <tr><td><tt>ipp</tt></td><td>IPP data</td></tr>
2768 </tbody></table></div>
2769 <h4>Returns</h4>
2770 <p>Current state</p>
2771 <!-- NEW PAGE -->
2772 <h3 class='title'><a name='ippSetPort'>ippSetPort()</a></h3>
2773 <h4>Description</h4>
2774 <p>Set the default port number.</p>
2775 <h4>Syntax</h4>
2776 <pre>
2777 void
2778 ippSetPort(
2779 int p);
2780 </pre>
2781 <h4>Arguments</h4>
2782 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
2783 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2784 <tbody>
2785 <tr><td><tt>p</tt></td><td>Port number to use</td></tr>
2786 </tbody></table></div>
2787 <h4>Returns</h4>
2788 <p>Nothing.</p>
2789 <!-- NEW PAGE -->
2790 <h3 class='title'><a name='ippTimeToDate'>ippTimeToDate()</a></h3>
2791 <h4>Description</h4>
2792 <p>Convert from UNIX time to RFC 1903 format.</p>
2793 <h4>Syntax</h4>
2794 <pre>
2795 const <a href='#ipp_uchar_t'>ipp_uchar_t</a> *
2796 ippTimeToDate(
2797 time_t t);
2798 </pre>
2799 <h4>Arguments</h4>
2800 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
2801 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2802 <tbody>
2803 <tr><td><tt>t</tt></td><td>UNIX time value</td></tr>
2804 </tbody></table></div>
2805 <h4>Returns</h4>
2806 <p>RFC-1903 date/time data</p>
2807 <!-- NEW PAGE -->
2808 <h3 class='title'><a name='ippWrite'>ippWrite()</a></h3>
2809 <h4>Description</h4>
2810 <p>Write data for an IPP message to a HTTP connection.</p>
2811 <h4>Syntax</h4>
2812 <pre>
2813 ipp_state_t
2814 ippWrite(
2815 <a href='#http_t'>http_t</a> * http,
2816 <a href='#ipp_t'>ipp_t</a> * ipp);
2817 </pre>
2818 <h4>Arguments</h4>
2819 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
2820 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2821 <tbody>
2822 <tr><td><tt>http</tt></td><td>HTTP connection</td></tr>
2823 <tr><td><tt>ipp</tt></td><td>IPP data</td></tr>
2824 </tbody></table></div>
2825 <h4>Returns</h4>
2826 <p>Current state</p>
2827 <!-- NEW PAGE -->
2828 <h3 class='title'><span class='info'>&nbsp;CUPS 1.1.19&nbsp;</span><a name='ippWriteFile'>ippWriteFile()</a></h3>
2829 <h4>Description</h4>
2830 <p>Write data for an IPP message to a file.
2831
2832 </p>
2833 <h4>Syntax</h4>
2834 <pre>
2835 ipp_state_t
2836 ippWriteFile(
2837 int fd,
2838 <a href='#ipp_t'>ipp_t</a> * ipp);
2839 </pre>
2840 <h4>Arguments</h4>
2841 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
2842 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2843 <tbody>
2844 <tr><td><tt>fd</tt></td><td>HTTP data</td></tr>
2845 <tr><td><tt>ipp</tt></td><td>IPP data</td></tr>
2846 </tbody></table></div>
2847 <h4>Returns</h4>
2848 <p>Current state</p>
2849 <!-- NEW PAGE -->
2850 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='ippWriteIO'>ippWriteIO()</a></h3>
2851 <h4>Description</h4>
2852 <p>Write data for an IPP message.
2853
2854 </p>
2855 <h4>Syntax</h4>
2856 <pre>
2857 ipp_state_t
2858 ippWriteIO(
2859 void * dst,
2860 <a href='#ipp_iocb_t'>ipp_iocb_t</a> cb,
2861 int blocking,
2862 <a href='#ipp_t'>ipp_t</a> * parent,
2863 <a href='#ipp_t'>ipp_t</a> * ipp);
2864 </pre>
2865 <h4>Arguments</h4>
2866 <div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
2867 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2868 <tbody>
2869 <tr><td><tt>dst</tt></td><td>Destination</td></tr>
2870 <tr><td><tt>cb</tt></td><td>Write callback function</td></tr>
2871 <tr><td><tt>blocking</tt></td><td>Use blocking IO?</td></tr>
2872 <tr><td><tt>parent</tt></td><td>Parent IPP message</td></tr>
2873 <tr><td><tt>ipp</tt></td><td>IPP data</td></tr>
2874 </tbody></table></div>
2875 <h4>Returns</h4>
2876 <p>Current state</p>
2877 <!-- NEW PAGE -->
2878 <h2 class='title'><a name='STRUCTURES'>Structures</a></h2>
2879 <ul>
2880 <li><a href='#http_addrlist_s'><tt>http_addrlist_s</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
2881 <li><a href='#ipp_attribute_s'><tt>ipp_attribute_s</tt></a> </li>
2882 <li><a href='#ipp_s'><tt>ipp_s</tt></a> </li>
2883 </ul>
2884 <!-- NEW PAGE -->
2885 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='http_addrlist_s'>http_addrlist_s</a></h3>
2886 <h4>Description</h4>
2887 <p>Socket address list, which is
2888 used to enumerate all of the
2889 addresses that are associated
2890 with a hostname. </p>
2891 <h4>Definition</h4>
2892 <pre>
2893 struct http_addrlist_s
2894 {
2895 <a href='#http_addr_t'>http_addr_t</a> addr;
2896 struct <a href='#http_addrlist_s'>http_addrlist_s</a> * next;
2897 };
2898 </pre>
2899 <h4>Members</h4>
2900 <div class='table'><table align='center' border='1' width='80%'>
2901 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2902 <tbody>
2903 <tr><td><tt>addr</tt> </td><td>Address</td></tr>
2904 <tr><td><tt>next</tt> </td><td>Pointer to next address in list</td></tr>
2905 </tbody></table></div>
2906 <!-- NEW PAGE -->
2907 <h3 class='title'><a name='ipp_attribute_s'>ipp_attribute_s</a></h3>
2908 <h4>Description</h4>
2909 <p>Attribute</p>
2910 <h4>Definition</h4>
2911 <pre>
2912 struct ipp_attribute_s
2913 {
2914 char * name;
2915 struct <a href='#ipp_attribute_s'>ipp_attribute_s</a> * next;
2916 int num_values;
2917 ipp_tag_t group_tag, value_tag;
2918 <a href='#ipp_value_t'>ipp_value_t</a> values[1];
2919 };
2920 </pre>
2921 <h4>Members</h4>
2922 <div class='table'><table align='center' border='1' width='80%'>
2923 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2924 <tbody>
2925 <tr><td><tt>name</tt> </td><td>Name of attribute</td></tr>
2926 <tr><td><tt>next</tt> </td><td>Next attribute in list</td></tr>
2927 <tr><td><tt>num_values</tt> </td><td>Number of values</td></tr>
2928 <tr><td><tt>value_tag</tt> </td><td>What type of value is it?</td></tr>
2929 <tr><td><tt>values[1]</tt> </td><td>Values</td></tr>
2930 </tbody></table></div>
2931 <!-- NEW PAGE -->
2932 <h3 class='title'><a name='ipp_s'>ipp_s</a></h3>
2933 <h4>Description</h4>
2934 <p>IPP Request/Response/Notification</p>
2935 <h4>Definition</h4>
2936 <pre>
2937 struct ipp_s
2938 {
2939 <a href='#ipp_attribute_t'>ipp_attribute_t</a> * attrs;
2940 <a href='#ipp_attribute_t'>ipp_attribute_t</a> * current;
2941 ipp_tag_t curtag;
2942 <a href='#ipp_attribute_t'>ipp_attribute_t</a> * last;
2943 <a href='#ipp_attribute_t'>ipp_attribute_t</a> * prev;
2944 <a href='#ipp_request_t'>ipp_request_t</a> request;
2945 ipp_state_t state;
2946 };
2947 </pre>
2948 <h4>Members</h4>
2949 <div class='table'><table align='center' border='1' width='80%'>
2950 <thead><tr><th>Name</th><th>Description</th></tr></thead>
2951 <tbody>
2952 <tr><td><tt>attrs</tt> </td><td>Attributes</td></tr>
2953 <tr><td><tt>current</tt> </td><td>Current attribute (for read/write)</td></tr>
2954 <tr><td><tt>curtag</tt> </td><td>Current attribute group tag</td></tr>
2955 <tr><td><tt>last</tt> </td><td>Last attribute in list</td></tr>
2956 <tr><td><tt>prev</tt> </td><td>Previous attribute (for read)</td></tr>
2957 <tr><td><tt>request</tt> </td><td>Request header</td></tr>
2958 <tr><td><tt>state</tt> </td><td>State of request</td></tr>
2959 </tbody></table></div>
2960 <!-- NEW PAGE -->
2961 <h2 class='title'><a name='TYPES'>Types</a></h2>
2962 <ul>
2963 <li><a href='#http_addrlist_t'><tt>http_addrlist_t</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
2964 <li><a href='#http_auth_t'><tt>http_auth_t</tt></a> </li>
2965 <li><a href='#http_encoding_t'><tt>http_encoding_t</tt></a> </li>
2966 <li><a href='#http_encryption_t'><tt>http_encryption_t</tt></a> </li>
2967 <li><a href='#http_t'><tt>http_t</tt></a> </li>
2968 <li><a href='#ipp_attribute_t'><tt>ipp_attribute_t</tt></a> </li>
2969 <li><a href='#ipp_iocb_t'><tt>ipp_iocb_t</tt></a> <span class='info'>&nbsp;CUPS 1.2&nbsp;</span></li>
2970 <li><a href='#ipp_request_t'><tt>ipp_request_t</tt></a> </li>
2971 <li><a href='#ipp_t'><tt>ipp_t</tt></a> </li>
2972 <li><a href='#ipp_uchar_t'><tt>ipp_uchar_t</tt></a> </li>
2973 <li><a href='#ipp_value_t'><tt>ipp_value_t</tt></a> </li>
2974 </ul>
2975 <!-- NEW PAGE -->
2976 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='http_addrlist_t'>http_addrlist_t</a></h3>
2977 <h4>Description</h4>
2978 <p>Socket address list, which is
2979 used to enumerate all of the
2980 addresses that are associated
2981 with a hostname. </p>
2982 <h4>Definition</h4>
2983 <pre>
2984 typedef struct <a href='#http_addrlist_s'>http_addrlist_s</a> / http_addrlist_t;
2985 </pre>
2986 <!-- NEW PAGE -->
2987 <h3 class='title'><a name='http_auth_t'>http_auth_t</a></h3>
2988 <h4>Description</h4>
2989 <p>HTTP authentication types</p>
2990 <h4>Definition</h4>
2991 <pre>
2992 typedef enum <a href='#http_auth_e'>http_auth_e</a> http_auth_t;
2993 </pre>
2994 <!-- NEW PAGE -->
2995 <h3 class='title'><a name='http_encoding_t'>http_encoding_t</a></h3>
2996 <h4>Description</h4>
2997 <p>HTTP transfer encoding values</p>
2998 <h4>Definition</h4>
2999 <pre>
3000 typedef enum <a href='#http_encoding_e'>http_encoding_e</a> http_encoding_t;
3001 </pre>
3002 <!-- NEW PAGE -->
3003 <h3 class='title'><a name='http_encryption_t'>http_encryption_t</a></h3>
3004 <h4>Description</h4>
3005 <p>HTTP encryption values</p>
3006 <h4>Definition</h4>
3007 <pre>
3008 typedef enum <a href='#http_encryption_e'>http_encryption_e</a> http_encryption_t;
3009 </pre>
3010 <!-- NEW PAGE -->
3011 <h3 class='title'><a name='http_t'>http_t</a></h3>
3012 <h4>Description</h4>
3013 <p>HTTP connection structure.</p>
3014 <h4>Definition</h4>
3015 <pre>
3016 typedef struct _http_s http_t;
3017 </pre>
3018 <!-- NEW PAGE -->
3019 <h3 class='title'><a name='ipp_attribute_t'>ipp_attribute_t</a></h3>
3020 <h4>Description</h4>
3021 <p>Attribute</p>
3022 <h4>Definition</h4>
3023 <pre>
3024 typedef struct <a href='#ipp_attribute_s'>ipp_attribute_s</a> ipp_attribute_t;
3025 </pre>
3026 <!-- NEW PAGE -->
3027 <h3 class='title'><span class='info'>&nbsp;CUPS 1.2&nbsp;</span><a name='ipp_iocb_t'>ipp_iocb_t</a></h3>
3028 <h4>Description</h4>
3029 <p>IPP IO Callback Function </p>
3030 <h4>Definition</h4>
3031 <pre>
3032 typedef ssize_t (*ipp_iocb_t)(void *, <a href='#ipp_uchar_t'>ipp_uchar_t</a> *, size_t);
3033 </pre>
3034 <!-- NEW PAGE -->
3035 <h3 class='title'><a name='ipp_request_t'>ipp_request_t</a></h3>
3036 <h4>Description</h4>
3037 <p>Request Header</p>
3038 <h4>Definition</h4>
3039 <pre>
3040 typedef union <a href='#ipp_request_u'>ipp_request_u</a> ipp_request_t;
3041 </pre>
3042 <!-- NEW PAGE -->
3043 <h3 class='title'><a name='ipp_t'>ipp_t</a></h3>
3044 <h4>Description</h4>
3045 <p>Attribute Value</p>
3046 <h4>Definition</h4>
3047 <pre>
3048 typedef struct <a href='#ipp_s'>ipp_s</a> ipp_t;
3049 </pre>
3050 <!-- NEW PAGE -->
3051 <h3 class='title'><a name='ipp_uchar_t'>ipp_uchar_t</a></h3>
3052 <h4>Description</h4>
3053 <p>IPP status codes...</p>
3054 <h4>Definition</h4>
3055 <pre>
3056 typedef typedef unsigned char ipp_uchar_t;
3057 </pre>
3058 <!-- NEW PAGE -->
3059 <h3 class='title'><a name='ipp_value_t'>ipp_value_t</a></h3>
3060 <h4>Description</h4>
3061 <p>New in CUPS 1.1.19</p>
3062 <h4>Definition</h4>
3063 <pre>
3064 typedef union <a href='#ipp_value_u'>ipp_value_u</a> ipp_value_t;
3065 </pre>
3066 <!-- NEW PAGE -->
3067 <h2 class='title'><a name='UNIONS'>Unions</a></h2>
3068 <ul>
3069 <li><a href='#ipp_request_u'><tt>ipp_request_u</tt></a> </li>
3070 <li><a href='#ipp_value_u'><tt>ipp_value_u</tt></a> </li>
3071 </ul>
3072 <!-- NEW PAGE -->
3073 <h3 class='title'><a name='ipp_request_u'>ipp_request_u</a></h3>
3074 <h4>Description</h4>
3075 <p>Request Header</p>
3076 <h4>Definition</h4>
3077 <pre>
3078 union ipp_request_u
3079 {
3080 };
3081 </pre>
3082 <h4>Members</h4>
3083 <div class='table'><table align='center' border='1' width='80%'>
3084 <thead><tr><th>Name</th><th>Description</th></tr></thead>
3085 <tbody>
3086 </tbody></table></div>
3087 <!-- NEW PAGE -->
3088 <h3 class='title'><a name='ipp_value_u'>ipp_value_u</a></h3>
3089 <h4>Description</h4>
3090 <p>New in CUPS 1.1.19</p>
3091 <h4>Definition</h4>
3092 <pre>
3093 union ipp_value_u
3094 {
3095 char boolean;
3096 <a href='#ipp_t'>ipp_t</a> * collection;
3097 <a href='#ipp_uchar_t'>ipp_uchar_t</a> date[11];
3098 int integer;
3099 };
3100 </pre>
3101 <h4>Members</h4>
3102 <div class='table'><table align='center' border='1' width='80%'>
3103 <thead><tr><th>Name</th><th>Description</th></tr></thead>
3104 <tbody>
3105 <tr><td><tt>boolean</tt> </td><td>Boolean value</td></tr>
3106 <tr><td><tt>collection</tt> </td><td>Collection value</td></tr>
3107 <tr><td><tt>date[11]</tt> </td><td>Date/time value</td></tr>
3108 <tr><td><tt>integer</tt> </td><td>Integer/enumerated value</td></tr>
3109 </tbody></table></div>
3110 </body>
3111 </html>